精品一区二区三区在线成人,欧美精产国品一二三区,Ji大巴进入女人66h,亚洲春色在线视频

實(shí)戰(zhàn)Xinference:打造高性能私有AI推理服務(wù)

發(fā)布于 2025-6-18 06:39
瀏覽
0收藏

隨著大模型應(yīng)用的普及,越來(lái)越多的企業(yè)開(kāi)始關(guān)注私有化部署。今天我們聊聊如何在??海光DCU K100-AI??計(jì)算卡上部署Xinference推理框架,構(gòu)建一套完整的私有AI推理服務(wù)。

實(shí)戰(zhàn)Xinference:打造高性能私有AI推理服務(wù)-AI.x社區(qū)

為什么選擇Xinference?

Xinference是一個(gè)功能強(qiáng)大的開(kāi)源推理平臺(tái),可以理解為"本地版的OpenAI API"。它的優(yōu)勢(shì)在于:

統(tǒng)一接口:無(wú)論是大語(yǔ)言模型、多模態(tài)模型還是嵌入模型,都提供統(tǒng)一的調(diào)用方式。

硬件兼容性強(qiáng):支持CPU、NVIDIA GPU、海光DCU等多種硬件平臺(tái)。

自動(dòng)優(yōu)化:能夠根據(jù)模型特征自動(dòng)選擇最優(yōu)的推理引擎,比如vLLM。

簡(jiǎn)單易用:提供Web UI和命令行工具,部署和管理都很方便。

vLLM加速的秘密

在滿足特定條件時(shí),Xinference會(huì)自動(dòng)啟用vLLM作為后端推理引擎。vLLM的核心創(chuàng)新是PagedAttention機(jī)制,能夠顯著提升并發(fā)處理能力。

自動(dòng)啟用vLLM的條件:

? 模型格式:pytorch、gptq或awq

? 量化配置:pytorch需要無(wú)量化,awq需要Int4量化,gptq支持Int3/Int4/Int8量化

? 運(yùn)行環(huán)境:Linux系統(tǒng) + DCU設(shè)備

? 模型兼容性:必須在vLLM支持列表中

部署實(shí)踐

?? 海光DCU實(shí)戰(zhàn)項(xiàng)目來(lái)了!助您輕松駕馭大模型與HPC開(kāi)發(fā) ??

為幫助開(kāi)發(fā)者更便捷在海光DCU上進(jìn)行大模型(訓(xùn)練、微調(diào)、推理)及科學(xué)計(jì)算,我依托海光DCU開(kāi)發(fā)者社區(qū),精心打造了一個(gè)開(kāi)箱即用的實(shí)戰(zhàn)項(xiàng)目 —— “dcu-in-action”

旨在為您提供:

? ??直接上手的代碼示例與實(shí)踐指南

? ?加速您在海光DCU上的開(kāi)發(fā)與部署流程

歡迎各位開(kāi)發(fā)者:

? 訪問(wèn)項(xiàng)目GitHub倉(cāng)庫(kù),深入體驗(yàn)、參與貢獻(xiàn),共同完善: https://github.com/FlyAIBox/dcu-in-action

? 如果項(xiàng)目對(duì)您有幫助,請(qǐng)我們點(diǎn)亮一個(gè)寶貴的Star??

方案一:手動(dòng)部署(適合學(xué)習(xí))

如果你希望了解每個(gè)部署細(xì)節(jié),可以選擇手動(dòng)方式:

# 1. 啟動(dòng)配置容器
docker run -it \
    --name xinference-service-setup \
    -e XINFERENCE_MODEL_SRC=modelscope \
    -p 9998:9997 \
    --shm-size=16G \
    --device=/dev/kfd \
    --device=/dev/mkfd \
    --device=/dev/dri \
    -v /opt/hyhal:/opt/hyhal \
    -v /root/.cache/huggingface/hub:/home/.cache/huggingface/hub \
    --group-add video \
    --cap-add=SYS_PTRACE \
    --security-opt seccomp=unconfined \
    image.sourcefind.cn:5000/dcu/admin/base/custom:vllm0.8.5-ubuntu22.04-dtk25.04-rc7-das1.5-py3.10-20250514-fixpy-rocblas0513-alpha \
    /bin/bash

# 2. 容器內(nèi)安裝依賴
pip install "xinference[vllm]==1.5.1"
pip uninstall -y xoscar
pip install xoscar==0.6.2

# 3. 保存鏡像
exit
docker commit xinference-service-setup dcu-xinference:1.0

# 4. 啟動(dòng)服務(wù)
docker run -d \
    --name xinference-service \
    --restart always \
    -e XINFERENCE_MODEL_SRC=modelscope \
    -p 9998:9997 \
    --shm-size=16G \
    --device=/dev/kfd \
    --device=/dev/mkfd \
    --device=/dev/dri \
    -v /opt/hyhal:/opt/hyhal \
    -v /root/.cache/huggingface/hub:/home/.cache/huggingface/hub \
    --group-add video \
    --cap-add=SYS_PTRACE \
    --security-opt seccomp=unconfined \
    dcu-xinference:1.0 \
    xinference-local -H 0.0.0.0 --log-level debug

方案二:自動(dòng)化腳本(推薦)

對(duì)于生產(chǎn)環(huán)境,我們更推薦使用自動(dòng)化腳本。將以下代碼保存為??deploy_xinference_dcu.sh??:

deploy_xinference_dcu.sh腳本路徑[1]

#!/bin/bash
set -e

# 配置變量
BASE_IMAGE="image.sourcefind.cn:5000/dcu/admin/base/custom:vllm0.8.5-ubuntu22.04-dtk25.04-rc7-das1.5-py3.10-20250514-fixpy-rocblas0513-alpha"
FINAL_IMAGE_NAME="dcu-xinference:1.0"
SERVICE_CONTAINER_NAME="xinference-service"
HOST_PORT="9998"
HOST_CACHE_DIR="$HOME/.cache/huggingface/hub"

echo"?? 開(kāi)始自動(dòng)化部署 Xinference on DCU..."

# 創(chuàng)建緩存目錄
if [ ! -d "$HOST_CACHE_DIR" ]; then
    mkdir -p "$HOST_CACHE_DIR"
fi

# 生成Dockerfile
cat <<EOF > Dockerfile.xinference
FROM ${BASE_IMAGE}
ENV PIP_NO_CACHE_DIR=off
ENV PIP_DISABLE_PIP_VERSION_CHECK=on
WORKDIR /app
RUN pip install "xinference[vllm]==1.5.1" && \
    pip uninstall -y xoscar && \
    pip install xoscar==0.6.2

ENTRYPOINT ["/bin/sh"]
CMD ["-c", "exec xinference-local -H 0.0.0.0 --log-level info"]
EOF

# 構(gòu)建鏡像
docker build -t ${FINAL_IMAGE_NAME} -f Dockerfile.xinference .
rm Dockerfile.xinference

# 清理舊容器
if [ "$(docker ps -a -q -f name=^/${SERVICE_CONTAINER_NAME}$)" ]; then
    docker stop ${SERVICE_CONTAINER_NAME}
    docker rm${SERVICE_CONTAINER_NAME}
fi

# 啟動(dòng)服務(wù)
docker run \
    -d \
    --name ${SERVICE_CONTAINER_NAME} \
    --restart always \
    -e XINFERENCE_MODEL_SRC=modelscope \
    -p ${HOST_PORT}:9997 \
    --shm-size=16G \
    --device=/dev/kfd --device=/dev/mkfd --device=/dev/dri \
    -v /opt/hyhal:/opt/hyhal -v ${HOST_CACHE_DIR}:/home/.cache/huggingface/hub \
    --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined \
    ${FINAL_IMAGE_NAME} \
    -c "exec xinference-local -H 0.0.0.0 --log-level debug"

echo"?? Xinference 服務(wù)已成功啟動(dòng)!"
echo "訪問(wèn)地址: http://localhost:${HOST_PORT}"

運(yùn)行腳本:

chmod +x deploy_xinference_dcu.sh
./deploy_xinference_dcu.sh

常見(jiàn)問(wèn)題解決

在實(shí)際部署中,可能會(huì)遇到一些問(wèn)題,這里分享兩個(gè)常見(jiàn)的:

問(wèn)題1:xoscar版本兼容性

錯(cuò)誤信息:??TypeError: MainActorPool.append_sub_pool() got an unexpected keyword argument 'start_method'??

解決方案

pip uninstall -y xoscar 
pip install xoscar==0.6.2

這個(gè)問(wèn)題是因?yàn)閤inference調(diào)用了新版xoscar的API,但實(shí)際安裝的版本太舊。

問(wèn)題2:并行數(shù)與模型架構(gòu)不匹配

錯(cuò)誤信息:??ValueError: Total number of attention heads (e.g., 40) must be divisible by tensor parallel size (e.g., 7)??

解決方案:調(diào)整??n_gpu??參數(shù),確保它是模型注意力頭數(shù)的約數(shù)。

比如模型有40個(gè)注意力頭,那么??n_gpu??可以設(shè)置為1、2、4、5、8、10、20、40中的任意一個(gè)。

環(huán)境配置優(yōu)化

幾個(gè)重要的環(huán)境變量:

? ??XINFERENCE_MODEL_SRC???:設(shè)置為??modelscope??使用國(guó)內(nèi)源

? ??XINFERENCE_ENDPOINT??:服務(wù)訪問(wèn)地址

? ??XINFERENCE_HOME??:數(shù)據(jù)存儲(chǔ)目錄

性能監(jiān)控

部署完成后,可以通過(guò)以下方式監(jiān)控服務(wù)狀態(tài):

# 查看服務(wù)日志
docker logs -f xinference-service

# 進(jìn)入容器調(diào)試
docker exec -it xinference-service /bin/bash

# 檢查GPU使用情況
rocm-smi

模型部署與配置

Xinference服務(wù)啟動(dòng)后,訪問(wèn) ??http://localhost:9998?? 進(jìn)入Web管理界面。以DeepSeek-R1-Distill-Qwen-32B模型為例,演示完整的部署流程。

實(shí)戰(zhàn)Xinference:打造高性能私有AI推理服務(wù)-AI.x社區(qū)

DeepSeek-R1-Distill-Qwen-32B

模型參數(shù)詳解

在Web界面中,我們需要配置以下關(guān)鍵參數(shù):

基礎(chǔ)配置

?模型ID:deepseek-r1-distill-qwen(系統(tǒng)自動(dòng)生成的唯一標(biāo)識(shí))

?推理引擎:vLLM(滿足條件時(shí)自動(dòng)選擇)

?模型格式:pytorch(原生PyTorch格式,性能最佳)

?規(guī)格:32B(模型參數(shù)量32B)

?量化:none(不使用量化,保持原始精度)

資源配置

?Worker進(jìn)程CPU核數(shù):auto(自動(dòng)檢測(cè)并分配)

?GPU數(shù)量:0,1,2,3,4,5,6,7(使用8張DCU卡)

LoRA配置

? 如果需要使用LoRA適配器,可以在此配置

? 支持本地路徑和遠(yuǎn)程倉(cāng)庫(kù)地址

模型調(diào)用示例

模型部署成功后,可以通過(guò)API進(jìn)行調(diào)用:

import openai

# 配置客戶端
client = openai.OpenAI(
    api_key="不需要真實(shí)key",
    base_url="http://localhost:9998/v1"
)

# 發(fā)起對(duì)話請(qǐng)求
response = client.chat.completions.create(
    model="deepseek-r1-distill-qwen",
    messages=[
        {"role": "user", "content": "解釋一下什么是Transformer架構(gòu)"}
    ],
    temperature=0.7,
    max_tokens=1000
)

print(response.choices[0].message.content)

也可以使用curl命令測(cè)試:

實(shí)戰(zhàn)Xinference:打造高性能私有AI推理服務(wù)-AI.x社區(qū)

curl -X POST http://localhost:9998/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-r1-distill-qwen",
    "messages": [
      {"role": "user", "content": "你好"}
    ],
    "temperature": 0.7
  }'

總結(jié)

通過(guò)以上步驟,我們成功在海光DCU上部署了Xinference推理框架并完成了模型的部署配置。這套方案的優(yōu)勢(shì)在于:

1.完全私有化:數(shù)據(jù)不出機(jī)房,安全可控

2.性能優(yōu)異:自動(dòng)選擇vLLM等高性能引擎

3.易于管理:統(tǒng)一的API接口,簡(jiǎn)化開(kāi)發(fā)

4.擴(kuò)展性強(qiáng):支持多模型并行運(yùn)行

5.配置靈活:豐富的參數(shù)可以滿足不同場(chǎng)景需求

對(duì)于企業(yè)級(jí)應(yīng)用,建議進(jìn)一步考慮負(fù)載均衡、高可用性等方面的優(yōu)化。海光DCU作為國(guó)產(chǎn)計(jì)算卡,在大模型推理場(chǎng)景下表現(xiàn)不錯(cuò),是值得關(guān)注的解決方案。

引用鏈接

??[1]??? deploy_xinference_dcu.sh腳本路徑: ??https://github.com/FlyAIBox/dcu-in-action/blob/main/examples/llm-inference/xiference/deploy_xinference_dcu.sh??

本文轉(zhuǎn)載自 ???????螢火AI百寶箱????????,作者: 螢火AI百寶箱

收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
主站蜘蛛池模板: 浦东新区| 兴安县| 宁南县| 通许县| 乳源| 正宁县| 双牌县| 兴宁市| 临夏市| 东辽县| 洱源县| 阳泉市| 乃东县| 金昌市| 广河县| 安徽省| 凤城市| 长治县| 三都| 彰化县| 华蓥市| 湖北省| 塘沽区| 雷波县| 招远市| 江西省| 鄂尔多斯市| 北票市| 同心县| 上高县| 毕节市| 诸暨市| 宣恩县| 乃东县| 科技| 建昌县| 宽甸| 江华| 治多县| 苍溪县| 邹平县|