PyTorchのDataloderでエラー(DataLoader worker (pid(s) *) exited unexpectedly)

PyTorchのDataloderのWorkerを大きくして実行しようとしたら、以下のようなエラー。

RuntimeError: DataLoader worker (pid(s) *) exited unexpectedly

原因としては共有メモリの不足。特にDocker環境だとホストで実行している場合よりも共有メモリが少ないので、このようなエラーが起きがち。

対処法1 Docker run時に共有メモリを多めに割り当てる

デフォルトでは64MB割り当てられているので、それよりも増やす。下記だと1024MB割り当てる。

$ docker run --shm-size=1024m ~~~

対処法2 workerの数を減らす

エラーが起きないところまで減らす。再度docker runをしたくない場合、そもそもDocker環境じゃない場合、など。