Kubernetes: k8s : v1.3.10 , comment utiliser gpu, pour exécuter un conteneur sur gpu ?

Créé le 27 févr. 2017  ·  3Commentaires  ·  Source: kubernetes/kubernetes

maintenant j'ai presque une semaine pour travailler sur cette question. mais j'ai échoué.
environnement : redhat7.2
k8s:v1.3.10 cuda:v7.5 version du noyau ensorflow:0.11 gpu:1080
notre plate-forme basée sur tensorflow et k8s。 c'est pour la formation sur le ML.
lorsque vous utilisez le processeur, c'est ok, mais je ne peux pas fonctionner sur le processeur graphique, je veux savoir pourquoi.
J'ai testé de nombreux exemples, mais j'ai toujours échoué
mon cluster : 1 nœud maître 2. chaque nœud a une carte gpu, seul le maître n'en a pas
d'abord je teste comme @Hui-Zhi a dit :

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

oui j'ai testé et ça marche si je change nvidia-gpu: 1 à 2, échec. pod en attente. et décrivez trouvé: aucun nœud ne peut satisfaire cela. Parce que chaque nœud n'a qu'une seule carte GPU, je pense que cela fonctionne.
mais la question se pose : comment fonctionner sur gpu ? cet exemple prouve seulement que les k8 peuvent obtenir le GPU et connaître le GPU, mais comment l'utiliser ? comment puis-je utiliser le fichier yaml pour créer un pod exécuté sur une ressource gpu ?

alors, j'ai trouvé un autre moyen: nvidia-docker
je tire gpu-image: gcr.io/tensorflow/t ensorflow:0.11-gpu , et lance la démo mnist.py selon docker, docker run -it ${image} /bin/bash
mais a échoué. quelque chose d'erreur comme "Impossible d'ouvrir la bibliothèque CUDA libcuda.so, impossible de trouver libcuda.so ",
Si quelqu'un a rencontré le même problème?
alors j'ai trouvé que quelqu'un a dit: gpu besoin d'utiliser nvidia-docker
Heureusement, j'ai installé en tant que tensorflow : https://www.tensorflow.org/install/install_linux#gpu_support a dit, selon nvidia-docker, j'ai trouvé ma formation sur gpu et la mémoire gpu presque 7g, près de 70%
je cours comme ceci : nvidia-docker run -it ${image} /bin/bash
python mnist.py
Oui cela fonctionne. mais une nouvelle question arrive : dois-je utiliser docker pour fonctionner sur cpu et nvidia-docker sur gpu ? je viens de courir sur gpu uniquement sur docker, peut-être nvidia-docker, mais comment faire fonctionner gpu sur k8s.
Le conteneur k8s a utilisé docker mais pas nvidia-docker, alors comment puis-je procéder de la même manière, pouvez-vous m'aider? je veux savoir comment exécuter gpu sur k8s, pas seulement une démo ou un test yaml pour prouver que k8s supporte gpu.
j'espère que vous pourrez me répondre, j'attends...
Merci.

Commentaire le plus utile

Je viens de tester, ça a marché. le volume que je monte était faux avant. le nouveau yaml que j'ai utilisé comme ci-dessous

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

je résous mon problème, merci

Tous les 3 commentaires

@tbchj #42116 est maintenant fusionné et devrait être publié avec 1.6

@cmluciano oui, merci, tu as peut-être raison. Je viens de lire le #42116 totalement, il semble qu'il y ait quelque chose dont j'ai besoin.

Je viens de tester, ça a marché. le volume que je monte était faux avant. le nouveau yaml que j'ai utilisé comme ci-dessous

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

je résous mon problème, merci

Cette page vous a été utile?
0 / 5 - 0 notes