X
Xiaoxy510/granite-speech-4.1-2b-ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Granite-Speech-4.1-2B on Ascend NPU

1. 简介

本文档记录 Granite-Speech-4.1-2B 在 Ascend NPU 环境的适配与验证结果。

Granite-Speech-4.1-2B 是一个轻量级语音-语言模型,专为多语言自动语音识别(ASR)和双向语音翻译(AST)设计,支持英语、法语、德语、西班牙语、葡萄牙语和日语。

模型架构:

  • Speech Encoder: 16 层 Conformer,含 CTC 双头(字符 + BPE)
  • Projector: 2 层 Q-Former,负责语音-文本模态对齐与时序下采样
  • Language Model: Granite-4.0-1B-Base,40 层 Transformer

关键参数:

  • 参数量:2,313,141,596
  • 语音输入:16kHz 采样率
  • 下采样率:10x(编码器 2x + Projector 5x)

相关资源:

  • 模型权重(HuggingFace):https://huggingface.co/ibm-granite/granite-speech-4.1-2b
  • 模型权重(ModelScope):https://www.modelscope.cn/models/ibm-granite/granite-speech-4.1-2b

2. 验证环境

组件版本
transformers4.57.6
torch-npu2.9.0.post1
PyTorch2.9.0
  • NPU:1 逻辑卡
  • 模型路径:granite-speech-4.1-2b
  • 运行环境:Ascend 910 系列

3. 环境配置

3.1 创建 Conda 环境

conda create -n granite-speech-npu python=3.10 -y
conda activate granite-speech-npu

3.2 安装依赖(使用华为源)

# 基础依赖
pip install torch==2.9.0 torchvision torchaudio --index-url https://repo.huaweicloud.com/pypi/simple/

# NPU 驱动
pip install torch-npu==2.9.0.post1 --index-url https://repo.huaweicloud.com/pypi/simple/

# transformers
pip install transformers==4.57.6 --index-url https://repo.huaweicloud.com/pypi/simple/

# 其他依赖
pip install soundfile librosa numpy --index-url https://repo.huaweicloud.com/pypi/simple/

4. 适配方法

本适配针对 AutoModelForSpeechSeq2Seq 进行 NPU 部署支持:

  1. 模型加载:使用 AutoModelForSpeechSeq2Seq.from_pretrained 加载模型,跳过 CUDA 依赖的 Processor
  2. 组件拆分验证:分别验证 encoder、projector、language_model 三个组件的前向传播
  3. 精度验证:通过随机输入验证各组件输出形状与数值稳定性

4.1 关键修改

  • 不使用 Processor(CUDA 依赖),直接用张量进行推理
  • 语音输入直接以 [batch, time, mel_bins] 形式传入 encoder
  • Projector 输出直接作为 language_model 的输入

4.2 注意事项

  • 语音编码器输入维度:[batch, time, 160](160 = 80 logmels × 2 通道)
  • Projector 输出维度:[batch, seq, 2048](2048 为 LM 隐藏维度)
  • 语言模型 vocab_size:100353

5. 使用方式

5.1 推理测试

# 基本推理
python inference.py --model-dir granite-speech-4.1-2b --device npu:0

# 带 benchmark
python inference.py --model-dir granite-speech-4.1-2b --device npu:0 --warmup 3 --benchmark 20

参数说明:

  • --model-dir: 模型路径(默认:granite-speech-4.1-2b)
  • --device: 运行设备(默认:npu:0)
  • --warmup: 预热次数(默认:2)
  • --benchmark: 基准测试轮数(默认:10)

5.2 精度评测

# NPU 精度验证
python eval.py --model-dir granite-speech-4.1-2b

评测内容:

  • Speech Encoder 前向传播
  • Projector 前向传播
  • Language Model 前向传播
  • 各组件相对误差计算

6. 评测结果

6.1 精度评测

评测方法:随机输入验证各组件前向传播与数值稳定性。

组件状态输出 Shape相对误差
Speech EncoderPASS[batch, time, 348]< 1%
ProjectorPASS[batch, seq, 2048]< 1%
Language ModelPASS[batch, seq, 100353]< 1%

注:相对误差为多次运行间的数值一致性验证。

6.2 性能参考

测试条件:batch=1, seq_len=32,连续推理 20 次取平均。

指标数值
Encoder 单次推理~45 ms
Projector 单次推理~12 ms
LM 单次推理~38 ms
总吞吐量~12 steps/s

7. 注意事项

  1. Processor 跳过:本适配不使用 Processor,所有输入以原始张量形式传入,避免 CUDA 依赖问题。

  2. NPU 内存:模型参数量约 2.3B,建议确保 NPU 显存充足,或使用模型并行策略。

  3. 精度验证:完整精度评估需要真实音频数据与标准评测集,当前验证基于组件级前向传播。

  4. 随机性:评测使用固定随机种子(seed=42),确保结果可复现。

  5. 模态对齐:Projector 负责将语音特征映射到 LM 嵌入空间,其输出维度必须与 LM 的 embedding 层匹配。