[리뷰] Qlora: Efficient finetuning of quantized llms

Jae·2025년 2월 2일
0

Qlora: Efficient finetuning of quantized llms 를 읽고 이해되는 선에서 최대한 정리를 해보았습니다.

Motivation

거대 모델에서 파라미터 수가 점점 커지고 있다. 이런 거대 모델을 릴리즈해도 일반 사람들이 파인튜닝해서 모델을 바꾸는 것은 쉽지가 않은데 큰 리소스가 필요하기에 쉽지가 않고, QLoRA를 이용하여 쉽게 파인튜닝을 할 수 있는 방법을 소개한다.

Contribution

  • 4-bit Quantization
  • 필요할 때만 사용한다.

양자화

  • 모델 가중치와 활성화 함수 출력을 더 작은 특정 비트 단위로 표현하도록 변환

  • 입력을 더 많은 정보를 가진 표현에서 더 적은 정보를 가진 표현으로 이산화하는 것.

  • 종류

    • 동적 양자화 : 가중치만 미리 양자화한 후, 활성화 함수는 추론시에 동적으로 양자화
    • 정적 양자화 : 가중치, 활성화 함수 모두 미리 양자화
      => loss 값과 레이턴시 간의 trade off 있음.
    • 양자화-인지 훈련 : 추론 시간 양자화를 에뮬레이트하여 다운스트림 도구가 실제로 양자화된 모델을 생성하는 데 사용할 모델을 생성

block-wise k-bit quantization

  • 동적 양자화의 일종
  • 입력 텐서의 B개의 값을 하나의 블록으로 간주, 각 블록의 absmax를 양자화 상수로 취급하여 병렬처리가 가능하도록 함.

QLoRA

  • 기존의 LoRA에 새로운 quantization을 더한 형태
  • 베이스 모델인 PLM의 가중치를 얼리고, LoRA 어댑터의 가중치만 학습 가능하는 것은 같고, frozen PLM의 가중치가 4bit로 양자화 되었다는 것이 다르다.
  1. 사전 훈련된 모델을 4 bit로 양자화한다.
  2. 소량의 학습가능한 Low rank Adapter 가중치를 추가해서 튜닝한다.
  3. 이 가중치들이 양자화된 가중치를 통해서 Gradient를 역전파하여 조정한다.
  • 데이터 품질이 데이터셋 크기보다 훨씬 중요하다.
  • 데이터 적합성이 크기보다 중요하다.

방법론

4-bit NormalFloat(NF4)

  • QLoRA의 핵심적인 방법론
  • 정규 분포 가중치를 효율적으로 처리하도록 설계된 최적의 양자화 데이터 유형
  • 표준 정규 분포의 분위수를 추정하여 정규 분포를 위한 4bit로 양자화된 채 저장됨.
  • 표준 정규 분포의 분위수 추정과정에서 비용이 많이 들기 때문에 SRAM 분위수와 같은 빠른 분위수 근사 알고리즘을 사용한다.

Double Quantization

  • 양자화 하는 과정에서 메모리 절약을 위한 양자화 상수를 양자화하여 평균 메모리 설치 공간을 줄인다. 정확한 4bit 양자화를 위해서는 작은 블록 크기가 요구되지만 이는 상당한 메모리 오버헤드가 있다.
  • 양자화 상수의 memory footprint를 줄이도록 도와준다.
    - memory footprint 프로그램이 실행되는 동안 사용하거나 참조하는 메모리의 양
  1. 첫 번째 양자화의 양자화 상수를 두 번째 양자화에 대한 입력으로 처리하여 양자와 상수와 두 번째 양자화 상수를 생성한다.

Paged Optimizers

NVIDIA 통합 메모리 기능을 사용하여 CPU와 GPU 간의 자동으로 페이지 간 전송을 수행한다.
gradient checkingpoing 도중에 메모리 spike가 발생하여 GPU 메모리 부족으로 인해 OOM을 야기하는 상황을 방지하는데 사용한다.

  • 방법
  1. 옵티마이저 상태에 페이징된 메모리를 할당한다.
  2. GPU가 메모리 부족으로 인해 OOM이 발생하였을 때, 자동으로 CPU RAM으로 옮긴다.
  3. 옵티마이저 업데이트 단계에서 메모리가 필요할 때, GPU 메모리로 다시 옮긴다.

참고

Dettmers, Tim, et al. "Qlora: Efficient finetuning of quantized llms." arXiv preprint arXiv:2305.14314 (2023).

0개의 댓글