PyTorch On K8S 共享内存问题定位

PyTorch On K8S 共享内存问题定位

Background

将Pytorch运行在K8S,报以下错误:

ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memory (shm).

问题定位

根据PyTorch README发现:

Please note that PyTorch uses shared memory to share data between processes, so if torch multiprocessing is used (e.g. for multithreaded data loaders) the default shared memory segment size that container runs with is not enough, and you should increase shared memory size either with --ipc=host or --shm-size command line options to nvidia-docker run.

这里说明了,PyTorch的IPC会利用共享内存,所以共享内存必须足够大。

Docker默认共享内存是64M,并且可以通过docker run --shm-size进行修改,但是K8S怎么搞呢?根据API文档,发现K8S没办法直接指定,所以只能另辟蹊径。

参考: issue

最终解决方法:

      volumes:
      - name: dshm
        emptyDir:
          medium: Memory
      containers:
        - volumeMounts:
          - mountPath: /dev/shm
            name: dshm

原来emptyDir还是支持内存,然后挂载到容器的shm目录,最终实现对容器的共享内存进行扩容。脑洞有点大,学习了。

推荐阅读更多精彩内容

  • 消息队列 消息队列是在内核中实现的,并且是具有一定的优先级的一种进程间通信模型 POSIX PIC消息队列 在un...
    秋风弄影阅读 573评论 0 0
  • 烈日当空天气好 知了叫嚣鸟争鸣 路傍商贩抢占道 原由竟是拉行人 莫不言说太寂寥 闲来无事解衣衫 准备出门做伸展 哪...
    88青青子衿阅读 31评论 0 0
  • 中午吃烤鱼太咸,用白开水过一遍,满碗的游水辣椒,以前从来没有关注这些细节,想想自己肠胃的吸收,自己愿不愿意喝下这碗...
    恒心者阅读 44评论 1 1
  • 各位亲爱的瑜舍家人们, 最近在学习情绪管理,通过许多植物来定性不同情绪类型,昨天在开会时跟杭州伙伴谈到某种人格特质...
    瑾爷Jaya阅读 246评论 1 5
  • 生活还需有自己的节奏。不为乱石所击,不为流言所毁。 看到动态,是否可以认为他的毅然决然的离开以及到来是为我。我是不...
    兰珺阅读 19评论 0 0