web-dev-qa-db-ja.com

TensorflowはGPUでは実行されません

AWSとTensorflowに関しては初心者で、先週Udacityの機械学習コースでCNNについて学習してきました。ここで、GPUのAWSインスタンスを使用する必要があります。ソースコード付きのディープラーニングAMIのp2.xlargeインスタンス(CUDA 8、Ubuntu)を起動しました(これが推奨されています)

しかし、現在、tensorflowはGPUをまったく使用していないようです。それはまだCPUを使用してトレーニング中です。私はいくつかの検索をしました、そして私はこの問題に対するいくつかの答えを見つけました、そしてそれらのどれもうまくいかなかったようでした。

<code>nvidia-smi</code> gives the following output:

Jupyterノートブックを実行すると、CPUを使用します

CPUではなくGPUで実行するにはどうすればよいですか?

6
A Lizard

テンソルフローがGPUを検出しないという問題は、次のいずれかの理由が原因である可能性があります。

  1. TensorflowCPUバージョンのみがシステムにインストールされます。
  2. Tensorflow CPUバージョンとGPUバージョンの両方がシステムにインストールされていますが、Python環境では、GPUバージョンよりもCPUバージョンが優先されます。

問題の解決に進む前に、インストールされている環境は AWS Deep Learning AMI CUDA8.0とtensorflowバージョンであると想定します。 1.4.1インストール済み。この仮定は、コメントでの議論から導き出されています。

この問題を解決するために、次の手順を実行します。

  1. OS端末から以下のコマンドを実行して、インストールされているテンソルフローのバージョンを確認してください。

ピップフリーズ| grep tensorflow

  1. CPUバージョンのみがインストールされている場合は、CPUバージョンを削除し、次のコマンドを実行してGPUバージョンをインストールします。

pipアンインストールtensorflow

pip install tensorflow-gpu == 1.4.1

  1. CPUバージョンとGPUバージョンの両方がインストールされている場合は、両方を削除し、GPUバージョンのみをインストールします。

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開発者アカウントにログインする必要があるため、wgetcurlなどのコマンドラインツールを使用してファイルをダウンロードすることはできません。考えられる解決策は、ホストシステムにファイルをダウンロードし、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モジュールにインポートできるようになります。

いくつかの考慮事項:

  • Python3を使用している場合は、pippip3に置き換える必要があります。
  • ユーザー権限によっては、コマンドpipcp、およびldconfigSudoとして実行する必要がある場合があります。
9
T.Z