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 파이프라인은 "현실 세계" 모델 세트를 자동으로 실행하고, 나-nightly 빌드 간에 결과를 비교할 수 있습니다.
시작하기 (설치)
- 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(나이트리 채널) 또는 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 고버너 설정, 터보 기능 비활성화, 구성 기록이 수행됩니다. 동일한 스크립트는 pytest 드라이버를 실행할 때 자동으로 호출되지만, --ignore_machine_config로 건너뛸 수 있습니다.
CI 통합 및 점수
나이트리 CI는 PyTorch 나이트리 빌드에 대해 전체 모델 세트를 실행하고, 리포지토리에 두 가지 점수 세트(V0 및 V1)를 게시합니다. 메타 내부에서는 이 점수가 대시보드(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
- 프로젝트
- 프로젝트