【发布时间】:2018-12-16 20:39:08
【问题描述】:
我有一个带有 6 个 v100 的机器学习平台,人们可以通过 Docker 容器内的 Jupyter 访问它们。我想控制谁使用哪个显卡,所以我必须设置一个环境变量。
所以,我想将环境变量NVIDIA_VISIBLE_DEVICES 设置为特定的显卡。但在 Jupyter(在 docker 容器上运行)中,用户可以编辑此变量,因此每个人都可以访问每个 GPU。
如何使这个变量不可写?
【问题讨论】:
我有一个带有 6 个 v100 的机器学习平台,人们可以通过 Docker 容器内的 Jupyter 访问它们。我想控制谁使用哪个显卡,所以我必须设置一个环境变量。
所以,我想将环境变量NVIDIA_VISIBLE_DEVICES 设置为特定的显卡。但在 Jupyter(在 docker 容器上运行)中,用户可以编辑此变量,因此每个人都可以访问每个 GPU。
如何使这个变量不可写?
【问题讨论】:
将readonly NVIDIA_VISIBLE_DEVICES添加到linux的某个启动文件(可能是.bashrc),在启动容器时使用-e设置NVIDIA_VISIBLE_DEVICES的默认值。
那么用户不能在jupyter中更改它。
【讨论】:
readonly 是特定于 bash 和其他 shell 的 shell 扩展,不影响子进程。我认为这不会解决 OP 的问题,如果容器不包含 bash 和/或不运行 shell 启动脚本(两者都很常见),则可能无法工作。