>  기사  >  기술 주변기기  >  LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

WBOY
WBOY앞으로
2023-09-12 08:01:01589검색

대형 모델의 학습 및 미세 조정에는 비디오 메모리 요구 사항이 높으며 최적화 상태는 비디오 메모리의 주요 비용 중 하나입니다. 최근 Tsinghua University의 Zhu Jun과 Chen Jianfei 팀은 모델 훈련의 메모리 오버헤드를 절약하고 완전 정밀도 최적화 장치와 비슷한 정확도를 달성할 수 있는 신경망 훈련을 위한 4비트 최적화 장치를 제안했습니다.

수많은 사전 훈련 및 미세 조정 작업을 실험한 4비트 최적화 프로그램은 정확도를 유지하면서 LLaMA-7B 미세 조정의 메모리 오버헤드를 최대 57%까지 줄일 수 있습니다.

논문: https://arxiv.org/abs/2309.01507

코드: https://github.com/thu-ml/low-bit-optimizers

모델 훈련의 메모리 병목 현상

GPT-3, Gopher부터 LLaMA까지 대형 모델의 성능이 더 좋다는 것이 업계의 공감대가 되었습니다. 그러나 이와 대조적으로 단일 GPU의 비디오 메모리 크기는 느리게 증가하여 비디오 메모리가 대규모 모델 훈련의 주요 병목 현상이 되었습니다. 제한된 GPU 메모리로 대형 모델을 어떻게 훈련시킬 것인가가 중요한 문제가 되었습니다.

이를 위해서는 먼저 비디오 메모리 소비의 원인을 명확히 해야 합니다. 실제로 소스에는 세 가지 유형이 있습니다. 즉,

1. 신경망의 각 계층에서 출력되는 입력 데이터와 활성화 값을 포함하는 "데이터 메모리"의 크기는 배치 크기와 직접적인 영향을 받습니다. 이미지 해상도/컨텍스트 길이

2. 모델 매개변수, 그라디언트 및 최적화 상태를 포함하는 "모델 메모리"는 모델 매개변수 수에 비례합니다.

3. GPU 임시 메모리 및 커널 계산에 사용되는 기타 캐시입니다. 모델의 크기가 커질수록 모델의 비디오 메모리 비중이 점차 늘어나 큰 병목 현상이 발생한다.

옵티마이저 상태의 크기는 어떤 옵티마이저가 사용되는지에 따라 결정됩니다. 현재 AdamW 최적화 프로그램은 훈련 프로세스 중에 두 개의 최적화 프로그램 상태, 즉 첫 번째 순간과 두 번째 순간을 저장하고 업데이트해야 하는 Transformer를 훈련하는 데 자주 사용됩니다. 모델 매개변수의 수가 N이면 AdamW의 최적화 상태 수는 2N입니다. 이는 분명히 엄청난 그래픽 메모리 오버헤드입니다.

LLaMA-7B를 예로 들면 이 모델의 매개변수 수는 약 7B입니다. 전체 정밀도(32비트) AdamW 최적화 프로그램을 사용하여 미세 조정하는 경우 최적화 프로그램이 차지하는 메모리 크기입니다. 상태는 약 52.2GB입니다. 또한 순진한 SGD 최적화 프로그램은 추가 상태가 필요하지 않고 최적화 프로그램 상태가 차지하는 메모리를 절약하지만 모델의 성능을 보장하기 어렵습니다. 따라서 이 기사에서는 최적화 프로그램 성능이 저하되지 않도록 하면서 모델 메모리의 최적화 프로그램 상태를 줄이는 방법에 중점을 둡니다.

옵티마이저 메모리 절약 방법

현재 학습 알고리즘 측면에서 옵티마이저 메모리 오버헤드를 절약하는 세 가지 주요 방법이 있습니다. 순위 분해(인수화)

2. LoRA와 같은 작은 매개변수 세트만 학습하여 대부분의 최적화 상태를 저장하지 마세요.

3. 최적화 상태를 나타내는 정밀 숫자 형식입니다.

특히 Dettmers et al.(ICLR 2022)은 블록 단위 양자화 및 동적 지수 수치 형식(동적 지수 수치 형식) 기술을 사용하여 모멘텀 및 AdamW를 갖춘 SGD에 해당하는 8비트 최적화 프로그램을 제안했습니다. 언어 모델링, 이미지 분류, 자기 지도 학습, 기계 번역 등의 작업에서 원래의 완전 정밀도 최적화 프로그램과 일치하는 결과를 제공합니다.

이를 바탕으로 본 논문에서는 옵티마이저 상태의 수치 정확도를 4비트로 더욱 낮추고 다양한 옵티마이저 상태에 대한 양자화 방법을 제안하며 최종적으로 4비트 AdamW 옵티마이저를 제안합니다. 동시에 본 논문에서는 압축과 낮은 순위 분해 방법의 결합 가능성을 탐색하고, 우수한 성능과 더 나은 메모리 효율성을 모두 누리는 4비트 Factor 최적화 프로그램을 제안합니다. 이 문서에서는 자연어 이해, 이미지 분류, 기계 번역, 대형 모델의 명령 미세 조정 등 여러 가지 고전적인 작업에서 4비트 최적화 프로그램을 평가합니다.

모든 작업에서 4비트 최적화 프로그램은 더 적은 메모리를 차지하면서 전체 정밀도 최적화 프로그램과 비슷한 결과를 얻습니다.

문제 설정

압축 기반 메모리 효율적 최적화를 위한 프레임워크

먼저, 알고리즘 1에서 제공하는 일반적으로 사용되는 최적화 프로그램에 압축 작업을 도입하는 방법을 이해해야 합니다. 여기서 A는 기울기 기반 최적화 프로그램(예: SGD 또는 AdamW)입니다. 최적화 프로그램은 기존 매개변수 w, 그래디언트 g 및 최적화 프로그램 상태 s를 가져와 새 매개변수와 최적화 프로그램 상태를 출력합니다. 알고리즘 1에서 전체 정밀도 s_t는 일시적인 반면, 낮은 정밀도(s_t)̅는 GPU 메모리에 유지됩니다. 이 방법이 비디오 메모리를 절약할 수 있는 중요한 이유는 신경망의 매개변수가 각 레이어의 매개변수 벡터와 함께 연결되는 경우가 많기 때문입니다. 따라서 옵티마이저 업데이트도 레이어/텐서 단위로 수행됩니다. 알고리즘 1에서는 최대 하나의 매개변수에 대한 옵티마이저 상태가 최대 정밀도로 메모리에 남고, 다른 레이어에 해당하는 옵티마이저 상태는 압축되어 있습니다. 상태. .

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

주요 압축 방법: 양자화

양자화는 정밀도가 낮은 수치 값을 사용하여 고정밀도 데이터를 표현하는 기술입니다. 이 글에서는 양자화 연산을 정규화( 정규화) 및 매핑(mapping)을 통해 보다 경량화된 설계와 새로운 정량화 방법의 실험이 가능해졌습니다. 정규화와 매핑이라는 두 가지 작업이 요소별 방식으로 전체 정밀도 데이터에 순차적으로 적용됩니다. 정규화는 텐서의 각 요소를 단위 간격으로 투영하는 역할을 하며, 여기서 텐서 정규화(텐서별 정규화) 및 블록 단위 정규화(블록 단위 정규화)는 다음과 같이 정의됩니다.

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

다양한 정규화 방법 세분성이 다르면 이상값을 처리하는 능력도 다르며, 추가 메모리 오버헤드도 달라집니다. 매핑 작업은 정규화된 값을 낮은 정밀도로 표현할 수 있는 정수로 매핑하는 작업을 담당합니다. 공식적으로 말하면, 비트 너비 b(즉, 각 값은 양자화 후 b 비트로 표시됨)와 사전 정의된 함수 T

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

가 주어지면 매핑 작업은 다음과 같이 정의됩니다.

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

따라서, 적절하게 설계된 T가 양자화 오류를 줄이는 데 어떻게 중요한 역할을 하는지 알아보세요. 이 기사에서는 주로 선형 매핑(선형)과 동적 지수 매핑(동적 지수)을 고려합니다. 마지막으로 역양자화 과정은 매핑과 정규화의 역연산자를 순차적으로 적용하는 것입니다.

1차 모멘트의 압축 방법

다음은 주로 AdamW의 최적화 상태(1차 모멘트와 2차 모멘트)에 대한 다양한 양자화 방법을 제안합니다. 우선, 이 문서의 양자화 방법은 주로 Dettmers et al.(ICLR 2022)의 방법을 기반으로 하며 블록 정규화(블록 크기 2048) 및 동적 지수 매핑을 사용합니다.

사전 실험에서 비트 폭을 8비트에서 4비트로 직접 줄였고 1차 모멘트가 양자화에 매우 강력하고 많은 작업에서 매칭 효과를 달성했지만 일부 작업에서도 발생한다는 것을 발견했습니다. 성능 손실. 성능을 더욱 향상시키기 위해 우리는 첫 번째 순간의 패턴을 주의 깊게 연구한 결과 단일 텐서에 많은 이상값이 있음을 발견했습니다.

이전 작업에서는 매개변수 및 활성화 값의 이상값 패턴에 대한 연구를 수행한 반면, 활성화 값은 채널에 따라 분포됩니다. 이 기사에서는 최적화 프로그램 상태의 이상값 분포가 복잡하다는 사실을 발견했습니다. 일부 텐서는 이상값이 고정 행에 분산되어 있고 다른 텐서는 이상값이 고정 열에 분산되어 있습니다.

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

열 단위로 이상값이 분포된 텐서의 경우 행 우선 블록 정규화에 어려움이 있을 수 있습니다. 따라서 본 논문에서는 블록 크기가 128인 더 작은 블록을 사용하여 양자화 오류를 줄이면서 추가 메모리 오버헤드를 제어 가능한 범위 내에서 유지하는 방법을 제안합니다. 아래 그림은 다양한 블록 크기에 대한 양자화 오류를 보여줍니다.

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

2차 모멘트의 압축 방법

1차 모멘트에 비해 2차 모멘트의 양자화는 더 어렵고 훈련에 불안정성을 가져옵니다. 본 논문에서는 영점 문제가 2차 모멘트를 정량화하는 데 있어 주요 병목 현상임을 확인합니다. 또한 조건이 나쁜 이상치 분포에 대한 개선된 정규화 방법인 랭크-1 정규화를 제안합니다. 이 글에서는 2차 모멘트의 분해 방법(인수분해)도 시도합니다.

영점 문제

매개변수, 활성화 값, 기울기의 양자화에서 영점은 필수 불가결한 경우가 많으며, 양자화 후 가장 높은 주파수를 갖는 점이기도 합니다. 그러나 아담의 반복식에서는 업데이트의 크기가 두 번째 순간의 -1/2승에 비례하기 때문에 0을 중심으로 한 범위의 변화는 업데이트의 크기에 큰 영향을 미쳐 불안정성을 유발하게 됩니다.

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

다음 그림은 양자화 전후의 아담의 두 번째 모멘트 -1/2 거듭제곱의 분포를 히스토그램 형태로 나타낸 것입니다. 즉, h(v)=1/(√v+10^( -6) ) . 0이 포함되면(그림 b) 대부분의 값이 10^6까지 푸시되어 큰 근사 오류가 발생합니다. 간단한 접근 방식은 동적 지수 맵에서 0을 제거하는 것입니다. 그렇게 하면(그림 c) 두 번째 순간에 대한 근사치가 더 정확해집니다. 실제 상황에서는 정밀도가 낮은 수치의 표현력을 효과적으로 활용하기 위해 영점을 제거하는 선형 매핑을 사용하는 것을 제안하였고 실험에서 좋은 결과를 얻었습니다.

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

Rank-1 정규화

1차 모멘트와 2차 모멘트의 복잡한 이상치 분포를 기반으로 SM3 최적화 프로그램에서 영감을 받아 본 논문에서는 새로운 정규화를 제안합니다. 방법을 순위 1 정규화라고 합니다. 음수가 아닌 행렬 텐서 x∈R^(n×m)의 경우 1차원 통계는 다음과 같이 정의됩니다.

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

그런 다음 순위 1 정규화는 다음과 같이 정의할 수 있습니다. rank-1 정규화는 텐서의 1차원 정보를 보다 세분화된 방식으로 활용하고 행별 또는 열별 이상값을 보다 지능적이고 효율적으로 처리할 수 있습니다. 또한, 랭크 1 정규화는 고차원 텐서로 쉽게 일반화될 수 있으며, 텐서 크기가 커질수록 발생하는 추가 메모리 오버헤드는 블록 정규화보다 적습니다.

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

또한 이 기사에서는 Adafactor 옵티마이저의 2차 모멘트에 대한 하위 분해 방법이 영점 문제를 효과적으로 피할 수 있음을 발견했기 때문에 하위 분해와 양자화 방법의 조합도 탐색했습니다. 아래 그림은 2차 모멘트에 대한 일련의 절제 실험을 보여 주며, 이는 영점 문제가 2차 모멘트 정량화의 병목 현상임을 확인하며 랭크 1 정규화 및 하위 분해 방법의 효율성도 검증합니다.

실험 결과

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

관찰된 현상과 사용 방법을 바탕으로 최종적으로 4비트 AdamW와 4비트 Factor 두 가지 저정밀 최적화 프로그램을 제안하고 8을 포함한 다른 최적화 프로그램과 비교했습니다. -비트 AdamW, Adafactor, SM3. 자연어 이해, 이미지 분류, 기계 번역, 대형 모델의 지시 미세 조정 등 광범위한 작업에 대한 평가를 위해 연구를 선택했습니다. 아래 표는 다양한 작업에 대한 각 옵티마이저의 성능을 보여줍니다.

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.NLU, QA, NLG를 포함한 모든 미세 조정 작업에서 4비트 최적화 프로그램은 32비트 AdamW와 일치하거나 심지어 초과할 수 있음을 알 수 있습니다. 훈련 작업, CLS, MT, 4비트 최적화 프로그램은 전체 정확도에 필적하는 수준을 달성합니다. 4비트 AdamW가 사전 훈련된 모델의 능력을 파괴하지 않고 동시에 지침을 준수하는 능력을 더 잘 얻을 수 있도록 해준다는 것은 명령 미세 조정 작업에서 볼 수 있습니다.

이후 4비트 옵티마이저의 메모리 및 계산 효율성을 테스트했으며 그 결과는 아래 표와 같습니다. 본 글에서 제안하는 4비트 옵티마이저는 8비트 옵티마이저에 비해 더 많은 메모리를 절약할 수 있으며, LLaMA-7B 미세 조정 실험에서 최대 57.7%를 절약할 수 있다. 또한 계산 효율성에 영향을 주지 않고 메모리를 절약할 수 있는 4비트 AdamW의 융합 연산자 버전을 제공합니다. LLaMA-7B의 명령 미세 조정 작업을 위해 4비트 AdamW는 캐시 압력 감소로 인해 훈련에 가속 효과도 제공합니다. 자세한 실험 설정 및 결과는 논문 링크에서 확인하실 수 있습니다.

LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.

PyTorch에서 사용하려면 한 줄의 코드를 바꾸세요

import lpmmoptimizer = lpmm.optim.AdamW (model.parameters (), lr=1e-3, betas=(0.9, 0.999))

우리는 기본적으로 4비트 최적화 프로그램을 제공합니다. 현재 원래 최적화 프로그램을 4비트 최적화 프로그램으로 바꾸면 됩니다. Adam 및 SGD의 저정밀 버전을 지원합니다. 동시에 맞춤형 사용 시나리오를 지원하기 위해 양자화 매개변수를 수정하기 위한 인터페이스도 제공합니다.

위 내용은 LLaMA 미세 조정으로 메모리 요구 사항이 절반으로 줄어들고 Tsinghua는 4비트 최적화 프로그램을 제안합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제