9c61c2ea创建于 3月20日历史提交

🎙️ FunCosyVoice3 昇腾 NPU 适配版 (Ascend 910B/C)

本项目基于 FunAudioLLM/CosyVoice 官方源码进行深度分叉与定制,专为 国产化昇腾算力(Ascend NPU) 环境提供全面适配与性能优化。

全面支持 昇腾 910B 系列(910B2/B3/B4)910C,在保障生成质量的同时,大幅提升了在国产硬件上的推理稳定性与实时性能。


✨ 核心特性与修改范围

为实现 FunCosyVoice3-2512 模型在昇腾环境下的高效推理,本项目利用 Torch_NPUvLLM 框架进行了底层调度与算子级优化:

🛠️ 代码结构级修改

  • 新增cosyvoice/utils/device.py —— 用于更细粒度的 NPU/CPU 设备调度与资源管理。
  • 修改
    • cosyvoice/cli/model.py
    • cosyvoice/cli/cosyvoice.py
    • cosyvoice/cli/frontend.py
    • cosyvoice/utils/onnx.py

🔧 算子与逻辑级修复 (Bug Fixes & Workarounds)

  1. 规避异步报错:针对 NPU 上 aclnnUnfoldGrad 算子在处理 torch.istft 时引发的底层异步报错问题进行了屏蔽与调度重构。
  2. 异构计算调度:由于 NPU 对 istft 算子的支持存在局限,主动拦截 NPU 侧的 istft 操作,将其强制调度至 CPU 上执行,确保音频重建的稳定性与正确性。
  3. 状态异常修复:修复了在特定 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 版本匹配)

源码依赖安装

  1. git clone https://gitcode.com/AdaMatrix/CosyVoice.git
  2. cd CosyVoice
  3. pip install -r requirements-dev.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com

权重下载

  1. mkdir -p /opt/atomgit/Fun-CosyVoice3-0.5B-2512
  2. nohup modelscope download --model FunAudioLLM/Fun-CosyVoice3-0.5B-2512 --local_dir /opt/atomgit/Fun-CosyVoice3-0.5B-2512 > download.log 2>&1 &
  3. tail -n 100 -f download.log

🤝 Acknowledgments

  • 核心算法与原始代码框架继承自 FunAudioLLM/CosyVoice
  • 感谢 vLLM 与昇腾开源社区在底层算子适配上提供的支持。