3.9 KiB
3.9 KiB
Qwen-Asr 国产化兼容适配汇报
一、适配目标
完成对 沐曦(MetaX) 和 天数(Iluvatar) 两款国产GPU的完整适配,实现语音识别服务在国产硬件平台的稳定运行。
二、适配历程与关键节点
| 时间 | 里程碑 | 关键动作 |
|---|---|---|
| 2026-06-02 | 架构设计 | 新增Accelerator抽象层,重构设备检测逻辑 |
| 2026-06-02 | 沐曦适配 | 新增沐曦GPU支持(MetaX MACA runtime) |
| 2026-06-02 | 天数适配 | 新增天数GPU支持(Iluvatar IX runtime) |
| 2026-06-03 | 部署完善 | 完善沐曦全流程部署支持,升级天数基础镜像 |
| 2026-06-04 | 问题修复 | 修复setuptools版本冲突,优化pip安装配置 |
三、遇到的主要"坑"与解决方案
坑1:设备检测适配问题
- 问题:不同厂商使用不同的设备查询命令(
mx-smivsixsmi),输出格式差异大 - 解决方案:
- 抽象统一的
AcceleratorAdapter接口 - 支持多种SMI命令格式解析(JSON/表格/列表)
- 自动检测优先级:国产厂商SMI → NVIDIA → CPU
- 抽象统一的
坑2:vLLM/PyTorch版本不兼容
- 问题:国产GPU的vLLM、PyTorch、内核和运行时需要严格匹配厂商官方版本
- 解决方案:
- 采用"厂商官方vLLM镜像 + 项目代码叠加"策略
- 不在Dockerfile中重新
pip install vllm,避免解析到NVIDIA CUDA依赖 - 提供专用环境配置文件(
environments/metax/、environments/iluvatar/)
坑3:环境变量命名混乱
- 问题:各厂商使用不同的设备可见性变量名
- 解决方案:
- 沐曦:
METAX_VISIBLE_DEVICES/MACA_VISIBLE_DEVICES/MX_VISIBLE_DEVICES - 天数:
ILUVATAR_VISIBLE_DEVICES/IX_VISIBLE_DEVICES/CUDA_VISIBLE_DEVICES - 代码层统一处理,支持多种变量名自动识别
- 沐曦:
坑4:显存管理问题
- 问题:国产GPU显存分配策略与NVIDIA不同,默认配置易导致KV cache不足
- 解决方案:
- 引入
QWEN_GPU_MEMORY_UTILIZATION配置项(默认0.25) - 强制启用
QWEN_VLLM_ENFORCE_EAGER=true提升兼容性 - 提供详细的显存配置指导文档
- 引入
坑5:离线部署打包复杂
- 问题:目标机通常无法联网,需要完整的离线交付包
- 解决方案:
- 开发
export_offline_bundle.sh一键打包脚本 - 支持跳过模型打包(模型单独准备)
- 生成厂商专用的docker-compose配置
- 开发
坑6:Python环境依赖冲突
- 问题:沐曦官方镜像使用特定Python路径和setuptools版本
- 解决方案:
- 不使用uv虚拟环境,直接使用系统Python
- 固定setuptools版本为69.5.1
- 支持自定义Python路径配置
四、兼容性矩阵
| 平台 | 支持状态 | 基础镜像 | 设备命令 |
|---|---|---|---|
| NVIDIA CUDA | ✅ 支持 | 自定义CUDA 13.0 | nvidia-smi |
| 沐曦 MetaX | ✅ 支持 | vLLM 0.17.0 + MACA AI3.5.3 | mx-smi |
| 天数 Iluvatar | ✅ 支持 | vLLM 0.17.0 + IX 4.4.0 | ixsmi |
| CPU (Rust) | ✅ 支持 | - | - |
五、交付成果
- 代码层:统一的加速器抽象层(
app/core/accelerator.py) - 部署文档:
- 《沐曦GPU国产化离线部署指南》
- 《天数GPU国产化离线部署指南》
- 环境配置:专用依赖配置文件(metax/iluvatar)
- 打包脚本:一键离线打包工具
- Docker镜像:专用Dockerfile和docker-compose配置
六、关键经验总结
- 厂商官方镜像优先:不自行编译GPU运行时,直接使用厂商验证过的vLLM镜像
- 统一抽象层:通过Adapter模式屏蔽硬件差异,上层业务无感知
- 配置化驱动:设备可见性、显存比例等参数化配置,适应不同现场环境
- 离线交付优先:提前规划离线部署方案,避免现场网络限制问题