基于 Step-Audio-EditX 的华为昇腾 NPU 适配版本,支持 Ascend 910B 推理。
Step-Audio-EditX 是 stepfun-ai 开源的 3B 参数 LLM 音频编辑与 TTS 模型,支持:
本仓库提供 AWQ 4-bit 量化 版本在 华为昇腾 Ascend 910B NPU 上的推理适配,通过权重反量化至 BF16 实现 NPU 兼容。
| 项目 | 说明 |
|---|---|
| 原始模型 | stepfun-ai/Step-Audio-EditX-AWQ-4bit |
| 模型架构 | Step1ForCausalLM (3B params, GQA, ALiBi) |
| 量化方式 | AWQ 4-bit (compressed-tensors) → BF16 反量化 |
| 适配工具 | torch_npu 2.9.0, NPU 直接推理 |
| 推理精度 | BF16 |
| 硬件要求 | Atlas 800T A2 (Ascend 910B), ≥8GB HBM |
| 软件环境 | CANN 25.5+, torch_npu ≥2.9.0, transformers ≥4.57 |
# 基础依赖
pip install torch torch_npu transformers safetensors einops numpy
# 下载模型 (ModelScope)
pip install modelscope
modelscope download --model stepfun-ai/Step-Audio-EditX-AWQ-4bit
# 使用本仓库的推理代码
git clone <this-repo>
cd Step-Audio-EditX-AWQ-4bit
# 反量化模型 (一次性操作)
python dequantize_and_run_npu.py --dequantize-onlypython inference.py --prompt "你好,今天天气真好。" --max-tokens 100from inference import load_model_npu, generate
model, tokenizer = load_model_npu("npu_dequantized")
result = generate(model, tokenizer, "你好,世界。", max_new_tokens=100)
print(result["generated_text"])NPU vs CPU (BF16) Logits 对比:
| 测试输入 | Max Abs Diff | Mean Abs Diff | Cosine Similarity |
|---|---|---|---|
| 中文短文本 | 0.4375 | 0.0636 | 0.999808 |
| 英文短文本 | 0.8594 | 0.0905 | 0.999492 |
| 中文日常 | 0.4375 | 0.0594 | 0.999810 |
在 Atlas 800T A2 (Ascend 910B) 上的推理性能:
| 输入长度 | 生成 Tokens | 耗时 | 速度 (tok/s) |
|---|---|---|---|
| 短文本 (6 tokens) | 50 | 3.43s | 14.6 |
| 中等文本 (30 tokens) | 100 | 7.80s | 12.8 |
| 长文本 (42 tokens) | 200 | 16.02s | 12.5 |
Step-Audio-EditX-AWQ-4bit/
├── inference.py # NPU 推理脚本
├── dequantize_and_run_npu.py # 反量化工具 & 权重处理
├── npu_dequantized/ # 反量化后的 BF16 模型
│ ├── config.json
│ ├── model.safetensors # BF16 权重 (~6.6GB)
│ ├── tokenizer.model
│ ├── tokenizer_config.json
│ ├── generation_config.json
│ └── configuration_step1.py
├── accuracy_results.json # 精度评估结果
├── perf_results.json # 性能评估结果
└── README.md@article{stepaudio2025editx,
title = {Step-Audio-EditX: Controllable and Expressive Speech Synthesis via Audio LLM},
author = {StepFun AI},
journal = {arXiv preprint arXiv:2511.03601},
year = {2025}
}Apache-2.0