web-dev-qa-db-ja.com

nvidia-dockerはGPUなしで実行できますか?

公式のPyTorch Docker imagenvidia/cuda に基づいており、GPUなしでDockerCEで実行できます。 nvidia-docker でも実行できます。CUDAサポートが有効になっていると思います。 GPUなしでx86CPU上でnvidia-docker自体を実行することは可能ですか?利用可能な場合(たとえば、nvidia-docker内で実行している場合)にCUDAサポートを利用し、それ以外の場合はCPUを使用する単一のDockerイメージを構築する方法はありますか? DockerCE内からtorch.cudaを使用するとどうなりますか? Docker CEの違いと、DockerCEにnvidia-dockerをマージできない理由は何ですか?

10
breandan

nvidia-dockerdocker --runtime nvidiaのショートカットです。彼らがいつかそれをマージすることを願っていますが、今のところそれはサードパーティのランタイムです。彼らはそれが何であるか、そしてそれが彼らの GitHubページ で何をするかを説明します。

Runcの修正バージョンで、すべてのコンテナーにカスタムの事前開始フックが追加されています。環境変数NVIDIA_VISIBLE_DEVICESがOCI仕様で設定されている場合、フックはプロジェクトlibnvidia-containerのnvidia-container-cliを利用して、コンテナーのGPUアクセスを構成します。

nvidia-docker向けのイメージを通常のdockerで実行することを妨げるものは何もありません。それらは問題なく動作しますが、GPUを必要とする何かを実行すると、失敗します。

GPUのないマシンでnvidia-dockerを実行できるとは思いません。探しているCUDAファイルを見つけることができず、エラーが発生します。

dockernvidia-dockerの両方で実行できるイメージを作成するには、その中のプログラムが、実行されている場所を認識できる必要があります。公式の方法があるかどうかはわかりませんが、次のいずれかを試すことができます。

  • nvidia-smiが利用可能かどうかを確認します
  • $CUDA_LIB_PATHで指定したディレクトリが存在するか確認してください
  • プログラムがCUDAライブラリを正常にロードできるかどうか、およびフォールバックできないかどうかを確認します
11
kichik