AWSとTensorflowに関しては初心者で、先週Udacityの機械学習コースでCNNについて学習してきました。ここで、GPUのAWSインスタンスを使用する必要があります。ソースコード付きのディープラーニングAMIのp2.xlargeインスタンス(CUDA 8、Ubuntu)を起動しました(これが推奨されています)
しかし、現在、tensorflowはGPUをまったく使用していないようです。それはまだCPUを使用してトレーニング中です。私はいくつかの検索をしました、そして私はこの問題に対するいくつかの答えを見つけました、そしてそれらのどれもうまくいかなかったようでした。
Jupyterノートブックを実行すると、CPUを使用します
CPUではなくGPUで実行するにはどうすればよいですか?
テンソルフローがGPUを検出しないという問題は、次のいずれかの理由が原因である可能性があります。
問題の解決に進む前に、インストールされている環境は AWS Deep Learning AMI CUDA8.0とtensorflowバージョンであると想定します。 1.4.1インストール済み。この仮定は、コメントでの議論から導き出されています。
この問題を解決するために、次の手順を実行します。
ピップフリーズ| grep tensorflow
pipアンインストールtensorflow
pip install tensorflow-gpu == 1.4.1
pipアンインストールtensorflow
pipアンインストールtensorflow-gpu
pip install tensorflow-gpu == 1.4.1
この時点で、tensorflowのすべての依存関係が正しくインストールされていれば、tensorflowGPUバージョンは正常に機能するはずです。この段階での一般的なエラー(OPで発生)は、cuDNNライブラリがないことです。これにより、テンソルフローをpythonモジュールにインポートするときに次のエラーが発生する可能性があります。
ImportError:libcudnn.so.6:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません
NVIDIAのcuDNNライブラリの正しいバージョンをインストールすることで修正できます。 Tensorflowバージョン1.4.1はcuDNNバージョン6.0とCUDA8に依存しているため、対応するバージョンをcuDNNアーカイブページからダウンロードします( ダウンロードリンク )。ファイルをダウンロードするには、NVIDIA開発者アカウントにログインする必要があるため、wget
やcurl
などのコマンドラインツールを使用してファイルをダウンロードすることはできません。考えられる解決策は、ホストシステムにファイルをダウンロードし、scp
を使用してAWSにコピーすることです。
AWSにコピーしたら、次のコマンドを使用してファイルを抽出します。
tar -xzvf cudnn-8.0-linux-x64-v6.0.tgz
抽出されたディレクトリは、CUDAツールキットのインストールディレクトリと同様の構造である必要があります。 CUDAツールキットがディレクトリ/usr/local/cuda
にインストールされていると仮定すると、ダウンロードしたアーカイブからCUDA Toolkitインストールディレクトリの対応するフォルダにファイルをコピーし、リンカー更新コマンドldconfig
を実行することで、cuDNNをインストールできます。
cp cuda/include/*/usr/local/cuda/include
cp cuda/lib64/*/usr/local/cuda/lib64
ldconfig
この後、tensorflowGPUバージョンをpythonモジュールにインポートできるようになります。
いくつかの考慮事項:
pip
をpip3
に置き換える必要があります。pip
、cp
、およびldconfig
をSudo
として実行する必要がある場合があります。