现在我有将近一周的时间来研究这个问题。 但我失败了。
环境:redhat7.2
k8s:v1.3.10 cuda:v7.5内核版本:367.44 t ensorflow:0.11 gpu:1080
我们的平台基于tensorflow和k8s。它是用于机器学习的训练。
使用cpu时,可以,但不能在gpu上工作,我想知道为什么。
我测试了你说的很多例子,但还是失败了
我的集群:1 主 2 节点。 每个节点都有一个gpu卡,只有master没有
首先我测试像@Hui-Zhi 说的:
vim test.yaml
apiVersion: v1
kind: Pod
metadata:
name: nvidia-gpu-test
spec:
containers:
- name: nvidia-gpu
image: nginx
resources:
limits:
alpha.kubernetes.io/nvidia-gpu: 1
是的,我测试过,它有效。 如果我将 nvidia-gpu: 1 更改为 2,则失败。 豆荚保持待定。 并描述发现:没有节点可以满足这一点。因为每个节点只有一张 GPU 卡,我认为它可以工作。
但问题来了:如何在 gpu 上运行? 这个例子只证明k8s可以拿到gpu,知道gpu,但是怎么跑呢? 我如何使用 yaml 文件创建一个在 gpu 资源上运行的 pod?
然后,我找到了另一种方法:nvidia-docker
我拉 gpu-image: gcr.io/tensorflow/t ensorflow:0.11-gpu ,并根据 docker 运行 mnist.py 演示, docker run -it ${image} /bin/bash
但失败了。 诸如“无法打开 CUDA 库 libcuda.so,无法找到 libcuda.so”之类的错误,
有没有人遇到过同样的问题?
然后我发现有人说:gpu 需要使用 nvidia-docker
幸运的是我安装为 tensorflow: https ://www.tensorflow.org/install/install_linux#gpu_support 说,根据 nvidia-docker 我发现我的训练在 gpu 上运行,gpu 内存几乎 7g,几乎 70%
我是这样运行的: nvidia-docker run -it ${image} /bin/bash
python mnist.py
是的,它有效。 但是一个新问题来了:我应该使用 docker 在 cpu 上运行,在 gpu 上使用 nvidia-docker 吗? 我只是在 docker 上运行 gpu,也许是 nvidia-docker,但是如何在 k8s 上运行 gpu。
k8s 容器使用 docker 而不是 nvidia-docker,那么我该如何以同样的方式做到这一点,你能帮我吗? 我想知道如何在 k8s 上运行 gpu,而不仅仅是演示或测试 yaml 来证明 k8s 支持 gpu。
希望你能回答我,我在等......
谢谢。
@tbchj #42116 现在已合并,应与 1.6 一起发布
@cmluciano是的,谢谢,也许你是对的。 我刚刚完全阅读了#42116,它似乎有我需要的东西。
我刚刚测试过,它确实有效。 我之前安装的卷是错误的。 我使用的新 yaml 如下
apiVersion: v1
kind: Pod
metadata:
name: gpu-test
spec:
volumes:
- name: nvidia-driver
hostPath:
path: /var/lib/nvidia-docker/volumes/nvidia_driver/367.44
containers:
- name: tensorflow
image: tensorflow:0.11.0-gpu
ports:
- containerPort: 8000
resources:
limits:
alpha.kubernetes.io/nvidia-gpu: 1
volumeMounts:
- name: nvidia-driver
mountPath: /usr/local/nvidia/
readOnly: true
我解决了我的问题,谢谢
最有用的评论
我刚刚测试过,它确实有效。 我之前安装的卷是错误的。 我使用的新 yaml 如下
我解决了我的问题,谢谢