모델 파인튜닝과 배포
서문
대형 모델은 강력하지만, 당신의 비즈니스를 이해하지 못합니다. GPT-4는 시를 쓰고 코딩도 할 수 있지만, 회사 제품 용어를 모르고 업계 전문 규범을 이해하지 못합니다. 파인튜닝(Fine-tuning)은 범용 대형 모델이 당신의 전문 지식을 "학습"하게 하는 과정입니다——마치 박식한 제너럴리스트에게 직무 교육을 시켜 당신의 분야 전문가로 만드는 것과 같습니다.
이 글에서 무엇을 배울 수 있나요?
이 장을 마치면 다음을 얻을 수 있습니다:
- 흐름 인지: 데이터 준비부터 모델 출시까지의 완전한 파인튜닝 파이프라인 파악
- 데이터 엔지니어링: 파인튜닝 데이터의 형식 요구사항과 품질 기준 이해
- 효율적 파인튜닝: LoRA 등 파라미터 효율적 파인튜닝 기술의 원리와 장점 이해
- 모델 압축: 양자화 기술이 어떻게 대형 모델을 소비자급 하드웨어에서 실행 가능하게 하는지 파악
- 배포 실전: 모델 서빙의 주류 아키텍처와 선택 전략 이해
| 장 | 내용 | 핵심 개념 |
|---|---|---|
| 제1장 | 파인튜닝 파이프라인 | 데이터→학습→평가→배포 |
| 제2장 | 학습 데이터 | 데이터 형식, 품질 관리 |
| 제3장 | LoRA 파인튜닝 | 저차원 적응, 파라미터 효율 |
| 제4장 | 모델 양자화 | FP16, INT8, INT4 |
| 제5장 | 모델 배포 | 추론 서비스, API 게이트웨이 |
0. 전체 그림: 왜 파인튜닝이 필요한가?
대형 언어 모델의 학습은 두 단계로 나뉩니다: 사전 학습과 파인튜닝. 사전 학습은 방대한 범용 데이터에서 언어 능력을 배우는 것이고, 파인튜닝은 특정 작업 데이터에서 전문 능력을 배우는 것입니다.
비유하자면: 사전 학습은 대학에 다니는 것——교양 지식을 배워 모든 것을 조금씩 알게 됨; 파인튜닝은 입사 교육——구체적 직무에 맞춰 전문 기술을 배움.
언제 파인튜닝이 필요한가?
- 특정 출력 형식: 모델이 항상 고정된 JSON 형식으로 출력해야 할 때
- 전문 분야 지식: 의료, 법률, 금융 등 분야의 전문 용어와 규범
- 언어 스타일 전이: 모델이 특정 어조, 스타일로 답변하게 할 때(고객 서비스 스크립트 등)
- 소수 언어 지원: 특정 언어에서 모델 성능 향상
- 비용 최적화: 소형 모델 파인튜닝으로 대형 모델 호출을 대체하여 추론 비용 절감
1. 파인튜닝 파이프라인: 데이터부터 출시까지의 완전한 여정
파인튜닝은 "데이터를 모델에 던지면 끝"이 아닙니다. 이는 엄격한 엔지니어링 프로세스로, 각 단계가 최종 효과에 영향을 미칩니다.
微调流水线演示
点击每个阶段,了解微调的完整流程
微调的第一步是选择一个合适的预训练基座模型。基座模型已经在海量数据上学习了通用的语言能力,我们要做的是在此基础上进行"专业化训练"。
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2-7B")파인튜닝의 5단계
- 데이터 준비: 학습 데이터 수집, 정제, 라벨링. 가장 시간이 많이 걸리고 가장 중요한 단계
- 모델 선택: 적절한 베이스 모델(Base Model) 선택, Llama 3, Qwen, Mistral 등
- 학습 설정: 학습률, 배치 크기, 에포크 수 등 하이퍼파라미터 설정
- 학습 실행: GPU에서 학습 실행, 손실 곡선과 평가 지표 모니터링
- 평가 및 출시: 테스트 세트에서 효과 평가, 통과 후 API 서비스로 배포
| 단계 | 주요 작업 | 일반적인 함정 |
|---|---|---|
| 데이터 준비 | 정제, 중복 제거, 포맷팅 | 데이터 품질 저하로 모델이 "나쁘게 학습" |
| 모델 선택 | 베이스 모델 능력 평가 | 모델이 너무 커서 학습 불가, 너무 작아서 효과 부족 |
| 학습 설정 | 하이퍼파라미터 조정 | 학습률 과도로 인한 파괴적 망각 |
| 학습 실행 | 손실과 지표 모니터링 | 과적합, 학습 불수렴 |
| 평가 및 출시 | A/B 테스트, 그레이듀얼 릴리스 | 테스트 세트 누출로 평가 점수 과대 |
2. 학습 데이터: 파인튜닝 효과의 천장
파인튜닝에서 오래된 격언이 있습니다: "Garbage in, garbage out". 학습 데이터의 품질이 파인튜닝 효과의 상한을 직접 결정합니다. 100개의 고품질 데이터가 10,000개의 저품질 데이터보다 나은 경우가 많습니다.
训练数据格式演示
切换不同格式,了解微调数据的组织方式
最常见的微调数据格式。每条数据包含一个指令(instruction)、可选的输入(input)和期望的输出(output)。适合训练通用助手类模型。
파인튜닝 데이터의 세 가지 일반적인 형식
- 명령어 형식(Instruction): 가장 널리 사용되는 형식, instruction(명령), input(입력), output(기대 출력) 세 필드 포함. 모델이 명령을 따르도록 학습시키는 데 적합.
- 대화 형식(Chat): 멀티턴 대화 형식, system, user, assistant 역할의 메시지 리스트 포함. 챗봇 학습에 적합.
- 완성 형식(Completion): 간단한 prompt-completion 쌍, 텍스트 생성, 코드 완성 등 시나리오에 적합.
| 데이터 품질 차원 | 설명 | 확인 방법 |
|---|---|---|
| 정확성 | 답변이 정확해야 함 | 수동 검토, 전문가 교정 |
| 일관성 | 유사한 질문의 답변 스타일 일관 | 샘플링 대조 검사 |
| 다양성 | 충분한 시나리오와 변형 커버 | 질문 유형 분포 통계 |
| 중복 제거 | 중복 샘플로 인한 과적합 방지 | 텍스트 중복 제거, 의미적 중복 제거 |
| 데이터 양 | 보통 500~5000개의 고품질 데이터면 충분 | 소량부터 시작하여 점진적 증가 |
3. LoRA: 1%의 파라미터로 90%의 효과 달성
전체 파인튜닝(Full Fine-tuning)은 모델의 모든 파라미터를 업데이트해야 합니다——70B 파라미터 모델의 경우 수백 GB의 GPU 메모리와 대량의 GPU 연산력이 필요합니다. 대부분의 팀에게 이는 현실적이지 않습니다.
LoRA(Low-Rank Adaptation)는 우아한 해결책을 제공합니다: 원본 모델 파라미터를 동결하고, 소규모의 새로 추가된 저차원 행렬만 학습. 이 행렬의 파라미터 수는 보통 원본 모델의 0.1%~1%에 불과하지만 전체 파인튜닝에 가까운 효과를 냅니다.
LoRA 低秩适配原理演示
理解 LoRA 如何用极少参数实现高效微调
LoRA의 핵심 아이디어
원본 모델의 가중치 행렬 W는 거대한 행렬입니다(예: 4096×4096). LoRA는 W를 직접 수정하지 않고 옆에 "우회로"를 추가합니다: W' = W + BA, 여기서 B와 A는 두 개의 작은 행렬입니다(예: 4096×8과 8×4096). 학습 시에는 B와 A만 업데이트하고 원본 W는 그대로 유지합니다.
- 랭크(Rank): r 값이 클수록 표현력이 강하지만 파라미터 수도 증가. 보통 r=8~64면 충분
- 병합 배포: 학습 완료 후 BA를 W에 병합할 수 있어 추론 시 추가 오버헤드 제로
| 파인튜닝 방식 | 학습 가능 파라미터 | GPU 메모리 요구 | 학습 속도 | 효과 |
|---|---|---|---|---|
| 전체 파인튜닝 | 100% | 매우 높음 | 느림 | 최고 |
| LoRA | 0.1%~1% | 낮음 | 빠름 | 전체에 근접 |
| QLoRA | 0.1%~1% | 더 낮음 | 중간 | LoRA보다 약간 낮음 |
| Prompt Tuning | < 0.01% | 매우 낮음 | 매우 빠름 | 제한적 |
4. 모델 양자화: 대형 모델을 "슬림화"하기
70B 파라미터 모델을 FP32(32비트 부동소수점)로 저장하면 280GB의 GPU 메모리가 필요합니다——최고급 GPU 여러 개 없이는 실행할 수 없습니다. 양자화(Quantization) 기술은 수치 정밀도를 낮추어 모델 크기를 압축하여 대형 모델을 소비자급 하드웨어에서 실행할 수 있게 합니다.
模型量化演示
拖动滑块,直观感受不同精度下的模型体积、速度与质量变化
FP32(32位浮点数)是模型训练时的默认精度。每个参数用 32 位存储,精度最高但体积最大。通常只在训练阶段使用,推理时很少直接使用 FP32。
양자화의 핵심 트레이드오프
양자화는 본질적으로 정밀도와 공간의 트레이드오프입니다. FP32 → FP16은 거의 무손실, INT8은 약간의 손실, INT4는 뚜렷하지만 일반적으로 허용 가능한 품질 저하가 있습니다. 핵심은 당신의 시나리오에 맞는 최적의 균형점을 찾는 것입니다.
- FP16(반정밀도): 크기 절반, 품질 거의 무손실, 학습과 추론의 기본 선택
- INT8(8비트 정수): 크기 다시 절반, 품질 손실 매우 적음, 대부분의 추론 시나리오에 적합
- INT4(4비트 정수): 크기가 FP32의 1/8, 품질 일부 손실, 리소스 제한 시나리오에 적합
| 정밀도 | 파라미터당 바이트 | 70B 모델 크기 | 품질 손실 | 적용 시나리오 |
|---|---|---|---|---|
| FP32 | 4바이트 | ~280 GB | 없음 | 학습 기준 |
| FP16 | 2바이트 | ~140 GB | 거의 없음 | 표준 학습 및 추론 |
| INT8 | 1바이트 | ~70 GB | 매우 적음 | 프로덕션 추론 |
| INT4 | 0.5바이트 | ~35 GB | 허용 가능 | 엣지 디바이스, 로컬 배포 |
5. 모델 배포: 연구실에서 프로덕션 환경으로
모델 학습이 완료되고 양자화 압축까지 마쳤다면, 마지막 단계는 호출 가능한 서비스로 배포하는 것입니다. 모델 배포는 단순히 "모델을 실행하는 것"이 아니라 동시 처리, 로드 밸런싱, 비용 제어 등 엔지니어링 문제도 포함됩니다.
模型服务架构演示
点击不同部署方案,对比其特点与适用场景
将模型封装为 RESTful API 或 gRPC 服务,通过 HTTP 请求调用。适合需要实时响应的在线应用,如聊天机器人、智能客服、内容生成等。是目前最主流的部署方式。
세 가지 주류 배포 방안
- API 서비스 제공업체: OpenAI, Anthropic 등 업체의 API를 직접 사용. 운영 제로, 토큰당 과금, 빠른 검증과 중소규모 사용에 적합.
- 자체 호스팅 추론 서비스: vLLM, TGI 등 프레임워크로 자체 GPU 서버에 배포. 비용 통제 가능, 데이터 외부 유출 없음, 프라이버시 요구나 대규모 호출 시나리오에 적합.
- Serverless 추론: AWS SageMaker, Replicate 등 플랫폼 사용, 요청당 과금, 자동 스케일링. 트래픽 변동이 큰 시나리오에 적합.
| 배포 방안 | 비용 모델 | 지연 시간 | 운영 복잡도 | 적용 시나리오 |
|---|---|---|---|---|
| API 서비스 | 토큰당 과금 | 중간 | 제로 | 빠른 프로토타입, 중소규모 |
| vLLM 자체 배포 | GPU 임대 비용 | 낮음 | 높음 | 대규모, 프라이버시 민감 |
| Serverless | 요청당 과금 | 콜드 스타트 높음 | 낮음 | 트래픽 변동 큼 |
| 엣지 배포 | 하드웨어 일회성 투자 | 매우 낮음 | 중간 | 오프라인 시나리오, IoT |
요약
모델 파인튜닝과 배포는 대형 모델을 "범용 도구"에서 "전문 어시스턴트"로 만드는 핵심 단계입니다. 데이터 준비부터 모델 출시까지, 모든 단계에서 엔지니어링적 사고와 실천이 필요합니다.
이 장의 핵심 포인트를 되돌아보면:
- 파인튜닝은 직무 교육: 범용 모델이 특정 분야의 지식과 행동 패턴을 학습하게 함
- 데이터 품질이 상한을 결정: 100개의 고품질 데이터가 10,000개의 저품질 데이터보다 우수
- LoRA는 효율성의 왕: 1% 미만의 파라미터로 전체 파인튜닝에 가까운 효과 달성
- 양자화는 배포의 강력한 도구: INT4 양자화로 70B 모델을 단일 GPU에서 실행 가능
- 배포 방안은 상황에 맞게: 빠른 검증은 API로, 대규모는 자체 배포로, 변동 크면 Serverless로
더 읽어보기
- Hugging Face PEFT 문서 - 파라미터 효율적 파인튜닝 라이브러리 공식 문서
- vLLM 문서 - 고성능 LLM 추론 엔진
- Unsloth - 2배 가속 LoRA 파인튜닝 프레임워크
- GGUF 형식 설명 - llama.cpp가 사용하는 양자화 모델 형식
- OpenAI Fine-tuning Guide - OpenAI 공식 파인튜닝 가이드