Kubernetes: k8s: v1.3.10, ¿cómo usar gpu, para ejecutar el contenedor en gpu?

Creado en 27 feb. 2017  ·  3Comentarios  ·  Fuente: kubernetes/kubernetes

ahora tengo casi una semana para trabajar en esta cuestión. pero fallé.
medio ambiente: redhat7.2
k8s: v1.3.10 cuda: v7.5 versión del kernel ensorflow: 0.11 gpu: 1080
nuestra plataforma basada en tensorflow y k8s。it es para capacitar sobre ML.
cuando use cpu, está bien, pero no puede funcionar en gpu, quiero saber por qué.
Probé muchos ejemplos que dijiste, pero aún fallé
mi clúster: 1 maestro 2 nodo. cada nodo tiene una tarjeta gpu, solo el maestro no tiene
primero pruebo como @ Hui-Zhi dijo:

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

sí, lo probé y funciona. si cambio nvidia-gpu: 1 a 2, falló. vaina pendiente. y describe encontrado: ningún nodo puede satisfacer esto. Porque cada nodo tiene solo una tarjeta gpu, creo que funciona.
pero viene la pregunta: ¿cómo ejecutar en gpu? este ejemplo solo demuestra que k8s puede obtener gpu y saber gpu, pero ¿cómo ejecutarlo? ¿Cómo puedo usar el archivo yaml para crear una ejecución de pod en un recurso de gpu?

luego, encontré otra forma: nvidia-docker
Extraigo gpu-image: gcr.io/tensorflow/t ensorflow: 0.11-gpu , y ejecuto mnist.py demo de acuerdo con docker, docker run -it $ {image} / bin / bash
pero falló. algo de error como "no se puede abrir la biblioteca CUDA libcuda.so, no puedo encontrar libcuda.so",
¿Si alguien se ha encontrado con el mismo problema?
luego encontré que alguien dijo: gpu necesita usar nvidia-docker
afortunadamente instalé como tensorflow: https://www.tensorflow.org/install/install_linux#gpu_support dicho, de acuerdo con nvidia-docker encontré que mi entrenamiento se ejecutaba en gpu, y la memoria de gpu casi 7g, casi el 70%
corro así: nvidia-docker run -it $ {image} / bin / bash
python mnist.py
Si, funciona. pero viene una nueva pregunta: ¿debería usar Docker para ejecutar en la CPU y nvidia-Docker en la gpu? Acabo de ejecutar gpu solo en Docker, tal vez nvidia-docker, pero cómo ejecutar gpu en k8s.
El contenedor k8s usaba docker pero no nvidia-docker, entonces, ¿cómo puedo hacer esto de la misma manera? ¿Me pueden ayudar? Quiero saber cómo ejecutar gpu en k8s, no solo una demostración o un yaml de prueba para demostrar que k8s admite gpu.
Con suerte puedes contestarme, estoy esperando ...
Gracias.

Comentario más útil

acabo de probar, funcionó. el volumen que monté estaba mal antes. el nuevo yaml que utilicé como a continuación

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

resuelvo mi problema, gracias

Todos 3 comentarios

@tbchj # 42116 ahora está combinado y debería lanzarse con 1.6

@cmluciano sí, gracias, tal vez tengas razón. Acabo de leer # 42116 en su totalidad, parece que hay algo que necesito.

acabo de probar, funcionó. el volumen que monté estaba mal antes. el nuevo yaml que utilicé como a continuación

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

resuelvo mi problema, gracias

¿Fue útil esta página
0 / 5 - 0 calificaciones