공부 기록장
모델의 효율적인 학습과 배포 : 파인튜닝, 양자화, 서빙 본문
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을 사용해 딥러닝 연산 가속
⇒ 어떤 데이터, 모델, 환경, 서비스를 사용하느냐에 따라 서빙 방식을 선택해야 한다!
(각 서빙 방식들에 대한 특징 알고 있어야 함)
'카카오테크 부트캠프 > 강의' 카테고리의 다른 글
효율적인 소프트웨어 배포를 위한 CI/CD와 DevOps 전략 (0) | 2024.08.03 |
---|---|
클라우드, 리눅스, 컨테이너 (0) | 2024.07.31 |
언어 모델의 종류와 평가, RAG 아키텍처 (0) | 2024.07.30 |
LLM과 프롬프트 엔지니어링(Prompt Engineering) (0) | 2024.07.26 |
PyTorch, Seq2Seq, 오토인코더, GAN, 하이퍼 파라미터 튜닝의 이해 (2) | 2024.07.24 |