在nvidia-docker中限制GPU使用?

3

我正在一个多GPU服务器上设置内部Jupyterhub,通过Docker实例提供Jupyter访问。 我希望为每个用户限制GPU访问不超过一张卡。 谢谢任何建议或意见。


我认为Docker在这方面没有太多发言权。如果您能够在不使用Docker的情况下限制应用程序仅使用单个GPU,那么您也应该能够在使用Docker时做到这一点。 - Salem
我无法控制人们要运行的应用程序。这是一个教学机器。我想限制单个用户可用的资源,以防止任何滥用。 - Dinesh K.
3个回答

2
你可以尝试使用nvidia-docker-compose
version: "2"
services
  process1:
    image: nvidia/cuda
    devices:
      - /dev/nvidia0

1
问题可以通过以下方式解决,只需在“nvidia-docker”之前添加环境变量“NV_GPU”,如下所示:
 [root@bogon ~]# NV_GPU='4,5' nvidia-docker run -dit --name tf_07 tensorflow/tensorflow:latest-gpu /bin/bash
e04645c2d7ea658089435d64e72603f69859a3e7b6af64af005fb852473d6b56
[root@bogon ~]# docker attach tf_07
root@e04645c2d7ea:/notebooks#
root@e04645c2d7ea:/notebooks# ll /dev
total 4
drwxr-xr-x  5 root root      460 Dec 29 03:52 ./
drwxr-xr-x 22 root root     4096 Dec 29 03:52 ../
crw--w----  1 root tty  136,   0 Dec 29 03:53 console
lrwxrwxrwx  1 root root       11 Dec 29 03:52 core -> /proc/kcore
lrwxrwxrwx  1 root root       13 Dec 29 03:52 fd -> /proc/self/fd/
crw-rw-rw-  1 root root   1,   7 Dec 29 03:52 full
drwxrwxrwt  2 root root       40 Dec 29 03:52 mqueue/
crw-rw-rw-  1 root root   1,   3 Dec 29 03:52 null
crw-rw-rw-  1 root root 245,   0 Dec 29 03:52 nvidia-uvm
crw-rw-rw-  1 root root 245,   1 Dec 29 03:52 nvidia-uvm-tools
crw-rw-rw-  1 root root 195,   4 Dec 29 03:52 nvidia4
crw-rw-rw-  1 root root 195,   5 Dec 29 03:52 nvidia5
crw-rw-rw-  1 root root 195, 255 Dec 29 03:52 nvidiactl
lrwxrwxrwx  1 root root        8 Dec 29 03:52 ptmx -> pts/ptmx
drwxr-xr-x  2 root root        0 Dec 29 03:52 pts/
crw-rw-rw-  1 root root   1,   8 Dec 29 03:52 random
drwxrwxrwt  2 root root       40 Dec 29 03:52 shm/
lrwxrwxrwx  1 root root       15 Dec 29 03:52 stderr -> /proc/self/fd/2
lrwxrwxrwx  1 root root       15 Dec 29 03:52 stdin -> /proc/self/fd/0
lrwxrwxrwx  1 root root       15 Dec 29 03:52 stdout -> /proc/self/fd/1
crw-rw-rw-  1 root root   5,   0 Dec 29 03:52 tty
crw-rw-rw-  1 root root   1,   9 Dec 29 03:52 urandom
crw-rw-rw-  1 root root   1,   5 Dec 29 03:52 zero
root@e04645c2d7ea:/notebooks#

或者,阅读{{link1:github上的nvidia-docker wiki}}


1

有3个选项。

使用NVIDIA RUNTIME的Docker(版本2.0.x)

根据官方文档

docker run --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=2,3

nvidia-docker (版本 1.0.x)

基于一篇热门文章

nvidia-docker run .... -e CUDA_VISIBLE_DEVICES=0,1,2

(它使用TensorFlow)

以编程方式

import os
os.environ["CUDA_VISIBLE_DEVICES"]="0,1,2"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接