pytorch-accelerated
pytorch-accelerated は、PyTorch モデルのトレーニングプロセスを加速するために設計された軽量ライブラリです。
最小限でありながら拡張可能なトレーニングループを提供し、単一の Trainer オブジェクトにカプセル化されています。これにより、多くのユースケースに柔軟に対応でき、コードの変更なしで異なるハードウェアオプションを利用することが可能です。
pytorch-accelerated は、機能をスリム化し、シンプルさ と 透明性 を最重視しています。
ユーザーが自分でボイラープレートを書くことなく、内部で何が起こっているのかを正確に理解できるようにするためです! 主な特徴は以下の通りです:
- シンプルで完結しつつも簡単にカスタマイズ可能なトレーニングループを提供し、単純なケースではそのまま動作します。
- デバイスの配置、混合精度、DeepSpeed統合、マルチGPUおよび分散トレーニングをコード変更なしで処理します。
- 純粋なPyTorchコンポーネントのみを使用し、追加の修正やラッパーは不要で、timm、
- 小規模で洗練されたAPIにより、既存のPyTorchユーザーにとって学習コストが最小限に抑えられます。
pytorch-acceleratedは、
Hugging Face Accelerateの上に
誇りを持って、かつ透明性をもって構築されています。Accelerateは、デバイス間のデータ移動やトレーニング構成の起動を担当します。トレーナーのカスタマイズや
トレーニングの起動時には、Accelerateのドキュメントを
参照し、利用可能なすべてのオプションを理解することを推奨します。Accelerateにはテンソルの集約や
勾配クリッピングなどの便利な関数があり、pytorch-acceleratedの
examplesフォルダでその使用例を見ることができます!
このライブラリの動機や、詳しいスタートガイドについては、こちらのブログ記事をご覧ください。
インストール
pytorch-acceleratedは以下のコマンドでpipからインストールできます:
pip install pytorch-accelerated
パッケージをできるだけスリムにするために、例を実行するために必要なパッケージはデフォルトで含まれていません。これらのパッケージを含めるには、次のコマンドを使用できます:pip install pytorch-accelerated[examples]クイックスタート
始めるには、以下のスニペットで示されているように、pytorch-acceleratedのTrainerをインポートして使用し、
その後、以下に記載された
accelerate CLI
を使ってトレーニングを開始します。
# examples/core/train_mnist.py
import osfrom torch import nn, optim
from torch.utils.data import random_split
from torchvision import transforms
from torchvision.datasets import MNIST
from pytorch_accelerated import Trainer
class MNISTModel(nn.Module):
def __init__(self):
super().__init__()
self.main = nn.Sequential(
nn.Linear(in_features=784, out_features=128),
nn.ReLU(),
nn.Linear(in_features=128, out_features=64),
nn.ReLU(),
nn.Linear(in_features=64, out_features=10),
)
def forward(self, input):
return self.main(input.view(input.shape[0], -1))
def main():
dataset = MNIST(os.getcwd(), download=True, transform=transforms.ToTensor())
train_dataset, validation_dataset, test_dataset = random_split(dataset, [50000, 5000, 5000])
model = MNISTModel()
optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)
loss_func = nn.CrossEntropyLoss()
trainer = Trainer(
model,
loss_func=loss_func,
optimizer=optimizer,
)
trainer.train(
train_dataset=train_dataset,
eval_dataset=validation_dataset,
num_epochs=8,
per_device_batch_size=32,
)
trainer.evaluate(
dataset=test_dataset,
per_device_batch_size=64,
)
if __name__ == "__main__":
main()
accelerate CLI を使用してトレーニングを開始するには、
マシン上で次のコマンドを実行します: accelerate config --config_file accelerate_config.yaml
表示される質問に答えてください。これにより、以下を実行する際に適切にデフォルトオプションを設定するための 設定ファイルが生成されます。
accelerate launch --config_file accelerate_config.yaml train.py [--training-args]
注: accelerate CLI の使用は完全に任意です。トレーニングは以下のように 通常の方法でも開始できます:
python train.py / python -m torch.distributed ...
これはインフラ構成に応じて、起動コマンドをより細かく制御したいユーザー向けです。
より複雑なトレーニング例は、examples フォルダで確認できます こちら。
あるいは、まずコアコンセプトを理解したい場合は、ドキュメントにあります。
使い方
pytorch-accelerated は誰向け?
- PyTorch に慣れていて、トレーニングループの共通ボイラープレートを書くことを避けて、
- 自分でモデル、損失関数、オプティマイザ、データセットの選択や作成を好み、慣れているユーザー。
- シンプルで洗練された機能セットを重視し、動作がデバッグしやすく、理解しやすく、論理的に考えやすいことを望むユーザー。
いつ pytorch-accelerated を使うべきでない?
- データの読み込みから推論までを含むエンドツーエンドのソリューションを探していて、
pytorch-accelerated はトレーニングプロセスのみに焦点を当てており、
他の全てはユーザーの責任に任されています。
- トレーニングループ全体を自分で書きたいが、デバイス管理の煩わしさだけは避けたい場合は、
Trainer のあらゆる部分をカスタマイズ可能ですが、
トレーニングループは基本的に複数の部分に分割されています。
異なるメソッドをオーバーライドする必要があります。しかし、その前に、本当にまた最初からforループを書くことが重要でしょうか😉。
- 通常のトレーニングループのパターンに当てはまらないカスタムで非常に複雑なユースケースに取り組んでいて、
謝辞
pytorch-acceleratedの設計と機能の多くは、fastai、timm、
PyTorch-lightning、およびHugging Face Accelerateなどの
優れたライブラリやフレームワークから大きな影響を受けています。これらのツールはこのライブラリと機械学習コミュニティの両方に
非常に大きな影響を与えており、その影響力は言い尽くせません!
pytorch-acceleratedはこれらのツールからインスピレーションを得ていますが、含まれる全ての機能はこのライブラリに
利益をもたらすよう一から実装されています。唯一の例外は、
examples
フォルダ内のいくつかのスクリプトで、既存のリソースを取り入れpytorch-acceleratedの機能を示すために修正したものです;
これらの場合は明確にマークされ、元の作者に謝辞が示されています。
--- Tranlated By Open Ai Tx | Last indexed: 2026-02-28 ---