Ultralytics YOLO27: 대기자 명단에 등록하세요.
Get Started
Ultralytics Platform으로 구축하기·학습 및 평가·레슨 5/10
강의중급

학습 실행 및 파인튜닝 실행 결과 확인

예산을 정한 클라우드 실행을 시작하고, 에포크별 곡선으로 실행 결과를 판단한 뒤, 기본 옵티마이저가 학습률을 무시하지 않도록 파인튜닝합니다.

클라우드 GPU는 실패할 실행을 계속하는 매 순간 비용이 발생합니다. 파인튜닝에서 가장 흔한 실수는 비용이 들지 않지만 실행 시간을 조용히 낭비하게 만듭니다. 기본 옵티마이저가 설정한 학습률을 무시하는 것입니다. 이 과정에서는 의료용 알약 데이터셋으로 실제 모델을 학습하고, 판단 기준에 따라 곡선을 해석한 다음, 설정이 실제로 적용되도록 파인튜닝합니다.

학습 성과

예상 비용을 알고 Platform 학습 실행을 시작하고, 곡선을 바탕으로 중단, 계속 진행 또는 유지 여부를 판단하며, 의도한 학습률을 적용해 이전 모델에서 파인튜닝할 수 있습니다.

속성 과정
이미 사용법을 알고 계신다면, 간단히 요약해 드리겠습니다.
  1. 새 모델을 클릭하고 YOLO26 기본 모델과 데이터셋을 선택한 다음 데이터셋 버전 저장을 활성화합니다.

  2. 특별한 이유가 없다면 에포크 100, 자동 배치, 이미지 크기 640을 유지하고 비용 추정치를 확인합니다.

  3. 실행 결과를 판단합니다. 마지막 에포크에서도 성능이 계속 개선되면 에포크를 추가하고, 검증 손실이 증가하면서 곡선이 평탄해지면 데이터를 수정합니다.

  4. 직접 지정한 lr0으로 파인튜닝하려면 optimizer도 SGD 또는 AdamW으로 설정합니다. auto는 lr0를 무시합니다.

  5. 로컬에서 project="username/project"과 ULTRALYTICS_API_KEY을 사용해 Platform으로 실행 결과를 스트리밍하며 학습합니다.

실습형

학습 실행 시작하기#

프로젝트 또는 데이터셋 페이지에서 새 모델을 클릭합니다. Cloud Training 탭에서 다음 설정을 진행합니다.

기본 모델로 yolo26n, COCO8 데이터셋, 에포크 100, 자동 배치 크기, RTX PRO 6000 GPU, 계정 잔액 및 예상 비용 $0.03이 선택된 Ultralytics Platform Train 새 모델 대화상자

설정 항목기본값변경하는 경우
기본 모델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 및 EnterpriseB200 (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 사용률, 메모리, 온도가 표시됩니다:

Ultralytics Platform 모델의 Train 탭. 네 개의 지표 요약 카드와 epoch별 precision, recall, mAP50-95 곡선이 표시된 Charts 하위 탭

Ultralytics Platform 모델의 Train 탭에서 System 하위 탭을 연 화면. GPU 모델이 표시된 호스트 카드와 epoch별 CPU 및 RAM 사용량 차트가 보임

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.pt

New 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.687

mAP50-95가 0.659에서 0.687로 상승했습니다. 다음 강의에서 이 후보 모델을 승격 심사에 부칠 예정입니다.

Ultralytics Platform의 Train New Model 대화상자에서 Advanced Settings를 확장한 화면. epochs, batch, imgsz, patience, seed 등의 학습 설정이 포함된 YAML 편집기가 표시됨

이전 실행을 재현하려면 모델 페이지의 Training Configuration 표를 열고 Copy JSON을 선택한 다음 Advanced Settings에 붙여 넣으세요. fine-tuning 가이드에서는 레이어 고정을, 하이퍼파라미터 튜닝 가이드에서는 체계적인 탐색을 다룹니다.

주의할 점#

파인튜닝 학습률이 적용되지 않습니다

증상: lr0: 0.001을 설정했는데 콘솔에는 ignoring 'lr0=...'이 표시됩니다. 해결 방법: optimizer: auto를 사용하면 학습 과정에서 옵티마이저와 학습률을 자동으로 선택합니다. lr0과 함께 optimizer을 SGD 또는 AdamW로 설정한 다음, 콘솔에서 optimizer: 행을 확인하세요.

GPU를 제대로 활용하지 못하면서 비용을 지불합니다

증상: 실행 전체 시간 동안 System 하위 탭에서 GPU 사용률이 80%보다 훨씬 낮게 표시됩니다. 해결 방법: 병목은 GPU가 아니라 데이터 로딩이므로 더 빠른 GPU를 사용하면 비용만 늘어납니다. 더 저렴한 GPU를 선택하거나 메모리가 허용하는 경우 배치 크기를 늘리세요.

돌이킬 수 없는 시점까지 학습하기

증상: 검증 손실이 조금씩 증가하는 동안 검증 mAP50-95가 10 에포크째 정체되어 있습니다. 해결 방법: 학습을 취소하세요. 지금까지의 최적 체크포인트는 보존되며, 다음 성능 향상은 더 많은 에포크가 아니라 데이터에서 나옵니다(교훈 3 및 4).

사용해 보기

데이터셋으로 YOLO26n 모델을 10~20 epochs 학습하세요(클라우드에서는 Save Dataset Version을 사용하고, 로컬에서는 project="username/project"으로 스트리밍). 해당 모델의 results.csv에서 read_run.py을 실행하거나 Charts 하위 탭에서 동일한 세 가지 항목을 확인하세요. 그런 다음 명시적인 optimizer 및 lr0를 설정해 fine-tuning하고, 콘솔의 optimizer: 줄에 설정한 값이 표시되는지 확인하세요.

완료 조건
다음 조건을 모두 충족하면 레슨을 완료한 것입니다.
  • Platform 프로젝트에 완료된 실행이 있으며, 데이터셋 버전 또는 ul:// 데이터셋과 연결되어 있습니다.

  • 실행 결과를 뒷받침하는 세 가지 숫자와 함께 실행에 대한 결론(중단, 계속 또는 유지)을 작성했습니다.

  • fine-tuning한 실행의 콘솔에는 optimizer=auto이 아니라 선택한 옵티마이저와 학습률이 표시됩니다.

정답 보기

알약 데이터의 예시 답변: 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에서 실제 청구액을 확인하세요.

다음 단계

기준 모델과 후보 모델을 준비했습니다. 다음에는 사전에 정의한 심사 기준을 사용해 후보 모델을 배포할 가치가 있는지 판단합니다.