test/docs/国产化兼容适配汇报.md

95 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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. **离线交付优先**:提前规划离线部署方案,避免现场网络限制问题