GPT-1은 1억 1,700만 개의 파라미터를 가지는 언어 모델로,
GPT-2에서는 15억,
GPT-3에서는 1,750억 개로 파라미터 수가 증가함에 따라 언어 모델 성능이 좋아지고 있습니다.
그러나 파라미터의 수가 증가함에 따라 교육에 필요한 데이터 수와 교육에 사용되는 메모리 양도 증가하여 교육 비용이 크게 증가합니다.
그런 가운데, 메모리의 소비량을 격감시키면서 적은 데이터로 트레이닝할 수 있는 기법 「QLoRA」가 등장했습니다.
[2305.14314] QLoRA: Efficient Finetuning of Quantized LLMs
https://arxiv.org/abs/2305.14314
artidoro/qlora: QLoRA: Efficient Finetuning of Quantized LLMs
ChatGPT와 같은 대규모 언어 모델을 만들 때는 먼저, 대량의 텍스트 데이터를 이용해 모델에게 「문자의 취급 방법」을 학습시킵니다. 이렇게 만들어진 모델이 「사전 학습된 모델」로, 대표적으로 LLaMa 나 RedPajama-INCITE가 있습니다.
그 후, 잘 작성된 Q&A의 표본 데이터 등 고품질 데이터를 이용하여 목적에 맞는 출력을 얻을 수 있도록, 추가로 파인 튜닝이라 불리는 트레이닝을 실시하는 것이 일반적입니다.
파인 튜닝만으로도 상당히 인간다운 대답을 할 수 있게 됩니다만, 보다 성능을 올리기 위해 인간으로부터의 평가를 모델에 피드백하는 「인간의 피드백에 의한 지도 학습(RLHF)」을 실시하는 경우도 있습니다.
모델의 파라미터 수는 최초의 사전 학습을 실시하는 단계에서 정해져 버리기 때문에, 파인 튜닝 등의 이후 단계에서는 변경할 수 없습니다. 일반 기업에서는 사전 학습 시에 필요한 엄청난 컴퓨팅 비용을 지불할 수 없으므로, 제공된 사전 학습 모델 중에서 파라미터 규모를 선택합니다. 일반적으로 파라미터 수가 많을수록 성능이 높아지지만, 동시에 파인 튜닝 비용도 점점 높아지는 문제가 발생합니다.
파인 튜닝 시에는 모델 전체를 메모리에 배치할 필요가 있으며, 트레이닝 대상의 파라미터마다 조정을 위한 계산 결과를 메모리에 보존할 필요가 있어, 모든 파라미터를 조정 대상으로 하는 기존의 미세 조정은 원래 모델의 몇 배의 메모리가 필요합니다.
예를 들면, 650억(65B) 파라미터 모델이라면, 파라미터 1개당 16bit로 양자화하면 모델을 메모리에 로드하는 것만으로 650억 ×16bit인 130GB분의 메모리를 소비해 버리며, 트레이닝 기법에 따라 650GB 정도의 계산 결과를 저장할 필요가 있어, 파인 튜닝을 위해서는 합계 780GB분의 GPU 메모리가 필요합니다.
이러한 메모리 소비 문제를 해결하기 위해 고안된 것이 LoRA라는 파인 튜닝 기법입니다. LoRA는 원래 모델의 파라미터 행렬의 저 차원 근사치(row rank approximation)로 새로운 행렬을 훈련 대상으로 함으로써 교육에 필요한 메모리 소비를 줄입니다.
[2106.09685] LoRA: Low-Rank Adaptation of Large Language Models
https://arxiv.org/abs/2106.09685
행렬을 저 차원 근사함으로써, 거대한 행렬을 비교적 작은 행렬 2개로 분해 가능합니다. 만약 원래 모델의 파라미터 행렬의 사이즈가 [d]×[d] 였을 경우, 저 차원 근사한 행렬은 랭크수를 [r]로서 [d]×[r]과 [r]×[d]라는 두 개의 행렬이 됩니다. 이렇게 하면 트레이닝 대상의 파라미터 수를 d의 제곱개에서 2×d×r개 까지 줄일 수 있습니다. LoRA의 논문에서는, GPT-3의 파인 튜닝으로 트레이닝 대상의 파라미터수를 1만 분의 1로 줄이고, 메모리의 소비량도 3분의 1로 줄였다고 적고 있습니다.
LoRA는 적은 컴퓨팅 자원으로도 효율적으로 트레이닝할 수 있기 때문에, 개인 유저의 개발 의욕이 높은 이미지 생성 분야에서 활발히 이용되고 있었습니다. 예를 들어 Stable Diffusion에서는 특정 도안이나 캐릭터, 배경 등을 LoRA로 학습시킴으로써 그 학습 내용에 따른 이미지를 생성할 수 있습니다.
또한, 언어 모델의 개발에 있어서도, 컴퓨팅 자원에서 우위를 점하고 있는 Google 내부에서는 LoRA를 경계하는 목소리가 나오고 있었던 것이 밝혀지고 있습니다.
https://www.semianalysis.com/p/google-we-have-no-moat-and-neither
이번 논문에서는 이 LoRA를 베이스로, 추가로 3개의 테크닉을 이용하는 것으로 650억(65B) 파라미터의 모델을 메모리가 겨우 48GB인 GPU로 트레이닝 가능하도록 한 데다가, 24시간의 트레이닝만에 ChatGPT의 99.3%에 필적하는 성능을 이끌어내는 데 성공했습니다.
논문에서 사용된 세 가지 기술은 다음과 같습니다.
・NF4에서의 양자화
일반적으로 언어 모델의 양자화는 16bit로 행해지고, 파라미터 1개당 16bit의 정보가 포함되어 있습니다만, QLoRA에서는 4bit로 양자화를 실시하고 있다는 것. 정보량이 줄어든 만큼 정밀도는 떨어집니다만, 통상, 사전 학습이 끝난 모델의 파라미터는 평균이 0인 정규 분포가 되기 때문에 정규 분포 베이스로 양자화를 실시하는 「NormalFloat(NF)」형식으로 하는 것으로 정밀도의 저하를 억제하고 있습니다.
・이중 양자화
양자화에 사용하는 정수에 대해서도 양자화를 실시함으로써, 1 파라미터당 0.5bit 필요했던 메모리 소비량을 0.127bit로 저하시켰습니다.
・페이지 최적화
GPU 메모리가 상한에 도달했을 때에, 일반 메모리에 데이터를 저장시켜 계산에 필요한 메모리를 확보하는 기법을 이용하는 것으로, 파라미터를 갱신하는 피크 타임의 GPU 메모리 사용량을 억제할 수 있었습니다.
Guanaco 33B를 QLoRA로 훈련한 모델은 Hugging Face에서 체험해 볼 수 있습니다. 영어로만 답변하지만, 꽤 좋은 답변을 반환하는 것 같습니다.
QLoRA 논문에 사용된 코드는 GitHub에 공개되어 있습니다.
https://github.com/artidoro/qlora
'AI · 인공지능 > AI 뉴스' 카테고리의 다른 글
DeepMind가 심층 강화 학습을 이용해 알고리즘을 개선하는 AI 「AlphaDev」를 발표 (2) | 2023.06.09 |
---|---|
「일본은 AI 기술 개발에 전력을 다하고 있다」는 지적, 일본은 무엇이 다른가? (2) | 2023.06.08 |
유엔 사무총장이 AI 기술규제를 향한 국제자문기관의 설치를 제언 (3) | 2023.06.08 |
GPU 없이 일반 가정 PC에서 채팅 AI를 동작시키는 라이브러리 「GGML」의 개발이 진행 중 (2) | 2023.06.08 |
「ChatGPT」로부터 대답을 잘 끌어내기 위한 OpenAI의 공식 가이드 (3) | 2023.06.07 |
요리 영상을 보는 것만으로 그 요리를 재현할 수 있는 「로봇 셰프」의 실험에 성공 (3) | 2023.06.07 |
오픈 소스로 상용 이용도 가능한 대규모 언어 모델 「Falcon」이 등장, 오픈 소스 모델 중 최고의 성능 (4) | 2023.06.07 |
ChatGPT 등의 대규모 언어 모델은 어떤 이론으로 성립되었는가? 중요논문 24선 정리 (3) | 2023.06.05 |