95 lines
3.9 KiB
Markdown
95 lines
3.9 KiB
Markdown
# 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-smi` vs `ixsmi`),输出格式差异大
|
||
- **解决方案**:
|
||
- 抽象统一的`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) | ✅ 支持 | - | - |
|
||
|
||
---
|
||
|
||
## 五、交付成果
|
||
|
||
1. **代码层**:统一的加速器抽象层(`app/core/accelerator.py`)
|
||
2. **部署文档**:
|
||
- 《沐曦GPU国产化离线部署指南》
|
||
- 《天数GPU国产化离线部署指南》
|
||
3. **环境配置**:专用依赖配置文件(metax/iluvatar)
|
||
4. **打包脚本**:一键离线打包工具
|
||
5. **Docker镜像**:专用Dockerfile和docker-compose配置
|
||
|
||
---
|
||
|
||
## 六、关键经验总结
|
||
|
||
1. **厂商官方镜像优先**:不自行编译GPU运行时,直接使用厂商验证过的vLLM镜像
|
||
2. **统一抽象层**:通过Adapter模式屏蔽硬件差异,上层业务无感知
|
||
3. **配置化驱动**:设备可见性、显存比例等参数化配置,适应不同现场环境
|
||
4. **离线交付优先**:提前规划离线部署方案,避免现场网络限制问题 |