Tensorflow: ミラクル3.0?

作成日 2015年11月09日  ·  101コメント  ·  ソース: tensorflow/tensorflow

Cudaコンピューティング機能3.0をサポートする計画はありますか?

最も参考になるコメント

Cuda 3.0デバイスのビルドに関しては、最新のTensorFlowコードを同期すると、次のことができます。 公式ドキュメントはまもなく更新されます。 しかし、これはどのように見えるかです:

$ TF_UNOFFICIAL_SETTING = 1 ./configure

...上記の公式設定と同じ

警告:TensorFlowで非公式の設定を構成しています。 なぜなら
外部ライブラリには下位互換性がありません。これらの設定は主に互換性があります
テストされておらず、サポートされていません。

必要なコンマ区切りのCuda計算機能のリストを指定してください
で構築します。 デバイスの計算機能は次の場所にあります。
https://developer.nvidia.com/cuda-gpus。
追加の計算能力が大幅に増加することに注意してください
ビルド時間とバイナリサイズ。 [デフォルト: "3.5,5.2"]:3.0

Cudaのセットアップには以下が含まれます
Cudalib64のセットアップ
Cudabinのセットアップ
Cudanvvmのセットアップ
構成が完了しました

全てのコメント101件

公式には、Cudaコンピューティング機能3.5および5.2がサポートされています。 ビルドスクリプトを変更することで、他の計算機能を有効にすることができます。

https://github.com/tensorflow/tensorflow/blob/master/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc#L236

ありがとう! それを試して、ここで報告します。

これはまだ正式にはサポートされていません。 ただし、Cuda 3.0をローカルで有効にする場合は、次の変更点があります。

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/common_runtime/gpu/gpu_device.cc#L610
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/common_runtime/gpu/gpu_device.cc#L629
小さいGPUデバイスが無視される場合。

公式サポートは最終的には異なる形式で提供され、修正がすべての異なる計算環境で機能することを確認します。

上記の行に変更を加え、Getting Startedページで基本的な例をコンパイルして実行することができました: http ://tensorflow.org/get_started/os_setup.md#try_your_first_tensorflow_program-GPUについては文句を言いませんでしたが、 GPUの使用についても報告しませんでした。

次のステップをどのように支援できますか?

infojunkie @、ステップを投稿してログをアップロードしていただけますか?

この例に従っている場合:

bazel build -c opt --config = cuda // tensorflow / cc:tutorials_example_trainer
bazel-bin / tensorflow / cc / tutorials_example_trainer --use_gpu

次の行が表示されている場合は、GPUロジックデバイスが作成されています。

TensorFlowデバイスの作成(/ gpu:0)->(デバイス:...、名前:...、pciバスID:...)

GPUが使用されたことを絶対に確認したい場合は、CUDA_PROFILE = 1を設定し、Cudaプロファイラーを有効にします。 Cudaプロファイラーログが生成された場合、それは確かにGPUが使用された兆候でした。

http://docs.nvidia.com/cuda/profiler-users-guide/#command -line-profiler-control

次のログを取得しました。

I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 8
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:888] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:88] Found device 0 with properties: 
name: GeForce GT 750M
major: 3 minor: 0 memoryClockRate (GHz) 0.967
pciBusID 0000:02:00.0
Total memory: 2.00GiB
Free memory: 896.49MiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:112] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_init.cc:122] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_region_allocator.cc:47] Setting region size to 730324992
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 8

GPUが見つかって使用されたことを意味していると思います。 便利だと思われる場合は、CUDAプロファイラーを試すことができます。

この問題を優先してください。 OSXとAWSのK520の両方でGPUの使用をブロックしており、多くの人にとって、これが利用可能な唯一の環境です。
ありがとう!

最高の修正ではありませんが、_gpu_device.c_の610行目から616行目でcuda計算バージョンチェックをコメントアウトして再コンパイルすると、amazong2GPUアクセラレーションは正常に機能するようです。

example

参考までに、Cuda 3.0で動作する非常に原始的なパッチを次に示します: https ://gist.github.com/infojunkie/cb6d1a4e8bf674c6e38e

@infojunkie修正を適用しましたが、計算出力に多くのnanが含まれています。

$ bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu
000006/000003 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000004/000003 lambda = 2.000027 x = [79795.101562 -39896.468750] y = [159592.375000 -79795.101562]
000005/000006 lambda = 2.000054 x = [39896.468750 -19947.152344] y = [79795.101562 -39896.468750]
000001/000007 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000002/000003 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000009/000008 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000004/000004 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000001/000005 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000006/000007 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000003/000006 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000006/000006 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]

@markusdr 、これは非常に奇妙です。 バイナリを構築するための完全な手順を投稿できますか?

どのGPUとOSで実行していますか? Cuda7.0とCudnn6.5V2を使用していますか?

+1するだけで、AWSでこの問題をできるだけ早く修正できます。 調査用の他のGPUカードはありません。

こんにちは、これが別の問題であるかどうかはわかりませんが、CUDA 3.0 GPU(Geforce 660 Ti)でビルドしようとしていますが、-config=cudaで多くのエラーが発生しています。 以下の添付ファイルを参照してください。 上記の推奨される変更とは関係がないようです。 GPUにとって間違ったバージョンになる一時的なcompute_52.cpp1.iiファイルをコンパイルしようとしていることに気づきました。

私はUbuntu15.10を使用しています。 cuda includeのhost_config.hを変更して、gccのバージョンチェックを削除しました。 新しいバージョンもインストールしていますが、推奨どおりにCuda7.0とcuDNN6.5v2を使用しています。

cuda_build_fail.txt

はい、このAIMを使用してEC2g2.2xlargeインスタンスでCuda7.0とCudnn6.5を使用していました。
cuda_7-ami-12fd8178
ubuntu 14.04、gcc 4.8、cuda 7.0、atlas、およびopencv。
ビルドするには、tensorflow.orgの指示に従いました。

ComputeCapabilityv3とComputeCapabilityv3.5の間にAPIの非互換性が見られるようです。 infojunkieのパッチ修正を投稿して、私はこの問題に困惑しました

I tensorflow / core / common_runtime / gpu / gpu_device.cc:643] TensorFlowデバイスの作成(/ gpu:0)->(デバイス:0、名前:Quadro K2100M、pciバスID:0000:01:00.0)
I tensorflow / core / common_runtime / local_session.cc:45]ローカルセッションの相互運用並列処理スレッド:8
F tensorflow / stream_executor / cuda / cuda_blas.cc:229]チェックに失敗しました:f!= nullptr_cuBLASDSO_でcublasCreate_v2が見つかりませんでした。 dlerror:bazel-bin / tensorflow / cc / tutorials_example_trainer:未定義のシンボル:cublasCreate_v2

Ubuntu 15.04、gcc 4.9.2、CUDA Toolkit 7.5、cuDNN6.5で実行しています。

ComputeCapabilityv3をサポートするための+1

cublasはインストールされていますか? そしてそれはどこにリンクしていますか
ls -lah /usr/local/cuda/lib64/libcublas.so?

@ allanzelener 、OSとGCCのバージョンは何ですか? エラーは互換性のないC++コンパイラから発生しているようです。

Ubuntu14.04とGCC4.8をTensorFlowで使用することをお勧めします。

@vsrikarunyan 、推奨されているように、CUDAToolkit7.0を使用することをお勧めします。 新しいツールキットと一緒に古いCUDAツールキットをインストールできます。 TensorFlowを実行するときは、TensorFlowの「構成」とLD_LIBRARY_PATHをCUDA7.0にポイントするだけです。

@avostryakov@infojunkieの初期パッチはAWSで機能するはずです。

https://gist.github.com/infojunkie/cb6d1a4e8bf674c6e38e

公式パッチがパイプラインを通過しています。 コンピューティングターゲットを選択できるようにする構成オプションが公開されます。 しかし、その下では、同様の変更が行われます。 AWS g2で試してみましたが、NVIDIAドライバーを完全にアンインストールし、NVIDIAから最新のGPUドライバーを再インストールした後、問題が解決するかどうかを確認しました。

繰り返しになりますが、この時点でAWSで推奨される設定は次のとおりです。
Ubuntu 14.04、GCC 4.8、CUDA Toolkit 7.0、およびCUDNN6.5。 最後の2つについては、他のバージョンの既存のインストールに影響を与えずにインストールしても問題ありません。 また、最後の2つの公式推奨バージョンもまもなく変更される可能性があります。

g2.2xlargeインスタンスに同じパッチを適用したところ、@markusdr...と同じ結果が得られました。

@ zheng-xqはい、Ubuntu 15.10を使用しており、GCC5.2.1を使用していました。 問題はコンパイラでした。 bazelでコンパイラを変更する方法がわかりませんでしたが、gcc-4.8をインストールし、update-alternativesを使用してusr/binのシンボリックリンクを変更するだけでうまくいったようです。 (詳細:http://askubuntu.com/questions/26498/choose-gcc-and-g-version)。 助けてくれてありがとう、さらに問題が発生した場合は報告します。

これをg2.2xlargeインスタンスで動作させ、トレーニング例を実行し、nvidia-smiツールを使用してgpuがアクティブであることを確認しましたが、mnistのconvolutional.pyを実行すると、メモリが不足しました。 これは、バッチサイズと、aws gpusに多くのメモリがないという事実に関係しているのではないかと思いますが、正しく聞こえるようにするために、それを破棄したかっただけです。 明確にするために、私は以下を実行しました、そしてそれは15分ほど実行されました、そしてそれからメモリを使い果たしました。

python tensorflow / models / image / mnist / convolutional.py

@nbenhaim 、それを機能させるためにあなたは何をしなければならなかったのですか?

@markusdr@ jbencook 、NANはかなり厄介です。 自分でも同じことをしましたが、問題ありませんでした。

推奨されるソフトウェア設定(Ubuntu 14.04、GCC 4.8、Cuda 7.0、およびCudnn 6.5)を使用する場合、次の推測はCudaドライバーです。 最新のCudaドライバーをアンインストールして再インストールしていただけませんか。

これは私がAWSで試したシーケンスです。マイレージは異なる場合があります。

sudo apt-get remove --purge "nvidia *"
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/352.55/NVIDIA-Linux-x86_64-352.55.run
sudo ./NVIDIA-Linux-x86_64-352.55.run --accept-license --no-x-check --no-recursion

@zheng-xqをフォローアップしてくれてありがとう-今日はそれを試してみます。

3.5より前のGPUをサポートするためのもう1つの+1。実際のデータをトレーニングするための唯一の現実的なオプションはAWSGPUインスタンスです。

ローカルテストの場合でも、私の(最近の開発者の)ラップトップのGPUは3.5をサポートしていないことがわかりました:-(

@anjishnuクリーンインストールを実行し、指示に従ってビルドした後、 @infojunkieのパッチhttps://gist.github.com/infojunkie/cb6d1a4e8bf674c6e38eに従いました。

いくつかのコメント-使用していたAMIにはNVIDIAc​​udaツールキット6.5がインストールされていたため、テンソルフロー入門ガイドのリンクをたどると、ubuntu14.04の7.0.runファイルをダウンロードし、ドライバーをアップグレードして、cuda7.0をにインストールしました。 /usr/local/cuda-7.0すでに6.5がインストールされていて、それを殺したくなかったので、/ usr / local/cudaへのシンボリックリンクを作成しませんでした

次に、ビルドするときに、cuda7.0の正しい場所を指定しました。 紛らわしいのは、Pythonライブラリをビルドするときに、チュートリアルで--config = cudaを指定するように通知されないことですが、Pythonライブラリでgpuを利用する場合は、これを行う必要があります。

@markusdr@ jbencook 、最初にパッチを適用したときにNaNとあらゆる種類の混乱した値も取得しましたが、それを修正したのは、 @ infojunkieで概説されている提案された変更を行った後、「bazelclean」を実行して最初から再構築することでした。のパッチ。 これを試しましたか?

興味深い...いいえ、まだチャンスはありません。 スタートガイドからCNNを実行してみましたか?

python tensorflow/models/image/mnist/convolutional.py

それが正しく機能したかどうか知りたいです。

@jbencookで述べたように、convolutional.pyは正しく実行されているようですが、15分後にはメモリ不足のためにクラッシュしますが、出力は正しく見え、nvidia-smiのツールを使用して実際にGPUで実行されていることを確認しました。は。 これはバッチサイズが原因だと思います...ec2のGPUにはそれほど多くのメモリがないことはわかっていますが、現時点でメモリが不足した理由はよくわかりません。

convolutional.pyの例では、GeForce GTX780TiでGPUメモリが不足していました。

たくさんの苦労の末、AWSにインストールすることができました。 https://gist.github.com/erikbern/78ba519b97b440e10640を参照してください–私もAMIを構築しました:ami-cf5028a5(バージニア地域)

g2.2xlargeとg2.8xlargeで動作し、デバイスを正しく検出します(それぞれ1と4)。 ただし、g2.8xlargeの4つのGPUカードによるスピードアップは見られません。 両方のマシンは、複数のGPUでCIFAR10の例を実行して約330例/秒を処理します。 また、MNIST畳み込みの例でも非常によく似たパフォーマンスです。 また、上記の他の人のように、「GPUメモリが不足しています。上記のメモリ状態のダンプを参照してください」と約15分後にクラッシュします。

私はCIFARの例を約1時間実行しましたが、これまでのところ非常にうまくいっているようです

Cuda 3.0デバイスのビルドに関しては、最新のTensorFlowコードを同期すると、次のことができます。 公式ドキュメントはまもなく更新されます。 しかし、これはどのように見えるかです:

$ TF_UNOFFICIAL_SETTING = 1 ./configure

...上記の公式設定と同じ

警告:TensorFlowで非公式の設定を構成しています。 なぜなら
外部ライブラリには下位互換性がありません。これらの設定は主に互換性があります
テストされておらず、サポートされていません。

必要なコンマ区切りのCuda計算機能のリストを指定してください
で構築します。 デバイスの計算機能は次の場所にあります。
https://developer.nvidia.com/cuda-gpus。
追加の計算能力が大幅に増加することに注意してください
ビルド時間とバイナリサイズ。 [デフォルト: "3.5,5.2"]:3.0

Cudaのセットアップには以下が含まれます
Cudalib64のセットアップ
Cudabinのセットアップ
Cudanvvmのセットアップ
構成が完了しました

@nbenhaim @markusdr

メモリ不足の問題は、 convolutional.pyがテストデータセット(10000)の例全体で評価を実行することが原因である可能性があります。 最後のステップとして、トレーニングが終了した後に発生します。

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/models/image/mnist/convolutional.py#L266

train_datatest_labelsをスライスして小さくしてみてください。

@erikbernのインストールスクリプトと最新のTensorFlowマスターブランチを使用すると、GPUでcifar10_multi_gpu_train.pyが期待どおりに機能することを確認できます。

step 100, loss = 4.49 (330.8 examples/sec; 0.387 sec/batch)

コードが変更されたため、この行は壊れていますが。

また、1000個のテストサンプルを取得した場合、 convolutional.pyの例も機能します。

編集: bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpuの例は、私にたくさんのnanを与えなくても機能します。

最新のビルドがコンピューティング機能の指定をサポートしていることを確認します
$ TF_UNOFFICIAL_SETTING=1 ./configure
パッチは必要ありません。 ありがとう!

誰かがCuda<3.5で失敗する実際の関数に遭遇しない限り、この問題は解決できると思います。

実際、それを取り戻させてください:-) ./configureスクリプトは、関連する行を手動で指定されたCudaバージョンに変更することにより、ソースコードを変更します。 次に、gitはコミットされていない変更を報告し、投稿を送信することは言うまでもなく、変更を元に戻し、 git pullを再構成し、再度構成しない限り、このコードベースを操作することは非常に困難になります。

より良いアプローチは、構成ファイルからそれらのバージョン設定を読み取ることです。

上記のErikBernと彼のAMIは私のためにcifarのために働いています-ami-cf5028a5

cifar10_train.pyで毎秒最大105サンプルを取得するDockerのi7Windowsボックスに対して、毎秒最大320サンプルを取得

@infojunkie :はい、これは理想的ではありません(@ zheng-xqと私はレビュー中にこれについて少し話し合いました!)。

これを処理するためのより良い方法を考えようとしますが、ランタイムデバイスのフィルタリング機能をバイナリの構築方法と同期させたいと考えています(したがって、コンパイルとコンパイルの両方でソースコードを編集する必要がありますランタイム)。 そうしないと、ユーザーはデバッグが難しいエラーを受け取ります。

私たちはこれをより簡単にするために努力を続けますが、うまくいけば、これはあなたのためにいくらかの前進を可能にします。

@vrv :はい、私は間違いなくこれらの修正で作業を続けることができます。 手助けありがとう!

16 vCpusのc4.4xlargeは1時間あたり約.88であるのに対し、gpuインスタンスは1時間あたり.65であるため、gpuよりも複数のcpuを使用する方が良いのではないでしょうか。

@timshephard疑わしいですが、いくつかのベンチマークを自由に実行してください。AMI(ami-cf5028a5)をc4.4xlargeにインストールして、cifar10_train.pyを実行できます。

実際、g2.2xlargeにはGPUと並んで8つのCPUがあります。 それを試してみるつもりです。

マルチスレッドCPUがサポートされていますが、実際のトレーニングを行いたい場合は、
GPU 4 Life、分散実装をリリースするまで

2015年11月12日木曜日午後4時53分、Erik Bernhardsson < [email protected]

書きました:

@timshephard https://github.com/timshephard疑わしいですが、お気軽に
いくつかのベンチマークを実行するには– AMI(ami-cf5028a5)を
c4.4xlargeおよびcifar10_train.pyを実行します


このメールに直接返信するか、GitHubで表示してください
https://github.com/tensorflow/tensorflow/issues/25#issuecomment -156274039

DockerのWindowsCPUよりもAmazonGPUの速度が3倍になりました。 いいですが、それは私のコアの1つにすぎませんでした。 私のWindowsボックスの4つのコアはすべて、おそらくAmazonGPUを打ち負かす可能性があります。

それは興味深いです。なぜなら、カフェでは、実際のベンチマークを実行しなかったからです。
しかし、CPUモードでのトレーニングは、桁違い以上のようにひどいものです。
違い。 たぶんTFはCPUモードでより良く最適化されています-驚くことではありません
自分。

2015年11月12日木曜日午後5時1分、 timshephardnotifications @ github.com
書きました:

私は私のウィンドウズCPUよりもアマゾンGPUの3倍の速度しか得ていませんでした
Docker。 いいですが、それは私のコアの1つにすぎませんでした。 私の4コアのすべて
WindowsボックスはおそらくAmazonGPUを打ち負かす可能性があります。


このメールに直接返信するか、GitHubで表示してください
https://github.com/tensorflow/tensorflow/issues/25#issuecomment -156275410

cifar10チュートリアルは、それ自体がベンチマークとなることを意図したものではないことに注意してください。 これは、セーバーや要約など、いくつかの異なる機能を紹介することを目的としています。 現在の形式では、GPUを使用してもCPUが制限されます。 ベンチマークを行うには、より注意深く、重要な機能のみを使用する必要があります。

何らかの理由でAmazonGPUが遅いだけかもしれませんhttps://www.reddit.com/r/MachineLearning/comments/305me5/slow_gpu_performance_on_amazon_g22xlarge/
興味深いレポート:「g2.2xlargeはダウンクロックされたGK104(797 MHz)であり、最近リリースされたTitanXの1/4の速度になり、GTX980より2.7倍遅くなります。」

fwiw、取得2015-11-13 00:38:05.472034:ステップ20、損失= 4.64(362.5例/秒; 0.353秒/バッチ)
現在、7つのCPUとcifar10_multi_gpu_train.pyがあります。 理にかなっている場合は、すべてのデバイス参照をgpuからcpuに変更しました。

わかりました、奇妙です。 2015-11-13 00:43:56.914273:ステップ10、損失= 4.65(347.4例/秒; 0.368秒/バッチ)および2 CPUを使用しているため、ここで何かが失敗したことは明らかです。 まだGPUを使用している必要があります。 スクリプトの単一のGPUバージョンよりも少し速く処理されるのは興味深いことです。

erikbernの指示があっても、私はまだ得ています

AssertionError:cifar_train.pyを試してみると、モデルはloss = NaNで分岐し、これはmnist/convolutional.pyを実行しているときに発生します

エポック1.63
ミニバッチ損失:nan、学習率:nan
ミニバッチエラー:90.6%
検証エラー:90.4%
エポック1.75
ミニバッチ損失:nan、学習率:0.000000
ミニバッチエラー:92.2%
検証エラー:90.4%
エポック1.86
ミニバッチ損失:nan、学習率:0.000000

AWSのGPUで実行できるようになりましたが、他の人と同じように、印象的でない速度になっています。

configureを実行するときにオプションを設定する@zheng-xqによって提案された正しい修正を使用した後、メモリを使い果たすことなくconvolutional.pyの例を実行することができました

@erikbernによって提供されたインストールスクリプトは、コミット9c3043ff3bf31a6a81810b4ce9e87ef936f1f529の時点で機能しなくなりました

最新のコミットでこのバグが発生しました。 @kevemanはすでにここでコミットについてメモしています。
https://github.com/tensorflow/tensorflow/commit/9c3043ff3bf31a6a81810b4ce9e87ef936f1f529#diff -1a60d717df0f558f55ec004e6af5c7deL25

やあ! GTX670を使用したテンソルフローのコンパイルに問題があります。

TF_UNOFFICIAL_SETTING=1 ./configure
bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer

エラーが発生しました:

INFO: Found 1 target...
INFO: From Compiling tensorflow/core/kernels/bias_op_gpu.cu.cc:
tensorflow/core/kernels/bias_op_gpu.cu.cc(40): error: identifier "__ldg" is undefined
          detected during:
            instantiation of "void tensorflow::functor::BiasOpCustomKernel(int, const T *, const T *, int, int, T *) [with T=float]" 
(57): here
            instantiation of "void tensorflow::functor::Bias<tensorflow::GPUDevice, T, Dims>::operator()(const tensorflow::functor::Bias<tensorflow::GPUDevice, T, Dims>::Device &, tensorflow::TTypes<T, Dims, Eigen::DenseIndex>::ConstTensor, tensorflow::TTypes<T, 1, Eigen::DenseIndex>::ConstVec, tensorflow::TTypes<T, Dims, Eigen::DenseIndex>::Tensor) [with T=float, Dims=2]" 
(69): here

tensorflow/core/kernels/bias_op_gpu.cu.cc(40): error: identifier "__ldg" is undefined
          detected during:
            instantiation of "void tensorflow::functor::BiasOpCustomKernel(int, const T *, const T *, int, int, T *) [with T=double]" 
(57): here
            instantiation of "void tensorflow::functor::Bias<tensorflow::GPUDevice, T, Dims>::operator()(const tensorflow::functor::Bias<tensorflow::GPUDevice, T, Dims>::Device &, tensorflow::TTypes<T, Dims, Eigen::DenseIndex>::ConstTensor, tensorflow::TTypes<T, 1, Eigen::DenseIndex>::ConstVec, tensorflow::TTypes<T, Dims, Eigen::DenseIndex>::Tensor) [with T=double, Dims=2]" 
(69): here

2 errors detected in the compilation of "/tmp/tmpxft_000067dd_00000000-7_bias_op_gpu.cu.cpp1.ii".
ERROR: /home/piotr/tensorflow/tensorflow/tensorflow/core/BUILD:248:1: output 'tensorflow/core/_objs/gpu_kernels/tensorflow/core/kernels/bias_op_gpu.cu.o' was not created.
ERROR: /home/piotr/tensorflow/tensorflow/tensorflow/core/BUILD:248:1: not all outputs were created.
Target //tensorflow/cc:tutorials_example_trainer failed to build

NVIDIAサンプルdeviceQueryからの私のカードに関する情報:

Device 0: "GeForce GTX 670"
  CUDA Driver Version / Runtime Version          7.5 / 7.0
  CUDA Capability Major/Minor version number:    3.0
  Total amount of global memory:                 2046 MBytes (2145235968 bytes)
  ( 7) Multiprocessors, (192) CUDA Cores/MP:     1344 CUDA Cores
  GPU Max Clock rate:                            980 MHz (0.98 GHz)
  Memory Clock rate:                             3004 Mhz
  Memory Bus Width:                              256-bit
  L2 Cache Size:                                 524288 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.0, NumDevs = 1, Device0 = GeForce GTX 670

それが機能しない理由はありますか?
ありがとう!

__ldgプリミティブは3.5以降にのみ存在すると思います。 両方をサポートするための内部修正があり、すぐにプッシュしようとします。

詳細については、 https://github.com/tensorflow/tensorflow/issues/320を参照してください

ありがとう! #320から修正を追加すると、(多くの警告とともに)コンパイルして実行できるようになりました。

bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu

例を実行すると:

tensorflow/models/image/mnist$ python convolutional.py 

警告が表示されます:

Ignoring gpu device (device: 0, name: GeForce GTX 670, pci bus id: 0000:01:00.0) with Cuda compute capability 3.0. The minimum required Cuda capability is 3.5.

テンソルフロー/モデル/画像の例でGPUを有効にする方法は?

@erikbern
Amazonで複数のGPUの問題を理解しましたか? CIFARマルチGPUインスタンスも実行していますが、スピードアップが見られません。

GPUの使用状況は次のとおりです。すべてのGPUが使用されているようですが、何も実行されていません。

+ ------------------------------------------------- ----- +
| NVIDIA-SMI 346.46ドライバーバージョン:346.46 |
| ------------------------------- + ----------------- ----- + ---------------------- +
| GPU名の永続性-M| Bus-Id Disp.A | 揮発性のUncorr。 ECC |
| Fan Temp Perf Pwr:Usage / Cap | メモリ-使用法| GPU-Util Compute M. |
| =============================== + ================= ===== + ====================== |
| 0グリッドK520オフ| 0000:00:03.0オフ| 該当なし|
| 該当なし54CP055W / 125W | 3832MiB / 4095MiB | 37%デフォルト|
+ ------------------------------- + ----------------- ----- + ---------------------- +
| 1グリッドK520オフ| 0000:00:04.0オフ| 該当なし|
| 該当なし42CP042W / 125W | 3796MiB / 4095MiB | 0%デフォルト|
+ ------------------------------- + ----------------- ----- + ---------------------- +
| 2グリッドK520オフ| 0000:00:05.0オフ| 該当なし|
| 該当なし46CP043W / 125W | 3796MiB / 4095MiB | 0%デフォルト|
+ ------------------------------- + ----------------- ----- + ---------------------- +
| 3グリッドK520オフ| 0000:00:06.0オフ| 該当なし|
| 該当なし43CP041W / 125W | 3796MiB / 4095MiB | 0%デフォルト|
+ ------------------------------- + ----------------- ----- + ---------------------- +

+ ------------------------------------------------- ---------------------------- +
| プロセス:GPUメモリ|
| GPUPIDタイププロセス名使用法|
| ================================================= ============================ |
| 0 60160 C python 3819MiB |
| 1 60160 C python 3783MiB |
| 2 60160 C python 3783MiB |
| 3 60160 C python 3783MiB |
+ ------------------------------------------------- ---------------------------- +

https://news.ycombinator.com/item?id=10555692のコメントによると、 @ mhejratiは、AWSでは実行できないようです。

Xen仮想化は、P2Pコピーを無効にします。エルゴGPUには、「通信の失敗と、(CPUを経由せずに)到達できない一部のGPU」と呼ばれるものがあります。

HNのコメントがどれほど信頼できるかはわかりませんが、これまでに知っているのはそれだけです。

@erikbern@ mhejratiXenの特定のプロパティが問題であるかどうかはわかりません。 GPUが相互に通信する必要がなくても、CPUは各GPUに作業を割り当てることができるため、P2Pコピーは必要ないようです。 インスタンス上のすべてのGPUがこの半使用状態にあるように見えるのに、エラーなしで作業が進行するのはまだ奇妙です。

このバグを閉じます。 ここのいくつかの問題が未解決のままである場合は、より具体的なタイトルで新しいものを開いてください。

これは、テンソルフローの最後のバージョンがAmazon g2インスタンスでハッキングなしで機能することを意味しますか? そしてそれはそれがそこで複数のGPUで動作することを意味しますか?

TF_UNOFFICIAL_ *を「ハックではない」と呼ぶべきかどうかはわかりませんが、そうです、それは機能するはずです。 そうでない場合は、Cuda 3.0自体とは無関係である可能性が高く、より具体的なバグがあるはずです。

また、Amazonインスタンスの2つ以上のGPUでコードを実行することは可能ですか? たとえば、CIFARの例のようにモデルをトレーニングするためのデータ並列処理。 このコメントの上の5つのコメントだけで、それは不可能だと書いた人もいます。

わからない。 しかし、それでも0.6.0の問題である場合は、バグであるはずです。複数のGPUに関するより具体的な問題です。

私はubuntuで0.6.0を使用していますが、複数のGPUを使用することはできません。 1つのGPUでのGPU使用率は常に0です。

参考までに、K40またはK80のレンタルは実際には法外な費用がかかるわけではありません。 Amazonにはそれらがありませんが、 http://www.nvidia.com/object/gpu-cloud-computing-services.htmlのいくつかのオプションにはあります。 (3 $ / hr程度の低価格のものもあります)

TheanoとTorchは、compute3.0では何の問題もありません。 TensorFlowがすぐにコンピューティング3.0をサポートすることを期待できますか?

または、少なくとも再コンパイルせずに制限をオーバーライドする機能を追加します。

@Dringite 、以下を使用してCuda3.0を有効にできます。

TF_UNOFFICIAL_SETTING = 1 ./configure

機能しているはずです。 そうでない場合は、別の問題を提出して追跡してください。

tensorflowインストールガイドにcuda3.0の修正も含まれるようになりました

2016年2月10日水曜日午後2時37分、zheng- xqnotifications @github.comは次のように書いています。

@Dringite https://github.com/Dringite、Cuda3.0を有効にするには
以下:

TF_UNOFFICIAL_SETTING = 1 ./configure

機能しているはずです。 そうでない場合は、別のファイルを提出してください
それを追跡するために発行します。


このメールに直接返信するか、GitHubで表示してください
https://github.com/tensorflow/tensorflow/issues/25#issuecomment -182610763

現在のガイドはGPUでは機能しないと思います-テストは以前に報告されたようにnanを返します。
特に、これを行う必要があります。
TF_UNOFFICIAL_SETTING = 1 ./configure

cuda 3.0の修正を含むインストールガイドが見つかりません。誰かが私に指摘してもらえますか? どうも!

printf "\ ny \ n7.5 \ n \ n \ n \ n3.0 \ n" | 。/構成、設定

7.5はcudaバージョン、3.0はコンピューティングです。

単一のGPUと比較して、Amazonの複数のGPU(CUDA = 7.5、cudnn = 4.0、compute = 3.0)のパフォーマンスはまだ向上していません。

誰かがCudaコンピューティング機能2.0で成功しますか?

'TF_UNOFFICIAL_SETTING = 1./configure'がGeForceGT750MのMacBookProで動作することを確認しました。 ありがとう!

公式修正のETAはありますか? 本番環境で維持する(たとえば、独自のdockerfileを使用してイメージをビルドする)のは本当に面倒です。

mnistサンプルを実行しようとすると、ラップトップからこのログが表示されます。
「Cudaコンピューティング機能2.1を備えたgpuデバイス(device:0、name:GeForce GT 635M、pciバスID)を無視します。最低限必要なCuda機能は3.0です。」
これは、テンソルフローの最小Cudaが3.0であるため、GPUバージョンを使用できないことを意味しますか?
ありがとう

ビルド済みのバイナリを使用する場合は、はい。 ソースからビルドする場合は、
Cuda 2.1をサポートしてビルドしますが、それが実際に機能するかどうかはわかりません。 これは
有効な最小値はcuda3.0である可能性があります。
2016年9月10日(土)11:51 Mojtaba [email protected]
書きました:

mnistサンプルを実行しようとすると、ラップトップからこのログが表示されます。
「CudaでGPUデバイス(デバイス:0、名前:GeForce GT 635M、pciバスID)を無視します
計算能力2.1。 最低限必要なCuda機能は3.0です。 「」
つまり、最小のCudaが原因で、GPUバージョンを使用できないということです。
テンソルフローの場合は3.0ですか?
ありがとう


開/閉状態を変更したため、これを受け取ります。
このメールに直接返信し、GitHubで表示してください
https://github.com/tensorflow/tensorflow/issues/25#issuecomment -246128896、
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AAjO_Rv​​NrRMQEmsueXWoaU5FX4tWHZq3ks5qovwegaJpZM4Ge0kc

@smtabatabaie @martinwickeによって提案されたように、ソースからcuDNNを構築しようとしましたか?私はあなたとまったく同じ問題に直面しています。あなたが経験を共有すれば、それは私に大いに役立ちますか?

助けてください。 「Cudaコンピューティング機能3.0で表示されているGPUデバイス(デバイス:0、名前:GeForce GT 750M、pciバスID:0000:01:00.0)を無視します。最低限必要なCuda機能は3.5です。」という同じエラーメッセージが表示されます。

私は他の人からの投稿を読みましたが、唯一の問題は、これが直接のWindowsインストールであり、ここにいるほとんどの人が持っていると想定しているAWSではないということです。 テンソルフローのウェブサイトには、最低3.0が必要であると記載されていますが、なぜこれを使用できないのですか? どうすればそれを回避できますか?

これを行う方法についての提案を歓迎します。

@gunan @mrryはcuda3.0でビルドされていないWindowsパッケージですか? そういうわけで
彼らはとても小さいですか?

@martinwickeナイトリーはそうですし、rc1もそうあるべきです。

ナイトリーはい。
rc0は3.5だったと思います。
3.0からr0.12を使用するように変更を選択しましたか?

変更をチェリーピックしました。
@cydalここでナイトリービルドを使用できます:
http://ci.tensorflow.org/view/Nightly/job/nightly-win/14/DEVICE=gpu、OS = windows / artifact / cmake_build / tf_python / dist/tensorflow_gpu-0.12.0rc0-cp35-cp35m-win_amd64。 whl

または、0.12.0rc1を待つこともできます。これは、数日で着陸するはずです。

迅速な対応をありがとうございました。少なくともしばらくは期待していませんでした。 これがばかげた質問のbiのように聞こえる場合は申し訳ありませんが、これをインストールするにはどうすればよいですか? 単にpipインストールしますか? (もしそうなら、以前のテンソルフローGPUを削除しますか?それとも自動的に削除しますか?)またはそれをダウンロードして手動でインストールする必要がありますか? 私を少し初心者と考えてください。

リンクは「PIPパッケージ」を指しています。
pip installコマンドを使用した場合は、 --upgradeフラグを指定して同じコマンドを使用できるはずです。
または、 pip uninstall tensorflowを実行してから、上記のパッケージをインストールすることもできます。
pipコマンドにURLを指定すると、自動的にダウンロードされてインストールされます。

これは、システムやPythonディストリビューションなどに関する限られた知識で私が提供できるすべてです。
pipパッケージのインストールがPythonディストリビューションでどのように機能するかについての詳細は、Google検索を行うことを検討してください。

こんにちは、私は単に前のものをアンインストールして再インストールしました、そしてそれは動作します! どうもありがとうございました、あなたは私が新しいラップトップを買うことから私を救いました。

こんにちは@gunan 、3.5互換性のための最新の変更で、私は次のログを取得します:

>>>> sess = tf.Session()
I c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:885] Found device 0 with properties:
name: Quadro K4100M
major: 3 minor: 0 memoryClockRate (GHz) 0.7055
pciBusID 0000:01:00.0
Total memory: 4.00GiB
Free memory: 3.69GiB
I c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:906] DMA: 0
I c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:916] 0:   Y
I c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (d
evice: 0, name: Quadro K4100M, pci bus id: 0000:01:00.0)
E c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:586] Could not identify NUMA node of /job:loca
lhost/replica:0/task:0/gpu:0, defaulting to 0.  Your kernel may not have been bu
ilt with NUMA support.

どうすれば回避できますか? これを行う方法に関する提案は大歓迎です。

@kay10うまくいったようです。 最後の行のそのエラーメッセージは無害であり、リリースで削除される予定です。

このスレッドで見られるように、誰もが互換性レベル3を持っています。2の互換性を持っている人のために、ソースコードをコンパイルしない解決策はありますか?
@gunanが共有するナイトリービルドを試しましたが、エラーが発生しました:
tensorflow_gpu-0.12.0rc0-cp35-cp35m-win_amd64.whl is not a supported wheel on this platform.
Linuxホイールではないので、すぐに気づきました。

16.04Ubuntuの現在の状況。
I tensorflow/core/common_runtime/gpu/gpu_device.cc:948] Ignoring visible gpu device (device: 0, name: GeForce GTX 590, pci bus id: 0000:03:00.0) with Cuda compute capability 2.0. The minimum required Cuda capability is 3.0. I tensorflow/core/common_runtime/gpu/gpu_device.cc:948] Ignoring visible gpu device (device: 1, name: GeForce GTX 590, pci bus id: 0000:04:00.0) with Cuda compute capability 2.0. The minimum required Cuda capability is 3.0.

@batuhandayioglugil多くのGPUカーネルは、3.0以降でのみ使用可能な機能に依存しているため、残念ながら、新しいGPUが必要になります。 クラウドサービスの1つを試すことも検討してください。

@vrv私はこれらの問題にかなりの時間を費やし、新しいPSUを購入した後、この時点に到達したので、多くの費用がかかりました。 それ以上の時間の無駄を避けるために、私は質問をしたいと思います:私が聞いた少なくとも15の深層学習ライブラリがあります。 テンソルフローにはCudaとcuDNNが必要でした。 この状況(計算能力)はcudaライブラリにとって特別ですか? 他にチャンスはありますか? そうでなければ、私は正しい知識を放棄し、CPUでの作業を続けます(私の無視を許してください)

2.0カードを機能させるよりも問題が多いと思います。既存のCPUは、特定のGPUと同じかそれよりも高速であり、開始するのにはるかに少ない問題である可能性があります。 残念ながら、他の図書館が何を必要としているのかわかりません。

すでにGPUコンピューティング3.0をサポートしていますか?

はい。

@martinwicke迅速な対応ありがとうございます。 それでもソースからビルドする必要がありますか、それとも直接pipインストールする必要がありますか? Arch linuxを使用していて、ソースからビルドするのに苦労して、cコンパイラでエラーが発生します。

バイナリから動作するはずだと思います。

同じ問題があります:「Cudaコンピューティング機能2.1を備えたgpuデバイス(device:0、name:GeForce GT 635M、pciバスID)を無視します。最低限必要なCuda機能は3.0です。」 。 @smtabatabaie @ martinwicke@ alphajatin。 ヘルプ !!!!

コンピューティング機能2.1は低すぎて、TensorFlowを実行できません。 GPUでTensorFlowを実行するには、より新しい(またはより強力な)グラフィックカードが必要です。

質問への回答のURLが無効です。 更新してもらえますか?

夜間のpipパッケージの場合、インストールの推奨方法はpip install tf-nightlyコマンドを使用することです。
ci.tensorflow.orgは非推奨になりました。

このページは役に立ちましたか?
0 / 5 - 0 評価