sysHAX部署实战:从零开始搭建高性能大语言模型推理平台
【免费下载链接】sysHAXsysHAX Heterogeneous collaborative acceleration runtime项目地址: https://gitcode.com/openeuler/sysHAX
前往项目官网免费下载:https://ar.openeuler.org/ar/
sysHAX是一款面向CPU + xPU(GPU/NPU)异构计算架构的推理加速系统,通过智能任务调度与资源优化,充分发挥不同硬件平台的计算优势,实现大语言模型推理性能的最大化。本文将带你从零开始,快速部署一套高效稳定的大语言模型推理平台。
一、为什么选择sysHAX?核心优势解析 🚀
在大语言模型推理过程中,存在两个关键阶段:计算密集型的Prefill阶段和访存密集型的Decode阶段。sysHAX创新性地实现了动态任务拆分与调度机制,将Prefill任务分配给GPU/NPU处理,Decode任务则根据实时负载动态分配给CPU或xPU,实现资源利用最大化。
sysHAX系统架构图
核心功能亮点:
- 异构融合推理加速:智能调度CPU与xPU资源
- NUMA亲和性优化:减少跨节点内存访问延迟
- 多级并行计算:充分利用多核CPU并发能力
- 算子级指令优化:应用SIMD指令集提升矩阵计算速度
二、部署前准备:环境与硬件要求 📋
2.1 软件环境要求
| 类型 | 版本要求 | 说明 |
|---|---|---|
| 操作系统 | openEuler 22.03 LTS / 24.03 LTS | 推荐使用openEuler系统获得最佳兼容性 |
| Python | 3.11及以上 | 运行sysHAX服务和vllm推理框架 |
| Docker | 25及以上 | 容器化部署vllm服务 |
| 模型支持 | Qwen2、Qwen3系列 | 当前已验证的高性能模型 |
2.2 硬件规格建议
- CPU:鲲鹏920系列服务器,推荐920 7280Z以上型号
- GPU:NVIDIA系列GPU(如适用CPU+GPU场景)
- 内存:至少64GB(根据模型大小调整)
CPU硬件信息示例
三、三种部署模式:从简单到进阶 ⚙️
3.1 纯CPU模式部署:快速入门
3.1.1 创建vllm-cpu容器
# 拉取vllm-cpu镜像 docker pull hub.oepkgs.net/neocopilot/syshax/syshax-vllm-cpu:0.2.1 # 创建并启动容器 docker run --name vllm_cpu \ --shm-size=64g \ --privileged \ -p 8001:8001 \ -v /home/models:/home/models \ -w /home/ \ -it hub.oepkgs.net/neocopilot/syshax/syshax-vllm-cpu:0.2.1 bash3.1.2 启动vllm-cpu服务
INFERENCE_OP_MODE=fused \ OMP_NUM_THREADS=160 \ CUSTOM_CPU_AFFINITY=0-159 \ SYSHAX_QUANTIZE=q4_0 \ NRC=4 \ vllm serve /home/models/DeepSeek-R1-Distill-Qwen-32B \ --host 0.0.0.0 \ --port 8001 \ --dtype=half \ --block_size=16 \ --preemption_mode=swap \ --max_model_len=81923.2 CPU+GPU模式部署:性能优化
3.2.1 部署架构说明
CPU+GPU架构示意图
在此模式下,GPU主要处理计算密集型的Prefill请求,CPU则专注于访存密集型的Decode请求,通过共享内存实现KV Cache高效传输。
3.2.2 部署步骤概览
- 创建vllm-gpu容器(支持PD分离功能)
- 创建vllm-cpu容器(与GPU容器共享IPC资源)
- 配置并启动sysHAX服务
- 验证推理服务
3.3 CPU+NPU模式部署:国产化方案
对于采用国产NPU加速卡的场景,部署流程与CPU+GPU模式类似,只需替换相应的容器镜像和配置参数。
CPU+NPU架构示意图
四、sysHAX服务配置:核心参数详解 🔧
4.1 初始化配置文件
# 克隆源码仓库 git clone -b v0.2.1 https://gitcode.com/openeuler/sysHAX.git # 初始化配置 cd sysHAX python3 cli.py init4.2 关键配置项设置
# 设置GPU服务端口 python3 cli.py config gpu.port 8001 # 设置CPU服务端口 python3 cli.py config cpu.port 8002 # 设置sysHAX服务端口 python3 cli.py config conductor.port 8010 # 开启自动PD offload功能 python3 cli.py config auto_pd_offload true # 配置CPU最大并发量 python3 cli.py config cpu_max_batch_size 54.3 启动sysHAX服务
# 常规启动 python3 cli.py run # 调试模式启动(查看详细日志) DEBUG=1 python3 cli.py run五、发起推理请求:快速验证服务 📡
5.1 使用curl测试
curl http://0.0.0.0:8010/v1/chat/completions -H "Content-Type: application/json" -d '{ "messages": [ { "role": "user", "content": "介绍一下openEuler操作系统。" } ], "stream": true, "max_tokens": 1024 }'5.2 参数说明
| 参数 | 解释 |
|---|---|
| stream | 启用流式传输(true/false) |
| max_tokens | 限制生成的最大token数量 |
六、性能优化指南:让推理更快 ⚡
6.1 CPU线程配置建议
根据CPU核心数合理设置线程参数:
- 高性能模式:OMP_NUM_THREADS=160(全核心利用)
- 平衡模式:OMP_NUM_THREADS=120(保留部分资源)
6.2 量化策略选择
- q4_0量化:内存占用减少50%,性能损失较小
- q8_0量化:内存占用减少25%,精度更高
6.3 内存优化
- 设置合理的
--shm-size参数(建议64GB以上) - 根据模型大小调整
gpu_memory_utilization(推荐0.8)
七、常见问题解决:部署无忧 ❓
7.1 显存溢出问题
症状:Torch.OutOfMemoryError: Cuda Out of Memory
解决:
- 降低
gpu_memory_utilization值 - 使用量化模式(如--quantize q4_0)
- 减少
max_model_len参数
7.2 端口占用问题
症状:port is already allocated
解决:
- 使用
netstat -tulpn查找占用进程 - 更换端口号(如将8001改为8003)
7.3 IPC连接失败
症状:fail to join ipc namespace
解决:
- 确保vllm-gpu容器使用
--ipc="shareable"参数 - 先启动GPU容器再启动CPU容器
八、总结:开启高效推理之旅 🎉
通过本文的指南,你已经掌握了sysHAX在不同硬件环境下的部署方法。无论是纯CPU环境还是CPU+xPU异构环境,sysHAX都能通过智能调度和性能优化,帮助你构建高性能的大语言模型推理平台。
官方部署文档:
- CPU部署指南
- CPU+GPU部署指南
- CPU+NPU部署指南
开始你的高效推理之旅吧!如有任何问题,欢迎参与项目社区讨论。
【免费下载链接】sysHAXsysHAX Heterogeneous collaborative acceleration runtime项目地址: https://gitcode.com/openeuler/sysHAX
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考