在Kubernetes或分数GPU资源请求中将GPU共享到多个容器

时间:2018-06-13 15:49:39

标签: tensorflow kubernetes gpu nvidia mnist

我正在使用Kubernetes(K8)v1.7,并想知道我是否可以在多个pod之间共享GPU。我在TensorFlow中有一个MNIST机器学习程序,其中GPU分配设置为30%,GPU增长allow_growth为假。两个清单文件用于在K8下部署两个单独的作业。当我一起运行它们时,由于GPU资源不可用,因此会对其进行调度,而其他运行则会等待。在我的清单文件中,我将alpha.kubernetes.io/nvidia-gpu设置为0.5。当我检查GPU进程时,它总是显示一个进程正在运行。如果我从Kubernetes停止一项工作,那么其他工作将被安排并显示在GPU进程中。仅供参考,我使用的机器只有一个GPU。所以我的问题是Kubernetes是否支持GPU共享?我可以共享GPU并在清单文件中定义它吗?

Manifest的一部分(两个作业都有相同的GPU请求)

  resources:
    limits:
      alpha.kubernetes.io/nvidia-gpu: 0.5

nvidia-smi命令的输出一次显示1个进程

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 396.26                 Driver Version: 396.26                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 108...  Off  | 00000000:0B:00.0 Off |                  N/A |
|  0%   33C    P2    59W / 275W |    177MiB / 11178MiB |      8%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0     15513      C   python3                                      167MiB |
+-----------------------------------------------------------------------------+ 

2 个答案:

答案 0 :(得分:2)

目前不支持多个容器上的GPU共享,并且不太可能很快得到支持。您需要让每个虚拟机都是一个单独的Kubernetes节点,每个节点都有一个单独的GPU。

答案 1 :(得分:0)

kubernetes的官方文档说,您可以为pod中的GPU请求的最小值是1,而不是分数。您可以查看kubeflow项目,因为kubernetes不支持在Pod之间共享单个GPU。