weixin_62994174/Step-Audio-EditX-AWQ-4bit
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Step-Audio-EditX-AWQ-4bit (Ascend NPU 适配版)

基于 Step-Audio-EditX 的华为昇腾 NPU 适配版本,支持 Ascend 910B 推理。

模型简介

Step-Audio-EditX 是 stepfun-ai 开源的 3B 参数 LLM 音频编辑与 TTS 模型,支持:

  • 零样本语音克隆 (Zero-shot TTS):支持中文、英文、日语、韩语、四川话、粤语
  • 情感编辑 (Emotion Editing):数十种情感控制(开心、愤怒、悲伤、兴奋等)
  • 说话风格编辑 (Speaking Style):耳语、严肃、儿童、温柔等多种风格
  • 副语言编辑 (Paralinguistic):呼吸、笑声、叹息、咳嗽等细微控制
  • 降噪 (Denoising)、语速控制 (Speed Control)

本仓库提供 AWQ 4-bit 量化 版本在 华为昇腾 Ascend 910B NPU 上的推理适配,通过权重反量化至 BF16 实现 NPU 兼容。

适配说明 (NPU Adaptation)

项目说明
原始模型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-only

推理方式

快速推理

python inference.py --prompt "你好,今天天气真好。" --max-tokens 100

Python API

from 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 DiffMean Abs DiffCosine Similarity
中文短文本0.43750.06360.999808
英文短文本0.85940.09050.999492
中文日常0.43750.05940.999810
  • 平均余弦相似度:0.999703 ✅
  • 功能性等价:输出 Token 分布与 CPU 基准一致
  • 注:相对百分比差异因接近零的 logit 值而放大,余弦相似度是更可靠的精度指标

性能评估

在 Atlas 800T A2 (Ascend 910B) 上的推理性能:

输入长度生成 Tokens耗时速度 (tok/s)
短文本 (6 tokens)503.43s14.6
中等文本 (30 tokens)1007.80s12.8
长文本 (42 tokens)20016.02s12.5
  • 平均推理速度:13.3 tok/s
  • 模型参数:3.53B (BF16, ~6.6GB)
  • NPU 显存占用:~6.6GB (权重) + ~200MB (KV Cache) ≈ 7GB

文件结构

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

适配流程

  1. 环境检查:确认 Ascend NPU 驱动、CANN、torch_npu 可用
  2. 模型下载:通过 ModelScope 下载 AWQ 4-bit 模型权重
  3. 权重反量化:compressed-tensors AWQ 4-bit → BF16 (dequantize_and_run_npu.py)
  4. 架构注册:将 Step1ForCausalLM 注册至 transformers AutoModel
  5. NPU 加载:直接加载 BF16 权重至 NPU 设备
  6. 推理验证:运行 inference.py 确认推理通路正常
  7. 精度对比:NPU vs CPU logits 对比,余弦相似度 >0.999
  8. 性能基准:测量 NPU 推理吞吐量

限制说明

  • 当前适配仅覆盖 Audio LLM (Step1ForCausalLM) 部分的 NPU 推理
  • CosyVoice 声码器 (音频解码) 建议在 GPU/CPU 上运行
  • FunASR 音频编码器 在 CPU 上运行
  • 完整端到端 TTS 流水线需配合原始 Step-Audio-EditX 代码库使用

引用

@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}
}

License

Apache-2.0