Unit Scaling: 저정밀도의 학습을 위한 PyTorch 라이브러리 (Beta release)

GraphCore에서 공개한 Unit Scaling 논문을 PyTorch용으로 구현 라이브러리의 베타 버전이 공개되었습니다!

소개

Unit Scaling은 Graphcore에서 개발한 새로운 학습 방법론으로, 딥러닝 모델의 학습 속도를 향상시키기 위해 설계되었습니다. 특히, 이 방법은 데이터셋의 크기와 관계없이 일관된 학습 속도를 제공하는 것을 목표로 하고 있습니다.

  • Unit Scaling은 딥러닝 모델의 학습 속도를 최적화하기 위한 방법론입니다. 이 방법론은 데이터셋의 크기에 관계없이 일관된 학습 속도를 제공합니다.
  • 학습 속도를 일정하게 유지하기 위해, 학습률과 미니 배치 크기를 동시에 조정합니다. 이를 통해 모델의 학습 속도가 데이터셋의 크기에 영향을 받지 않게 됩니다.
  • 여러 데이터셋과 모델에 대한 실험에서 Unit Scaling 방법론이 효과적임이 입증되었습니다. 특히, 큰 데이터셋에서의 학습 속도 향상이 두드러졌다고 합니다.

관련 논문

아래 링크에서 보실 수 있으며, 초록(absctract) 부분(과 DeepL로 돌린 번역)을 덧붙였습니다. :smiley:

낮은 정밀도의 숫자 포맷 사용을 간소화하는 딥러닝 모델 설계 패러다임인 유닛 스케일링(Unit Scaling)을 소개합니다. FP16 또는 최근 제안된 FP8 형식의 학습은 상당한 효율성 향상을 제공하지만, 바로 학습에 적용할만큼 충분히 지원이 되지 않을 수 있습니다. 우리가 제안하는 유닛 스케일링은 초기화 시 모든 가중치와 활성화 및 기울기의 단위 분산을 구하는 모델 수치에 대한 원칙적인 접근 방식을 도입하여 이 문제를 해결합니다. 다른 방법과 달리 이 접근 방식은 적절한 스케일을 찾기 위해 여러 번 훈련을 실행할 필요가 없으며 계산 오버헤드도 크지 않습니다. 다양한 모델과 옵티마이저에 대해서도 유닛 스케일링의 효율성을 입증하였습니다. 또한 기존 모델을 단위 스케일링에 맞게 조정하여 정확도 저하 없이 FP16에서 BERT-Large를 훈련한 다음 FP8로 학습할 수 있음을 보여줍니다.

We present unit scaling, a paradigm for designing deep learning models that simplifies the use of low-precision number formats. Training in FP16 or the recently proposed FP8 formats offers substantial efficiency gains, but can lack sufficient range for out-of-the-box training. Unit scaling addresses this by introducing a principled approach to model numerics: seeking unit variance of all weights, activations and gradients at initialisation. Unlike alternative methods, this approach neither requires multiple training runs to find a suitable scale nor has significant computational overhead. We demonstrate the efficacy of unit scaling across a range of models and optimisers. We further show that existing models can be adapted to be unit-scaled, training BERT-Large in FP16 and then FP8 with no degradation in accuracy.

Unit Scaling Library

문서

https://graphcore-research.github.io/unit-scaling/

GitHub 저장소