Jetzt habe ich fast eine Woche Zeit, um an dieser Frage zu arbeiten. aber ich habe versagt.
Umgebung: redhat7.2
k8s:v1.3.10 cuda:v7.5 Kernel- Version:367.44 t ensorflow:0.11 gpu:1080
unsere auf tensorflow und k8s basierende Plattform ist für Schulungen zu ML gedacht.
Wenn CPU verwendet wird, ist es in Ordnung, kann aber nicht auf der GPU arbeiten, ich möchte wissen, warum.
Ich habe viele Beispiele getestet, die du gesagt hast, aber es ist immer noch gescheitert
mein Cluster: 1 Master 2 Knoten. jeder Node hat eine GPU-Karte, nur der Master hat keine
Zuerst teste ich wie @Hui-Zhi sagte:
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
Ja, ich habe es getestet und es funktioniert. wenn ich nvidia-gpu ändere: 1 bis 2, fehlgeschlagen. Pod ausstehend. und beschreiben gefunden: Kein Node kann dies erfüllen. Da jeder Node nur eine GPU-Karte hat, denke ich, dass es funktioniert.
aber frage kommt: wie auf der gpu laufen? dieses beispiel beweist nur, dass k8s gpu bekommen kann und gpu kennt, aber wie läuft man darauf? Wie kann ich eine Yaml-Datei verwenden, um einen Pod zu erstellen, der auf einer GPU-Ressource ausgeführt wird?
Dann habe ich einen anderen Weg gefunden: nvidia-docker
Ich ziehe gpu-image: gcr.io/tensorflow/t ensorflow:0.11-gpu und führe die mnist.py-Demo gemäß Docker aus, docker run -it ${image} /bin/bash
aber scheiterte. ein Fehler wie "kann die CUDA-Bibliothek libcuda.so nicht öffnen, kann libcuda.so nicht finden",
Ob jemand auf das gleiche Problem gestoßen ist?
dann fand ich, dass jemand sagte: gpu muss nvidia-docker verwenden
zum glück habe ich als tensorflow installiert: https://www.tensorflow.org/install/install_linux#gpu_support sagte,laut nvidia-docker fand ich meinen trainingslauf auf gpu,und gpu-speicher fast 7g, fast 70%
Ich laufe so: nvidia-docker run -it ${image} /bin/bash
python mnist.py
ja es funktioniert. aber eine neue frage kommt: sollte ich docker verwenden, um auf der cpu zu laufen, und nvidia-docker auf der gpu? ich laufe nur auf gpu nur auf docker , vielleicht nvidia-docker, aber wie man gpu auf k8s ausführt.
k8s container verwendet docker, aber nicht nvidia-docker, also wie kann ich dies auf die gleiche Weise tun, können Sie mir helfen? ich möchte wissen, wie man gpu auf k8s ausführt, nicht nur eine demo oder ein test-yaml, um zu beweisen, dass k8s gpu unterstützt.
hoffentlich kannst du mir antworten, ich warte....
Danke.
@tbchj #42116 ist jetzt zusammengeführt und sollte mit 1.6 veröffentlicht werden
@cmluciano ja, danke, vielleicht hast du recht. Ich habe gerade #42116 total gelesen, es scheint etwas zu haben, das ich brauche.
Ich habe gerade getestet, es hat funktioniert. Das Volumen, das ich mounte, war vorher falsch. das neue yaml habe ich wie folgt verwendet
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
Ich löse mein Problem, danke
Hilfreichster Kommentar
Ich habe gerade getestet, es hat funktioniert. Das Volumen, das ich mounte, war vorher falsch. das neue yaml habe ich wie folgt verwendet
Ich löse mein Problem, danke