ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

如何把distil-large-v2再提速一倍:Flash Attention 2与BetterTransformers实战

如何把distil-large-v2再提速一倍:Flash Attention 2与BetterTransformers实战

【免费下载链接】distil-large-v2

项目地址:https://ai.gitcode.com/hf_mirrors/distil-whisper/distil-large-v2
点击查看免费下载

distil-large-v2是从 Whisper large-v2 蒸馏而来的轻量级英文语音识别(ASR)模型,转写速度已是原版的6 倍。本文带你用 Flash Attention 2 与 BetterTransformers 两大官方推荐优化,在同显卡上再压榨出约 2 倍的转写速度;即使显卡资源有限,也能在 3 分钟内完成语音识别加速配置。

1️⃣ distil-large-v2 为什么已经很快?

先建立直觉,理解"提速空间在哪",后面的优化才不会盲目:

  • 模型仅756M参数(Whisper large-v2 为 1550M),从 config.json 可以看到解码器被压缩到仅2 层(原版为 32 层),编码器保留 32 层。
  • 官方在 README.md 中指出:解码器的自回归生成占据总推理时间的 90% 以上——这正是注意力加速技术的最佳着力点。
  • 精度方面,WER(词错误率)与原版差距不足 1%,属于"又快又准,还能更快"的理想对象。
模型参数量 / M相对延迟短句 WER ↓
large-v215501.0x9.1
distil-large-v27565.8x10.1
distil-small.en1665.6x12.1

2️⃣ 方案一:一行代码开启 Flash Attention 2(NVIDIA 显卡首选)

Flash Attention 2 是官方第一推荐的优化方案。只要你的显卡支持(RTX 30/40 系、A100、H100 等,sm80+),它就是首选。

第一步:安装 flash-attn

pip install flash-attn --no-build-isolation

第二步:加载模型时加一个参数

model = AutoModelForSpeechSeq2Seq.from_pretrained( "distil-whisper/distil-large-v2", torch_dtype=torch_dtype, use_flash_attention_2=True, # 一行加速 )

无需改动任何业务代码,推理路径会自动切换到 Flash Attention 内核,显存占用同时下降。

💡 小技巧:FA2 在 FP16/BF16 下收益最大,记得加载时指定torch_dtype=torch.float16。

3️⃣ 方案二:BetterTransformers 加速指南(不支持 FA2 的显卡)

如果显卡较老或环境装不了 flash-attn,可以用 BetterTransformers 调用 PyTorch 原生的 Scale-Product-Attention(SDPA)内核,获得接近的加速效果。

第一步:安装 optimum 库

pip install --upgrade optimum

第二步:加载模型后执行转换

model = model.to_bettertransformer() # 一行完成转换

转换后照常调用generate即可,模型会自动走优化后的注意力实现。

两种加速方案快速对比

对比项Flash Attention 2BetterTransformers
适用硬件sm80+ 的 CUDA GPU绝大多数 CUDA GPU
安装成本较高(需源码编译)低(pip 直装)
加速效果最佳较好
开启方式use_flash_attention_2=Truemodel.to_bettertransformer()

4️⃣ 再叠加 3 个"免费"提速技巧

  • FP16 半精度:加载时设torch_dtype=torch.float16,显存减半,也是上述两种加速的前置条件。
  • 长音频分块批处理:对超过 30 秒的音频,给pipeline传入chunk_length_s=15, batch_size=16,多块并发转写,官方实测比 Whisper 原版顺序算法快9 倍。
  • 投机解码:把 distil-large-v2 作为 whisper-large-v2 的"助手模型",数学上保证输出与原版完全一致,同时快2 倍——是最优雅的无损失提速。
  • 限制生成长度:短音频建议max_new_tokens=128,避免解码器空转。

完整的参数组合示例均可在 README.md 中查到。

5️⃣ 没有 GPU?用 whisper.cpp 在 CPU 上跑

仓库内已附带 ggml 格式权重,可直接配合 whisper.cpp 使用:

  • ggml-large-32-2.en.bin(量化版,推荐)
  • ggml-large-32-2.fp32.en.bin(全精度版)

在 Mac M1 上实测,distil-large-v2 比 large-v2 快2 倍,长音频 WER 差距仅 0.1%。想在纯 CPU 或 Apple Silicon 上部署语音转文字,这是最省心的路径。

6️⃣ 模型文件怎么选?

仓库提供多框架权重,按技术栈对号入座即可:

使用场景推荐文件
Transformers(PyTorch,默认)model.safetensors
旧版 PyTorch 环境pytorch_model.bin
openai-whisper 原生框架original-model.bin
whisper.cpp 推理ggml-large-32-2.en.bin
ONNX Runtimeonnx/encoder_model.onnx
Flax / JAXflax_model.msgpack

配套的 tokenizer.json、preprocessor_config.json、generation_config.json 随权重一起加载即可,无需修改。

7️⃣ 总结

  • 首选Flash Attention 2:一行use_flash_attention_2=True,高端 NVIDIA 显卡收益最佳。
  • 备选BetterTransformers:model.to_bettertransformer(),安装简单、兼容性广。
  • 别忘了叠加 FP16、长音频分块批处理、投机解码这三招"免费"提速。
  • 无 GPU 环境,whisper.cpp + ggml 权重的 CPU 推理同样值得尝试。

按上述组合落地后,distil-large-v2 可以在保持 WER 差距 1% 以内的前提下,把转写延迟再压缩一大截——快,而且是真的快。

【免费下载链接】distil-large-v2

项目地址:https://ai.gitcode.com/hf_mirrors/distil-whisper/distil-large-v2
点击查看免费下载

相关推荐

上一篇:Supra2-IMG之后:Supra2.5-IMG路线图与100M级AI绘图的下一步走向
下一篇:一条命令上线OpenAI兼容API:InternVL2-8B-MPO 的 LMDeploy 生产级部署指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进