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 |
快速健康檢查 – 每個模型執行一次前向傳播。 | 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) # 執行一次前向傳播
這在 CI 測試或嵌入到自己的效能分析腳本中非常方便。
機器特定調校
該套件包含用於在 AWS g4dn.metal 實例(Amazon Linux)上進行低雜訊基準測試的實用工具。執行:
sudo $(which python) torchbenchmark/util/machine_config.py --configure
將設定 CPU 調度器、停用 Turbo 模式,並記錄設定。當執行 pytest 驅動器時,該腳本會自動呼叫,但你可以透過 --ignore_machine_config 跳過它。
CI 集成與分數
夜間 CI 會針對 PyTorch 夜間建構執行全部模型集,並在倉儲中發布兩組分數(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
- 專案
- 專案