RuntimeError: CUDA failed with error initialization error

这个报错通常出现在同一块 GPU 上先加载 HuggingFace pipeline,再初始化 faster-whisper(CTranslate2)模型的场景,优先排查两者的加载顺序以及 CUDA 初始化行为。

快速结论:这个报错通常出现在同一块 GPU 上先加载 HuggingFace pipeline,再初始化 faster-whisper(CTranslate2)模型的场景,优先排查两者的加载顺序以及 CUDA 初始化行为。

适用环境:Issue 中确认的场景为在同一块 GPU 上同时运行一个 HuggingFace translation pipeline(NLLB,device=”cuda”)和 faster-whisper 的 CTranslate2 Whisper 模型;发帖者排除了 OOM。Issue 未明确给出操作系统、Python、CUDA、显卡型号及依赖版本。

最快修复方案:先加载 faster_whisper 模型,再加载 HuggingFace 模型。发帖者明确表示该顺序可以绕过此问题。

注意事项:发帖者本人也表示“不清楚为什么这样能生效”,该方案属于经验性规避而非根因修复。Issue 中另有用户表示在其他模型上仍会遇到同类问题,说明该顺序调整不保证对所有组合都有效。评论区提到的 NVIDIA cuBLAS + cuDNN 安装检查、以及 CUDA 与 forked 进程的兼容性,均为可能方向,未在 Issue 中被确认为最终原因。

问题场景

用户在同一块 GPU 上同时使用两个模型:一个 HuggingFace 的翻译 pipeline(NLLB 模型,指定 device=”cuda”),以及一个 faster-whisper 模型。当代码在 HuggingFace pipeline 之后初始化 faster-whisper 的 CTranslate2 Whisper 模型时触发报错。

用户强调这不是 OOM:两个模型单独加载都可以正常工作,并且可以检查显存占用。

报错原文

self.model = ctranslate2.models.Whisper(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: CUDA failed with error initialization error
terminate called after throwing an instance of 'std::runtime_error'
  what():  CUDA failed with error unspecified launch failure
Aborted

原因分析

最可能的原因是 CUDA 初始化顺序问题:先初始化的 HuggingFace 侧 CUDA 环境(PyTorch)与随后 CTranslate2 的 CUDA 初始化发生冲突,导致 CTranslate2 创建 Whisper 模型时报 initialization error。发帖者通过调换加载顺序(先 faster-whisper,后 HuggingFace)成功绕过,印证了这一点。

其他可能原因(Issue 中提出但未确认):

  • 未正确安装 GPU 所需的 NVIDIA 库(cuBLAS + cuDNN)。
  • 与 CUDA 在 forked 进程中的行为有关(参考 PyTorch 多进程 CUDA 说明)。
  • 调用 torch.cuda.is_available() 可能影响 CUDA 初始化时机。

环境排查

  • 确认 faster-whisper 所需 GPU 依赖是否已安装:NVIDIA cuBLAS 与 cuDNN。
  • 确认 HuggingFace pipeline 中的 device 设置(如 "cuda")与 faster-whisper 的 device 配置。
  • 确认是否存在多进程/fork 行为,使 CUDA 在子进程中被复用。
  • 确认模型加载顺序:HuggingFace pipeline 是否在 faster-whisper 之前初始化。
  • 确认代码中是否调用了 torch.cuda.is_available()。
  • Issue 未提供具体的 Python、CUDA、PyTorch、ctranslate2 版本及显卡型号,排查时需自行核实。

解决步骤

  1. 调整代码顺序:先初始化 faster-whisper(CTranslate2 Whisper)模型,再创建 HuggingFace translation pipeline。
  2. 若仍报错,可优先尝试移除或延后调用 torch.cuda.is_available(),避免它在不合适的时机触发 CUDA 初始化(此建议来自评论区,属于可优先尝试的方向)。
  3. 检查是否已安装 faster-whisper GPU 所需的 NVIDIA 库(cuBLAS + cuDNN)。
  4. 检查代码中是否存在多进程/fork,避免在 fork 出的子进程中直接使用 CUDA。
  5. 如果必须两个模型共存且顺序调整无效,考虑将两者放在不同 GPU 或不同进程中隔离运行(此为该类问题的通用思路,Issue 中未验证)。

验证方法

按“先 faster-whisper、后 HuggingFace”的顺序重新运行原脚本,确认不再出现 RuntimeError: CUDA failed with error initialization error,且两个模型均可正常加载与推理。

参考来源

SYSTRAN/faster-whisper #776

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 27202

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注