Lightning-AI/lightning-thunder
PyTorch compiler that accelerates training and inference. Get built-in optimizations for performance, memory, parallelism, and easily write your own.
해결하는 문제
Thunder는 PyTorch의 최적화를 훈련 및 추론 모두에서 간소화하기 위해 설계된 소스 투 소스 컴파일러입니다. 전통적인 컴파일러의 투명성 부족을 피하면서, "비최적화된" PyTorch 이지 모드와 고도로 최적화된 실행 사이의 격차를 메우며, 성능 향상을 투명하게 적용할 수 있도록 합니다.
작동 방식
Thunder는 세 가지 주요 단계로 작동합니다:
- 획득: Python 바이트코드를 해석하여 모델을 직선형 Python 프로그램(중간 표현)으로 변환합니다.
- 변환: 이 IR에 변환 시스템을 적용하여 분산 처리, 수치 정밀도 변경, 또는 계산 그래프 수정을 수행합니다.
- 실행: 결과 트레이스를 다양한 실행 엔진으로 라우팅합니다.
NVFuser또는torch.compile와 같은 융합 엔진, cuDNN SDPA, TransformerEngine과 같은 전용 라이브러리, 사용자 정의 Triton/CUDA 커널, 또는 표준 PyTorch 이지 연산을 포함합니다.
대상 사용자
PyTorch 모델의 성능을 극대화해야 하는 개발자 및 연구자에게 적합합니다. 특히 NVIDIA 하드웨어(Blackwell 포함)에서 LLM 또는 기타 대규모 모델을 다루는 사람들, 그리고 양자화, 믹스드 프리시전, 분산 전략을 검사 가능하고 확장 가능한 방식으로 적용하고자 하는 사람들에게 적합합니다.
주요 특징
- 성능 향상: PyTorch 모델을 최대 40% 더 빠르게 실행 가능합니다.
- 유연한 정밀도: FP4, FP6, FP8 및 믹스드 프리시전 전략을 지원합니다.
- 분산 확장성: 텐서 병렬성(TP), 파이프라인 병렬성(PP), 데이터 병렬성(DP)을 내장 지원합니다.
- 검사 가능한 IR: 사용자가 연산을 프로파일링하고 커널에 매핑하며 프로그램을 인터랙티브하게 검사할 수 있는 파이썬스러운 IR를 사용합니다.
- 조합 가능한 레시피: 최적화를 레시피로 묶어 다양한 모델 패밀리 간에 쉽게 이식할 수 있습니다.
- CUDAGraphs 지원: CUDAGraphs를 통해 CPU 오버헤드를 줄이는 플러그인을 포함합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트