인공지능

양자화

원담 2025. 6. 26. 21:09
728x90

거대 언어 모델(LLM)을 우리가 원하는 특정 목적에 맞게 Fine-tuning)하는 건 생각보다 복잡한 작업이다. 파인튜닝 과정에서 나오는 몇 가지 중요한 개념들을 살펴보려고 한다. 이 개념들을 이해하는 게 정말 중요한데 이론적인 부분도 있고, 실제 적용 사례도 다룰 거지만, 이런 기초를 탄탄하게 다지는 게 LLM을 잘 다루는 데 필수적이다.

거대 언어 모델(LLM) 파인튜닝 이란?

가장 먼저 이야기할 개념은 바로 양자화(Quantization)이다. LLM을 파인 튜닝한다는 건, 이미 방대한 데이터로 훈련된 기본 모델(예: ChatGPT 같은 GPT 모델)을 가져와서, 우리가 특정 작업(task)에 더 잘 맞도록 조금 더 훈련시키는 과정이다. 이건 마치 천재 요리사(기반 모델)가 모든 요리를 잘 만들지만, 특정 식당(특정 작업)에서는 '파스타'만 특별히 더 잘 만들게끔, 그 식당의 단골 손님들 입맛에 맞춰 레시피를 조금 더 개선(미세 조정)하는 것과 같다. 텍스트 생성이나 감성 분석 같은 작업들이 이 '파스타 요리'에 해당한다.

왜 양자화가 필요한가요?

LLM을 파인 튜닝 할 때 중요한 건 메모리(기억 공간)와 계산 능력이에요. 왜냐하면 LLM은 엄청난 양의 데이터로 훈련되기 때문에, 그 모델 자체의 크기가 어마어마하다.

  • 크기 문제: OpenAI의 ChatGPT처럼 큰 모델들은 훈련할 때 엄청난 컴퓨터 자원, 엄청난 양의 메모리, 많은 그래픽 카드(GPU) 같은 고성능 시스템이 필요하다
  • 비용 문제: 이런 모델들을 처음부터 우리가 직접 만들려고 한다면, 상상할 수 없을 만큼 많은 메모리와 계산 능력이 필요해서 비용이 엄청나게 들어 거의 불가능에 가깝다.
  • 활용 문제: 예를 들어, 라마같은 모델은 700억 개나 되는 매개변수(parameters)를 가지고 있다. 이렇게 큰 모델을 내 컴퓨터에서 사용하려면, 그 700억 개의 데이터를 전부 내 컴퓨터 메모리에 올려야 하는데, 이게 보통 일이 아니다. 마치 내 작은 냉장고에 대형 마트의 모든 물건을 다 넣으려는 것과 비슷하다.

이런 메모리나 계산 능력의 한계를 해결하기 위해 등장한 기술 중 하나가 바로 양자화이다.

양자화: 고용량에서 저용량으로 압축하기

가장 간단하게 말해서, 양자화는 '고용량 메모리 형식'을 '저용량 메모리 형식'으로 바꾸는 기술이다. 정보를 덜 차지하도록 압축하는 거라고 생각하면 된다. 고화질(고용량) 사진을 웹사이트에 올릴 때, 용량을 줄이기 위해 저화질(저용량)로 압축하는 것과 비슷하다.

LLM에서 '메모리 형식'이라는 게 뭘까?

  • 신경망과 가중치: LLM은 기본적으로 신경망(Neural Network)이라는 구조로 되어 있다. 이 신경망 안에는 수많은 노드(신경 세포 같은 것)들이 서로 연결되어 정보를 주고받는다. 이 노드들 사이의 연결 강도, 즉 정보의 핵심은 '매개변수(parameters)'라는 곳에 저장이되고 이것을 보통 '가중치(weights)'라고 부른다.
    • 이 가중치들은 보통 3x3, 4x4 같은 행렬(matrix) 형태로 되어 있다.
  • 숫자의 정밀도: 32비트(fp32) vs. 8비트(int8)
    • 일반적으로 LLM의 가중치, 즉 그 행렬 안의 숫자들은 32비트(fp32)라는 형식으로 저장된다. 여기서 'fp'는 '부동 소수점(Floating Point)'의 약자로, 숫자의 정밀도를 나타낸다. 32비트라는 건 한 숫자를 표현하는 데 32칸짜리 저장 공간을 쓴다는 의미이고 매우 정밀하게 숫자를 표현할 수 있다. (예: 7.23456789) 여기서 문제는 700억 개의 매개변수가 모두 32비트(fp32)로 저장된다고 상상해 보면 필요한 메모리 양은 상상을 초월한다. 개인 컴퓨터나 작은 서버로는 감당하기 어렵다.
  • 양자화의 해결책: 바로 여기서 양자화가 등장한다. 양자화는 이 32비트(fp32)로 저장된 숫자를 8비트 정수(integer eight, int8) 같은 더 적은 메모리 공간을 쓰는 형식으로 변환하는 것이다. 예를들면 소수점 열 몇 자리까지 정밀하게 표현되던 숫자를, 소수점 두세 자리까지만 남기거나 아예 정수로 반올림해서 저장하는 것과 같다. 이렇게 되면 각 숫자가 차지하는 메모리 공간이 훨씬 줄어든다. 즉, 전체 모델의 크기가 엄청나게 작아지는 것이다.

양자화가 가져오는 장점

양자화를 통해 엄청나게 컸던 LLM의 모델 크기가 줄어들면, 다음과 같은 이점이 생긴다.

  • 메모리 절약: 모델을 구동하거나 미세 조정할 때 필요한 메모리가 크게 줄어든다.
  • 계산 효율성 증대: 모델이 작아지면 처리해야 할 데이터 양도 줄어들어 계산 속도가 빨라진다.
  • 더 저렴한 하드웨어에서 실행 가능: 비싼 최신 GPU나 서버 없이도, 일반적인 GPU나 구글 코랩(Google Colab) 같은 클라우드 환경에서 LLM을 가지고 실험하거나 미세 조정할 수 있게 된다.

결론적으로, 양자화는 방대한 LLM을 우리가 직접 다루고 미세 조정할 수 있도록 만들어주는 핵심적인 기술이다. 모델의 크기를 줄여서 더 많은 사람들이 더 쉽게 LLM을 활용할 수 있게 해주는 것이다. 우리가 하려는 것은 거대 언어 모델을 '작게' 만들어서 추론 형태로 사용할 수 있도록 하여, 텍스트 예측, 채팅 등 다양한 일을 할 수 있게 하는 것이다.

FP32, FP16, 그리고 사용자 지정 정밀도(Custom Precision)

양자화의 핵심은 '고용량 메모리 형식'을 '저용량 메모리 형식'으로 바꾸는 것이다. 그리고 이런 방식으로 '추론'을 할 수 있게 된다. 양자화를 통해 모델을 웹사이트에 로드하거나, 심지어 모바일 폰, 엣지 디바이스, 스마트워치 같은 작은 기기에도 다운로드하여 사용할 수 있게 된다.

물론, 이렇게 모델을 압축하면 '정확도 손실(Loss of Accuracy)'이라는 대가가 따르는데 정확도 손실이 있겠지만, 이를 해결하는 기술들도 있다.

FP32 (Full Precision - 전체 정밀도)

  • 정의: 32비트 부동 소수점 정밀도. 정보가 32비트 부동 소수점 숫자로 표현
  • 예시: 모델 매개변수가 FP32로 표현된다면, 높은 정밀도로 숫자 값을 저장하기 위해 32비트 공간을 사용합
  • 특징: 블룸버그 GPT, OpenAI GPT, GPT-3.5 Turbo, Llama 2 등 대부분의 대규모 상용 모델과 기본 훈련 모델은 매우 높은 정밀도로 숫자 값을 저장하기 위해 32비트(혹은 그 이상) 부동 소수점 정밀도를 사용함
  • 용도: 높은 정밀도로 모델을 훈련하고 저장하는 데 주로 사용
  • 단점: 더 많은 메모리와 계산 자원이 필요. 파인튜닝 시 비용이 많이 들 수 있다. FP32는 확실히 메모리와 계산 집약적이다.

FP16 (Half Precision - 반 정밀도)

  • 정의: 16비트 부동 소수점 정밀도. FP32의 절반 정밀도라서 '반 정밀도'라고도 불린다.
  • 예시: 같은 모델 매개변수가 16비트를 사용하여 숫자 값을 표현.
  • 특징: FP32에 비해 정밀도를 일부 희생.
  • 용도: 추론 또는 파인 튜닝중에 메모리 요구 사항을 줄이고 계산 속도를 높이는 데 주로 사용된다. 특히 FP16을 기본적으로 지원하는 하드웨어(예: 최신 GPU)에서 유리하다.
  • 예시 사용: 구글 코랩(Google Colab)의 T4, A100 같은 GPU나 RunPod 같은 클라우드 서비스에서 모델을 다운로드할 때 FP16을 지원하는지 확인하고 사용하는 것이 좋다.

사용자 지정 정밀도 (Custom Precision)

  • 정의: 더 작은 비트 표현을 사용하는 것을 의미. 예를 들어, 8비트 정수(INT8)를 사용하거나, 모델의 다른 부분이 다른 정밀도를 사용하는 혼합 정밀도(Mixed Precision) 형식을 사용할 수 있다. 모델 전체를 8비트 정수로 만들거나, 필요에 따라 혼합하여 사용할 수 있다.
  • 예시: 32비트나 16비트 대신, 사용자 지정 정밀도는 특정 모델 매개변수를 표현하기 위해 8비트를 사용할 수 있다. 이는 더 적은 메모리를 사용하게 한다.
  • 용도: 모델의 정확도와 계산 효율성 사이에서 균형을 맞추기 위해 사용되며, 특정 하드웨어 제약 조건에 맞춰 조정됨

실제 상황에서는 LLM을 미세 조정할 때 보통 가장 낮은 정밀도(예: 8비트)부터 시작하는 경우가 많다.

  1. 먼저 적은 양의 데이터셋으로 미세 조정을 시도하고,
  2. 다양한 매개변수를 실험해 보며 미세 조정된 모델의 출력 결과를 확인 후, 점차적으로 정밀도를 높여 나간다 (예: 8비트에서 더 높은 비트로).
    1. 1단계 (최소 자원으로 빠르게 실험): 베이스 모델을 4비트 양자화하여 LoRA 파인튜닝을 시도. 가장 적은 GPU 메모리로 빠르게 결과를 확인.
    2. 2단계 (성능 개선 시도): 4비트 양자화 모델의 성능이 충분치 않다면, 더 많은 GPU 메모리가 허용하는 경우 베이스 모델을 8비트 양자화하여 LoRA 파인튜닝을 다시 시도. (8비트가 4비트보다 일반적으로 더 정확)
    3. 3단계 (최대 성능 추구): 만약 GPU 메모리가 충분하다면, 아예 베이스 모델을 16비트로 로드한 상태에서 LoRA 파인튜닝을 시도할 수도 있다. 
  3. 정밀도를 낮게 시작해서 점차 높여갈수록 미세 조정된 모델의 결과는 더 좋아진다.

Min-Max Scaler (최소-최대 스케일러)

결국 양자화란 0부터 65,000까지의 숫자를 0부터 255까지의 숫자로 가져오는 것이 양자화의 핵심인데 그렇다면 어떻게 이런 범위 압축(양자화)을 수행할까? 여러 기술이 있지만, 데이터 과학과 머신러닝 분야에서 자주 사용되는 Min-Max Scaler라는 수학 공식이 있다.

이 Min-Max Scaler를 사용하여 어떻게 높은 용량의 메모리 저장 공간에 있는 값들을 더 낮은 용량의 메모리 형식으로 가져올 수 있다.

이때, 숫자를 압축하는 방식에 따라 크게 두 가지 방법으로 나눌 수 있습니다. 바로 대칭 양자화(Symmetric Quantization)와 비대칭 양자화(Asymmetric Quantization)이다.

대칭 양자화: 깔끔하게 '0'을 중심으로 압축!

핵심 아이디어는 원본 숫자들의 범위를 '0을 중심'으로 똑같이 축소시키는 방식이다. 핵심은 '0이 0으로 매핑된다'는 것이다.

  • 0점 고정: 원본 데이터의 은 양자화된 후에도
  • 하나의 스케일: 을 기준으로 양쪽 모두에 똑같은 압축 비율(스케일)을 적용.
  • 장점: 계산이 간단하고 빠름
  • 단점: 공간낭비
  • 예시 1 (가장 전형적인 대칭 양자화):
    • 원본 범위: ~ (실수)
    • 목표 범위: ~ (8비트 부호 있는 정수, signed int8)
    • 이 경우, 원본의 0은 정확히 양자화된 0으로 매핑되고, 로, 로 매핑된다. 0을 기준으로 양쪽이 동일한 스케일로 압축되니 '대칭'이라는 말이 잘 어울린다.
  • 예시 2 (양수만 있는 경우):
    • 원본 범위: ~ (실수)
    • 목표 범위: ~ (8비트 부호 없는 정수, unsigned int8)
    • 이 경우에도 원본의 0은 양자화된 0으로 매핑된다. 비록 음수 부분이 없지만, 0을 기준으로 '스케일링이 시작된다'는 점에서 대칭 양자화로 분류하기도 한다. 즉, 최소값이 0이고 그 0이 양자화된 0과 일치하는 경우이다.

따라서 대칭 양자화는 음수/양수 범위를 모두 포함할 수도 있고, 0부터 시작하는 양수 범위일 수도 있다. 중요한 건 원본의 0점이 양자화된 0점과 일치한다는 점이다.

비대칭 양자화는 제로 포인트를 사용함으로써 공간을 세이브 한다(낭비 공간 없애기)

비대칭 양자화는 '사용하지 않는 공간'을 최소화하여 양자화된 정수 범위를 효율적으로 활용한다. 원본 데이터의 분포가 예를들어 어떤 LLM의 가중치 값이 에서 사이에 주로 분포한다고 가정하고 목표 양자화 범위가 부터 까지의 unsigned int8 정수로 바꾸고 싶을때 발생하는 문제점은

  • 만약 대칭 양자화를 고집한다면, 우리는 아마도 원본 범위를 에서 으로 확장하고, 이걸 에서 로 매핑해야 한다
  • 그럼 실제 데이터가 없는 에서 까지의 넓은 음수 공간과, 에서 까지의 양자화된 정수 공간은 낭비될 수 있다.
  • 비대칭 양자화의 해결책
    • 비대칭 양자화는 '제로 포인트'를 사용해서, 원본 데이터의 실제 최소값()을 양자화된 목표 범위의 최소값()에 맞춘다. 그리고 원본 데이터의 실제 최대값()을 양자화된 목표 범위의 최대값()에 맞춘다.
    • 이렇게 하면, 은 양자화된 이 되고, 은 양자화된 가 되면서, 원본 데이터가 실제로 존재하는  ~  범위가 양자화된  ~  범위에 가장 꽉 차게, 그리고 효율적으로 매핑된다.

결론적으로, 제로 포인트를 사용함으로써 비대칭 양자화는 양자화된 정수 범위() 내에서 음수 값 표현 공간을 낭비하지 않고, 실제 데이터가 존재하는 범위에만 집중하여 정밀도를 최대화한다. 공간을 빈틈없이 사용할 수 있게 된다.

비대칭 양자화는 이런 경우에 Zero Point라는 것을 도입해서, 원본 데이터가 시작하는 지점(예: )을 양자화된 범위의 시작 지점(예: )에 맞춘다. 만약 원본 데이터가 부터 시작한다면, 이 이 양자화된 으로 변하도록 '저울 전체를 살짝 밀어서' 정렬한다. 이렇게 하면 실제 데이터가 있는 범위에 정수 공간을 최대한 활용할 수 있다. 중요한 건 원본 데이터의 최소값이 양자화된 데이터의 최소값에 매핑되도록 하는 것이다.

  • 장점: 데이터 분포가 비대칭적일 때 (실제 LLM 가중치처럼) 더 정확하게 정보를 보존하며 양자화할 수 있어, 모델 성능 손실이 적습니다.
  • 단점: 대칭 양자화보다 계산 과정이 조금 더 복잡하지만, 이 역시 컴퓨터가 모두 알아서 처리해 준다.

일반적으로 양자화를 할 때, 특히 양자화된 모델의 출력이 원래 모델 출력과 차이가 많이 날 수 있어서, 출력값(특히 확률 분포)을 조정해주는 보정 과정을 ‘캘리브레이션’이라고 부르는 경우가 많다.

  • 양자화 후 출력값이 달라져서 성능 저하가 생기는 문제를 보완하기 위해, 출력값 분포를 다시 맞추는 작업 → 이것을 캘리브레이션이라고 함

양자화에는 두가지 모드가 있는데 첫 번째는 '사후 훈련 양자화(Post-Training Quantization, PTQ)'이고, 다른 하나는 '양자화 인식 훈련(Quantization Aware Training, QAT)'이다.

사후 훈련 양자화 (Post-Training Quantization, PTQ)

사후 훈련 양자화에 대해 자세히 알아보기 전에, 매우 중요한 개념인 캘리브레이션(Calibration, 보정)에 대해 알아야 한다. 캘리브레이션은 PTQ의 핵심이다.

캘리브레이션(Calibration)이란?

  • 정의: 모델의 출력 점수나 확률(예측값)을 실제 발생 가능성 또는 예측의 신뢰도에 더 잘 맞추도록 조정하는 과정.
  • 목표: 파인 튜닝된 모델이 특정 이벤트에 대해 "이럴 확률이 90%야"라고 말했을 때, 실제로 그 이벤트가 90%의 확률로 발생하도록 만드는 것이다.

'보정되지 않은 모델(Uncalibrated Model)'이란?

  • 모델이 예측한 확률이나 출력값이 실제 발생 가능성(참 확률)을 제대로 나타내지 못할 때, 이 모델을 '보정되지 않았다'고 말한다.
  • 예시: 모델이 어떤 예측에 대해 "90% 확률이야!"라고 말했지만, 실제로는 그 예측이 20%나 10%의 정확도밖에 안 될 때, 이 모델은 보정되지 않은 모델이고 파인튜닝 과정에서 많은 데이터를 주입했음에도 불구하고, 모델이 원하는 대로 작동하지 않는다면 보정이 필요하다

캘리브레이션 프로세스

  • 모델이 예측한 확률을 실제 발생 확률에 더 잘 맞추도록 조정하는 과정인데일반적으로 '캘리브레이션 곡선'을 사용하여 수행됩니다. 이 곡선은 예측된 확률과 실제 관찰된 이벤트 빈도를 그래프로 나타냅니다.
  • 캘리브레이션(calibration) 은 모델의 출력값(예: softmax 확률)을 보정하는 과정이고 모델의 모든 가중치를 조정(=파라미터를 학습) 하는 과정이 아님
  • 모델은 그대로 두고, 출력 확률값을 후처리(post-processing)로 보정하는 것이 핵심이다

캘리브레이션 기법

  • 널리 사용되는 두 가지 주요 캘리브레이션 기법이 있습니다
    • 플랫 스케일링(Platt's Scaling): 로지스틱 회귀 모델을 사용하여 모델의 예측 확률을 조정합니다. 주로 사용됩니다.
    • 아이소토닉 회귀(Isotonic Regression): 조각별 상수 비감소 함수(piecewise constant non-decreasing function)를 사용하여 예측을 조정

캘리브레이션의 적용 (Post-Training Quantization에서)

  • 언제 필요한가? 사전 훈련된 모델이 적용하려는 새로운 데이터셋이나 데이터 분포와 다르게 훈련되었을 때 캘리브레이션이 필요하다
    • 예시: 수많은 일반 데이터로 훈련된 기본 모델이 있다고 가정할때 이 모델을 임상 시험 데이터(매우 특수하고 특정 분야의 데이터)에 적용하고 싶다. 이 경우, 모델의 예측을 새로운 데이터의 특정 특성에 맞추기 위해 캘리브레이션이 필요하다.

사후 훈련 양자화(PTQ)의 이점 (캘리브레이션 포함)

  • 예측 신뢰도 향상: 모델을 캘리브레이션하면 예측된 확률의 신뢰성을 높일 수 있다. 이는 모델이 원하는 결과를 더 가깝게 생성하도록 훈련하는 데 도움이 된다.
  • 정확한 확률 추정: 잘 보정된 모델은 이벤트 발생 가능성에 대한 더 정확한 추정치를 제공한다. 특히 예측 확률에 따라 의사 결정을 내리는 애플리케이션(예: 금융 거래 관련 모델)에서 매우 중요하다.

사후 훈련 양자화(PTQ) 과정 요약

  1. 사전 훈련된 모델 준비: 가중치가 고정된 사전 훈련된 모델(Full Precision, 고정밀도의 모델)을 준비
  2. 캘리브레이션 프로세스 적용: 준비된 모델에 플랫 스케일링이나 아이소토닉 회귀와 같은 캘리브레이션 기법을 적용. 이 과정에서 모델의 가중치를 조정하여 실제 발생 확률에 대한 예측 신뢰도를 높인다. 의료, 금융, 자율주행, 리스크 판단 같은 영역에서는 "정답을 맞혔냐"보다 "얼마나 신뢰할 수 있느냐"가 더 중요할 수 있음.
  3. 양자화된 모델 획득: 캘리브레이션이 완료되면, 모델의 가중치가 더 낮은 비트(예: 8비트 정수)로 변환된다. 이렇게 변환된 모델을 '양자화된 모델(Quantized Model)'이라고 부릅니다.
  4. 다양한 활용: 이 양자화된 모델은 다양한 사용 사례(예: 모바일 기기, 엣지 디바이스에서의 추론)에 적용될 수 있다.

즉, 사후 훈련 양자화(PTQ)는 사전 훈련된 고정밀도 모델에 캘리브레이션 과정을 적용하여, 가중치를 낮은 정밀도로 변환(양자화)하는 것이다. 이를 통해 모델의 크기를 줄이고 효율성을 높이면서도 예측의 신뢰성을 유지할 수 있다.

사후 훈련 양자화 (Post-Training Quantization, PTQ)의 한계

고정밀도(높은 메모리 상태)에서 저정밀도(낮은 메모리 상태)로 직접 변환하게 되면 필연적으로 정보 손실이 발생하고, 이는 모델의 정확도 감소로 이어진다. 그럼 어떻게 이 문제를 해결할 수 있을까요? 바로 여기서 양자화 인식 훈련(Quantization Aware Training, QAT)이 등장한다.

양자화 인식 훈련 (Quantization Aware Training, QAT)

QAT의 기본 개념: QAT는 모델을 저정밀도 하드웨어(예: 저전력 모바일 기기, 특정 GPU/TPU)에 배포할 목적으로 훈련 과정에서부터 양자화의 효과를 미리 '인식'하도록 만드는 훈련 기법이다.

QAT의 목표: 모델의 가중치와 활성화 함수가 나중에 8비트 정수와 같은 낮은 비트로 양자화될 것이라는 사실을 모델이 미리 알도록 훈련하여, 양자화 후에도 모델이 더 강건하고(robust) 좋은 성능을 유지하도록 만드는 것이다.

단순히 미리 훈련된 모델을 양자화하는 PTQ 방식은 정확도 손실을 초래할 수 있다. 왜냐하면, 모델이 처음부터 '양자화된 형태로 배포될 것'이라는 사실을 모른 채 풀 정밀도(FP32 또는 FP16)로 훈련되었기 때문이다. 이렇게 되면, 풀 정밀도 훈련 환경과 저정밀도 배포 환경 간에 불일치(mismatch)가 발생하여 성능 저하로 이어진다. 그래서 QAT는 이 불일치 문제를 해결한다. 훈련 과정에 양자화의 '지식'을 통합한다.

QAT 작동 방식

  1. 양자화 효과 시뮬레이션: QAT는 훈련하는 동안 가중치와 활성화 함수에 양자화의 효과를 '모방'한다. 이는 가중치와 활성화 값을 낮은 비트로 '반올림(rounding)'하는 방식으로 이루어진다. 이렇게 함으로써 모델은 실제로 저정밀도 환경에서 작동하는 것처럼 훈련된다.
  2. 양자화 파라미터 학습: 훈련 중 스케일링 팩터(scaling factors)와 제로 포인트(zero points) 같은 양자화 관련 파라미터들이 학습되는데 이 파라미터들은 나중에 추론(inference) 시 양자화된 값을 원래의 부동 소수점 값으로 다시 매핑하는 데 사용된다.

예시

  • 시나리오: 딥러닝 모델을 훈련하여 고품질 사진을 향상시키려 하는데 (풀 정밀도 훈련)이 모델을 메모리와 처리 능력이 제한된 스마트폰에 설치하고 싶을때
    • 풀 정밀도로 훈련하는 것은 넓고 쾌적한 스튜디오에서 최고급 장비로 고품질 사진을 보정하는 것과 같다. 모든 디테일을 완벽하게 살릴 수 있지만 스마트폰은 좁은 공간이고 처리 능력도 제한적이라 모델을 스마트폰에 맞게 효율적으로 '압축'해야 한다.
  • 단순 양자화(PTQ)의 문제
    • 단순히 고품질 사진(풀 정밀도 모델)을 스마트폰에 맞게 크기를 줄이거나 압축(양자화)하는 것과 같다. 이렇게 하면 용량은 줄어들지만, 사진의 시각적 디테일이나 품질이 손실될 수 있다(품질 손상 문제 발생 가능)
  • 양자화 인식 훈련(QAT)의 해결책:
    • QAT는 '스마트폰에 최적화되도록 학습'하는 것과 같다. 모델을 훈련할 때부터 "이 모델은 결국 스마트폰에 들어갈 거야! 메모리가 부족하고 처리 능력도 약할 거야!"라는 사실을 미리 고려.
    • 훈련하는 동안 모델은 사진을 향상시키는 방법을 배우는 동시에, 나중에 저정밀도로 변환될 때 생길 수 있는 손실을 미리 '인지'하고 이에 대응하는 방법을 배운다.
    • 결과적으로, 모델은 정밀도가 낮아진 상태에서도 좋은 성능을 유지하는 방법을 익히게 됨으로써 따라서 스마트폰에 설치했을 때도 공간을 많이 차지하지 않으면서 사진을 효과적으로 향상시킬 수 있다.

이는 단순히 훈련 후 양자화하는 PTQ방식에서 발생하는 정확도 저하 문제를 해결하여, 제한된 하으뒈어 환경에서도 높은 성능을 유지할 수 있도록 돕는다. 

728x90