支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


实战Xinference:打造高性能私有AI推理服务

发布日期:2025-06-17 20:52:09 浏览次数: 1537
作者:萤火AI百宝箱

微信搜一搜,关注“萤火AI百宝箱”

推荐语

Xinference开源推理框架助力企业轻松实现AI私有化部署,支持多硬件平台和自动优化,大幅降低技术门槛。

核心内容:
1. Xinference框架的核心优势与硬件兼容性
2. vLLM加速引擎的PagedAttention机制解析
3. 海光DCU实战项目的完整部署指南

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

 

随着大模型应用的普及,越来越多的企业开始关注私有化部署。今天我们聊聊如何在海光DCU K100-AI计算卡上部署Xinference推理框架,构建一套完整的私有AI推理服务。

为什么选择Xinference?

Xinference是一个功能强大的开源推理平台,可以理解为"本地版的OpenAI API"。它的优势在于:

统一接口:无论是大语言模型、多模态模型还是嵌入模型,都提供统一的调用方式。

硬件兼容性强:支持CPU、NVIDIA GPU、海光DCU等多种硬件平台。

自动优化:能够根据模型特征自动选择最优的推理引擎,比如vLLM。

简单易用:提供Web UI和命令行工具,部署和管理都很方便。

vLLM加速的秘密

在满足特定条件时,Xinference会自动启用vLLM作为后端推理引擎。vLLM的核心创新是PagedAttention机制,能够显著提升并发处理能力。

自动启用vLLM的条件:

  • • 模型格式:pytorch、gptq或awq
  • • 量化配置:pytorch需要无量化,awq需要Int4量化,gptq支持Int3/Int4/Int8量化
  • • 运行环境:Linux系统 + DCU设备
  • • 模型兼容性:必须在vLLM支持列表中

部署实践

🚀 海光DCU实战项目来了!助您轻松驾驭大模型与HPC开发 🚀

为帮助开发者更便捷在海光DCU上进行大模型(训练、微调、推理)及科学计算,我依托海光DCU开发者社区,精心打造了一个开箱即用的实战项目 —— “dcu-in-action”

旨在为您提供:

  • • 🔧 直接上手的代码示例与实践指南
  • • ⚡ 加速您在海光DCU上的开发与部署流程

欢迎各位开发者:

  • • 访问项目GitHub仓库,深入体验、参与贡献,共同完善: https://github.com/FlyAIBox/dcu-in-action
  • • 如果项目对您有帮助,请我们点亮一个宝贵的 Star 🌟

方案一:手动部署(适合学习)

如果你希望了解每个部署细节,可以选择手动方式:

# 1. 启动配置容器
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. 容器内安装依赖
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. 启动服务
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

方案二:自动化脚本(推荐)

对于生产环境,我们更推荐使用自动化脚本。将以下代码保存为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"🚀 开始自动化部署 Xinference on DCU..."

# 创建缓存目录
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


# 构建镜像
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

# 启动服务
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 服务已成功启动!"
echo "访问地址: http://localhost:${HOST_PORT}"

运行脚本:

chmod +x deploy_xinference_dcu.sh
./deploy_xinference_dcu.sh

常见问题解决

在实际部署中,可能会遇到一些问题,这里分享两个常见的:

问题1:xoscar版本兼容性

错误信息TypeError: MainActorPool.append_sub_pool() got an unexpected keyword argument 'start_method'

解决方案

pip uninstall -y xoscar 
pip install xoscar==0.6.2

这个问题是因为xinference调用了新版xoscar的API,但实际安装的版本太旧。

问题2:并行数与模型架构不匹配

错误信息ValueError: Total number of attention heads (e.g., 40) must be divisible by tensor parallel size (e.g., 7)

解决方案:调整n_gpu参数,确保它是模型注意力头数的约数。

比如模型有40个注意力头,那么n_gpu可以设置为1、2、4、5、8、10、20、40中的任意一个。

环境配置优化

几个重要的环境变量:

  • • XINFERENCE_MODEL_SRC:设置为modelscope使用国内源
  • • XINFERENCE_ENDPOINT:服务访问地址
  • • XINFERENCE_HOME:数据存储目录

性能监控

部署完成后,可以通过以下方式监控服务状态:

# 查看服务日志
docker logs -f xinference-service

# 进入容器调试
docker exec -it xinference-service /bin/bash

# 检查GPU使用情况
rocm-smi

模型部署与配置

Xinference服务启动后,访问 http://localhost:9998 进入Web管理界面。以DeepSeek-R1-Distill-Qwen-32B模型为例,演示完整的部署流程。

DeepSeek-R1-Distill-Qwen-32B
DeepSeek-R1-Distill-Qwen-32B

模型参数详解

在Web界面中,我们需要配置以下关键参数:

基础配置

  • • 模型ID:deepseek-r1-distill-qwen(系统自动生成的唯一标识)
  • • 推理引擎:vLLM(满足条件时自动选择)
  • • 模型格式:pytorch(原生PyTorch格式,性能最佳)
  • • 规格:32B(模型参数量32B)
  • • 量化:none(不使用量化,保持原始精度)

资源配置

  • • Worker进程CPU核数:auto(自动检测并分配)
  • • GPU数量:0,1,2,3,4,5,6,7(使用8张DCU卡)

LoRA配置

  • • 如果需要使用LoRA适配器,可以在此配置
  • • 支持本地路径和远程仓库地址

模型调用示例

模型部署成功后,可以通过API进行调用:

import openai

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

# 发起对话请求
response = client.chat.completions.create(
    model="deepseek-r1-distill-qwen",
    messages=[
        {"role""user""content""解释一下什么是Transformer架构"}
    ],
    temperature=0.7,
    max_tokens=1000
)

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

也可以使用curl命令测试:

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
  }'

总结

通过以上步骤,我们成功在海光DCU上部署了Xinference推理框架并完成了模型的部署配置。这套方案的优势在于:

  1. 1. 完全私有化:数据不出机房,安全可控
  2. 2. 性能优异:自动选择vLLM等高性能引擎
  3. 3. 易于管理:统一的API接口,简化开发
  4. 4. 扩展性强:支持多模型并行运行
  5. 5. 配置灵活:丰富的参数可以满足不同场景需求

对于企业级应用,建议进一步考虑负载均衡、高可用性等方面的优化。海光DCU作为国产计算卡,在大模型推理场景下表现不错,是值得关注的解决方案。

引用链接

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


 如果想知道更多好玩、有用的AI大模型,欢迎留言或加群一起探讨!

图片

萤火AI百宝箱

行业洞察 | 技术解析 | 应用实践

  与AI同行,和优秀的人一起成长!

图片

END
➤  往期精彩回顾






53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询