pytorch/benchmark
TorchBench is a collection of open source benchmarks used to evaluate PyTorch performance.
PyTorch Benchmarks – これは何ですか
PyTorch Benchmarks は、人気のあるディープラーニングモデル(例:BERT、ResNet、Stable Diffusion)をまとめたオープンソースのツールキットであり、標準化されたAPI を提供することで、一貫した方法で実行・計測できるようにしています。リポジトリには各モデルの最小限のデータと、追加のPython依存関係をインストールするスクリプトが含まれており、特定のPyTorchビルド(異なるバージョン、CUDAビルド、TorchInductor、TorchScriptなど)がさまざまなワークロードでどれだけ高速に動作するかを測定できます。
なぜこのツールが存在するのか
- 研究者やエンジニアは、PyTorchのバージョン、コンパイラフラグ、ハードウェアを変更する際に再現可能な数値が必要です。
- 共通インターフェースを公開することで、CIパイプラインが「現実世界の」モデルセットを自動的に実行し、ナイトリービルド間で結果を比較できるようになります。
セットアップ(インストール)
- Pythonの設定 – Python 3.8+ をサポートしています。READMEではPython 3.11を使用する新規Conda環境の作成を推奨しています。
- CUDAライブラリのインストール(NVIDIA GPUをお持ちの場合):
conda install -y -c pytorch magma-cuda121 # CUDA 12.1がデフォルト - PyTorch、torchvision、torchaudioのインストール – Conda(nightlyチャンネル)またはpipで行いますが、両方を混在させないでください。
- ベンチマークツールキットのクローンとインストール:
このスクリプトは各モデルの依存関係を取得し、git clone https://github.com/pytorch/benchmark cd benchmark python3 install.pytorchbenchmarkパッケージをインポート可能にします。 - (オプション)ライブラリとしてインストールして他のコードで利用可能にする:
pip install git+https://github.com/pytorch/benchmark.git # または `pip install .`
ベンチマークの実行
| 方法 | 機能 | 一般的なコマンド |
|---|---|---|
test.py |
速やかな健全性チェック – 各モデルのフォワードパスを1回実行します。 | python3 test.py |
test_bench.py |
Pytest-benchmarkドライバー – 時間計測統計を収集、フィルタリングをサポート、自動でJSON結果を保存します。 | pytest test_bench.py -k "test_BERT_pytorch_train_cpu" |
run.py |
単一モデル用のシンプルCLI(デバッグ/プロファイリング用)。 | python3 run.py resnet50 -d cuda -t eval --profile |
userbenchmark |
カスタムベンチマーク定義用のフレームワーク;run_benchmark.pyで駆動されます。 |
python run_benchmark.py my_custom_bench |
フィルタには通常のpytest -k 式構文を使用でき、モデル、デバイス、またはモード(train/eval)を選択できます。
モデルをライブラリとして使用する
任意のモデルを直接インポートできます:
import torchbenchmark.models.densenet121 as densenet
bench = densenet.Model(test="eval", device="cuda", batch_size=1)
model, inputs = bench.get_module()
model(*inputs) # 1回のフォワードパスを実行
これはCIテストや独自のプロファイリングスクリプトにモデルを埋め込む際に便利です。
マシン固有のチューニング
このツールキットには、AWS g4dn.metalインスタンス(Amazon Linux)上で低ノイズのベンチマークを実行するためのユーティリティが含まれています。次を実行すると:
sudo $(which python) torchbenchmark/util/machine_config.py --configure
CPUゴーバナーの設定、Turboの無効化、構成の記録が行われます。同じスクリプトはpytestドライバーを実行する際に自動的に呼び出されますが、--ignore_machine_configでスキップできます。
CI統合とスコア
ナイトリービルドに対して、毎晩全モデルセットを実行し、リポジトリに2つのスコアセット(V0とV1)を公開しています。Meta社内ではこれらのスコアはダッシュボード(Unidash)にフィードされますが、JSON出力は誰でも分析できるように公開されています。
サイズの拡張
新しいモデルを追加するには、モデルの追加ガイド(torchbenchmark/models/ADDING_MODELS.md)に従ってください。提供する内容は:
- 標準の
BenchmarkModelAPI(get_module、train、evalなど)を実装する薄いラッパー。 - 最小限のデータダウンロードスクリプト。
- オプションで、代替バックエンド(例:TorchInductor)のサポート。
TL;DR
- 何ですか:PyTorchのパフォーマンスを測定するための均一なインターフェースを持つ、選別されたディープラーニングワークロードのセット。
- 誰向け:PyTorch開発者、ハードウェアベンダー、再現可能な速度数値が必要なすべての人。
- どう使うか:Conda/pipでインストールし、
test_bench.py(または単一モデル用にrun.py)を実行し、必要に応じてAWS g4dn.metalマシンを低ノイズ結果用にチューニングします。 - 拡張可能:
BenchmarkModel契約を実装することで、新しいモデルを追加できます。
このリポジトリはPyTorchのベンチマークに特化しており、トレーニングパイプラインやベンチマークラッパーを超える新しいモデルは提供していません。
関連
- プロジェクト
- プロジェクト
- Dispatch
- プロジェクト
- プロジェクト