공부 기록장

모델의 효율적인 학습과 배포 : 파인튜닝, 양자화, 서빙 본문

카카오테크 부트캠프/강의

모델의 효율적인 학습과 배포 : 파인튜닝, 양자화, 서빙

빛나무 2024. 7. 31. 00:38

Llama

Meta AI에서 개발한 대형 언어 모델

- 7B, 13B, 33B, 65B(70억, 130억, 330억, 650억 개)의 다양한 파라미터로 제공

- 적은 자원으로 다양한 자연어 처리 작업에서 높은 성능을 발휘

- 20개의 주요 언어 학습, 공개 데이터 사용

 

모델 아키텍처

Transformer, Pre-normalization, SwiGLU 활성화 함수, Rotary Embeddings

 

 

Finetuning

파인튜닝(Finetuning)이란?

사전 학습된 대규모 언어 모델을 특정 작업에 맞게 `추가 학습`시키는 과정

 

Finetuning VS Pre-training

Finetuning

- 특정 작업에 맞게 추가 학습시키는 단계

- 특정 작업의 데이터셋 사용해 모델의 가중치 조정

 

Pre-training

- 매우 큰 규모의 텍스트 데이터셋을 사용해 모델이 언어의 일반적 패턴을 학습하는 단계

- 다양한 언어 구조와 표현 학습

 

장점

- 특정 작업에 맞춘 높은 성능

- 적은 데이터 및 자원으로 학습 가능

- 전이 학습을 통해 빠른 수렴 속도

 

단점

- 잘못된 데이터셋 사용 시 모델 성능 저하

- Finetuning 과정에서 과적합 위험

- 모델의 원래 학습된 지식이 손상될 가능성 ↑

 

다양한 파인튜닝 방법들

 Instruction Fine-Tuning

: 모델에게 특정 작업 혹은 목표를 명확하게 지시하여 학습을 유도하는 방법

 

Full Fine-Tuning

: 사전 학습된 모델 전체를 특정 작업 데이터셋( ex. 감정 분석, 번역 등)으로 학습시키는 방법

: 모델의 모든 파라미터를 조정하여 특정 작업에 맞게 최적화

 

Parameter-Efficient Fine-Tuning (PEFT)

: 모델의 주요 레이어나 일부 파라미터만 조정하여 학습 비용과 시간을 줄이는 방법

: 작은 어댑터 모듈을 추가하여 학습 (기존 모델의 파라미터는 고정하고, 어댑터 모듈만 학습시키는 방식으로 작동)

 

Supervised Find-tuning(SFT)

: 라벨링된 데이터셋을 사용한 지도 학습을 통해 모델을 특정 작업에 맞게 학습시키는 방법

 

 

Model Distillation

모델 증류(Model Distillation)란?

큰 모델(교사 모델, Teacher Model)의 지식을 작은 모델(학생 모델, Student Model)에 전달하여 작은 모델이 큰 모델의 성능을 최대한 모방하도록 하는 기법

 

 

증류의 주요 구성

  • 교사 모델(Teacher Model) : 큰 파라미터를 가진 고성능 모델
  • 학생 모델(Student Model) : 교사 모델의 지식을 전달받아 더 작지만 효율적인 모델
  • 소프트 타겟(Soft Target) : 교사 모델의 예측 확률 분포 (학생 모델의 학습에 사용)

 

모델 증류 과정

큰 교사 모델 훈련 → 교사 모델 사용해 학습 데이터에 대한 소프트 타겟(예측 확률 분포) 생성 → 학생 모델을 소프트 타겟과 원래 라벨(하드 타켓)을 사용해 훈련

 

모델 증류의 장점

- 작은 모델이 더 적은 자원으로 높은 성능 발휘할 수 있도록 함

- 모바일 기기나 임베디드 시스템 등 자원이 제한된 환경에서 비슷한 성능을 유지하면서도 배포 및 실행에 용이

 

 

Quantization

양자화(Quantization)란?

모델 파라미터를 lower bit로 표현함으로서 모델의 크기를 감소시키고 계산 속도를 증가시키는 경량화 기법

(보통 32비트 부동소수점 연산을 8비트 정수로 변환하는 방식 사용)

⇒ 모델 증류보다 최신 기술로 요즘 사용되는 기술

 

양자화의 종류

정적 양자화

: 모델 훈련 후, 가중치와 활성화 값을 정밀도가 낮은 형식으로 변환하는 방법

 

동적 양자화

: 추론 시점에서 모델의 일부 또는 전체 가중치와 활성화 값을 정밀도가 낮은 형식으로 변환

 

훈련 중 양자화

: 모델 훈련 과정에서 양자화를 고려하여 모델을 최적화하는 기법

 

 

Serving

모델 서빙(Serving)이란?훈련된 모델을 실제 환경에서 사용할 수 있도록 배포하고 실행하는 과정

 

서빙의 단계

① 모델 저장 : 훈련된 모델을 저장→ 모델 버전 관리를 통해 업데이트 및 유지 보수가 이루어지는 단계

 

② 모델 배포 : 저장된 모델을 적당한 환경에 배포

→ 크게 3가지 방식 존재 : 컨테이너화(Docker), 서버리스 배포, 클러스터(Kubernetes) 배포

 

③ 예측 요청 처리 : 사용자의 요쳥을 받아 모델이 예측 수행

→ API 엔드포인트에 모델이 위치함, 대규모 요청을 배치 처리로 처리해 효율성 확보 가능

 

④ 결과 반환 : 모델의 예측 결과를 사용자에게 반환

→ 모델 모니터링(성능 실시간 모니터링을 통한 문제 감지) 및 로깅(예측 요청 및 결과 로깅 통해 추적 및 분석)

 

서빙 아키텍처

  • 단일 서버 서빙 : 간단한 어플리케이션에 적합, 제한된 요청 처리 능력과 확장성 ↓
  • 분산 서빙 : 여러 서버에 배포하여 요청 처리 능력↑, 로드 밸런서 사용해 요청 분산
  • 서버리스 서빙 : 서버리스 플랫폼(AWS, Azure) 사용해 자동 확장, 사용량에 따른 비용 청구

모델 서빙 성능 최적화

모델 최적화

  • 양자화 : 모델 양자화로 메모리 사용량 및 추론 시간↓
  • 프루닝 : 불필요한 파라미터 제거해 모델 크기 줄임
  • 지연 로딩 : `필요한 경우에만 모델을 메모리에 로드`해 자원 절약

하드웨어 가속

  • GPU : 그래픽 처리 장치 사용해 대규모 병렬 연산 수행
  • TPU : Tensor Processing Unit을 사용해 딥러닝 연산 가속

⇒ 어떤 데이터, 모델, 환경, 서비스를 사용하느냐에 따라 서빙 방식을 선택해야 한다!

(각 서빙 방식들에 대한 특징 알고 있어야 함)