X
Xiaoxy510/MOSS-TTS-Nano-100M-ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

MOSS-TTS-Nano-100M on Ascend NPU

1. 简介

本文档记录 MOSS-TTS-Nano-100M 在昇腾 NPU 环境的适配与验证结果。

模型信息:

  • 模型类型:多语言文本转语音(TTS)模型
  • 参数量:约 100M
  • 架构:Audio Tokenizer + LLM
  • 支持语言:20 种语言(中文、英文、德语、西班牙语、法语、日语等)

相关地址:

  • 原始模型(HuggingFace):https://huggingface.co/OpenMOSS-Team/MOSS-TTS-Nano
  • 原始模型(ModelScope):https://modelscope.cn/models/openmoss/MOSS-TTS-Nano
  • 音频 Tokenizer:https://huggingface.co/OpenMOSS-Team/MOSS-Audio-Tokenizer-Nano

2. 验证环境

组件版本
torch2.10.0+cpu
torch_npu2.10.0
transformers5.8.1
torchaudio2.10.0+cpu
  • NPU:1 逻辑卡
  • 模型路径:/data/xxy/MOSS-TTS-Nano-100M
  • Conda 环境:moss-tts-nano-100m

3. 环境配置

3.1 创建 conda 环境

conda create -n moss-tts-nano-100m python=3.10 -y
conda activate moss-tts-nano-100m

3.2 安装依赖

pip install torch==2.10.0 torchvision torchaudio==2.10.0 --index-url https://download.pytorch.org/whl/cpu
pip install torch-npu==2.10.0 transformers==5.8.1 sentencepiece --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install decorator attrs psutil cloudpickle ml-dtypes tornado scipy --index-url https://repo.huaweicloud.com/repository/pypi/simple/

3.3 验证环境

python -c "import torch; print('NPU available:', torch.npu.is_available())"

4. 适配方法

本适配针对 MossTTSNanoForCausalLM 模型进行 NPU 部署支持:

  1. 注意机制:使用 attn_implementation="eager" 避免 flash_attention 依赖
  2. 输入格式:模型需要 3D 输入 [batch, seq, n_vq + 1],其中第一列为文本 Token,其余为音频 Token
  3. 设备迁移:使用 model.to("npu:0") 将模型权重迁移到 NPU

4.1 关键修改

  • 禁用 flash_attention,使用 eager 注意力机制
  • 构建正确的 3D 输入格式(batch, seq, 17)
  • 文本 Token 放在第一通道,音频 Token 通道填充 pad_token_id

4.2 注意事项

  • MOSS-TTS-Nano 使用特殊的输入格式,需要构建 3D 张量
  • 音频 Tokenizer 需要额外下载(默认使用 HuggingFace 加载)
  • 模型支持 voice cloning 模式,需要提供参考音频

5. 使用方式

5.1 基本推理

# 基本推理
python inference.py --text "Hello world"

# 指定设备
python inference.py --text "你好" --device cpu
python inference.py --text "你好" --device npu:0

# 生成更长序列
python inference.py --text "Hello world" --max-length 100

5.2 精度与性能评测

python eval.py

评测结果将输出到终端并保存到 log.txt。

6. 评测结果

6.1 精度评测

使用随机输入对比 CPU 与 NPU 输出,计算最大绝对误差相对于值范围的百分比。

输出最大绝对误差相对误差 (%)
global_hidden_states1.98e-050.0003
全局1.98e-050.0003 ✅

精度阈值要求:相对误差 < 1%

6.2 性能评测

指标CPUNPU
平均推理耗时364.37 ms37.19 ms
加速比1x9.80x

7. 文件结构

MOSS-TTS-Nano-100M-ascend/
├── inference.py    # 推理脚本
├── eval.py         # 精度与性能评测脚本
├── log.txt         # 评测日志
└── README.md       # 本文档

8. 后续优化建议

  1. Voice Clone 模式:实现完整的 voice cloning 推理流程
  2. 音频解码:集成 MOSS-Audio-Tokenizer-Nano 进行音频生成
  3. 流式推理:实现流式 TTS 生成以降低延迟