프로젝트 소개

Apex는 NVIDIA가 유지 관리하는 유틸리티 모음으로, 최신 혼합 정밀도 및 분산 학습 기능을 PyTorch 사용자가 빠르게 사용할 수 있도록 하는 것을 목표로 하며, 일부 코드는 결국 PyTorch 업스트림에 반영될 예정입니다. 제공 기능: - 모델을 낮은 정밀도로 실행하기 위한 혼합 정밀도 학습 헬퍼(apex.amp). - apex.parallel.DistributedDataParallel 및 SyncBatchNorm을 포함한 분산 학습 유틸리티. - FusedAdam과 같은 옵티마이저용 융합 커널, 그리고 FusedLayerNorm 및 FusedRMSNorm과 같은 정규화 레이어. - 소성, 그룹 배치 정규화, xentropy, focal loss, transducer 손실, peer memory, NCCL P2P, 병목 레이어, 분산 옵티마이저, GPU direct storage 등의 영역을 다루는 선택적 contrib 모듈 세트. 설치 참고 사항: - NGC의 NVIDIA PyTorch 테이너에는 사용자 정의 확장이 이미 포함되어 제공됩니다. - 소스에서 설치할 경우 권장 경로는 APEX_CPP_EXT=1 및 APEX_CUDA_EXT=1과 같은 환경 변수를 pip install --no-build-isolation과 함께 사용하는 것입니다. 레거시 명령줄 플래그(--cpp_ext, --cuda_ext)도 계속 지원됩니다. - Python 전용 빌드도 가능하지만 융합 커널이 제외되므로 FusedAdam, FusedLayerNorm/FusedRMSNorm, 그리고 SyncBatchNorm, DistributedDataParallel 및 amp의 융합 경로를 사용할 수 없거나 더 느립니다. - 개별 contrib 모듈은 자체 설치 옵션이 필요하며, 일부는 안정 리스가 아닌 PyTorch nightly와만 호환될 수 있습니다. APEX_ALL_CONTRIB_EXT=1은 모든 contrib 확장을 한 번에 드합니다. - 더 빠른 컴파일을 위해 Ninja를 권장하며, 제한된 CPU 또는 메모리 환경을 위한 병렬 빌드 옵이 문서화되어 있습니다. - Windows 지원은 실험적으로 설명됩니다. 이것은 최종 사용자 애플리케이이 아니라 혼합 정밀도 및 분산 학습 구성 요소를 원하는 딥러닝 모델을 학습시키는 개발자를 위한 라이브러리입니다.