我正在使用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 |
+-----------------------------------------------------------------------------+
答案 0 :(得分:2)
目前不支持多个容器上的GPU共享,并且不太可能很快得到支持。您需要让每个虚拟机都是一个单独的Kubernetes节点,每个节点都有一个单独的GPU。
答案 1 :(得分:0)
kubernetes的官方文档说,您可以为pod中的GPU请求的最小值是1,而不是分数。您可以查看kubeflow项目,因为kubernetes不支持在Pod之间共享单个GPU。