No module named ‘kernels’

在 InvokeAI 的 ROCm Docker 容器中遇到 CPU 回退,核心报错为 No module named 'kernels' 。该问题通常源于容器内缺少 ROCm 相关依赖或设备权限配置不当,优先排查容器内是否包含 rocminfo 工具以及 render 组的 ID 是否与宿主机一致

快速结论:在 InvokeAI 的 ROCm Docker 容器中遇到 CPU 回退,核心报错为 No module named 'kernels'。该问题通常源于容器内缺少 ROCm 相关依赖或设备权限配置不当,优先排查容器内是否包含 rocminfo 工具以及 render 组的 ID 是否与宿主机一致。

适用环境:Linux(TrueNAS Scale)、AMD RX 7900 XTX(24GB VRAM)、InvokeAI 6.14.0-alpha(main-rocm 分支,Docker 方式安装)。

最快修复方案:Issue 评论中确认的可行方案是手动进入容器安装 rocminfo 工具(通过 apt 安装),安装后 InvokeAI 能正确识别 AMD GPU 并运行在 cuda:0 设备上。注意,官方预构建镜像未包含该工具,因此需手动补装。

注意事项:该方案虽然让 InvokeAI 识别了 GPU,但 Issue 作者后续报告渲染时内存占用异常飙升(超过 24GB 后容器崩溃),该问题在 Issue 中尚未解决。此外 No module named 'kernels' 的提示在识别 GPU 后仍然出现,表明 4-bit 量化相关功能可能仍不可用。

问题场景

用户在 TrueNAS Scale 上以 Docker 方式运行 InvokeAI 的 main-rocm 镜像,已通过 --device /dev/kfd--device /dev/dri 将 AMD GPU 透传给容器,但应用始终只使用 CPU。日志显示容器缺少 ROCm 相关工具(如 rocminfo),导致无法检测 GPU 架构并回退到 CPU 设备。

报错原文

Could not detect ROCm GPU architecture: [Errno 2] No such file or directory: 'rocminfo'
Could not detect ROCm warp size: [Errno 2] No such file or directory: 'rocminfo'. Defaulting to 64. (some 4-bit functions may not work!)
Failed to load CPU gemm_4bit_forward from kernels-community: No module named 'kernels'. Please make sure you already `pip install kernels` and the kernels >= 0.11.1
Using torch device: CPU

原因分析

可能原因:Issue 作者对比了旧版本 Dockerfile(v5.2.0)后指出,当前 main-rocm 镜像的 Dockerfile 和 GitHub Actions 构建配置中均未包含 rocminfo 工具的安装步骤。容器内缺少该工具,导致 InvokeAI 无法检测 ROCm GPU 架构,从而回退到 CPU。此问题与 Docker Compose 中的 GPU_DRIVER=rocm 环境变量无关,因为该变量仅在镜像构建时生效,而非运行时。

环境排查

  • 确认宿主机的 render 组 ID:在宿主机执行 getent group render,查看输出中的数字(本例为 107),对比容器内的组 ID 是否一致。
  • 确认容器内是否存在 rocminfo 可执行文件,可在容器内执行 which rocminfo 验证。
  • 检查 InvokeAI 版本是否为 main-rocm 标签对应的构建版本(本例为 6.14.0-alpha)。
  • 确认 AMD 驱动已在宿主机正确安装,且 /dev/kfd/dev/dri 设备在容器内可见。

解决步骤

  1. 确认宿主机 render 组 ID,在 Docker Compose 或运行命令中设置 RENDER_GROUP_ID 环境变量为宿主机对应值(例如 107),并在容器配置中添加 group_add: -video -render。注意:Issue 作者尝试了此方案但无效,因此不作为首选。
  2. 进入容器手动安装 rocminfo 工具(例如在容器内执行 apt 安装 rocm-smi-lib 或包含 rocminfo 的包),安装后重启 InvokeAI 服务。这是 Issue 评论区确认有效的方法,可优先尝试。
  3. 安装完成后,观察启动日志是否出现 Using torch device: [AMD Radeon RX 7900 XTX (cuda:0)...],确认 GPU 已被识别。
  4. 如果渲染时仍出现内存溢出,需单独排查。Issue 作者在 GPU 被识别后尝试渲染,内存使用量异常飙升导致容器崩溃,该问题未在本次 Issue 中得到解决。

验证方法

安装 rocminfo 并重启后,观察 InvokeAI 启动日志。如果 GPU 被正确识别,日志中会显示类似 Using torch device: [AMD Radeon RX 7900 XTX (cuda:0), AMD Radeon 760M Graphics (cuda:1)] 的信息,且不再出现 Using torch device: CPU。同时可在 WebUI 中执行一次简单的文生图任务,确认实际推理运行在 GPU 上。

参考来源

invoke-ai/InvokeAI #9490

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 18296

发表回复

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