首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker共享内存大小超出界限或未处理的系统错误,NCCL版本2.7.8

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

Stack Overflow用户
提问于 2021-04-12 10:24:31
回答 1查看 686关注 0票数 1

下面的错误和解决方案用于在传送带中通过YAML部署堆栈,但它们肯定可以应用于对接程序。

环境:

代码语言:javascript
复制
PYTORCH="1.8.0"
CUDA="11.1"
CUDNN="8"
GPUs: Geforce RTX 3090

尝试使用单个GPU进行训练模型时,会引发共享内存大小超出界限的错误。

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

代码语言:javascript
复制
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,您会注意到,在它的根,它实际上是一个共享内存大小错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-12 10:24:31

在默认情况下,共享内存的大小似乎仅限于64。因此,如问题所示,解决此错误的方法是增加共享内存的大小。

因此,想到的第一个想法就是在堆栈的YAML文件中定义类似于shm_size: 9gb的东西。但是,这可能不像在问题中所显示的那样起作用。

因此,最后,我不得不使用以下解决方法(也描述了这里,但文档不全):

代码语言:javascript
复制
volumes:
      - data-transfer:/mnt/data_transfer
      - type: tmpfs
        target: /dev/shm
        tmpfs:
          size: 9000000000

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

代码语言:javascript
复制
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 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67056737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档