使用 Inference Endpoints 实现极速 Whisper 转录
今天,我们很高兴地宣布 Inference Endpoints 上新增了极速的 OpenAI Whisper 部署选项。与以前的版本相比,它提供了高达 8 倍的性能提升,使每个人都能通过一键部署专用的、强大的转录模型,以经济高效的方式利用 AI 社区的卓越成果。
通过此次发布,我们希望使 Inference Endpoints 更加以社区为中心,并允许任何人参与并贡献,在 Hugging Face 平台上创建令人难以置信的推理部署。我们将与社区一起,通过使用出色的现有开源技术,为各种任务提供优化的部署方案。
Hugging Face 独特的地位在于,它身处开源 AI 社区的核心,与个人、机构和工业合作伙伴携手合作,使其成为在各种硬件和软件上部署 AI 模型进行推理时,最为异构的平台。
推理栈
新的 Whisper 端点利用了出色的开源社区项目。推理由 vLLM 项目提供支持,该项目提供了在各种硬件系列(尤其是但不限于 NVIDIA GPU)上运行 AI 模型的有效方式。我们使用 vLLM 对 OpenAI Whisper 模型的实现,使我们能够在软件栈中实现更进一步的底层优化。
在此初始版本中,我们针对计算能力为 8.9 或更高(Ada Lovelace)的 NVIDIA GPU(如 L4 和 L40s),这解锁了广泛的软件优化。
- PyTorch 编译 (torch.compile)
- CUDA 图
- 使用
torch.compile
进行 float8 KV 缓存编译可以即时 (JIT) 生成优化的内核,它可以修改计算图、重新排序操作、调用专用方法等。
CUDA 图记录了在 GPU 上发生的顺序操作或内核的流程,并尝试将它们作为更大的工作单元块进行分组,以便在 GPU 上执行。这种分组操作通过执行单个更大的工作单元,而不是多个较小的工作单元,减少了数据移动、同步和 GPU 调度开销。
最后但同样重要的是,我们正在动态量化激活,以减少 KV 缓存所需的内存。计算以半精度(在本例中为 bfloat16)完成,输出以降低的精度存储(float8 为 1 字节,而 bfloat16 为 2 字节),这使我们能够在 KV 缓存中存储更多元素,从而提高缓存命中率。
有很多方法可以继续推动这项工作,我们正准备与社区携手合作,共同改进!
基准测试
Whisper Large V3 在 RTFx 方面实现了近 8 倍的改进,从而在不损失转录质量的情况下实现了更快的推理。
我们评估了几种基于 Whisper 的模型——Whisper Large V3、Whisper Large V3-Turbo 和 Distil-Whisper Large V3.5 的转录质量和运行时效率,并将它们与 Transformers 库上的实现进行了比较,以评估在相同条件下的准确性和解码速度。
我们计算了 Open ASR 排行榜中 8 个标准数据集的词错误率 (WER),包括 AMI、GigaSpeech、LibriSpeech (Clean 和 Other)、SPGISpeech、Tedlium、VoxPopuli 和 Earnings22。这些数据集涵盖了不同的领域和录音条件,确保了对泛化和实际转录质量的稳健评估。WER 通过计算错误预测的单词百分比(通过插入、删除或替换)来衡量转录准确性;WER 越低表示性能越好。所有三种 Whisper 变体都保持了与其 Transformer 基线相当的 WER 性能。
为了评估推理效率,我们从 rev16 长格式数据集进行采样,该数据集包含长度超过 45 分钟的音频片段——代表了会议、播客或采访等实际转录工作负载。我们测量了实时因子 (RTFx),定义为音频持续时间与转录时间的比率,并对样本进行了平均。所有模型都在单个 L4 GPU 上以 bfloat16
格式进行评估,使用一致的解码设置(语言、波束大小和批处理大小)。

如何部署
您可以通过 Hugging Face Endpoints 部署自己的 ASR 推理管道。Endpoints 允许任何希望将 AI 模型部署到生产就绪环境的人,只需填写几个参数即可实现。它还拥有市场上最完整的 AI 硬件舰队,以满足您对成本和性能的需求。所有这些都直接从 AI 社区的建立地获取。要开始使用,没有比这更简单的了,只需选择您要部署的模型:
推理
在已部署的模型端点上运行推理只需几行 Python 代码即可完成,您也可以在 Javascript 或任何其他您熟悉的语言中使用相同的结构。
以下是一个快速测试已部署检查点的小片段。
import requests
ENDPOINT_URL = "https://<your‑hf‑endpoint>.cloud/api/v1/audio/transcriptions" # 🌐 replace with your URL endpoint
HF_TOKEN = "hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # 🔑 replace with your HF token
AUDIO_FILE = "sample.wav" # 🔊 path to your local audio file
headers = {"Authorization": f"Bearer {HF_TOKEN}"}
with open(AUDIO_FILE, "rb") as f:
files = {"file": f.read()}
response = requests.post(ENDPOINT_URL, headers=headers, files=files)
response.raise_for_status()
print("Transcript:", response.json()["text"])
FastRTC 演示
有了这个极速的端点,就可以构建实时转录应用程序。请尝试这个使用 FastRTC 构建的示例。只需对着麦克风说话,即可实时看到您的语音被转录!
Spaces 可以轻松复制,因此请随意复制。以上所有内容都在 Hugging Face Hub 中我们的专用 HF Endpoints 组织中提供给社区使用。提出问题、建议用例并在此处贡献:hfendpoints-images (Inference Endpoints Images) 🚀