トレーニング、実行結果の確認、ファインチューニング
予算を決めてクラウド実行を開始し、エポックごとの曲線から実行結果を判断します。また、デフォルトのオプティマイザーに学習率を無視されないようにファインチューニングします。
クラウドGPUは、失敗が明らかな実行を続ける間も毎分課金されます。また、ファインチューニングで最もよくあるミスは、費用がかからないものの、実行を気付かないうちに無駄にします。デフォルトのオプティマイザーが設定した学習率を無視することです。このレッスンでは、医薬品錠剤データセットで実際のモデルをトレーニングし、判断基準に基づいて曲線を読み取り、設定が実際に適用されるようにファインチューニングします。
実践的
実行を開始する#
プロジェクトまたはデータセットのページでNew Modelをクリックします。Cloud Trainingタブで次の設定を行います。

| 設定項目 | デフォルト | 変更する場合 |
|---|---|---|
| ベースモデル | Officialから選択します(YOLO26を推奨) | ファインチューニングの場合:My Modelsから以前の実行を選択します |
| データセット | — | 実行をデータに固定するため、必ずSave Dataset Versionを有効にします |
| エポック数 | 100 | スモークテスト(10~20)または非常に大規模なデータセット |
| バッチサイズ | -1(GPUメモリに合わせて自動調整) | 2つの実行結果を厳密に比較する必要がある場合 |
| 画像サイズ | 640 | 対象物が小さい場合は大きくします(スライダーは1280まで、YAMLエディターでは4096まで設定可能です) |
| 詳細設定 | デフォルト | YAMLで設定する50個以上のmodel.train()引数。オプティマイザー、学習率、データ拡張などが含まれます |
引数はローカルでmodel.train(...)に渡すものと同じです。モデルページには後で、デフォルト以外の値を含むコピー可能なyolo trainコマンドが表示されます。
GPUを選び、実行予算を決める#
| ティア | 例(VRAM、1時間あたりの料金) | 適した用途 |
|---|---|---|
| 低 | 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でYOLO26nを1,000枚の画像、100エポックで学習すると約$0.23、RTX 4090より約3.4倍高速なH100 SXMでYOLO26sを5,000枚の画像、100エポックで学習すると約$1.56です。請求は実際のGPU使用時間に基づきます。GPUが起動した後は、完了・キャンセル・失敗した実行にも料金が発生します。実行には見積もり額(GPU時間で最低15分)をカバーする残高が必要で、残高がマイナスになると実行中のジョブは停止するため、長時間のジョブでは Settings > Billing で自動チャージを有効にしてください。RTX PRO 6000より安いGPUを選択すると、Ultralyticsが管理するキャパシティに空きがある場合、選択した料金のままでRTX PRO 6000へ無料でアップグレードされることがあります。
判断の目安:新しいデータセットは、まずデフォルトGPUで10~20エポックのスモークテストを実施してください。実行に数時間かかり、誰かが結果を待っている場合は、H100またはH200に切り替えてください。GPU使用率が低い状態が続く場合は、より高速なGPUではなく、より安価なGPUを選んでください。
実行状況を確認する#
モデルページの Train タブには、3つのサブタブから情報がストリーミングされます。Charts にはメトリクス、学習損失と検証損失、エポックごとの学習率がプロットされます。Console には直近2,000行が保持され、トレースバックまたはCUDAのメモリ不足エラーが発生すると実行が直ちに停止します。System にはGPU使用率、メモリ、温度が表示されます。


4時間にわたって何も報告されない実行は、失敗としてマークされます。ベストチェックポイントは定期的にアップロードされるため、実行をキャンセルしても、その時点までのベストエポックが保持されます。また、実行の完了や失敗を知らせる 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で実行できます。ローカルでは、ノートPCのCPUで imgsz=320 を使い、2分もかかりませんでした。実行の results.csv には、Chartsサブタブにプロットされるエポックごとの系列が格納されます。数行のコードで「曲線を確認する」をルールにできます。
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ベストエポックは最後のエポックで、mAP50-95は直近3エポックで2.8ポイント上昇し、検証損失はまだ低下しています。この10エポックの実行は早期に停止しており、さらに長く学習するかファインチューニングすると改善が見込めます。Platformの実行では、Chartsサブタブで同じ3つのシグナルを確認してください。ベストエポックの位置、直近の改善幅、検証損失の推移です。
以前のモデルからファインチューニングする#
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 を指定してpillモデルをさらに5エポックファインチューニングすると、次のログが出力されます。
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に貼り付けます。ファインチューニングガイドではレイヤーの凍結について、ハイパーパラメータチューニングガイドでは体系的な探索について説明しています。
よくある落とし穴#
症状: lr0: 0.001 を設定したのに、コンソールには ignoring 'lr0=...' と表示されます。対処法: optimizer: auto を使用すると、トレーニング時にオプティマイザーと学習率が自動的に選択されます。lr0 と合わせて、optimizer を SGD または AdamW に設定し、コンソールの optimizer: の行を確認してください。
症状: 実行中、System サブタブで GPU 使用率が 80% を大きく下回っています。対処法: ボトルネックは GPU ではなくデータの読み込みなので、より高速な GPU にすると費用が増えるだけです。より安価な GPU を選ぶか、メモリに余裕があればバッチサイズを大きくしてください。
症状: 検証 mAP50-95 が 10 エポックにわたって横ばいなのに、検証損失は徐々に増えています。対処法: キャンセルしてください。それまでの最良チェックポイントは保持されます。次の改善は、エポックを増やすことではなく、データ(レッスン 3 と 4)から得られます。
解答を表示
pillモデルでの回答例:10エポックのベースラインはエポック10でピークに達し、mAP50-95は0.659、直近3エポックで+0.028、検証ボックス損失は1.367から1.045に低下しています。そのため、判定は「継続」です。最初から再学習するのではなく、My Modelsにあるベースモデル v1-baseline を使い、5エポック、Advanced Settingsの optimizer: SGD と lr0: 0.001 を指定してファインチューニングします。コンソールで SGD(lr=0.001, momentum=0.937) を確認でき、mAP50-95は0.687に達します。デフォルトGPUでの費用は数セントです。Start Trainingをクリックする前にコストカードで見積もりを確認でき、実際の請求額は後から Settings > Billing で確認できます。