問題タブ [distributed-training]
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 - pyotrch 配布: シェルコマンドの実行
分散型 pytorch トレーニングを実行しています。すべてが魅力のように機能します。すべての GPU を十分に活用しており、すべてのプロセスが同期しており、すべて問題ありません。
各エポックの終わりに、新しいプロセスで精巧な評価を実行したいと思います (トレーニングをブロックしないため)。
この時点で、実行が停止し、新しいプロセスは開始されず、すべてが停止します。
- pytorch の DDP と
subprocess
モジュールの間に相互依存関係はありますか? - プロセス内から新しいシェル スクリプト (
subprocess.run
/subprocess.call
/subprocess.Popen
)を開始するにはどうすればよいですか?DDP
また、この質問をpytorch のフォーラムに投稿し、バグ レポートを開きました。
更新 (2021 年 7 月 29 日)
コードを次のように変更しました。
ダメ:Popen
コマンドがブロックされており、poll
コマンドの出力は実行されず、ましてやcommunicate
.
でジョブをチェックするとtop
、次のように表示されます。
実際に実行されるプロセスを見ると、次のようになります。
subprocess
モジュールが新しいプロセスを開始するのを妨げる根本的なメカニズムがあるようです。
何か助けはありますか?
amazon-web-services - Sagemaker 分散データ並列処理が期待どおりに機能しない ( smdistributed.dataparallel.torch.distributed )
全て、
データは分割されていますが、smdistributed.dataparallel.torch.parallel.distributed import DistributedDataParallel as DDP import smdistributed.dataparallel.torch.distributed からの分散トレーニング (2 つの lib を使用) のための AWS sagemaker データ並列処理アプローチを試していました。すべての GPU ("ml.p3.16xlarge" 、8 Gpus) ですが、シングル インスタンスでもダブル インスタンスでもトレーニング時間はまだ短縮されていません。
以前、Sagemaker Inbuilt アルゴ Resnet101 で 100 エポック トレーニング時間の同じデータを試したところ、約 2080 秒 (バッチ サイズ - 64) でした。これは、分散トレーニングで改善したいベンチマークでした。
同じインスタンスで分散データ並列処理アプローチを使用して分散トレーニングを試したところ、20 エポックのトレーニングが行われました - 時間は 1600 秒 (バッチ サイズ - 64) で、20 エポックのトレーニングです - 時間は 1300 秒 (バッチ サイズ - 128) です。 20 エポックのトレーニングを行っています - 時間は 1063 秒です (バッチ サイズ - 258)。
バッチ サイズが異なっていても、トレーニング時間はあまり改善されません。
トレーニング データ - 6016 画像。テスト データ - 745 枚の画像。
python - GCP での PyTorch Lightning マルチノード トレーニング エラー
現在、Pytorch Lightning のトレーニングを含むプロジェクトに取り組んでいます。このコードは、DistributedDataParallel (DDP) を介して GPU を利用します。現在、Vertex AI トレーニング ジョブの 1 台のマシンおよび/またはノートブックで実行している間は正常に動作しています。
しかし、マルチノード トレーニング (マスター プールとワーカー プールを含む) で同じことを試みると、コードはワーカー マシンを利用せずにマスター ノードで実行されるだけなので、トレーニングは開始されません。ここにトレーニング用のコードがあります -
Q1 - トレーニング ジョブでワーカー ノードを呼び出す方法はありますか?
また、同じ目的を支援できる Ray Lightning というモジュールに出くわしました。しかし、同じものを実装すると、いくつかのバグが発生します...コードで次のコマンドを指定しているにもかかわらず、初期化されません-
Q2 - 現在の問題の解決策はありますか?
前もって感謝します...