Pytorch在docker中的只读模式

voase2hg  于 2024-01-06  发布在  Docker
关注(0)|答案(1)|浏览(199)

我在docker中运行pytorch。安全团队的要求是在只读模式下运行docker。
我需要将主进程与模型进行分叉,这就是为什么我使用函数module.share_memory()将所有模型移动到共享内存并使用torch.multiprocessing.set_sharing_strategy('file_system'),因为否则在file_descriptor模式下,1024个打开的文件描述符对我来说是不够的,而且我不能增加它,因为它在Linux中是硬编码的。
所以当我在只读模式下运行docker时,我会得到一个错误:

  1. File "/app/.venv/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1515, in share_memory
  2. return self._apply(lambda t: t.share_memory_())
  3. File "/app/.venv/lib/python3.9/site-packages/torch/nn/modules/module.py", line 387, in _apply
  4. module._apply(fn)
  5. File "/app/.venv/lib/python3.9/site-packages/torch/nn/modules/module.py", line 387, in _apply
  6. module._apply(fn)
  7. File "/app/.venv/lib/python3.9/site-packages/torch/nn/modules/module.py", line 387, in _apply
  8. module._apply(fn)
  9. [Previous line repeated 2 more times]
  10. File "/app/.venv/lib/python3.9/site-packages/torch/nn/modules/module.py", line 409, in _apply
  11. param_applied = fn(param)
  12. File "/app/.venv/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1515, in <lambda>
  13. return self._apply(lambda t: t.share_memory_())
  14. File "/app/.venv/lib/python3.9/site-packages/torch/tensor.py", line 385, in share_memory_
  15. self.storage().share_memory_()
  16. File "/app/.venv/lib/python3.9/site-packages/torch/storage.py", line 143, in share_memory_
  17. self._share_filename_()
  18. RuntimeError: std::exception at /pytorch/torch/lib/libshm/core.cpp:99

字符串
我知道我需要给给予一个额外的RW访问一些目录,但我不知道是哪些目录。你能帮助我,我怎么能找到这些目录?当然有一个RW访问/dev/shm,我甚至可以看到,pytorch创建文件,但然后崩溃与上述错误。
我用的是Pytroch1.8.1.

yks3o0rb

yks3o0rb1#

我可以用两种不同的方法来修复它:

  1. docker中的ENV TEMP=/var/tmp(将pytorch的tmp路径从默认的/tmp更改为/var/tmp),并通过添加到docker run args:-v /var/tmp:/var/tmp来提供对/var/tmp的rw访问
  2. docker run args中的-v /tmp:/tmp(pytorch默认使用/tmp

相关问题