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 流水線能自動執行一組「真實世界」模型,並在夜間建構之間進行結果比對。

快速開始(安裝)

  1. 設定 Python – 支援 Python 3.8+;README 推薦使用 Python 3.11 的全新 Conda 環境。
  2. 安裝 CUDA 庫(如果你有 NVIDIA GPU):
    conda install -y -c pytorch magma-cuda121   # CUDA 12.1 為預設值
    
  3. 安裝 PyTorch、torchvision、torchaudio – 可透過 Conda(nightly 頻道)或 pip 安裝,但不要混用兩個套件管理器
  4. 克隆並安裝基準測試套件
    git clone https://github.com/pytorch/benchmark
    cd benchmark
    python3 install.py
    
    此腳本會拉取各模型的相依性,並使 torchbenchmark 套件可匯入。
  5. (可選)作為套件安裝,以便在其他程式碼中使用:
    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)。你需要提供:

  • 實作標準 BenchmarkModel API(get_moduletraineval 等)的輕量封裝。
  • 最小化資料下載腳本。
  • 可選地支援替代後端(例如 TorchInductor)。

TL;DR

  • 是什麼:一組經過篩選的深度學習工作負載,具有統一介面,用於測量 PyTorch 性能。
  • 適用對象:PyTorch 開發者、硬體廠商,以及需要可重現速度資料的任何人。
  • 如何使用:透過 Conda/pip 安裝,執行 test_bench.py(或單模型用 run.py),並可選地在 AWS g4dn.metal 機器上進行低雜訊結果調校。
  • 可擴充:透過實作小的 BenchmarkModel 合約來新增模型。

該倉儲僅專注於 PyTorch 基準測試;它不提供訓練流程或超出基準封裝的新模型

相關

  • 專案
  • 專案
  • Dispatch
  • 專案
  • 專案