라틴 귤 과나코가 가져온 개념에 대한 설명임

옆챈에 올렸는데 여기에 혹시 필요한 사람 있을까봐 올림

GPT4 설명. 근데 이거 스터디탭 맞나?


논문 원문 https://www.arxiv-vanity.com/papers/2305.14314/


+) 최하단에 나같은 문외한들을 위한 기초개념도 있음


<무엇이 QLoRA인가?>

QLoRA(Quantized Low Rank Adapters)는 메모리 사용량을 크게 줄이는 효율적인 미세 조정 접근 방식으로, 전체 16비트 미세 조정 작업 성능을 유지하면서 단일 48GB GPU에서 650억 매개 변수 모델을 미세 조정할 수 있습니다. 이는 냉동된 4비트 양자화된 사전 훈련된 언어 모델을 통해 그레이디언트를 낮은 순위 어댑터(LoRA)로 역 전파함으로써 달성됩니다. 


QLoRA는 성능 저하 없이 메모리를 절약할 수 있는 몇 가지 혁신적인 기능을 제공합니다:


1. **4비트 NF4(NormalFloat)**: 정규 분포 가중치에 대해 이론적으로 최적인 새로운 데이터 유형입니다. 이는 정규 분포 데이터에 대한 양자화 데이터 유형으로 4비트 정수 및 4비트 부동 소수점보다 경험적 결과가 더 좋습니다.


2. **이중 양자화**: 이 방법은 양자화 상수를 양자화하여 평균 메모리 설치 공간을 줄입니다. 첫 번째 양자화의 양자화 상수를 두 번째 양자화에 대한 입력으로 처리합니다. 이 두 번째 단계는 양자화 상수와 두 번째 수준의 양자화 상수를 산출합니다. 이 방법은 매개 변수당 메모리 설치 공간을 0.625비트에서 0.252비트로 줄여 매개 변수당 0.373비트를 줄입니다.


3. **페이지화된 옵티마이저**: 메모리 급증을 관리하는 데 사용됩니다. 이들은 NVIDIA 통합 메모리 기능을 사용하여 CPU와 GPU 간에 자동 페이지 간 전송을 수행하여 GPU 메모리가 가끔 부족해지는 시나리오에서 오류 없는 GPU 처리를 수행합니다.


QLoRA는 1,000개 이상의 모델을 미세 조정하는 데 사용되어 8개의 명령 데이터 세트, 다중 모델 유형(LLaMA, T5), 일반 미세 조정(예: 33B 및 65B 매개 변수 모델)으로 실행할 수 없는 모델 스케일에 대한 자세한 명령 추적 및 챗봇 성능 분석을 제공합니다. 


결과는 작은 고품질 데이터 세트에 대한 QLoRA 미세 조정이 이전의 최첨단 모델보다 작은 모델을 사용하는 경우에도 최첨단 결과로 이어진다는 것을 보여줍니다. 연구원들은 또한 인간과 GPT-4 평가 모두를 기반으로 챗봇 성능에 대한 상세한 분석을 제공하여 GPT-4 평가가 인간 평가에 대한 저렴하고 합리적인 대안임을 보여줍니다.


<개론>

물론, 더 간단한 용어로 설명하겠습니다:


1. **4비트 NF4(Normal Float)**: 다양한 색상의 공(모델의 무게)으로 구성된 큰 상자가 있으며, 16개의 색상 이름(4비트 표현)만을 사용하여 이 모든 색상을 설명하려고 합니다. Normal Float은 이 16가지 색상 이름을 선택하여 사용자가 가지고 있는 공의 색상을 가장 잘 나타낼 수 있는 현명한 방법입니다. 이런 식으로, 여러분이 더 적은 색 이름을 사용하더라도, 여러분은 여전히 공의 색을 설명하는 것을 잘 하고 있습니다.


2. **이중 양자화**: 이제, 여러분이 이 16가지 색상 이름의 목록을 가지고 있지만 기억하기에는 너무 깁니다. 따라서 이러한 색상 이름을 4개의 슈퍼 그룹으로 그룹화하기로 결정합니다(두 번째 양자화). 이렇게 하면 16개의 색 이름을 기억하는 대신 4개의 슈퍼 그룹만 기억하면 됩니다. 이것이 이중 양자화가 하는 일이다 - 그것은 일을 훨씬 더 단순화시킨다.


3. **페이지 옵티마이저**: 작은 테이블(GPU 메모리)에 맞지 않는 큰 책(대형 모델)을 읽고 있다고 상상해 보십시오. 따라서 현재 읽고 있는 페이지는 테이블 위에, 나머지 책은 가까운 선반(CPU 메모리)에 보관하기로 결정합니다. 새 페이지(최적화기 업데이트 단계)를 읽어야 할 때마다 해당 페이지를 선반에서 테이블로 가져옵니다. 이렇게 하면 책이 크더라도 작은 테이블을 사용하여 책을 읽을 수 있습니다. 페이지 최적화 도구는 메모리를 효율적으로 관리하는 데 도움이 됩니다.


요약하자면, 이러한 기술은 제한된 리소스(단일 GPU)로도 처리할 수 있도록 대량의 정보(빅 모델)를 단순화하고 관리하는 데 도움이 됩니다.


<자세히>

다음과 같은 개념에 대해 자세히 알아보겠습니다:


1. **4비트 NF4(Normal Float)**: 4비트 NF4(Normal Float)는 정규 분포 가중치를 보다 효율적으로 처리하도록 특별히 설계된 새로운 데이터 유형이다. NormalFloat의 개념은 각 양자화 빈이 입력 텐서에서 할당된 동일한 수의 값을 갖도록 보장하는 프로세스인 Quantile Quantization의 원리에 뿌리를 두고 있다. 이는 종종 빈에 걸쳐 값의 불균일한 분포를 초래하는 전통적인 양자화 방법에서 크게 벗어난 것이다. NF4 데이터 유형은 표준 정규 분포의 분위수를 추정하여 정규 분포를 위한 4비트 분위수 양자화 데이터 유형을 생성함으로써 이를 한 단계 더 발전시킨다. 그런 다음 이 데이터 유형의 값이 특정 범위로 정규화됩니다. 이 접근 방식은 사전 훈련된 모델을 4비트로 양자화하여 큰 매개 변수 모델을 미세 조정하는 데 필요한 메모리 요구 사항을 크게 줄일 수 있기 때문에 QLoRA의 맥락에서 특히 유용하다. 중요한 정보를 잃지 않고 모델을 압축하는 영리한 방법이며, 이는 기계 학습 분야의 핵심 과제이다.


2. **더블 양자화**: 더블 양자화는 양자화 상수를 양자화하여 메모리 설치 공간을 더욱 줄이는 것을 목표로 하는 혁신적인 방법이다. 양자화의 첫 번째 단계에서, 모델의 가중치는 더 낮은 비트 표현으로 양자화된다. 이 프로세스는 메모리 사용량을 줄이는 데 효과적이지만 고유한 메모리 풋프린트를 갖는 양자화 상수도 생성합니다. 이를 해결하기 위해 이중 양자화는 이러한 양자화 상수를 두 번째 양자화에 대한 입력으로 처리합니다. 이 두 번째 단계는 양자화 상수와 두 번째 수준의 양자화 상수를 산출한다. 그 결과 매개 변수당 메모리 설치 공간이 크게 감소하여 더 큰 모델을 메모리에 장착할 수 있습니다. 이는 비례적으로 더 큰 하드웨어 리소스 없이 더 크고 복잡한 모델을 처리할 수 있기 때문에 기계 학습 분야에서 중요한 발전이다.


3. **페이지 옵티마이저**: 페이지 옵티마이저는 교육 과정에서 메모리 급증을 관리하는 정교한 솔루션입니다. 이들은 CPU와 GPU 간에 자동 페이지 간 전송을 수행하는 NVIDIA 통합 메모리 기능을 활용한다. 이는 기존의 메모리 페이징이 CPU RAM과 디스크 사이에서 작동하는 방식과 유사합니다. 옵티마이저 상태에 페이징된 메모리를 할당함으로써, 이러한 상태는 GPU의 메모리가 부족할 때 CPU RAM으로 자동으로 제거되고 옵티마이저 업데이트 단계에서 메모리가 필요할 때 GPU 메모리로 다시 페이징된다. 이 메커니즘은 전통적으로 단일 기계에서 미세 조정을 대형 모델의 어려운 작업으로 만든 메모리 부족 오류를 방지하는 데 도움이 된다. 대용량 모델과 제한된 하드웨어 리소스를 처리하는 경우에도 교육 과정이 원활하게 진행될 수 있도록 메모리 리소스를 관리하는 현명한 방법입니다.


본질적으로, 이 세 가지 개념인 4비트 일반 유동(NF4), 이중 양자화 및 페이지 최적화는 기계 학습 분야의 상당한 발전을 나타낸다. 그들은 데이터 표현 및 메모리 관리에 대한 혁신적인 접근 방식이 이전에는 실현 불가능하다고 생각되었던 작업인 단일 기계에서 대형 모델의 미세 조정을 가능하게 하는 방법을 보여준다. 이러한 개발은 기계 학습 분야에 상당한 영향을 미쳐 크고 복잡한 모델의 개발 및 적용에 대한 새로운 가능성을 열어줄 수 있는 잠재력을 가지고 있다.


<뭔 뜻임?>

NF4 : 물론, 4비트 NF4(Normal Float)를 보다 상세하면서도 간단한 방법으로 설명해 보겠습니다:


여러분이 화가라고 상상해 보세요. 그리고 여러분은 수천 가지 다른 색깔의 팔레트를 가지고 있습니다. 그러나 여행을 떠날 때는 16개의 음영만 담을 수 있는 작은 상자만 휴대할 수 있습니다(4비트는 16개의 다른 값을 나타낼 수 있기 때문에 4비트 부분입니다).


이제, 여러분은 가능한 한 많은 원래의 수천 개의 그림자를 재현하기 위해 그것들을 섞을 수 있는 방법으로 16개의 그림자를 선택하고 싶습니다. 이것은 어려운 작업이지만 다행히도 일부 음영이 다른 음영보다 더 자주 사용된다는 것을 알 수 있습니다(이것이 "정규 분포 가중치" 부분).




그래서, 여러분은 여러분이 가장 많이 사용하는 것들을 기준으로 그 16가지 색조를 선택하기로 결정합니다. 아주 일반적인 음영을 정확하게 몇 가지 선택하고, 덜 일반적인 음영은 충분히 가까운 음영을 선택합니다. 이렇게 하면 16개의 음영만으로 원래 팔레트의 상당 부분을 상당히 정확하게 재현할 수 있습니다. 이것은 본질적으로 4비트 NF4(Normal Float)가 하는 일이다.




NF4는 가장 많이 사용하는 "색상"(모델의 무게)을 가장 잘 나타낼 수 있도록 이러한 "16가지 색조"(양자화 빈)를 현명하게 선택하는 방법입니다. 이렇게 하면 "그림자"(낮은 비트 표현)를 적게 사용하더라도 여전히 "그림"(모델에서 계산 수행)을 잘 수행할 수 있습니다.


이 기술은 대형 모델을 미세 조정하는 데 필요한 메모리 요구량을 줄여 단일 GPU에 장착하고 실행할 수 있도록 하는 QLoRA 전략의 핵심 부분이다. 기계 학습 분야에서 결정적인 과제인 복잡한 정보를 너무 많이 잃지 않고 단순화하는 영리한 방법이다.


더블 양자화 : 물론, 이중 양자화에 대해서는 보다 상세하면서도 간단한 방법으로 살펴보겠습니다:


이중 양자화를 도서관에서 많은 양의 책을 정리하는 방법으로 생각해 보겠습니다.


1. **첫 번째 양자화**: 수천 권의 다른 언어로 된 책을 가지고 있다고 상상해 보십시오. 책을 더 쉽게 찾기 위해 언어별로 그룹화하기로 결정했습니다. 이제, 수천 권의 책을 뒤지는 대신에, 여러분은 여러분이 관심 있는 언어의 섹션으로 가기만 하면 됩니다. 이것은 모델의 가중치가 더 적은 수의 범주(예: 언어)로 그룹화(또는 양자화)되어 처리하기 쉽게 하는 양자화의 첫 번째 단계와 유사합니다.


2. **양자화 상수**: 하지만 각 언어 섹션에는 여전히 많은 책이 있습니다. 따라서 각 언어 섹션에 대해 해당 섹션의 책 유형을 설명하는 가이드북을 만들기로 결정했습니다. 이 가이드북은 양자화의 첫 단계에서 생성된 양자화 상수와 같습니다. 각 그룹(또는 양자화 빈)에 대한 추가 정보를 제공합니다.


3. **2차 정량화**: 이제 가이드북 자체가 상당히 많고 많은 공간을 차지한다는 것을 알게 되었습니다. 따라서 모든 개별 가이드북을 요약한 마스터 가이드북을 만들기로 결정했습니다. 이 마스터 가이드북은 소설, 논픽션, 과학, 예술 등과 같은 더 넓은 범주로 가이드북을 분류합니다. 이는 가이드북(양자화 상수)이 자체적으로 더 적은 수의 범주로 그룹화(또는 양자화)되는 양자화의 두 번째 단계와 유사합니다.


따라서 이중 양자화는 라이브러리 시스템 내에 라이브러리 시스템을 만드는 것과 같습니다. 정보가 많은 경우에도 쉽게 처리할 수 있도록 정보를 구성하고 단순화하는 방법입니다. 이 기술은 대형 모델을 미세 조정하여 단일 GPU에 적합하고 실행할 수 있도록 하는 QLoRA의 메모리 요구 사항을 줄이는 전략에 중요합니다. 기계 학습 분야의 핵심 과제인 복잡한 정보를 너무 많이 잃지 않고 현명하게 관리할 수 있는 방법입니다.


3. 페이지 옵티마이저 : 물론, 페이지 옵티마이저에 대해서는 보다 상세하면서도 간단한 방법으로 살펴보겠습니다:


큰 잔치를 준비하면서 작은 부엌을 관리하는 것과 같은 페이지 옵티마이저를 생각해 보세요. 


1. **제한된 공간(GPU 메모리)**: 당신의 주방(GPU 메모리)은 작고, 잔치에 필요한 모든 재료와 식기를 카운터에 동시에 둘 수는 없습니다. 


2. **팬트리(CPU 메모리)**: 다행히 현재 사용하지 않는 항목을 저장할 수 있는 팬트리(CPU 메모리)가 있습니다.


3. **축제 준비 (모델 교육)**: 각 요리를 준비할 때(모델 교육의 각 단계), 그 요리에 필요한 재료와 도구만 팬트리에서 주방 카운터로 가져옵니다. 그 요리를 다 먹고 나면, 여러분은 모든 것을 식료품 창고에 다시 넣어 다음 요리를 위해 부엌 카운터에 공간을 확보합니다.


4. **자동 전송(NVIDIA 유니파이드 메모리 기능)**: 이제, 여러분이 필요할 때 자동으로 식료품점에서 재료와 식기를 가져다주고, 끝나면 다시 가져다주는 로봇 비서가 있다고 상상해 보세요. 이것이 NVIDIA 유니파이드 메모리 기능의 기능입니다. 필요에 따라 GPU 메모리(키친 카운터)와 CPU 메모리(팬트리) 간에 데이터를 자동으로 전송합니다.


페이지 옵티마이저는 이 로봇 비서와 같습니다. 모델 교육의 각 단계에 필요한 데이터만 가져와서 필요하지 않을 때 CPU 메모리로 다시 이동함으로써 GPU 메모리의 제한된 공간을 관리하는 데 도움이 됩니다. 이렇게 하면 모델(연식)이 커도 제한된 GPU 메모리(작은 주방)를 사용하여 훈련(준비)할 수 있습니다.


이 기술은 단일 GPU에서 대형 모델을 미세 조정하는 QLoRA의 전략에 중요합니다. 대용량 모델과 제한된 하드웨어 리소스를 처리하는 경우에도 교육 과정을 원활하게 진행할 수 있도록 보장하는 메모리 리소스를 현명하게 관리하는 방법입니다.


[문외한을 위한 기초편]


<개념>

물론, 다음 용어들을 설명해 보겠습니다:


1. **분포 가중치**: 신경망의 맥락에서 가중치는 모델이 훈련 중에 학습하는 매개 변수입니다. 각 입력이 출력에 미치는 영향을 결정합니다. 우리가 "분산 가중치"라고 말할 때, 우리는 신경망을 통한 이러한 매개변수의 분포를 말합니다.


2. **양자화**: 기계 학습에서 양자화는 숫자를 나타내는 비트의 수를 줄이는 과정입니다. 신경망의 맥락에서, 그것은 모델의 가중치와 편향의 정밀도를 줄이는 것을 포함합니다. 예를 들어 모델의 가중치는 32비트 부동 소수점 숫자로 표시될 수 있지만 양자화를 사용하면 이 값은 8비트 정수 이하로 감소할 수 있습니다. 이 프로세스는 모델의 계산 및 스토리지 요구사항을 크게 줄여 더 빠르고 메모리 집약적이지 않습니다. 그러나 모델의 성능이 저하되지 않도록 주의해야 합니다.


3. **양자화 상수**: 양자화 과정에서 일부 상수를 사용하여 값을 조정하고 이동합니다. 예를 들어 부동 소수점 수를 정수로 양자화할 때 일반적으로 최소값(이동)을 뺀 다음 스케일 팩터(척도)를 곱하여 정수가 목표 범위 내에 포함되도록 합니다. 이러한 이동 및 스케일 값을 "양자화 상수"라고 할 수 있습니다.


4. **Low Rank Adapters(LoRA)**: 어댑터는 사전 훈련된 모델에서 새로운 작업으로 지식을 전달하는 방법입니다. 그들은 원래 사전 훈련된 매개 변수가 고정된 상태로 훈련된 소수의 작업별 매개 변수를 모델에 추가함으로써 작동합니다. 이는 전체 모델을 교육하는 것보다 적은 리소스를 필요로 하기 때문에 대형 모델을 미세 조정하는 더 효율적인 방법입니다. 여기서 "낮은 순위"라는 용어는 어댑터의 수학적 특성을 나타냅니다. 즉, 어댑터는 차원에서 예상되는 것보다 적은 수의 매개 변수로 표시될 수 있습니다.


QLoRA의 맥락에서, 이러한 낮은 순위 어댑터는 4비트 양자화 사전 훈련된 언어 모델에 추가되고 그레이디언트는 미세 조정 동안 이 냉동 양자화 모델을 통해 LoRA로 역 전파됩니다. 이는 미세 조정의 메모리 요구 사항을 크게 줄여 단일 GPU에서 대형 모델을 미세 조정할 수 있게 합니다.


<쉬운 설명>

ㅡ물론, 저는 이 개념들을 더 간단한 용어로 설명하려고 노력할 것입니다:


1. **분산 가중치**: 신경망(ChatGPT와 같은 AI의 기본 기술)을 상호 연결된 복잡한 노드 시스템으로 상상해 보십시오. 노드 간의 각 연결에는 전달되는 정보에 얼마나 중요성이나 영향을 미칠지를 결정하는 "가중치"가 있습니다. "분산 가중치"는 이러한 가중치가 전체 네트워크에 분산된다는 것을 의미합니다.


2. **양자화**: "세부사항을 적게 사용하자"는 화려한 표현입니다 예를 들어, 휴대폰의 공간을 많이 차지하는 고해상도 사진이 있을 수 있습니다. 해상도를 줄이면(양자화) 사진의 공간이 줄어들지만 보기에는 좋지 않을 수 있습니다. AI에서는 더 빨리 실행되고 메모리를 덜 사용하기 위해 모델 내부의 숫자로 이 작업을 수행하지만, 주의하지 않으면 모델이 제대로 작동하지 않을 수 있습니다.


3. **양자화 상수**: AI 모델 내의 숫자를 양자화(세부 정보 감소)할 때 몇 가지 특정 값을 사용하여 이를 지원합니다. 이러한 값을 사용하면 보다 상세하지 않은 새 숫자가 모형에 여전히 유용하게 사용될 수 있습니다. 이것들은 양자화 상수입니다.


4. **Low Rank Adapters(LoRA)**: 전체 모델을 변경할 필요 없이 새로운 작업을 학습할 수 있도록 지원하는 AI 모델의 작은 추가 사항과 같습니다. 그것은 자동차 전체를 재설계하는 것보다, 눈 속에서 더 잘 주행할 수 있도록 새로운 타이어 세트를 주는 것과 같습니다. QLoRA의 맥락에서 이러한 어댑터는 모델이 메모리를 적게 사용하면서 새로운 것을 학습하는 데 사용됩니다.