학습 실행 및 파인튜닝 실행 결과 확인
예산을 정한 클라우드 실행을 시작하고, 에포크별 곡선으로 실행 결과를 판단한 뒤, 기본 옵티마이저가 학습률을 무시하지 않도록 파인튜닝합니다.
클라우드 GPU는 실패할 실행을 계속하는 매 순간 비용이 발생합니다. 파인튜닝에서 가장 흔한 실수는 비용이 들지 않지만 실행 시간을 조용히 낭비하게 만듭니다. 기본 옵티마이저가 설정한 학습률을 무시하는 것입니다. 이 과정에서는 의료용 알약 데이터셋으로 실제 모델을 학습하고, 판단 기준에 따라 곡선을 해석한 다음, 설정이 실제로 적용되도록 파인튜닝합니다.
실습형
학습 실행 시작하기#
프로젝트 또는 데이터셋 페이지에서 새 모델을 클릭합니다. Cloud Training 탭에서 다음 설정을 진행합니다.

| 설정 항목 | 기본값 | 변경하는 경우 |
|---|---|---|
| 기본 모델 | Official에서 선택합니다(YOLO26 권장). | 파인튜닝할 경우 My Models에서 이전 실행을 선택합니다. |
| 데이터셋 | — | 실행을 데이터에 고정하려면 항상 데이터셋 버전 저장을 켭니다. |
| 에포크 | 100 | 스모크 테스트(10~20) 또는 매우 큰 데이터셋 |
| 배치 크기 | -1 (GPU 메모리에 자동으로 맞춥니다) | 두 실행 결과를 정확히 비교해야 하는 경우 |
| 이미지 크기 | 640 | 객체가 작으면 크기를 높입니다(슬라이더는 1280에서 제한되지만 YAML 편집기에서는 최대 4096까지 설정할 수 있습니다). |
| 고급 설정 | 기본값 | 옵티마이저, 학습률, 증강을 포함한 YAML의 model.train() 인자 50개 이상 |
인자는 로컬에서 model.train(...)이 사용하는 인자와 동일하며, 나중에 모델 페이지에서 기본값이 아닌 값을 포함한 복사 가능한 yolo train 명령을 확인할 수 있습니다.
GPU 선택 및 실행 예산 설정#
| 등급 | 예시(VRAM, 시간당 가격) | 적합한 용도 |
|---|---|---|
| 보급형 | RTX 2000 Ada (16 GB, $0.24), RTX A5000 (24 GB, $0.27), RTX 4090 (24 GB, $0.69) | 스모크 테스트, nano 및 small 모델 |
| 중급 | L40S (48 GB, $0.86), RTX 5090 (32 GB, $0.99), A100 SXM (80 GB, $1.49) | 중간 크기 모델, 더 큰 배치 |
| 기본값 | RTX PRO 6000 (96 GB, $2.09) | 대부분의 작업 |
| 하이엔드 | H100 SXM (80 GB, $3.29), H200 SXM (141 GB, $4.39) | 시간이 중요한 대규모 데이터셋 |
| Pro 및 Enterprise | B200 (180 GB, $5.89), B300 (288 GB, $7.39) | 가장 규모가 큰 작업 |
비용 카드는 시작하기 전에 예상 소요 시간과 비용을 보여 줍니다. 기본 RTX PRO 6000에서 1,000개 이미지 × YOLO26n × 100 epochs를 학습하는 데는 약 $0.23, H100 SXM에서 5,000개 이미지 × YOLO26s × 100 epochs를 학습하는 데는 약 $1.56이 듭니다. H100 SXM은 RTX 4090보다 약 3.4배 빠르게 학습합니다. 요금은 실제 GPU 사용 시간에 따라 부과됩니다. GPU가 작동하기 시작하면 완료, 취소, 실패한 실행 모두 요금이 부과되고, 실행을 시작하려면 예상 비용을 충당할 잔액(최소 GPU 사용 시간 15분)이 필요합니다. 잔액이 마이너스가 되면 활성 실행이 중지되므로, 장시간 작업을 위해 Settings > Billing에서 자동 충전을 켜세요. RTX PRO 6000보다 저렴한 GPU를 선택하면 Ultralytics 관리 용량이 유휴 상태일 때 해당 GPU로 무료 업그레이드될 수 있으며, 요금은 선택한 GPU 기준으로 계속 부과됩니다.
선택 기준: 새 데이터셋은 먼저 기본 GPU에서 10~20 epochs로 테스트 실행하세요. 실행에 몇 시간이 걸리고 누군가 결과를 기다리고 있다면 H100 또는 H200으로 전환하세요. GPU 사용률이 낮게 유지된다면 더 빠른 GPU가 아니라 더 저렴한 GPU를 선택하세요.
실행 모니터링#
모델 페이지의 Train 탭에는 세 개의 하위 탭이 실시간으로 표시됩니다. Charts에는 epoch별 지표, 학습 및 검증 손실, 학습률이 표시됩니다. Console에는 최근 2,000줄이 유지되며 traceback 또는 CUDA 메모리 부족 오류가 발생하면 실행이 즉시 중지됩니다. System에는 GPU 사용률, 메모리, 온도가 표시됩니다:


4시간 동안 아무런 보고가 없는 실행은 실패로 표시됩니다. 최적 체크포인트가 주기적으로 업로드되므로 실행을 취소해도 현재까지의 최적 epoch가 보존됩니다. Slack 알림을 설정하면 실행 완료 또는 실패 시 알림을 받을 수 있습니다.
실습 예제: 실행 학습, 스트리밍 및 결과 확인#
어디서든 학습하면서 Platform에서 실행을 추적할 수 있습니다. Settings > API Keys에서 발급받은 API 키를 ULTRALYTICS_API_KEY으로 내보낸 후, username/project 형식의 project을 사용하면 차트, 콘솔, 최적 체크포인트가 해당 프로젝트로 스트리밍됩니다:
from ultralytics import YOLO
# export ULTRALYTICS_API_KEY="..." first to stream this run into your Platform project
model = YOLO("yolo26n.pt")
results = model.train(data="medical-pills.yaml", epochs=10, imgsz=320, project="username/pill-inspection", name="v1-baseline")
print(f"mAP50-95 {results.box.map:.3f}, best checkpoint: {model.trainer.best}") Class Images Instances Box(P R mAP50 mAP50-95)
all 23 399 0.97 0.957 0.977 0.659
mAP50-95 0.659, best checkpoint: .../runs/detect/username/pill-inspection/v1-baseline/weights/best.ptNew Model을 클릭하면 같은 명령을 Platform의 GPU에서 실행할 수 있습니다. 로컬에서는 노트북 CPU와 imgsz=320 환경에서 2분 이내에 완료되었습니다. 실행의 results.csv에는 Charts 하위 탭에 표시되는 epoch별 시계열이 저장되므로, 몇 줄의 코드로 '곡선 모니터링'을 규칙으로 만들 수 있습니다:
import pandas as pd
df = pd.read_csv("results.csv") # the per-epoch metrics behind the Charts subtab
df.columns = df.columns.str.strip()
m = df["metrics/mAP50-95(B)"]
best_epoch = int(df.loc[m.idxmax(), "epoch"])
recent_gain = m.iloc[-1] - m.iloc[-4] # change over the last 3 epochs
val_loss = df["val/box_loss"]
print(f"epochs={len(df)} best mAP50-95={m.max():.3f} at epoch {best_epoch}")
print(f"gain over last 3 epochs: {recent_gain:+.3f}")
print(f"val box loss: {val_loss.iloc[0]:.3f} -> {val_loss.iloc[-1]:.3f}")
if recent_gain < 0.005 and val_loss.iloc[-1] >= val_loss.iloc[-4]:
print("verdict: plateaued - stop, and fix the data before training longer")
elif best_epoch == len(df):
print("verdict: still improving at the last epoch - more epochs should help")
else:
print("verdict: converged - keep best.pt")epochs=10 best mAP50-95=0.659 at epoch 10
gain over last 3 epochs: +0.028
val box loss: 1.367 -> 1.045
verdict: still improving at the last epoch - more epochs should help최적 epoch는 마지막 epoch이며, mAP50-95는 최근 세 epoch 동안 2.8포인트 상승했고 검증 손실은 계속 감소하고 있습니다. 따라서 이 10-epoch 실행은 일찍 중단되었으며, 더 오래 학습하거나 fine-tuning하면 개선될 수 있습니다. 모든 Platform 실행의 Charts 하위 탭에서 동일한 세 가지 신호를 확인하세요. 최적 epoch의 위치, 최근 개선 폭, 검증 손실의 추세입니다.
이전 모델에서 Fine-tuning하기#
My Models에서 이전 모델을 기반 모델로 선택하면 Platform이 해당 체크포인트에서 시작하는 새 모델을 만들고 이전 모델은 변경하지 않습니다. 일반적으로 학습률을 낮추는 것이 좋지만, 기본 optimizer: auto을 사용하면 학습 과정에서 옵티마이저와 학습률을 자동으로 선택하며 lr0은 무시됩니다. 콘솔 첫 부분에 이 내용이 표시됩니다:
optimizer: 'optimizer=auto' found, ignoring 'lr0=0.01' and determining best 'optimizer' and 'lr0' automatically...
optimizer: AdamW(lr=0.002, momentum=0.9) with parameter groups 114 weight(decay=0.0), 126 weight(decay=0.0005), 126 bias(decay=0.0)Advanced Settings에서 optimizer을 명시적으로 설정하면 해당 값이 적용됩니다. optimizer: SGD 및 lr0: 0.001를 사용해 알약 모델을 5 epochs 더 fine-tuning하면 다음 로그가 표시됩니다:
optimizer: SGD(lr=0.001, momentum=0.937) with parameter groups 114 weight(decay=0.0), 126 weight(decay=0.0005), 126 bias(decay=0.0)
all 23 399 0.969 0.962 0.983 0.687mAP50-95가 0.659에서 0.687로 상승했습니다. 다음 강의에서 이 후보 모델을 승격 심사에 부칠 예정입니다.

이전 실행을 재현하려면 모델 페이지의 Training Configuration 표를 열고 Copy JSON을 선택한 다음 Advanced Settings에 붙여 넣으세요. fine-tuning 가이드에서는 레이어 고정을, 하이퍼파라미터 튜닝 가이드에서는 체계적인 탐색을 다룹니다.
주의할 점#
증상: lr0: 0.001을 설정했는데 콘솔에는 ignoring 'lr0=...'이 표시됩니다. 해결 방법: optimizer: auto를 사용하면 학습 과정에서 옵티마이저와 학습률을 자동으로 선택합니다. lr0과 함께 optimizer을 SGD 또는 AdamW로 설정한 다음, 콘솔에서 optimizer: 행을 확인하세요.
증상: 실행 전체 시간 동안 System 하위 탭에서 GPU 사용률이 80%보다 훨씬 낮게 표시됩니다. 해결 방법: 병목은 GPU가 아니라 데이터 로딩이므로 더 빠른 GPU를 사용하면 비용만 늘어납니다. 더 저렴한 GPU를 선택하거나 메모리가 허용하는 경우 배치 크기를 늘리세요.
증상: 검증 손실이 조금씩 증가하는 동안 검증 mAP50-95가 10 에포크째 정체되어 있습니다. 해결 방법: 학습을 취소하세요. 지금까지의 최적 체크포인트는 보존되며, 다음 성능 향상은 더 많은 에포크가 아니라 데이터에서 나옵니다(교훈 3 및 4).
정답 보기
알약 데이터의 예시 답변: 10-epoch 기준 모델은 epoch 10에서 최고 성능을 보였고, mAP50-95는 최근 세 epoch 동안 0.028 상승했으며 검증 box loss는 1.367에서 1.045로 감소했습니다. 따라서 결론은 '계속'입니다. 처음부터 다시 학습하는 대신 fine-tuning하세요. My Models에서 기반 모델 v1-baseline을 선택하고, 5 epochs와 Advanced Settings의 optimizer: SGD, lr0: 0.001를 설정합니다. 콘솔에서 SGD(lr=0.001, momentum=0.937)을 확인하고, mAP50-95가 0.687에 도달했는지 확인하세요. 기본 GPU 사용 비용은 몇 센트 정도입니다. Start Training을 클릭하기 전에 비용 카드에서 예상 비용을 확인하고, 완료 후에는 Settings > Billing에서 실제 청구액을 확인하세요.