[Python] H100으로 LLM Fine-tuning하려면?

류지수·2025년 7월 4일
0

Fine Tuning 방법 정리

조건

  • GPU: H100 4장
  • 목표: 생성형 LLM 또는 LM의 파인튜닝

추천 전략: DeepSpeed + Hugging Face Trainer (또는 TRL)

  • ZeRO Stage 3 + FP16/BF16 + Gradient Accumulation + Optional LoRA

zeRO의 3단계

단계나누는 대상설명
Stage 1옵티마이저 상태옵티마이저 메모리 분산 저장
Stage 2옵티마이저 + 그래디언트학습 시 gradient까지 분산
Stage 3모델 파라미터까지전체 모델을 분산 (가장 메모리 절약)

이 조합은 속도, 안정성, 메모리 효율, 확장성 모두를 갖춘 최적화 전략
(필요에 따라 LoRA도 선택적으로 사용할 수 있음)

이유

  • DeepSpeed는 대형 모델을 여러 GPU에 분산시켜 메모리를 절약하고 학습을 가능하게 해줌
  • ZeRO Stage 3는 모델의 모든 구성요소 (파라미터, GD, Optimizer)를 분산해서 최고 수준의 메모리 효율을 제공함 (단, ZeRO-3는 강력하지만 통신량도 많아짐)
  • H100 GPU는 BF16 연산에 최적화디어 있기 때문에, fp16보다 빠르고 안정적인 학습이 가능함
  • Hugging Face Trainer는 검증된 학습 루프와 로깅, 체크포인트 기능을 제공하며, DeepSpeed와도 자연스럽게 연동
  • TRL은 SFT뿐 아니라 DPO, PPO 같은 사람 선호도 학습 (RLHF)을 쉽게 적용할 수 있는 라이브러리임

추천 세팅

DeepSpeed 설멍 (ds_config.json)

{
  "train_batch_size": 64,
  "train_micro_batch_size_per_gpu": 4,
  "gradient_accumulation_steps": 4,
  "bf16": { "enabled": true },
  "zero_optimization": {
    "stage": 3,
    "offload_param": { "device": "none" },
    "offload_optimizer": { "device": "cpu", "pin_memory": true }
  }
}

offload는 선택 사항이며, GPU 메모리가 충분하면 꺼도 됨

LoRA

  • 특정 레이어만 튜닝하는 방식으로, 빠르고 가볍지만 약간의 성능 제한이 있음. 실험이나 배포 효율이 중요할 때 유용함

DeepSpeed 실행 방법

deepspeed --num_gpus=4 train.py --deepspeed ds_config.json

train.py는 Hugging Face의 Trainer나 TRL의 SFTTrainer를 활용한 학습 코드여야 함.

profile
끄적끄적

0개의 댓글