ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;background-color: rgb(255, 255, 255);text-align: center;visibility: visible;">ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">随着大模型应用的普及,越来越多的企业开始关注私有化部署。今天我们聊聊如何在海光DCU K100-AI计算卡上部署Xinference推理框架,构建一套完整的私有AI推理服务。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(0, 152, 116);">为什么选择Xinference?ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">Xinference是一个功能强大的开源推理平台,可以理解为"本地版的OpenAI API"。它的优势在于:ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);">统一接口:无论是大语言模型、多模态模型还是嵌入模型,都提供统一的调用方式。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);">硬件兼容性强:支持CPU、NVIDIA GPU、海光DCU等多种硬件平台。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(0, 152, 116);">自动优化:能够根据模型特征自动选择最优的推理引擎,比如vLLM。简单易用:提供Web UI和命令行工具,部署和管理都很方便。 vLLM加速的秘密在满足特定条件时,Xinference会自动启用vLLM作为后端推理引擎。vLLM的核心创新是PagedAttention机制,能够显著提升并发处理能力。 自动启用vLLM的条件: - • 量化配置:pytorch需要无量化,awq需要Int4量化,gptq支持Int3/Int4/Int8量化
部署实践🚀海光DCU实战项目来了!助您轻松驾驭大模型与HPC开发🚀 为帮助开发者更便捷在海光DCU上进行大模型(训练、微调、推理)及科学计算,我依托海光DCU开发者社区,精心打造了一个开箱即用的实战项目 ——“dcu-in-action”! 旨在为您提供: 欢迎各位开发者: - • 访问项目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 . rmDockerfile.xinference
# 清理旧容器 if["$(docker ps -a -q -f name=^/${SERVICE_CONTAINER_NAME}$)"];then docker stop${SERVICE_CONTAINER_NAME} dockerrm${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:服务访问地址
性能监控部署完成后,可以通过以下方式监控服务状态: # 查看服务日志 docker logs -f xinference-service
# 进入容器调试 dockerexec-it xinference-service /bin/bash
# 检查GPU使用情况 rocm-smi
模型部署与配置Xinference服务启动后,访问http://localhost:9998进入Web管理界面。以DeepSeek-R1-Distill-Qwen-32B模型为例,演示完整的部署流程。  模型参数详解在Web界面中,我们需要配置以下关键参数: 基础配置: - •模型ID:deepseek-r1-distill-qwen(系统自动生成的唯一标识)
- •模型格式:pytorch(原生PyTorch格式,性能最佳)
资源配置: - •Worker进程CPU核数:auto(自动检测并分配)
- •GPU数量:0,1,2,3,4,5,6,7(使用8张DCU卡)
LoRA配置: 模型调用示例模型部署成功后,可以通过API进行调用: importopenai
# 配置客户端 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推理框架并完成了模型的部署配置。这套方案的优势在于:
对于企业级应用,建议进一步考虑负载均衡、高可用性等方面的优化。海光DCU作为国产计算卡,在大模型推理场景下表现不错,是值得关注的解决方案。
|