You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内Blender/BlenderProc GPU渲染报错的解决咨询

如何在Docker容器中实现Blender/BlenderProc GPU渲染?

问题场景

在Docker容器中运行Blender 3.5.1 Linux版(搭配BlenderProc)时,出现CUDA初始化错误,只能使用CPU渲染,错误信息如下:

Selecting render devices...
CUDA cuInit: Unknown CUDA error value
Using only the CPU for rendering

现有Dockerfile配置

FROM nvidia/cuda:11.7.1-cudnn8-runtime-ubuntu20.04

ENV DEBIAN_FRONTEND noninteractive

# setup timezone
RUN echo 'Etc/UTC' > /etc/timezone && \
    ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
    apt-get update && \
    apt-get install -q -y --no-install-recommends tzdata && \
    rm -rf /var/lib/apt/lists/*

# Install necessary dependencies
RUN apt-get update && rm -rf /var/lib/apt/lists/*

RUN apt-get update && apt install -y --no-install-recommends \
    curl git lsb-release build-essential software-properties-common \
    cmake python3-pip python3-dev python-is-python3 zlib1g-dev \
    libboost-all-dev libglew-dev libfreeimage-dev libfreeimage3 \
    libxi-dev libxrandr-dev libxxf86vm-dev libopenal-dev libssl-dev \
    libvorbis-dev libogg-dev libjpeg-dev libfreetype6-dev libtiff-dev \
    libwebp-dev libavformat-dev libavcodec-dev libavdevice-dev \
    libavutil-dev libavfilter-dev libswscale-dev libswresample-dev \
    libasound2-dev libx11-xcb-dev libxcb-render0-dev libxcb-shm0-dev \
    libfontconfig1-dev libxkbcommon-x11-dev libsm6 nano

# setup environment
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8

## BlenderProc
WORKDIR /root
RUN git clone https://github.com/DLR-RM/BlenderProc.git
WORKDIR /root/BlenderProc
RUN pip install -e .

## Download textures
RUN echo 'import blenderproc as bproc' | cat - /root/BlenderProc/blenderproc/scripts/download_cc_textures.py > temp && mv temp /root/BlenderProc/blenderproc/scripts/download_cc_textures.py

ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility

主机NVIDIA环境信息

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.223.02   Driver Version: 470.223.02   CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  N/A |
| N/A   52C    P8     9W /  N/A |    103MiB /  5944MiB |     22%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1863      G   /usr/lib/xorg/Xorg                 32MiB |
|    0   N/A  N/A      2721      G   /usr/lib/xorg/Xorg                 69MiB |
+-----------------------------------------------------------------------------+

解决方案

1. 匹配CUDA版本兼容性

主机NVIDIA驱动支持的最高CUDA版本为11.4,当前Docker镜像使用的nvidia/cuda:11.7.1-cudnn8-runtime-ubuntu20.04版本过高,存在兼容性冲突。需更换为CUDA 11.4.x版本的镜像,示例:

FROM nvidia/cuda:11.4.3-cudnn8-runtime-ubuntu20.04

2. 配置NVIDIA容器运行时

  • 主机必须安装nvidia-docker2工具,而非仅标准Docker。若未安装,按照NVIDIA官方指引完成安装(Ubuntu系统可通过系统包管理器安装)。
  • 启动容器时必须添加--gpus all参数,确保GPU设备被正确映射,命令示例:
    docker run --gpus all -it your-image-name /bin/bash
    

3. 验证容器内CUDA环境

进入容器后执行nvidia-smi命令,若能输出与主机一致的GPU信息,说明CUDA环境配置正常。此时再运行BlenderProc测试渲染。

4. 显式指定BlenderProc渲染设备

在BlenderProc的脚本中,明确配置使用CUDA渲染,示例代码片段:

import blenderproc as bproc

bproc.init()
# 禁用CPU渲染,启用CUDA
bproc.renderer.set_cpu_threads(0)
bproc.renderer.enable_cuda()

内容的提问来源于stack exchange,提问作者bhomaidan90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 08:50:55