YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

コールバック

コールバックがUltralytics YOLO26のトレーニングをどのように最適化するかを知りましょう。早期停止、チェックポイント、カスタムロギングを実装して、AIワークフローを強化する方法を学びましょう。

ソフトウェアエンジニアリングおよび 人工知能 (AI)の分野において、コールバックとは、他のコードに引数として渡され、指定されたタイミングでその引数(コールバック)を実行することが期待される実行可能なコードの一部です。 ディープラーニング (DL)フレームワークの特定のコンテキストでは、コールバックは、コアのトレーニングコード自体を変更することなく、 モデルトレーニングループの動作をカスタマイズできる不可欠なツールです。これらは、 エポックの開始または終了、トレーニングバッチ、あるいはトレーニングセッション全体など、トレーニングプロセスのさまざまな段階で特定のアクションを実行する自動トリガーとして機能します。

機械学習におけるコールバックの役割

複雑なニューラルネットワークの学習には、数時間、あるいは数日かかることがあります。コールバックがない場合、学習プロセスは本質的に完了まで実行される「ブラックボックス」であり、多くの場合、手動での監視が必要です。コールバックは可観測性と制御を導入し、システムがリアルタイムのパフォーマンスメトリクスに基づいて自己調整することを可能にします。

PyTorchTensorFlowのような高レベルライブラリを使用する場合、コールバックは最適化アルゴリズムにロジックを注入する方法を提供します。例えば、モデルがうまく学習している場合、コールバックは現在の状態を保存するかもしれません。学習が停止した場合、コールバックはリソースを節約するためにプロセスを停止するかもしれません。これにより、機械学習(ML)ワークフローがより効率的で堅牢になります。

一般的なアプリケーションと実世界の例

コールバックは多用途であり、モデルのモニタリングと最適化の間に幅広いタスクに使用できます。

  • 早期停止: 最も一般的な用途の一つは、早期停止です。このコールバックは、検証データの損失など、特定のメトリックを監視します。設定されたエポック数にわたって損失が減少しなくなった場合、コールバックは学習を停止します。これにより、過学習が防止され、モデルが学習データを記憶するのではなく、新しいデータにうまく汎化することが保証されます。
  • モデルチェックポイント: 長時間のトレーニング実行では、ハードウェア障害は壊滅的となる可能性があります。チェックポイントコールバックは、モデルの重みを定期的に(例:各エポックごと)保存するか、モデルが精度平均平均精度 (mAP)のようなメトリクスで新しい「最良」スコアを達成した場合にのみ保存します。これにより、常に最高のパフォーマンスを発揮するモデルの保存バージョンが手元にあることが保証されます。
  • 学習率スケジューリング: 学習率は、モデルの重みが更新されるたびに、推定された誤差に応じてモデルがどれだけ変化するかを制御します。コールバックは、この学習率を動的に調整し、学習が停滞したときにそれを減少させることで、モデルが最適な解に収束するのを助けます。これは学習率減衰とよく呼ばれる手法です。
  • ロギングと可視化: コールバックは、実験追跡ツールとの統合によく使用されます。これらは、TensorBoardMLflowのようなダッシュボードにメトリクスをストリーミングし、データサイエンティストが損失関数や性能グラフをリアルタイムで可視化できるようにします。

Ultralytics YOLOでのコールバックの実装

Ultralyticsライブラリは堅牢なコールバックシステムをサポートしており、ユーザーはYOLO26のようなモデルのトレーニング中のイベントにフックできます。これは、カスタムロギングや制御ロジックを必要とするUltralytics Platformでワークフローを管理するユーザーにとって特に有用です。

以下は、Python APIを使用して、各トレーニングエポックの終わりにメッセージを出力するカスタムコールバックを定義および登録する方法の簡潔な例です。

from ultralytics import YOLO


# Define a custom callback function
def on_train_epoch_end(trainer):
    """Callback function to execute at the end of each training epoch."""
    print(f"Epoch {trainer.epoch + 1} complete. Current Fitness: {trainer.fitness}")


# Load the YOLO26 model (latest generation)
model = YOLO("yolo26n.pt")

# Register the custom callback to the model
model.add_callback("on_train_epoch_end", on_train_epoch_end)

# Train the model with the callback active
model.train(data="coco8.yaml", epochs=3)

コールバック vs. フック

関連性はあるものの、コールバックとフックを区別することは有用です。PyTorchのようなフレームワークでは、フックは通常、フォワードパスまたはバックワードパス中に勾配と出力を検査または変更するために、特定のtensor演算またはニューラルネットワーク層にアタッチされる低レベルな関数です。対照的に、コールバックは通常、数学的計算グラフ自体ではなく、トレーニングループイベント(開始、終了、バッチ処理)に結びつく高レベルな抽象化です。

その他の資料

トレーニングワークフローの最適化方法について理解を深めたい方にとって、ハイパーパラメータチューニングの探求は論理的な次のステップです。さらに、コンピュータービジョン (CV)の基盤となるタスク、例えばオブジェクト検出インスタンスセグメンテーションを理解することで、コールバックを介した正確なトレーニング制御が必要な理由が明確になります。これらのプロセスをエンタープライズグレードで管理するために、Ultralytics Platformは、これらのコールバック駆動の動作の多くを自動化する統合ソリューションを提供します。

共にAIの未来を築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。