LLM.int8(): 대규모 트랜스포머를 위한 8비트 행렬 곱셈

대형 언어 모델(Large language models)은 널리 채택되었지만 추론을 위해 상당한 GPU 메모리가 필요합니다. 우리는 트랜스포머의 피드포워드 및 어텐션 투영 레이어에서 Int8 행렬 곱셈을 위한 절차를 개발하여, 추론에 필요한 메모리를 절반으로 줄이면서 전체 정밀도 성능을 유지할 수 있도록 하였습니다. 우리의 방법을 통해 175B 파라미터의 16/32비트 체크포인트를 로드하고, Int8로 변환하여 즉시 사용할 수 있으며 성능 저하 없이 작동합니다. 이는 트랜스포머 언어 모델에서 주요한 어텐션과 트랜스포머 예측 성능을 지배하는 고도로 체계적인 신생 특성들의 속성을 이해하고 이를 우회함으로써 가능해졌습니다. 이러한 특성을 처리하기 위해 우리는 두 부분으로 구성된 양자화 절차인 LLM.int8()를 개발하였습니다. 먼저, 행렬 곱셈의 각 내적에 대해 별도의 정규화 상수를 사용하는 벡터별 양자화(vector-wise quantization)를 적용하여 대부분의 특성을 양자화합니다. 그러나 신생 이상치(outliers)에 대해서는 새로운 혼합 정밀도 분해 방식(mixed-precision decomposition scheme)을 포함하여, 이 이상치 특성 차원들을 16비트 행렬 곱셈으로 분리하면서 여전히 99.9% 이상의 값들이 8비트에서 곱셈됩니다. LLM.int8()를 사용하여 실험적으로 최대 175B 파라미터까지 포함하는 대형 언어 모델에서 성능 저하 없이 추론이 가능함을 보여주었습니다. 이 결과는 이러한 모델들을 훨씬 더 접근 가능하게 만들며, 예를 들어 OPT-175B/BLOOM을 소비자용 GPU가 장착된 단일 서버에서 사용할 수 있게 합니다. 우리는 소프트웨어를 오픈소스로 공개하였습니다.