今、私はこの質問に取り組むためにほぼ一週間があります。 しかし、私は失敗しました。
環境: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でnvidia-dockerを使用する必要がありますか? Docker、おそらくnvidia-dockerでのみGPUで実行しますが、k8sでGPUを実行する方法。
k8sコンテナはdockerを使用しましたが、nvidia-dockerは使用していません。同じ方法でこれを行うにはどうすればよいですか、手伝ってもらえますか? k8sがgpuをサポートしていることを証明するためのデモやテストyamlだけでなく、k8sでgpuを実行する方法を知りたいです。
うまくいけば、あなたは私に答えることができます、私は待っています...。
ありがとう。
@ 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
私は私の問題を解決します、ありがとう
最も参考になるコメント
私はちょうどテストしました、それは働きました。 私がマウントするボリュームは前に間違っていました。 以下のように使用した新しいyaml
私は私の問題を解決します、ありがとう