メインコンテンツへスキップ
W&B Automations API を使用すると、ML パイプライン内のイベントに応じて動作する自動ワークフローをプログラムで作成・管理できます。モデル性能のしきい値やアーティファクトの作成など、特定の条件が満たされたときにトリガーされるアクションを設定します。

主要なクラス

クラス説明
Automation設定を持つ、保存済みのAutomationインスタンスを表します。
NewAutomation新しいAutomationを作成するためのビルダークラスです。

イベント (トリガー)

イベント説明
OnRunMetricrun のメトリクスが、定義された条件 (しきい値、変化など) を満たしたときにトリガーされます。
OnCreateArtifactコレクション内に新しいアーティファクトが作成されたときにトリガーされます。
OnLinkArtifactアーティファクトがレジストリにリンクされたときにトリガーされます。
OnAddArtifactAliasアーティファクトにエイリアスが追加されたときにトリガーされます。

アクション

アクション説明
SendNotificationSlack またはその他の統合されたチャネルを介して通知を送信します。
SendWebhook外部サービスに HTTP webhook リクエストを送信します。
DoNothingautomation の設定をテストするためのプレースホルダーアクションです。

フィルター

フィルター説明
MetricThresholdFilterメトリクス値をしきい値と比較して run をフィルタリングします。
MetricChangeFilter時間の経過に伴うメトリクス値の変化に基づいて run をフィルタリングします。

一般的なユースケース

モデル性能の監視

  • モデルの精度がしきい値を下回った場合にアラートを送信する
  • トレーニング損失が横ばいになった場合にチームへ通知する
  • パフォーマンスメトリクスに基づいて再トレーニングのパイプラインをトリガーする

Artifacts の管理

  • 新しいモデルバージョンが作成されたときに通知する
  • Artifacts にタグが付いたときにデプロイワークフローを起動する
  • データセットが更新されたときに後続処理を自動化する

実験管理

  • 失敗したrunやcrashedしたrunのアラートを受け取る
  • 長時間実行される実験の完了時に通知を受け取る
  • 実験メトリクスの日次サマリーを送信する

インテグレーションのワークフロー

  • webhook を使って外部トラッキングシステムを更新
  • モデルレジストリをデプロイプラットフォームと Sync
  • W&B イベントに応じて CI/CD パイプラインを起動

使用例

次の例では、custom-metric というメトリクスが 10 を超えるたびに Slack に通知を送信する automation を作成します。custom-metric は、トレーニング中に wandb.Run.log({"custom-metric": value }) を使ってログすることを想定しています。
import wandb
from wandb.automations import OnRunMetric, RunEvent, SendNotification

api = wandb.Api()

project = api.project("<my-project>", entity="<my-team>")

# チームの最初のSlackインテグレーションを使用する
slack_hook = next(api.slack_integrations(entity="<my-team>"))

# トリガーイベントを作成する
event = OnRunMetric(
     scope=project,
     filter=RunEvent.metric("custom-metric") > 10,
)

# イベントに応答するアクションを作成する
action = SendNotification.from_integration(slack_hook)

# automationを作成する
automation = api.create_automation(
     event >> action,
     name="my-automation",
     description="'custom-metric' が10を超えるたびにSlackメッセージを送信する",
)
Automations API の使用方法の詳細については、Automations Guide をご覧ください。