Kubernetes: k8s: v1.3.10 , wie verwendet man gpu, um einen Container auf der gpu auszuführen?

Erstellt am 27. Feb. 2017  ·  3Kommentare  ·  Quelle: kubernetes/kubernetes

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.

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

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

Alle 3 Kommentare

@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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen