Docker共享内存大小超出范围或未处理的系统错误,NCCL版本2.7.8

Docker共享内存大小超出范围或未处理的系统错误,NCCL版本2.7.8,docker,docker-compose,portainer,Docker,Docker Compose,Portainer,以下错误和解决方案适用于在中通过YAML部署堆栈,但它们肯定可以应用于docker 环境: PYTORCH="1.8.0" CUDA="11.1" CUDNN="8" GPUs: Geforce RTX 3090 当尝试使用单个GPU时,会引发共享内存大小超出界限错误 另外,当我使用更多的GPU(4)时,我得到了一个不同的错误,即 RuntimeError: NCCL error in: /opt/conda/conda-bld/py

以下错误和解决方案适用于在中通过YAML部署堆栈,但它们肯定可以应用于docker

环境:

PYTORCH="1.8.0"
CUDA="11.1"
CUDNN="8"
GPUs: Geforce RTX 3090
当尝试使用单个GPU时,会引发共享内存大小超出界限错误

另外,当我使用更多的GPU(4)时,我得到了一个不同的错误,即

RuntimeError: NCCL error in: /opt/conda/conda-bld/pytorch_1614378083779/work/torch/lib/c10d/ProcessGroupNCCL.cpp:825, unhandled system error, NCCL version 2.7.8

但是,如果您使用NCCL,您会注意到它的根实际上是一个共享内存大小错误。

默认情况下,共享内存的大小限制为。因此,如问题中所示,此错误的解决方案是增加共享内存的大小

因此,首先想到的想法是在堆栈的YAML文件中定义类似于
shm_size:9gb
的内容。但是,这可能不会如图所示那样起作用,例如在问题中

因此,最后,我不得不使用以下变通方法(也有描述,但文档记录不完整):

但是,要使其正常工作,应确保堆栈YAML文件的版本是最新版本(否则可能会出现语法错误),例如3.7。完整的堆栈YAML文件:

version: '3.7'

services:
  mmaction2:
    shm_size: 256m # doesn't work
    image: something 
    tty: true
    volumes:
      - data-transfer:/mnt/data_transfer
      - type: tmpfs
        target: /dev/shm
        tmpfs:
          size: 9000000000 # ~9gb

volumes:
  # local
  data-transfer:
    driver: local
    name: data-transfer 
version: '3.7'

services:
  mmaction2:
    shm_size: 256m # doesn't work
    image: something 
    tty: true
    volumes:
      - data-transfer:/mnt/data_transfer
      - type: tmpfs
        target: /dev/shm
        tmpfs:
          size: 9000000000 # ~9gb

volumes:
  # local
  data-transfer:
    driver: local
    name: data-transfer