用語集

コールバック

機械学習におけるコールバックの本質的な役割を探る-精度、柔軟性、効率を向上させるためにモデル学習を監視、制御、自動化するツール。

Ultralytics HUB で
を使ってYOLO モデルをシンプルにトレーニングする。

さらに詳しく

コールバックとは、機械学習モデルのトレーニングなど、より大きなプロセスの実行中に特定の段階で実行される関数や関数のセットのことである。AIやMLの文脈では、コールバックは、内部状態を監視し、トレーニングループの動作に影響を与え、トレーニングフレームワークのコアコードを変更することなくアクションを自動化するための強力なメカニズムを提供します。コールバックは学習パイプラインへのフックとして機能し、開発者はエポック、バッチ、または学習プロセス全体の開始時や終了時など、事前に定義された時点でカスタムロジックを注入することができます。

機械学習におけるコールバックを理解する

モデルのトレーニング中、様々なイベントが順次発生する。 エポック の開始、バッチの処理、バリデーションの発生、エポックの終了、そしてトレーニングの終了である。コールバックを使用すると、これらのイベントに関連する特定のアクションをトリガーすることができます。例えば、検証精度が向上するたびにモデルの重みを保存したり、メトリクスを次のような可視化ツールにログ出力したりすることができます。 テンソルボードあるいは、モデルの改善が止まったら早期にトレーニングを中止する。次のようなフレームワークがある。 ケラス などのライブラリがある。 ultralytics Python パッケージは、柔軟性と拡張性を提供するためにコールバックを多用している。

Ultralyticsコールバック

Ultralytics トレーニングエンジンは、トレーニング中のさまざまな時点でトリガーされるコールバックシステムを提供します。 トレーニング, バリデーション, 予測そして 輸出 プロセスである。これらのイベントには以下が含まれる。 on_train_start, on_epoch_end, on_fit_epoch_end (検証を含む)、 on_batch_end, on_train_endその他多数。ユーザーはカスタム・コールバックを定義して、詳細なログの記録、通知の送信、次のようなプラットフォームとのやり取りなどのアクションを実行できる。 Ultralytics HUB.

from ultralytics import YOLO
from ultralytics.engine.callbacks import BaseCallback

# Define a simple custom callback

class MyCallback(BaseCallback):
def on_epoch_end(self, trainer): # This code will run at the end of each epoch
print(f"Epoch {trainer.epoch + 1} finished.") # Example: Access metrics like validation loss
if trainer.metrics:
val_loss = trainer.metrics.get('val/loss', None) # Example metric key, adjust as needed
if val_loss is not None:
print(f"Validation loss: {val_loss:.4f}")

# Load a model

model = YOLO('yolov8n.yaml').load('yolov8n.pt') # build from YAML and transfer weights

# Initialize your callback

my_callback = MyCallback()

# Add the callback to the training process

# Note: Direct addition via API might vary; often done via configuration or extending Trainer

# For demonstration, assume a mechanism exists like adding to a list or overriding methods.

# In Ultralytics, callbacks are often managed internally or via specific integrations.

# A conceptual example of how one might use it if Trainer exposed callbacks directly:

# trainer.add_callback(my_callback) # Hypothetical method

# Train the model (the callback methods are triggered automatically by the Trainer)

# The actual mechanism involves the Trainer checking for registered callbacks for specific events.

try: # This is a simplified representation. Callbacks are typically integrated deeper. # We can simulate adding callback logic by overriding trainer methods or using signals if available. # The Ultralytics framework automatically handles registered internal and integration callbacks. # To add custom behaviour like this, you might need to modify the source or use provided extension points.
print("Training started (callback logic would be triggered internally)...") # Example: Manually trigger for demonstration if needed for testing callback logic # my_callback.on_epoch_end(trainer_mock_object)
results = model.train(data='coco128.yaml', epochs=3, imgsz=640) # Training triggers internal events
print("Training finished.")

except Exception as e:
print(f"An error occurred: {e}")

# Example of using an existing integration callback (e.g., TensorBoard)

# This is usually enabled via arguments or configuration:

# results = model.train(data='coco128.yaml', epochs=3, imgsz=640, tensorboard=True)


実世界での応用

コールバックは、MLモデル開発において多くの便利な機能を実現します:

  • モデルのチェックポイント:モデル(またはその重みのみ)を定期的に、または検証データセットでのパフォーマンスが向上するたびに自動的に保存します。これにより、進捗を失うことなく、最適なバージョンのモデルを取り出すことができます。フレームワークには、このためのコールバックが組み込まれていることが多い。
  • 早期停止:特定のメトリック(検証損失や精度など)を監視し、あらかじめ定義されたエポック数(忍耐)の間、メトリックが改善しなくなった場合に学習プロセスを停止する。これにより、オーバーフィッティングを防ぎ、計算リソースを節約することができる。
  • 学習率のスケジューリング:学習中に学習率を動的に調整すること。例えば、モデルの改善が頭打ちになったときに学習率を下げることで、より効果的に収束させることができる。
  • ロギングと可視化: TensorBoardのような監視ツールや、以下のようなクラウドプラットフォームに、ログとメトリクス(損失や精度など)を送信します。 Weights & Biasesなどのクラウドプラットフォームに送信します。Ultralytics 、W&Bと Comet MLとのシームレスな統合を提供します。
  • リソースモニタリング:トレーニング中のハードウェア使用率GPUCPU GPU使用率、メモリ)を追跡し、ボトルネックの特定やリソース割り当ての最適化を行う。

コールバックは、柔軟で自動化された観測可能な機械学習ワークフローを作成するための基本であり、開発者が学習プロセスを効率的に拡張・カスタマイズすることを可能にします。コールバックは一般的なソフトウェアのイベントリスナーとは少し異なり、MLのトレーニングと評価の特定のライフサイクルステージに密接に統合されています。

すべて読む