Documentation Index
Fetch the complete documentation index at: https://wb-21fd5541-update-training-api-26.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Try in Colab
PyTorch Lightning と W&B のセットアップ
このチュートリアルでは、PyTorch Lightning と Weights & Biases が必要です。DataModule - 私たちが求めるデータパイプライン
DataModules は、データに関連するフックを LightningModule から分離する方法であり、データセットに依存しないモデルを開発できます。 これは、データパイプラインを1つの共有可能で再利用可能なクラスにまとめます。データモジュールは PyTorch のデータプロセッシングに関わる5つのステップをカプセル化します:- ダウンロード / トークン化 / プロセス。
- クリーンし、(場合によっては)ディスクに保存。
- データセット内にロード。
- 変換を適用(回転、トークン化など)。
- DataLoader 内にラップ。
コールバック
コールバックは、プロジェクト間で再利用可能な自己完結型プログラムです。PyTorch Lightning は、定期的に使用されるいくつかの組み込みコールバックを提供しています。 PyTorch Lightning のコールバックについて詳しくはこちらをご覧ください。組み込みコールバック
このチュートリアルでは、Early Stopping と Model Checkpoint の組み込みコールバックを使用します。それらはTrainer に渡すことができます。
カスタムコールバック
カスタム Keras コールバックに慣れている場合、PyTorch パイプラインで同じことができる能力は、まさにケーキの上のさくらんぼです。 画像分類を実行しているため、モデルのいくつかの画像サンプルに対する予測を視覚化する能力は役立つかもしれません。このコールバックの形式で提供されることで、モデルを早期段階でデバッグするのに役立ちます。LightningModule - システムの定義
LightningModule はシステムを定義し、モデルではありません。ここでシステムはすべての研究コードを1つのクラスにまとめて自己完結型にします。LightningModule は PyTorch コードを5つのセクションに整理します:
- 計算(
__init__) - トレーニングループ(
training_step) - 検証ループ(
validation_step) - テストループ(
test_step) - オプティマイザー(
configure_optimizers)
トレーニングと評価
DataModule を使用してデータパイプラインを整理し、 LightningModule を使用してモデルアーキテクチャ+トレーニングループを整理したので、PyTorch Lightning の Trainer が他のすべてを自動化します。
Trainer は次のことを自動化します:
- エポックとバッチの反復
optimizer.step(),backward,zero_grad()の呼び出し.eval()の呼び出し、グラッドの有効化/無効化- 重みの保存と読み込み
- Weights & Biases ログ
- マルチ GPU トレーニングサポート
- TPU サポート
- 16 ビットトレーニングサポート
最終的な考え
私は TensorFlow/Keras エコシステムから来ており、PyTorch は洗練されたフレームワークであるにもかかわらず、ちょっと難しいと感じています。個人的な経験にすぎませんが。PyTorch Lightning を探索して、私が PyTorch から遠ざけていた理由のほとんどが解消されていることに気づきました。ここに私の興奮の概要があります:- 以前: 従来の PyTorch モデル定義はバラバラでした。モデルは
model.pyスクリプトに、トレーニングループはtrain.pyファイルにありました。パイプラインを理解するためには多くの見直しが必要でした。 - 現在:
LightningModuleは、モデルがtraining_step、validation_stepなどと共に定義されているシステムとして機能します。今ではモジュール化され、共有可能です。 - 以前: TensorFlow/Keras の最良の部分は入力データパイプラインでした。彼らのデータセットカタログは豊富で成長しています。PyTorch のデータパイプラインは、かつて最大の痛点でした。通常の PyTorch コードでは、データのダウンロード/クリーニング/準備は通常、多くのファイルに分散しています。
- 現在: DataModule は、データパイプラインを1つの共有可能で再利用可能なクラスに組織します。それは単に
train_dataloader、val_dataloader(s)、test_dataloader(s) と、必要な変換やデータプロセッシング/ダウンロードステップの集まりです。 - 以前: Keras では
model.fitを呼び出してモデルをトレーニングし、model.predictで推論を実行することができました。model.evaluateは、テストデータに基づく昔ながらのシンプルな評価を提供しましたが、これは PyTorch ではありませんでした。通常、別々のtrain.pyおよびtest.pyファイルが見つかります。 - 現在:
LightningModuleが整備されることで、Trainerがすべてを自動化します。ただtrainer.fitとtrainer.testを呼び出してモデルをトレーニングと評価すればよいのです。 - 以前: TensorFlow は TPU を好む、PyTorch は…
- 現在: PyTorch Lightning では、複数の GPU で同じモデルをトレーニングするのがとても簡単ですし、TPU でも可能です。
- 以前: 私はコールバックの大ファンで、カスタムコールバックを書くことを好んでいます。従来の PyTorch では、Early Stopping のような些細なことが議論の対象になることがありました。
- 現在: PyTorch Lightning を使用すると、Early Stopping と Model Checkpointing が簡単です。カスタムコールバックを書くことさえもできます。
🎨 結論とリソース
このレポートが役に立つことを願っています。コードを試して、好きなデータセットで画像分類器をトレーニングすることをお勧めします。 PyTorch Lightningについてもっと学ぶためのリソース:- ステップバイステップのガイド - これは公式のチュートリアルの1つです。そのドキュメントは非常によく書かれており、良い学習リソースとして強くお勧めします。
- Weighs & Biases で Pytorch Lightning を使う - W&B を PyTorch Lightning で使用する方法について学ぶために実行できる短い colab です。