내가 직접 LLM을 훈련시키고 HuggingFace에 공개했습니다

발행: (2026년 5월 5일 PM 06:11 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

개요

이 글은 의료 데이터에 언어 모델을 파인튜닝하고 Hugging Face에 배포하는 과정을 문서화한 것입니다.

모델 선택

  • 기본 모델: facebook/opt-1.3b – 13억 파라미터, 오픈소스, 사용 제한 없음.

기술: LoRA (Low‑Rank Adaptation)

LoRA는 고정된 기본 모델 위에 작은 학습 가능한 어댑터 레이어를 추가하여 학습 가능한 파라미터 수를 13억에서 약 400만(≈100배 저렴)으로 줄입니다.

학습 환경

  • 하드웨어: 무료 Google Colab Tesla T4 GPU (15 GB VRAM), 주당 30 시간.
  • 제약: 로컬 GPU가 없으며, CPU 학습은 며칠이 걸릴 수 있습니다.

핵심 코드

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model
from trl import SFTTrainer, SFTConfig

# Load base model
model = AutoModelForCausalLM.from_pretrained("facebook/opt-1.3b")

# Add LoRA adapters
lora_config = LoraConfig(
    r=8,
    lora_alpha=16,
    target_modules=["q_proj", "v_proj"],
    task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)

# Train
trainer = SFTTrainer(
    model=model,
    train_dataset=train_dataset,
    args=SFTConfig(num_train_epochs=3, learning_rate=2e-4)
)
trainer.train()

학습 결과

무료 T4 GPU에서 1.5 시간 만에 학습이 완료되었습니다. 손실(Loss) 진행 상황:

  • Step 100: 1.163
  • Step 500: 0.994
  • Step 1000: 0.967
  • Step 1700: 0.944 ← 학습 완료

학습 손실과 검증 손실이 동시에 감소했으며, 이는 단순 암기가 아니라 실제 학습이 이루어졌음을 의미합니다.

Hugging Face에 배포

model.push_to_hub("Yakhilesh/medmind-opt-medical")
tokenizer.push_to_hub("Yakhilesh/medmind-opt-medical")

모델(어댑터 가중치만 ≈ 12.6 MB)은 이제 Yakhilesh/medmind-opt-medical 에서 공개적으로 이용할 수 있습니다. 누구나 다운로드하고 사용할 수 있습니다.

주요 시사점

  • 파인튜닝은 모델 크기보다 데이터 품질에 더 크게 의존합니다.
  • LoRA는 최소한의 컴퓨팅 비용으로 대형 모델을 효율적으로 적응시킬 수 있게 합니다.
  • 짧은 1.5시간 파인튜닝만으로도 손실 곡선이 보여주듯 의미 있는 의료 패턴을 포착할 수 있습니다.
0 조회
Back to Blog

관련 글

더 보기 »