tada-3b-ml on Ascend NPU
1. 简介
本文档记录 tada-3b-ml(TADA TTS 多语言模型)在昇腾 NPU(Ascend 910B3)环境的适配部署与精度验证结果。
TADA-3B-ML 基于 LlamaForCausalLM 架构(约 3.2B 参数),支持多语言文本到语音合成。本项目完成该模型 Llama 主干部分在昇腾 NPU 上的推理适配,验证 NPU 与 CPU 结果的精度误差 < 1%。
相关获取地址:
2. 验证环境
| 组件 | 版本 |
|---|
python | 3.11.x |
torch | 2.10.0+cpu |
torch_npu | 2.10.0 |
transformers | 5.8.1 |
CANN | 8.5.1 |
- NPU:
Ascend 910B3
- 框架:
PyTorch + transformers
3. 模型信息
| 项目 | 值 |
|---|
| 模型架构 | LlamaForCausalLM |
| 参数量 | ~3.2B |
| 权重格式 | safetensors |
| 框架 | PyTorch (transformers) |
4. Conda 环境安装
conda create -n tada-3b-ml python=3.11 -y
conda activate tada-3b-ml
pip install torch==2.10.0 torchvision==0.25.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install torch_npu==2.10.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install transformers safetensors --index-url https://repo.huaweicloud.com/repository/pypi/simple/
5. 推理执行
# NPU 推理(默认)
python3 inference.py --model_path /path/to/tada-3b-ml
# CPU 推理
python3 inference.py --model_path /path/to/tada-3b-ml --device cpu
# 精度与性能评测
python3 benchmark.py --model_path /path/to/tada-3b-ml
评测结果日志将输出到 log.txt。
6. 参数说明
| 脚本 | 参数 | 说明 | 默认值 |
|---|
inference.py | --model_path | 模型路径 | 必需 |
| --device | 运行设备 (npu:0 / cpu) | npu:0 |
benchmark.py | --model_path | 模型路径 | 必需 |
| --npu_device | NPU 设备 ID | npu:0 |
| --num_warmup | 预热轮数 | 3 |
7. 精度评测
评测方法
随机 token 输入(seq=32),对比 CPU(FP32)和 NPU(FP32)输出 logits。
精度数据
| 指标 | 数值 |
|---|
| 向量级相对误差 | 0.001306% |
| 余弦相似度 | 0.9999998212 |
| SNR | 97.05 dB |
| 最大绝对误差 | 3.80e-04 |
| 平均绝对误差 | 1.75e-05 |
判定结论
| 指标 | 实测值 | 阈值 | 状态 |
|---|
| 向量级相对误差 | 0.001% | < 1% | PASS |
8. 性能数据
| 操作 | 耗时 |
|---|
| CPU 推理时间(FP32) | 3.87 s |
| NPU 推理时间(FP32,3轮预热后) | 0.11 s |
| 加速比 (CPU / NPU) | 35.06 x |
9. 注意事项
- 使用
AutoModelForCausalLM 标准 transformers 接口加载。
- 模型为多语言 TTS 模型,输入为 token 序列,输出为 logits。
- 因模型较大(3.2B),CPU 推理耗时较长(约 8s),建议使用 NPU 推理。
- 权重文件(
.safetensors)不包含在适配仓库中,需单独下载。