首页 > 解决方案 > 将 GPU 共享到 Kubernetes 中的多个容器或分数 GPU 资源请求

问题描述

我正在使用 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 并在清单文件中定义它吗?

清单的一部分(两个作业具有相同的 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 |
+-----------------------------------------------------------------------------+ 

标签: tensorflowkubernetesgpunvidiamnist

解决方案


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


推荐阅读