問題タブ [rapids]
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 - 機械学習モデルのトレーニングに cuml を使用すると、Python Nvidia がメモリ エラーを高速化する
cuml ライブラリと GPU を使用して機械学習トレーニングを高速化するために、nvidia Rapids で python 3 を使用しています。
私の scrips も GPU トレーニング (tf 経由) で keras を使用しており、CUML を使用しようとする段階に達すると、メモリ エラーが発生します。これは、TF が GPU メモリを解放しないために発生していると思われます (nvidia-smi を見ると)、すべてのメモリが割り当てられていることがわかります。
これは、cuml モデルのトレーニングに使用するコードです
これは私が得るエラーです
[2] cuMemAlloc を呼び出すと、CUDA_ERROR_OUT_OF_MEMORY が発生する
encoded_data と y_train は numpy 配列、encoded_data は浮動小数点数の n*m 配列、y_train はラベルである整数の n*1 ベクトルです。どちらも sklearn ロジスティック回帰でトレーニングすると正常に動作します。
1. トレーニングしたすべての tf モデルを失うことなく、同じ GPU (推奨) を使用します (実際には tf モデルが必要とするよりも多くのメモリがありますが、tf プロセスはまだすべてのメモリを使用しています)。 CUML 計算用の 2 番目の GPU (RAPIDS CUML モデル トレーニングを実行する GPU を選択する方法が見つかりません。
python - dask.dataframe をすべてのワーカーとパーティションに事前キャッシュして、通信の必要性を減らす方法
dask.dataframe.map_partitions
マージなどの操作に使用すると魅力的な場合があります。一部のシナリオでは、 aleft_df
とright_df
usingの間でマージを行う場合、マージを実行する前に基本的に事前キャッシュして、ネットワークのオーバーヘッド/ローカル シャッフルを削減しmap_partitions
たいと考えています。right_df
これを行う明確な方法はありますか?client.scatter(the_df)
、client.run(func_to_cache_the_df)
、またはその他のインテリジェントブロードキャストのいずれかまたは組み合わせで可能になるはずです。
これは、本質的にルックアップ テーブルでleft_df
あるはるかに小さいテーブルで、大きなテーブルで左結合を行うというコンテキストで特に顕著です。right_df
これはright_df
メモリに読み込まれ、マージ前にすべてのワーカー/パーティションに永続化/分散されて、最後の最後までクロスパーティション通信の必要性を減らすことができるはずです。right_df
これをうまく行うにはどうすれば分散できますか?
以下は、cuDF と Dask を使用したこの種の不均衡なマージの小さな例です (ただし、概念的には、これは pandas と Dask でも同じです)。
python - Ubuntu に CUDA + RAPIDS をインストールする - 「利用可能なカーネル イメージがありません」
編集:以下のコメントで解決しました。
CUDA + RAPIDS を使い始めようとしています。これを行うために、Ubuntu 18.04 と NVIDIA Tesla K80 を使用して Google Compute で VM を起動しました。ソフトウェアをインストールするために実行したコマンドは次のとおりです。
次に、pandas の代わりに cudf を使用して少量の Python を実行しようとすると、次のエラーが発生します。
たくさんのガイドを読んだので、何が欠けているのかわかりません。「これらの一握りのコマンドを実行するだけで、準備完了です!」と書かれています。同じコマンドがリストされています。ごく最近、ソースから CUDA ドライバーをコンパイルするために nvcc を使用することになっていることがわかりましたが、使用するコマンドを示すガイドがどこにも見つかりません (誰もが数百ページの長い PDF を指しているだけです)。実際に役立つコマンドを提供するのではなく、NVIDIA によって)。では、Tesla K80 を使用して Ubuntu 18.04 システムで CUDA + RAPIDS を実行するには、他に何をする必要がありますか?
ありがとうございました!