63
32

More than 1 year has passed since last update.

Docker 上で Pytorch を実行している際に DataLoader worker (pid xxx) is killed by signal: Bus error. というエラーが出る

Last updated at Posted at 2019-08-19

Docker コンテナ上で pytorch を動かしているときに、

DataLoader worker (pid xxx) is killed by signal: Bus error. 

というエラーが出ました。
原因を調べたのでメモしておきます。

エラーメッセージをググると、 Pytorch のフォーラムでのディスカッションが出てきます。

どうやら、shared memory が足りていないらしい。
ためしに以下のコマンドを打つと、

$ df -h

以下のような感じになっていました。

Filesystem Size Used Avail Use% Mounted on
shm 64M 0 64M 0% /dev/shm

64M しか確保されていない。

この問題は、docker run もしくは docker-compose up をするときに解決することができます。

https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources
https://stackoverflow.com/questions/30210362/how-to-increase-the-size-of-the-dev-shm-in-docker-container

docker run の場合、

docker run --rm -it --shm-size=256m Image /bin/sh

というふうに --shm-size というオプションを渡してあげればよいです。
渡せる値の形式は <number><unit> となっており、
numberは0より大きい整数、unitは、b, k, m, g のうちから一つ選択となっています。

docker-compose も同じで、

docker-compose.yml
build: .
shm_size: '2gb'

といった感じで書けるようです。

実際、 docker-compose.ymlshm_size: '2gb' を追加して実行すると、

Filesystem Size Used Avail Use% Mounted on
shm 2.0G 0 2.0G 0% /dev/shm

というふうに出力されて、無事めでたく shared memory の容量が増やせています。


2023/5/7 追記

以前この記事では、

docker-compose.yml
build: 
  - context: .
  - shm_size: '2gb'

のような書き方ができると書いていましたが、うまく動かなかったので、ChatGPT に聞いてみたところ、buildの中に書く書き方は間違っているようでした。

image.png

真偽の程は不明ですが、とりあえず解決できたので、参考になれば。


63
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
32