Kernel dies when trying to run model.transcribe

该报错通常出现在 faster-whisper 已成功初始化 CUDA 模型、但执行 model.transcribe() 时 Jupyter/Colab 内核直接崩溃的场景,优先排查 ctranslate2 版本与 OpenMP 运行库( libiomp5md.dll )冲突。

快速结论:该报错通常出现在 faster-whisper 已成功初始化 CUDA 模型、但执行 model.transcribe() 时 Jupyter/Colab 内核直接崩溃的场景,优先排查 ctranslate2 版本与 OpenMP 运行库(libiomp5md.dll)冲突。

适用环境:Issue 中报告的 Python 3.10、CUDA 11.8、cuDNN 8.9、PyTorch 2.0.0、ctranslate2 4.4.0、gcc/g++ 11,Windows 与 Linux 均有人复现。

最快修复方案:降级 ctranslate2 到 4.4.0:pip install ctranslate2==4.4.0;Windows 上若存在多个 libiomp5md.dll,将 conda 环境的 Library\bin 下那份重命名或移开。

注意事项:降级 ctranslate2 属于版本回退,可能与新版 faster-whisper 的依赖声明不一致;改名 libiomp5md.dll 会破坏其他依赖该路径的程序,建议改名并保留可回滚记录,不要直接删除。

问题场景

用户在 Conda 环境中通过 PyTorch 官方源安装 CUDA 版本 PyTorch,再安装 nvidia-cublas-*、nvidia-cudnn-* 并设置 LD_LIBRARY_PATH,然后在 Jupyter Notebook(test.ipynb)里用 WhisperModel(model_path, device="cuda", compute_type="int8") 加载模型,调用 Whisper.transcribe() 时内核直接崩溃。模型初始化阶段正常,说明 CUDA 设备本身可被识别,问题发生在推理执行阶段。

报错原文

Kernel dies when trying to run model.transcribe

Kernel Restarting.
The kernel for _SHARED/test.ipynb appears to have died. It will restart automatically.

原因分析

最可能的原因是推理阶段加载的原生库发生冲突,而不是 CUDA 不可用。Issue 中多位用户确认了两类触发因素:

  • ctranslate2 版本问题:多人在将 ctranslate2 降级到 4.4.0 后问题消失,说明较新版本与当前 CUDA/cuDNN 组合可能存在不兼容。
  • OpenMP 运行库重复加载:系统中存在多个 libiomp5md.dll(分别来自 ctranslate2、torch 以及 Conda 的 Library\bin),执行 transcribe() 时发生冲突导致进程被杀。

此外,维护者指出 pip install nvidia-cublas-* nvidia-cudnn-* 并不是切换 CUDA 版本的正常方式,因此这部分操作可能引入了额外的库路径混乱,但这属于推测。

环境排查

  • 确认 Python 版本(Issue 中可用组合为 Python 3.10)。
  • 确认 CUDA 版本与 cuDNN 版本(Issue 中可用组合为 CUDA 11.8 + cuDNN 8.9)。
  • 确认 PyTorch 版本(Issue 中可用组合为 PyTorch 2.0.0)。
  • 确认 ctranslate2 版本(Issue 中可用为 4.4.0,多人在更高版本上崩溃)。
  • Windows 下搜索所有 libiomp5md.dll,记录 ctranslate2、torch、Conda Library\bin 各路径下的副本。
  • 确认当前是否设置了 LD_LIBRARY_PATH,以及在 Notebook 中如何 export(Notebook 单元格里直接写 export 不一定生效于内核进程)。

解决步骤

  1. 先降级 ctranslate2 并重启内核:pip install ctranslate2==4.4.0,然后重新执行 WhisperModel(...) 与 transcribe()。这是 Issue 中多人确认有效的方案。
  2. 若降级无效,在系统中查找全部 libiomp5md.dll,例如 Windows 下 Conda 环境内典型的三个位置:envs\p04\Lib\site-packages\ctranslate2\、envs\p04\Lib\site-packages\torch\lib\、envs\p04\Library\bin\。将 Library\bin 下的那份重命名为 libiomp5md_save.dll(保留备份),重启内核后再试。Issue 中有 Windows 与 Linux 用户均反馈此方法有效。
  3. 可在代码开头添加环境变量后再导入相关库,作为可优先尝试的规避方式:
    import os
    os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"

    Issue 中有人反馈该设置有效,但官方文档通常不建议用此方式掩盖重复库问题,属于临时绕过。

  4. 有用户反馈把 .ipynb 转成 .py 脚本运行即可,原因未明确,可作为 Notebook 环境异常时的对照测试。
  5. 若上述均无效,再检查 LD_LIBRARY_PATH 是否在 Notebook 内核中真正生效,避免仅设置 nvidia-* 包而干扰既有 CUDA 环境。

验证方法

重启内核后重新执行完整流程,确认 WhisperModel(..., device="cuda") 能正常初始化,随后 transcribe() 能返回 segments 与 info,且内核不再出现 “Kernel Restarting / appears to have died”。若 CPU 推理始终正常而 CUDA 推理仍崩溃,说明库冲突未彻底解决。

参考来源

SYSTRAN/faster-whisper #752

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 27202

发表回复

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