Kubernetes: k8s:v1.3.10、GPUを使用して、GPUでコンテナーを実行する方法は?

作成日 2017年02月27日  ·  3コメント  ·  ソース: kubernetes/kubernetes

今、私はこの質問に取り組むためにほぼ一週間があります。 しかし、私は失敗しました。
環境:redhat7.2
K8S:v1.3.10 CUDA:V7.5カーネルバージョン:367.44のt ensorflow:0.11 GPU:1080
Tensorflowとk8sに基づくプラットフォーム。MLに関するトレーニング用です。
CPUを使用する場合は問題ありませんが、GPUで動作することはできません。理由を知りたいです。
私はあなたが言った多くの例をテストしましたが、それでも失敗しました
私のクラスター:1マスター2ノード。 すべてのノードにはGPUカードがありますが、マスターだけにはありません
最初に@ 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カードが1つしかないため、機能すると思います。
しかし、質問が来ています:GPUで実行する方法は? この例は、k8sがGPUを取得し、GPUを認識できることを証明するだけですが、その上で実行する方法はありますか? yamlファイルを使用してgpuリソースで実行される1つのポッドを作成するにはどうすればよいですか?

それから、私は別の方法を見つけました: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を使用する必要があります
幸運なことに、私はテンソルフローとしてインストールしました: 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
はい、動作します。 しかし、新しい質問が来ています:CPUで実行するにはdockerを使用し、gpuでnv​​idia-dockerを使用する必要がありますか? Docker、おそらくnvidia-dockerでのみGPUで実行しますが、k8sでGPUを実行する方法。
k8sコンテナはdockerを使用しましたが、nvidia-dockerは使用していません。同じ方法でこれを行うにはどうすればよいですか、手伝ってもらえますか? k8sがgpuをサポートしていることを証明するためのデモやテストyamlだけでなく、k8sでgpuを実行する方法を知りたいです。
うまくいけば、あなたは私に答えることができます、私は待っています...。
ありがとう。

最も参考になるコメント

私はちょうどテストしました、それは働きました。 私がマウントするボリュームは前に間違っていました。 以下のように使用した新しい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

私は私の問題を解決します、ありがとう

全てのコメント3件

@ 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

私は私の問題を解決します、ありがとう

このページは役に立ちましたか?
0 / 5 - 0 評価