🎙️ FunCosyVoice3 昇腾 NPU 适配版 (Ascend 910B/C)
本项目基于 FunAudioLLM/CosyVoice 官方源码进行深度分叉与定制,专为 国产化昇腾算力(Ascend NPU) 环境提供全面适配与性能优化。
全面支持 昇腾 910B 系列(910B2/B3/B4) 及 910C,在保障生成质量的同时,大幅提升了在国产硬件上的推理稳定性与实时性能。
✨ 核心特性与修改范围
为实现 FunCosyVoice3-2512 模型在昇腾环境下的高效推理,本项目利用 Torch_NPU 与 vLLM 框架进行了底层调度与算子级优化:
🛠️ 代码结构级修改
- 新增:
cosyvoice/utils/device.py—— 用于更细粒度的 NPU/CPU 设备调度与资源管理。 - 修改:
cosyvoice/cli/model.pycosyvoice/cli/cosyvoice.pycosyvoice/cli/frontend.pycosyvoice/utils/onnx.py
🔧 算子与逻辑级修复 (Bug Fixes & Workarounds)
- 规避异步报错:针对 NPU 上
aclnnUnfoldGrad算子在处理torch.istft时引发的底层异步报错问题进行了屏蔽与调度重构。 - 异构计算调度:由于 NPU 对
istft算子的支持存在局限,主动拦截 NPU 侧的istft操作,将其强制调度至 CPU 上执行,确保音频重建的稳定性与正确性。 - 状态异常修复:修复了在特定 NPU 推理场景下,
max_tokens异常突变为负数,以及flow张量 shape 被意外改变的严重逻辑问题。
🚀 性能表现 (Performance)
在昇腾 NPU 环境下,针对 FunCosyVoice3-0.5B 模型进行了高强度连续推理压测:
| 测试指标 | 测试结果 | 结论 |
|---|---|---|
| 测试硬件 | 昇腾 910B4 32GB | - |
| 压测规模 | 连续 100 次语音合成请求 | 运行稳定,无内存泄漏或异常中断 |
| 平均 RTF (实时率) | 0.5873 |
满足基本的实时语音交互与合成的业务需求 |
注:RTF (Real-Time Factor) < 1 表示生成语音的时间短于语音本身的播放时长。
📦 环境依赖与安装
本项目依赖特定版本的 vLLM 与昇腾适配包以发挥最佳性能,请确保您的环境符合以下要求:
核心依赖版本
- vLLM-Ascend
== 0.14.0rc1 - vLLM
== 0.14.1 - Torch_NPU (需与您环境的 CANN 版本匹配)
源码依赖安装
- git clone https://gitcode.com/AdaMatrix/CosyVoice.git
- cd CosyVoice
- pip install -r requirements-dev.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
权重下载
- mkdir -p /opt/atomgit/Fun-CosyVoice3-0.5B-2512
- nohup modelscope download --model FunAudioLLM/Fun-CosyVoice3-0.5B-2512 --local_dir /opt/atomgit/Fun-CosyVoice3-0.5B-2512 > download.log 2>&1 &
- tail -n 100 -f download.log
🤝 Acknowledgments
- 核心算法与原始代码框架继承自 FunAudioLLM/CosyVoice。
- 感谢 vLLM 与昇腾开源社区在底层算子适配上提供的支持。