問題タブ [theano-cuda]
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.
python - nvcc : 致命的なエラー: サポートされていないホスト コンパイラ 'bi'
theanoでGPUを使用しようとしています。.theanorc ファイルを作成し、次の Python コードを実行しようとしました。
このコードは deeplearning.net から取得しました。
出力:
python - GPU コア/スレッドの観点から Theano の例を理解する
Theano と Deep Learning を使い始めたばかりです。Theano チュートリアル ( http://deeplearning.net/software/theano/tutorial/using_gpu.html#returning-a-handle-to-device-allocated-data )の例を試していました。コード例を次に示します。
「vlen」を定義する表現を理解しようとしていますが、
この例で指定されている GPU コアの数と、30 が選択された理由について言及しているテキストはどこにもありません。また、768 スレッドの値が使用された理由もわかりません。私の GPU (GeForce 840M) には 384 コアがあります。値 30 の代わりに 384 を代入すると、384 個のコアすべてを使用すると仮定できますか? また、768 スレッドの値は固定のままにする必要がありますか?
python - GPU ではなく CPU で実行される Theano 単純線形回帰
GPU で実行する線形回帰を実行する単純な Python スクリプト (Theano を使用) を作成しました。コードが開始すると、「GPU デバイスを使用しています」と表示されますが、(プロファイラーによると) すべての操作は CPU 固有です (GpuElemWise の代わりに ElemWise、GpuFromHost などはありません)。
変数 THEANO_FLAGS を確認しましたが、すべてが正しいようで、キャッチが表示されません (特に、同じ設定の Theano チュートリアルが GPU で正しく実行されている場合:))。
コードは次のとおりです。
- THEANO_FLAGS=cuda.root=/usr/local/cuda
- デバイス=GPU
- floatX=float32
- lib.cnmem=.5
- profile=真
- CUDA_LAUNCH_BLOCKING=1
出力:
theano - Windows、Python 2.7、cuda 7.5 で GPU を使用して Theano を実行する
かなり長い間、py 2.7 で GPU なしで Theano を実行しています。次に、GPU サポートを確認することにしました。したがって、ここに記載されているすべての手順に従いました: http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-microsoft-windows/index.html#abstract
次に、msvc 2013 でデバイス クエリ sln を開き、ビルドしました (上記のリンクで説明したように、インストールが成功したかどうかを確認します)。実行するとエラーが表示されます(添付のスクリーンショット)。
Theanorc ファイルの内容を使用して py 2.7 で gpu を使用してスターター プログラムを実行すると、同様のエラーが発生します。
nvcc -V および cl.exe でエラーは発生しませんでした。OS - win7 SP1 NVIDIA GeForce GT650M
誰でも助けてもらえますか?
python - RAMに収まらないトレーニングセットのためにTheanoでメモリを管理する正しい方法は何ですか?
TL;DR: メモリを消費せずに Theano 関数により多くのデータを渡すにはどうすればよいですか?
私が抱えている問題は、Theano を使用して GPU で ML アルゴリズムをトレーニングすると、GPU が最終的にメモリ不足になることです。データセットが大きすぎてメモリに完全に読み込むことができないため、チュートリアルから少し離れました (これはビデオ アルゴリズムの問題でもあるはずですよね?)。そのため、インデックスの入力と更新スキームを使用するのではなく、Theano ndarrays を直接機能させます。
私が言いたいことの例を挙げましょう。Theano の Logistic Regression チュートリアルでは、次の行に沿って何かを行うように指示されています。
これにはtest_set_x
とtest_set_y
をメモリにロードする必要があり、チュートリアルでは を使用して完全なSharedVariable
データセットを保存します。
私にとっては、データセットは巨大です(数ギガバイト)。つまり、すべてを一度にメモリにロードすることはできません。したがって、データを直接取得するように変更しました。
そして、私は漠然と次のように見える何かをします:
厄介なPythonガベージコレクションの汚れなしにGPUにデータを適切に渡す方法を根本的に誤解している可能性があると思います。(多数の) バッチの後にこれをトレーニングした後、次のようなエラーが発生するため、これはモデル内でますます多くのメモリを内部的に占有しているようです。
メモリを消費せずに Theano 関数により多くのデータを渡すにはどうすればよいですか?