メインコンテンツへスキップ
run がクラッシュしたときや、カスタムトリガーに応じて、Slack またはメールでアラートを作成できます。たとえば、トレーニングループの gradient が発散し始めたとき (NaN を返したとき) や、ML パイプラインの step が完了したときにアラートを作成できます。アラートは、個人のプロジェクトとチームのプロジェクトを含め、run を初期化したすべてのプロジェクトに適用されます。 設定すると、Slack (またはメール) で W&B Alerts のメッセージを確認できます。
Slack アラートの設定
W&B Alerts を使用するには、コードに run.alert() を追加する必要があります。コードを変更しなくても、Automations を使えば、artifact のバージョンが作成されたときや、run metric がしきい値に達したとき、またはしきい値を超えて変化したときなど、W&B 内のイベントに基づいて Slack に通知する別の方法を利用できます。たとえば、automation を使うと、新しいバージョンが作成されたときに Slack チャンネルに通知したり、artifact に production エイリアスが追加されたときに自動テスト用 webhook を実行したり、run の loss が許容範囲内にある場合にのみ検証ジョブを開始したりできます。Automations の概要を読むか、automation を作成してください。
以下のガイドは、Multi-tenant Cloud のアラートにのみ適用されます。Private Cloud 上の W&B Server または W&B 専用クラウドを使用している場合は、W&B Server で Slack アラートを設定する を参照して Slack アラートを設定してください。

run ライフサイクルの自動アラート

W&B では、コードを変更しなくても、run の完了時やクラッシュ時に通知を受け取れます。User SettingsAlerts セクションまでスクロールし、次をオンにします。
  • run が正常に完了したときに通知を受け取るには、Run finished をオンにします。
  • run.finish() を呼び出さずに run が終了したときに通知を受け取るには、Run crashed をオンにします。
これらのトグルはユーザーごとの設定です。Run finished アラートは、Jupyter ノートブック内の run には送信されません。ノートブックでは、完了通知に run.alert() を使用してください。 アラートの配信先はメールまたは Slack で、同じ User Settings パネルで設定します。この配信設定は Scriptable Alerts と共通です。Scriptable Alerts については以下のセクションで説明します。これにより、メトリクスのしきい値や NaN の損失など、カスタム条件に基づいてアラートをトリガーできます。 run.alert() を使用して Scriptable Alerts を設定するには、次の手順を実行してください。詳細は以下のセクションで説明します。
  1. W&B の User Settings で Alerts をオンにします。
  2. コードに run.alert() を追加します。
  3. 設定をテストします。

1. W&B User Settingsでアラートを有効にする

User Settingsで、以下を行います。
  • Alerts セクションまでスクロールします
  • run.alert() からのアラートを受け取るには、Scriptable run alerts を有効にします
  • アラートの送信先となる Slack チャンネルを選ぶには、Connect Slack を使用します。アラートを非公開に保てるため、Slackbot チャンネルを推奨します。
  • Email は、W&B の登録時に使用したメールアドレスに送信されます。これらのアラートで受信トレイがいっぱいにならないよう、メール側でフィルターを設定してフォルダーに振り分けることをおすすめします。
この設定が必要なのは、初めて W&B Alerts を設定するとき、またはアラートの受信方法を変更したいときだけです。
W&B User SettingsのAlerts設定

2. コードに run.alert() を追加する

run.alert() をトリガーしたい箇所に、コード (Notebook または Python スクリプト) へ追加します
import wandb

with wandb.init() as run:
    run.alert(title="High Loss", text="Loss is increasing rapidly")

3. 設定をテストする

Slack またはメールでアラートメッセージを確認してください。どちらにも届いていない場合は、User SettingsScriptable Alerts のメールまたは Slack が有効になっていることを確認してください。

このシンプルなアラートは、accuracy がしきい値を下回ると警告を送信します。この例では、アラートは少なくとも 5 分以上の間隔を空けて送信されます。
import wandb
from wandb import AlertLevel

with wandb.init() as run:

    if acc < threshold:
        run.alert(
            title="Low accuracy",
            text=f"Accuracy {acc} is below the acceptable threshold {threshold}",
            level=AlertLevel.WARN,
            wait_duration=300,
        )

ユーザーをタグ付けまたはメンションする

アラートのタイトルまたは本文で自分や同僚をタグ付けするには、SlackユーザーIDの前にアットマーク @ を付けます。SlackユーザーIDは、Slackのプロフィールページで確認できます。
run.alert(title="Loss is NaN", text=f"Hey <@U1234ABCD> loss has gone to NaN")

チームアラートを設定する

チーム管理者は、チーム設定ページ wandb.ai/teams/your-team でチーム向けのアラートを設定できます。 チームアラートはチームの全員に適用されます。アラートを非公開に保てるため、W&B では Slackbot チャンネルの使用を推奨しています。

アラートの送信先の Slack チャンネルを変更する

アラートの送信先チャンネルを変更するには、Slack の接続を解除 をクリックしてから、もう一度接続してください。再接続後に、別の Slack チャンネルを選択します。