問題タブ [nvidia-docker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tensorflow - デーモンからのエラー応答: nvidia_driver_375.66 を取得: そのようなボリュームはありません: nvidia_driver_375.66
docker で tensorflow が GPU を使用できないというトラブルシューティングを進めました。nvidia ドライバーの DSO ファイルが 375.66 であり、現在のバージョン 375.26 と互換性がないことがわかりました。だから私は dir を削除しました/var/lib/nvidia-docker/volumes/nvidia_driver/367.66
。しかし、コンテナを閉じると、再度実行することはできません。
nvidiaドライバー、cuda、nvidia-dockerを何度も再インストールします。コンテナーを起動すると、常にエラーが表示されます。
Error response from daemon: get nvidia_driver_375.66: no such volume: nvidia_driver_375.66
私は何をすべきか?
docker - 実行する GPU を動的に決定する - NVIDIA docker の TF
モデルのキューがありますが、GPU が 2 つあるため、並行して実行できるのは 2 つだけです。そのために、コードの最初で、 を使用してどの GPU が利用可能かを判断しようとしますGPUtil
。--runtime=nvidia
関連するかもしれませんが、このコードは、フラグを使用して起動された docker コンテナー内で実行されます。
どの GPU で実行するかを決定するコードは、次のようになります。
さて、この方法で 2 つのスクリプトを起動しました (最初のスクリプトが GPU を占有するまで少し遅れました) が、両方とも同じ GPU を使用しようとしました!
さらに問題を調査しました。手動で を設定しos.environ['CUDA_VISIBLE_DEVICES'] = '1'
、モデルを実行させました。トレーニングだったので、出力を確認しnvidia-smi
たところ、次のようになりました
1
そして、可視デバイスを に設定している間、実際には 0 で実行されていることに気付きました
繰り返しますが、私の使命は、実行を開始する各モデルが使用する GPU を自分で決定する複数のモデルをキューに入れることです。
を調べましallow_soft_placement=True
たが、両方の GPU にメモリが割り当てられたので、プロセスを停止しました。
要するに、トレーニング スクリプトが 1 つの GPU のみを使用し、無料の GPU を選択するようにするにはどうすればよいでしょうか?
docker - docker with tensorflow gpu - ImportError: libcublas.so.9.0: 共有オブジェクト ファイルを開けません: そのようなファイルやディレクトリはありません
Nvidia GPU を使用して tensorflow で docker を実行しようとしていますが、コンテナーを実行すると次のエラーが発生します。
Docker-compose
私のドッカー構成ファイルは次のようになります。
ご覧のとおり、ホスト cuda を docker コンテナーにマップするボリュームを用意しようとしましたが、これは役に立ちませんでした。
私は正常に実行できますnvidia-docker run --rm nvidia/cuda nvidia-smi
バージョン
クーダ
cat /usr/local/cuda/version.txt は CUDA バージョン 9.0.176 を示します
nvcc -V
nvcc -V nvcc: NVIDIA (R) Cuda コンパイラ ドライバ Copyright (c) 2005-2017 NVIDIA Corporation Build on Fri_Sep__1_21:08:03_CDT_2017 Cuda コンパイル ツール、リリース 9.0、V9.0.176
nvidia-docker バージョン
NVIDIA Docker: 2.0.3 クライアント: バージョン: 17.12.1-ce
API バージョン: 1.35
Go バージョン: go1.9.4
Git コミット: 7390fc6 ビルド: 2018 年 2 月 27 日火曜日 22:17:40
OS/アーチ: linux/amd64
サーバー: エンジン: バージョン: 17.12.1-ce
API バージョン: 1.35 (最小バージョン 1.12)
Go バージョン: go1.9.4
Git コミット: 7390fc6
ビルド: 2018 年 2 月 27 日 (火) 22:16:13
OS/アーチ: linux/amd64
実験的: false
テンソルフロー
1.5、pip 経由で GPU をサポート
Docker とホストの Tensorflow を使用したテスト
ホスト上で実行すると、次のように動作します。
コンテナを実行
nvidia-docker run -d --name testtfgpu -p 8888:8888 -p 6006:6006 gcr.io/tensorflow/tensorflow:latest-gpu
ログイン
nvidia-docker exec -it testtfgpu bash
Tensorflow のバージョンをテストする
pip show tensorflow-gpu
ショー:
pip show tensorflow-gpu
Name: tensorflow-gpu
Version: 1.6.0
Summary: TensorFlow helps the tensors flow
Home-page: https://www.tensorflow.org/
Author: Google Inc.
Author-email: opensource@google.com
License: Apache 2.0
Location: /usr/local/lib/python2.7/dist-packages
Requires: astor, protobuf, gast, tensorboard, six, wheel, absl-py, backports.weakref, termcolor, enum34, numpy, grpcio, mock
パイソン 2
python -c "import tensorflow as tf; print(tf.GIT_VERSION, tf.VERSION)"
結果:
パイソン3
python3 -c "import tensorflow as tf; print(tf.GIT_VERSION, tf.VERSION)"
結果:
docker - nvidia-docker コンテナーで GPU を使用してコードを実行できませんでした。(毎晩-gpu-py3)
docker とは何か、使い方は独学で学んでいます。私はdockerを初めて使用するので、ここでいくつかの基本を学びたいと思っています。
nvidia-docker (インストール ガイドに従って) と tensorflow/tensorflow:nightly-gpu-py3 ( nightly-gpu、GPU (CUDA) コンテナーを開始) をコンピューターにインストールしました。
- Docker: NVIDIA Docker 2.0.3、バージョン: 17.12.1-ce
- ホスト OS: Ubuntu 16.04 デスクトップ
- ホスト アーチ: amd64
私の問題
cifar10_multi_gpu_train ( tensorflowを使用して Python で記述) と単純なモンテカルロ シミュレーション (純粋な cuda で記述) の両方が実行に失敗します (致命的なエラー: curand.h がありません) fdm (純粋な cuda で記述) または単純な行列乗算 (python で記述) tensorflow を使用) コンテナー内で動作します (tensorflow/tensorflow:nightly-gpu-py3)。
CPU のみを使用するコード ( a3cなど) は、テンソルフローで正常に動作します。
GPU を使用する一部のコードは、エラー メッセージを返します。(コード使用時<curand.h>
)
詳細
コンテナー (tensorflow/tensorflow:nightly-gpu-py3) で、モンテカルロ シミュレーションを実行すると、次のエラーが発生します。
locate curand.h
何も返しませんが、試してみるlocate curand
と次のようになります。
およびlocate cudnn.h
:
の場合locate cuda.h
:
nvcc --version
戻り値:
ホスト(コンテナの外側)で、試してみるとnvidia-docker run nvidia/cuda nvidia-smi
、
私がしたこと
nvidia-docker、nightly-gpu-py3 を再インストールして
#include <curand.h>
--> 失敗しましたnightly-gpu-py3 コンテナーで、cuda/cuda ツールキを再インストールして
#include <curand.h>
--> 失敗しましたdocker を使用しない他のマシンですべてのコードを実行しようとしましたが、cuda/tensorflow-gpu は既にインストールされています。彼らは正常に動作します。
nvidia-docker の概念とイメージ/コンテナーの機能を完全に誤解していると思います。
質問
- nvidia-docker をインストールしたら、
nvidia-docker run <myImage>
. Dockerイメージは、依存関係(PATH、パッケージなど)を保存して特定のコード(私の場合は、を使用するコード)を実行できることを意味していません<curand.h>
か?(そしてコンテナは実際の仕事をしますか?) - tensorflow/tensorflow:nightly-gpu-py3 イメージには CUDA Toolkit/cuDNN がありますか? nightly-gpu-py3の no
<curand.h>
は、nvidia-docker/nightly-gpu-py3 を不適切にインストール/ダウンロードしたことを意味しますか? - コンテナ (nightly-gpu-py3) 内での CUDA ツールキットのインストールまたは cuda の再インストールが失敗しました (ここのプロセスに従いました)。
<curand.h>
コンテナー (nightly-gpu-py3) 内で使用できる方法はありますか? sudo nvidia-docker run -it --rm -p 8888:8888 -p 6006:6006 <image> /bin/bash
指定されたイメージで新しいコンテナーを開始するコマンドです。それは問題になるでしょうか?