DeepLearning

[Knowledge] 학습 파라미터, 트레이너 종류, GPU 인프라 총정리

dong_seok 2025. 4. 24. 21:23

최근 학습 과정에서 생겼던 궁금증에 대해 간략하게 정리해보는 시간을 가졌습니다.

1. 학습 파라미터 vs 하이퍼 파라미터

1) 학습 파라미터

학습 파라미터는 모델이 학습 과정에서 스스로 최적화하는 내부 변수들입니다.

  • 정의: 데이터로부터 학습을 통해 자동으로 업데이트되는 모델 내부 변수
  • 예시: 신경망의 가중치(weights), 편향(biases), 임베딩(embeddings)
  • 특징:
    • 역전파를 통해 자동으로 조정됨
    • 모델의 성능을 직접적으로 결정하는 요소
    • 학습이 완료된 후 모델과 함께 저장됨
    • 파인튜닝 시 주로 조정되는 대상

대규모 언어 모델(LLM)의 경우, 학습 파라미터는 수십억 개에 달할 수 있으며, 파인튜닝 과정에서는 이 파라미터의 일부 또는 전체를 조정합니다.

 

2) 하이퍼 파라미터

하이퍼파라미터는 모델의 학습 방식을 제어하는 외부 설정값입니다.

  • 정의: 학습 과정을 제어하기 위해 사람이 사전에 설정하는 변수들
  • 예시:
    • 학습률(learning rate)
    • 배치 크기(batch size)
    • 에폭 수(epochs)
    • 정규화 계수(regularization factor)
    • 드롭아웃 비율(dropout rate)
    • 모델 구조 설정(은닉층 수, 뉴런 수)
  • 특징:
    • 모델이 자동으로 학습하지 않으며 개발자가 직접 설정
    • 학습 프로세스와 속도, 성능에 큰 영향을 미침
    • 최적값을 찾기 위해 그리드 서치(Grid Search), 랜덤 서치(Random Search), 베이지안 최적화(Bayesian Optimization) 등의 방법 사용

3) 실제 코드에서의 구분

# 학습 파라미터 (모델 내부에서 자동으로 학습됨)
# q_proj, k_proj, v_proj, o_proj, gate_proj 등의 가중치
model = FastLanguageModel.get_peft_model(
    model,
    r=128,  # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128
    target_modules=[
        "q_proj",
        "k_proj",
        "v_proj",
        "o_proj",
        "gate_proj",
        "up_proj",
        "down_proj",
        "embed_tokens",
        "lm_head",
    ],  # Add for continual pretraining
    lora_alpha=32,
    lora_dropout=0,  # Supports any, but = 0 is optimized
    bias="none",  # Supports any, but = "none" is optimized
    # [NEW] "unsloth" uses 30% less VRAM, fits 2x larger batch sizes!
    use_gradient_checkpointing="unsloth",  # True or "unsloth" for very long context
    random_state=3407,
    use_rslora=True,  # We support rank stabilized LoRA
    loftq_config=None,  # And LoftQ
)

# 하이퍼파라미터 (개발자가 직접 설정)
args = UnslothTrainingArguments(
    per_device_train_batch_size=2,  # 배치 크기 설정
    gradient_accumulation_steps=8,  # 그래디언트 누적 단계 수
    warmup_steps=10,                # 워밍업 스텝 수
    num_train_epochs=1,             # 학습 에폭 수
    learning_rate=5e-5,             # 학습률
    embedding_learning_rate=1e-5,   # 임베딩 학습률
    fp16=True,                      # 16비트 부동소수점 사용 여부
    bf16=False,                     # bfloat16 사용 여부
    # ... 기타 설정들
)

 

2. Trainer 종류 및 장단점

1) Hugging Face Trainer

Hugging Face의 기본 트레이너로, 다양한 모델과 데이터셋에 범용적으로 사용할 수 있습니다.

 

장점:

  • 쉬운 사용법과 포괄적인 문서화
  • 다양한 모델 아키텍처 지원
  • 분산 학습, 혼합 정밀도 학습 등 고급 기능 내장
  • 커스터마이징이 용이한 콜백 시스템

단점:

  • 대규모 LLM 파인튜닝에 최적화되어 있지 않음
  • 메모리 사용량이 다소 높을 수 있음
  • 특수한 학습 기법(PEFT, QLoRA 등)에 대한 직접적인 지원이 부족

2) UnslothTrainer

Unsloth 라이브러리의 트레이너로, 대규모 LLM의 효율적인 파인튜닝에 특화되어 있습니다.

장점:

  • LLM 파인튜닝에 최적화된 성능
  • 메모리 효율성이 높아 더 큰 배치 크기 사용 가능
  • FlashAttention, LoRA와 같은 최신 기술 내장
  • 학습 속도가 일반 Trainer보다 빠름 (2-3배 속도 향상)

단점:

  • 범용성이 다소 부족 (주로 LLaMA, Mistral 계열 모델에 최적화)
  • 상대적으로 새로운 라이브러리로 문서화가 덜 완성됨
  • 커스터마이징 옵션이 제한적일 수 있음

3) SFTTrainer

TRL 라이브러리의 일부로, 지시어 튜닝과 같은 지도 학습 파인튜닝에 특화되어 있습니다.

장점:

  • 대화형 AI 모델 학습에 최적화
  • 지시어 형식의 데이터 처리가 간편함
  • RLHF(Reinforcement Learning from Human Feedback) 파이프라인과 연동 가능
  • 토크나이징 프로세스가 자동화되어 사용이 편리함

단점:

  • 일반적인 분류나 회귀 태스크에는 덜 적합
  • 학습 과정의 세밀한 제어가 다소 제한적
  • 특화된 용도로 인해 범용성이 다소 떨어짐

3. GPU 인스턴스 종류

1) NVIDIA A100

사양:

  • 메모리: 40GB / 80GB 버전 존재
  • FP32 성능: 최대 19.5 TFLOPS
  • FP16/BF16 성능: 최대 312 TFLOPS (Tensor Cores)
  • 메모리 대역폭: 1.6 TB/s (HBM2e)

장점:

  • 우수한 가격 대비 성능
  • 충분한 메모리로 대규모 모델 학습 가능
  • 다양한 클라우드 제공업체에서 폭넓게 사용 가능
  • TensorFloat-32(TF32) 지원으로 학습 속도 향상

단점:

  • H100보다는 성능이 떨어짐
  • 가격이 여전히 높은 편 (특히 80GB 버전)

적합한 사용 사례:

  • 7B-70B 파라미터 규모의 LLM 파인튜닝
  • 중간 규모의 연구 및 개발 프로젝트

2) NVIDIA H100

사양:

  • 메모리: 80GB
  • FP32 성능: 최대 67 TFLOPS
  • FP16/BF16 성능: 최대 1,979 TFLOPS (Tensor Cores)
  • 메모리 대역폭: 3.35 TB/s (HBM3)

장점:

  • 최고 수준의 연산 성능
  • 대규모 모델 학습 및 추론에 뛰어난 성능
  • 향상된 메모리 대역폭으로 병목 현상 감소
  • Transformer 엔진으로 LLM 학습 최적화

단점:

  • 매우 높은 비용
  • 가용성이 제한적일 수 있음
  • 냉각 요구사항이 더 높음

적합한 사용 사례:

  • 100B+ 파라미터 규모의 대형 LLM 파인튜닝
  • 최고 성능이 필요한 대규모 상업 프로젝트
  • 다중 GPU 환경에서의 분산 학습

3) 기타 주요 GPU 옵션

NVIDIA V100

  • A100의 이전 세대로, 여전히 많이 사용됨
  • 16GB/32GB 메모리 옵션
  • 비용 효율적인 대안이지만 최신 최적화 부족

NVIDIA T4

  • 저비용 추론 특화 GPU
  • 파인튜닝에는 제한적이나 가벼운 작업에 적합
  • 16GB 메모리로 소규모 모델 파인튜닝 가능

NVIDIA RTX 4090 (소비자용)

  • 성능 대비 가격이 우수함
  • 24GB 메모리로 중소형 모델 파인튜닝 가능
  • 대규모 프로젝트에는 부적합

AMD MI250X

  • NVIDIA 대안으로 부상 중
  • LLM 학습 생태계 지원이 상대적으로 부족
  • 특정 워크로드에서 좋은 성능