Disable CUDA Malloc Async?

用户使用较旧 GPU(如笔记本低显存显卡)运行 InvokeAI 进行图像生成时,GPU 技术虽然支持 CUDA 和对应 PyTorch 版本,但 CUDA Malloc Async 异步内存分配功能不兼容,导致模型加载或推理失败。此前用户在 ComfyUI 中通过 --disable-cuda-m

Disable CUDA Malloc Async?

Disable CUDA Malloc Async?

快速结论:该报错出现在较旧 GPU 运行 InvokeAI 时,因 CUDA Malloc Async 异步内存分配不被硬件支持导致生成失败。优先排查 GPU 型号是否满足最低显存要求(3GB 以上),并尝试在 invokeai.yaml 中配置 pytorch_cuda_alloc_conf: "backend:cudaMalloc" 禁用异步分配。注意 Windows 系统下可能触发错误码 3221225477 等额外问题,需评估硬件兼容性。

问题场景

用户使用较旧 GPU(如笔记本低显存显卡)运行 InvokeAI 进行图像生成时,GPU 技术虽然支持 CUDA 和对应 PyTorch 版本,但 CUDA Malloc Async 异步内存分配功能不兼容,导致模型加载或推理失败。此前用户在 ComfyUI 中通过 --disable-cuda-malloc 参数解决了类似问题,但在 InvokeAI 中未找到相应选项。

报错原文

# 核心报错(用户未直接给出完整报错,但描述中涉及)
# Issue 中出现的内存分配错误(Windows 特定):
issue 3221225477 exclusive to Windows
# 以及调用异步分配器失败的隐含报错

原因分析

可能原因:

  • InvokeAI 默认启用 PyTorch 的 cudamallocasync(CUDA Malloc Async)内存分配器,该分配器需要较新 GPU 架构(如 Turing 及更新)支持。
  • 用户 GPU 不支持异步内存分配,或 Windows 系统下该分配器存在兼容性问题(错误码 3221225477)。
  • InvokeAI 保留 3GB VRAM 用于系统操作(如模型缓存、流程管线),用户 GPU 总显存低于此值,即使禁用异步分配也无法满足基本运行需求。

环境排查

  • 确认 GPU 型号与总显存大小(例如 nvidia-smi 查看 VRAM 总量)。
  • 确认 Python 版本(≥3.10)与 PyTorch 版本(偏好 2.x 系列)。
  • 检查 CUDA 版本是否匹配(例如 nvcc –version 与 torch.version.cuda 对比)。
  • 查看 invokeai.yaml 中是否已设置 pytorch_cuda_alloc_conf 或 low VRAM 相关选项。
  • 确认 Windows 系统与驱动版本(如果遇到错误码 3221225477)。

解决步骤

  1. 修改内存分配器配置文件:在 InvokeAI 根目录的 invokeai.yaml 中添加或修改:
    pytorch_cuda_alloc_conf: "backend:cudaMalloc"

    此操作会将 PyTorch CUDA 内存分配器从 cudamallocasync 切换为 native(即旧的 cudaMalloc 方式)。可优先尝试(来源:用户自测有效,但需注意副作用)。

  2. 启用 Low VRAM 模式:在同一配置文件中同时开启 low VRAM 模式(参考官方 Low VRAM 指南),以减少模型整体内存占用。
    # 示例(根据官方文档调整)
        --low_vram

    注意:此操作可能在 Windows 下触发错误码 3221225477。

  3. 检查显存需求并升级硬件:如果总 VRAM 仍低于 3GB(InvokeAI 保留的最小值),即使禁用异步分配也无法运行。建议:
    • 使用 nvidia-smi 确认可用显存。
    • 考虑更换满足最低显存要求的 GPU(官方推荐 ≥4GB VRAM)。
  4. Windows 特定问题:若遇到错误码 3221225477,可尝试:
    • 更新 NVIDIA 驱动程序至最新版本。
    • 切换到 Linux 环境(如 Ubuntu 22.04)避免该 Windows 专属错误。

验证方法

修改配置后,重新启动 InvokeAI 并观察启动日志。如果看到类似以下输出,表示分配器已切换成功:

pytorch cuda memory allocator changed from "cudamallocasync" to "native"

随后进行一次图像生成测试,若模型能够加载且无内存相关报错(如 out of memory3221225477),即可确认问题解决。

参考来源

invoke-ai/InvokeAI #9084

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 14427

发表回复

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