C.W.K.
Stream
Lesson 03 of 04 · published

잡 생성 & 모니터링

~22 min · openai, jobs, hyperparameters, monitoring

Level 0관찰자
0 XP0/43 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

잡 생성

파일 업로드 끝나면 파인튜닝 잡 시작. 대부분 프로젝트에선 모든 hyperparameter에 "auto"가 옳은 기본값 — OpenAI가 데이터셋 크기 기반으로 튜닝해줘.

모니터링

잡은 queued → running → succeeded/failed 거쳐. 이벤트 스트림에서 training/validation loss 봐; OpenAI가 ~50 step마다 메트릭 라인 emit.

Hyperparameter 가이드

파라미터기본값오버라이드 시점
n_epochsauto (보통 3)Validation loss 일찍 오르면 → 1~2로 줄여.
batch_sizeauto거의 필요 없어. Auto가 데이터셋 기반으로 적정 사이즈 선택.
learning_rate_multiplierauto작은 데이터셋엔 낮춰(0.5~1.0), 큰 데이터셋엔 높여(1.5~2.0).

Code

Create a job, then watch events + checkpoints·python
from openai import OpenAI
import time

client = OpenAI()

job = client.fine_tuning.jobs.create(
    training_file="file-abc123",
    validation_file="file-def456",
    model="gpt-4.1-mini-2025-04-14",
    suffix="my-custom-model",
    hyperparameters={
        "n_epochs": 3,
        "batch_size": "auto",
        "learning_rate_multiplier": "auto",
    },
    seed=42,  # reproducibility
)
print(f"Job ID: {job.id}, status: {job.status}")

# Poll for events as the job runs
last_seen = None
while True:
    events = client.fine_tuning.jobs.list_events(
        fine_tuning_job_id=job.id, limit=20
    )
    for e in reversed(events.data):
        if last_seen is None or e.created_at > last_seen:
            print(f"{e.created_at}: {e.message}")
    last_seen = events.data[0].created_at if events.data else last_seen

    j = client.fine_tuning.jobs.retrieve(job.id)
    if j.status in ("succeeded", "failed", "cancelled"):
        print(f"Final status: {j.status}")
        if j.status == "succeeded":
            print(f"Fine-tuned model: {j.fine_tuned_model}")
        break
    time.sleep(60)

# After completion: list checkpoints
checkpoints = client.fine_tuning.jobs.checkpoints.list(job.id)
for cp in checkpoints.data:
    print(f"step {cp.step_number}: {cp.fine_tuned_model_checkpoint}")
    print(f"  train loss: {cp.metrics.get('train_loss')}")
    print(f"  valid loss: {cp.metrics.get('valid_loss')}")

External links

Exercise

이전 레슨의 파일 ID로 seed=42, 3 epoch 파인튜닝 잡 시작. 완료까지 이벤트 스트림 폴링. 각 체크포인트의 training/validation loss 기록. Validation loss 가장 낮은 체크포인트를 실서비스 모델로 선택.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.