メインコンテンツまでスキップ

モデルレジストリの変更でCI/CDイベントをトリガーする

自動化することで、ワークフローのステップ、例えば自動モデルテストやデプロイをトリガーすることができます。自動化を作成するには、イベントタイプに基づいて発生させたいアクションを定義します。

例えば、新しいバージョンの登録済みモデルを追加した時に、自動でモデルをGitHubにデプロイするトリガーを作成することができます。

備考

オートメーションのための参考チュートリアルをお探しですか?

  1. こちらのチュートリアルは、モデルの評価とデプロイのためのGitHubアクションをトリガーするオートメーションの設定方法を示しています
  2. こちらのビデオシリーズでは、Webhookの基本とW&Bでの設定方法を紹介しています
  3. こちらのデモでは、Sagemaker Endpointへのモデルデプロイのオートメーションの設定方法を詳述しています

イベントタイプ

イベントとは、W&Bエコシステム内で発生する変更のことです。モデルレジストリは、新しいアーティファクトを登録済みモデルにリンクするおよび登録済みモデルのバージョンに新しいエイリアスを追加するという2つのイベントタイプをサポートしています。

モデルバージョンのリンク方法についてはLink a model versionを、アーティファクトのエイリアスに関する情報についてはCreate a custom aliasを参照してください。

ヒント

新しいモデル候補をテストするためには、新しいアーティファクトを登録済みモデルにリンクするイベントタイプを使用します。deployのような特定のワークフローのステップを示すエイリアスを指定するには、登録済みモデルのバージョンに新しいエイリアスを追加するイベントタイプを使用します。

アクションタイプ

アクションは、あるトリガーの結果として発生する応答的な変化(内部または外部)です。モデルレジストリで作成できるアクションには2種類あります: webhooksW&B Launch Jobsです。

  • Webhooks: HTTPリクエストを使用してW&Bから外部のWebサーバーと通信します。
  • W&B Launch Job: Jobsは、ローカルデスクトップやKubernetes on EKS、Amazon SageMakerなどの外部コンピュートリソース上で新しいrunsを迅速に開始するための再利用可能で設定可能なテンプレートです。

以下のセクションでは、webhooksおよびW&B Launchを使用してオートメーションを作成する方法を説明します。

Webhookオートメーションの作成

W&B App UIを使用して、アクションに基づいてWebhookを自動化します。これを行うには、まずWebhookを確立し、その後Webhookオートメーションを設定します。

備考

Webhookのエンドポイントには、アドレスレコード(Aレコード)を持つエンドポイントを指定します。W&Bは、[0-255].[0-255].[0-255].[0.255]のような直接IPアドレスで公開されているエンドポイントやlocalhostとして公開されているエンドポイントへの接続をサポートしていません。この制限は、サーバーサイドリクエストフォージェリー(SSRF)攻撃やその他の関連する脅威ベクトルから保護するためです。

認証または認可のためにシークレットを追加する

シークレットはチームレベルの変数で、認証情報、APIキー、パスワード、トークンなどのプライベートな文字列を隠蔽するためのものです。W&Bは、プレーンテキストの内容を保護するために任意の文字列を保存する際にシークレットを使用することを推奨します。

Webhookでシークレットを使用するには、まずそのシークレットをチームのシークレットマネージャーに追加する必要があります。

備考
  • シークレットを作成、編集、削除できるのはW&B管理者のみです。
  • 送信先のHTTP POST リクエストがシークレットを使用しない場合は、このセクションをスキップしてください。
  • Azure、GCP、またはAWSデプロイメントでW&B Serverを使用している場合もシークレットが利用可能です。異なるデプロイメントタイプを使用している場合のシークレットの使用方法については、W&Bアカウントチームにお問い合わせください。

W&BがWebhookオートメーションで使用することを推奨するシークレットには2種類があります:

  • アクセストークン: 送信者を認証してWebhookリクエストを保護する
  • シークレット: ペイロードから送信されたデータの真正性と完全性を保証する

以下の手順に従ってWebhookを作成してください:

  1. W&B App UIに移動します。
  2. Team Settingsをクリックします。
  3. ページをスクロールしてTeam secretsセクションを見つけます。
  4. New secretボタンをクリックします。
  5. モーダルが表示されます。Secret nameフィールドにシークレットの名前を入力します。
  6. Secretフィールドにシークレットを追加します。
  7. (任意) Webhookが追加のシークレットキーまたはトークンを必要とする場合は、ステップ5と6を繰り返して別のシークレット(例えばアクセストークン)を作成します。

Webhookを設定する際に使用するシークレットを指定します。詳細については、Configure a webhookセクションを参照してください。

ヒント

シークレットを作成すると、W&Bワークフロー内で$を使用してそのシークレットにアクセスできます。

注意

W&B Serverでシークレットを使用する場合の考慮事項:

セキュリティ要件を満たすセキュリティ対策を構成するのはユーザーの責任です。

W&Bは、シークレットをAWS、GCP、またはAzureが提供するクラウドシークレットマネージャーのW&Bインスタンスに保存することを強く推奨します。AWS、GCP、およびAzureが提供するシークレットマネージャーは、高度なセキュリティ機能を備えています。

シークレットストアのバックエンドとしてKubernetesクラスターを使用することは推奨しません。Kubernetesクラスターの使用を検討するのは、AWS、GCP、またはAzureのクラウドシークレットマネージャーのW&Bインスタンスを使用できず、クラスターを使用する場合に発生する可能性のあるセキュリティ脆弱性を防ぐ方法を理解している場合に限ります。

Webhookの設定

Webhookを使用する前に、まずW&B App UIでそのWebhookを設定します。

備考
  1. W&B App UIに移動します。
  2. Team Settingsをクリックします。
  3. ページをスクロールしてWebhooksセクションを見つけます。
  4. New webhookボタンをクリックします。
  5. NameフィールドにWebhookの名前を入力します。
  6. URLフィールドにWebhookのエンドポイントURLを入力します。
  7. (任意) Secretドロップダウンメニューから、Webhookペイロードを認証するために使用するシークレットを選択します。
  8. (任意) Access tokenドロップダウンメニューから、送信者を認証するために使用するアクセストークンを選択します。
  9. (任意) Access tokenドロップダウンメニューから、Webhookを認証するために必要な追加のシークレットキーまたはトークンを選択します(例えばアクセストークン)。
注記

POSTリクエストにおけるシークレットとアクセストークンの指定場所については、Webhookのトラブルシューティングセクションを参照してください。

Webhookの追加

Webhookが設定され(任意でシークレットも設定されている)場合、Model Registry Appにアクセスします https://wandb.ai/registry/model

  1. Event typeドロップダウンからイベントタイプを選択します。
  2. (任意) A new version is added to a registered modelイベントを選択した場合、Registered modelドロップダウンから登録されたモデルの名前を指定します。
  3. Action typeドロップダウンからWebhooksを選択します。
  4. Next stepボタンをクリックします。
  5. WebhookドロップダウンからWebhookを選択します。
  6. (任意) JSONエクスプレッションエディタにペイロードを入力します。一般的なユースケースの例については、Example payloadセクションを参照してください。
  7. Next stepをクリックします。
  8. Automation nameフィールドにWebhookオートメーションの名前を入力します。
  9. (任意) Webhookの説明を入力します。
  10. Create automationボタンをクリックします。

ペイロードの例

一般的なユースケースに基づいたペイロードの例を以下のタブで示します。例の中で、ペイロードパラメータの条件オブジェクトを指す次のキーが参照されています:

  • ${event_type} アクションをトリガーしたイベントの種類を指します。
  • ${event_author} アクションをトリガーしたユーザーを指します。
  • ${artifact_version} アクションをトリガーした特定のアーティファクトバージョンを指します。アーティファクトインスタンスとして渡されます。
  • ${artifact_version_string} アクションをトリガーした特定のアーティファクトバージョンを指します。文字列として渡されます。
  • ${artifact_collection_name} アーティファクトバージョンがリンクされているアーティファクトコレクションの名前を指します。
  • ${project_name} アクションをトリガーしたミューテーションを所有するプロジェクトの名前を指します。
  • ${entity_name} アクションをトリガーしたミューテーションを所有するエンティティの名前を指します。
備考

アクセストークンに必要な権限があることを確認して、GHAワークフローをトリガーしてください。詳細については、こちらのGitHubドキュメントを参照してください。

W&Bからリポジトリディスパッチを送信してGitHubアクションをトリガーします。例えば、onキーのトリガーとしてリポジトリディスパッチを受け入れるワークフローがあるとします:

on:
repository_dispatch:
types: BUILD_AND_DEPLOY

リポジトリのペイロードは次のようになります:

{
"event_type": "BUILD_AND_DEPLOY",
"client_payload":
{
"event_author": "${event_author}",
"artifact_version": "${artifact_version}",
"artifact_version_string": "${artifact_version_string}",
"artifact_collection_name": "${artifact_collection_name}",
"project_name": "${project_name}",
"entity_name": "${entity_name}"
}
}

注記

Webhookペイロード内のevent_typeキーは、GitHubワークフローファイルのtypesフィールドと一致する必要があります。

テンプレート文字列の内容と配置は、オートメーションが設定されているイベントまたはモデルバージョンによって異なります。${event_type}は"LINK_ARTIFACT"または"ADD_ARTIFACT_ALIAS"としてレンダリングされます。以下は例のマッピングです:

${event_type} --> "LINK_ARTIFACT"または"ADD_ARTIFACT_ALIAS"
${event_author} --> "<wandb-user>"
${artifact_version} --> "wandb-artifact://_id/QXJ0aWZhY3Q6NTE3ODg5ODg3"
${artifact_version_string} --> "<entity>/model-registry/<registered_model_name>:<alias>"
${artifact_collection_name} --> "<registered_model_name>"
${project_name} --> "model-registry"
${entity_name} --> "<entity>"

テンプレート文字列を使用して、W&BからGitHub Actionsやその他のツールへ動的にコンテキストを渡すことができます。それらのツールがPythonスクリプトを呼び出すことができる場合、W&B APIを通じて登録モデルアーティファクトを消費することができます。

リポジトリディスパッチについて詳しくは、GitHub Marketplaceの公式ドキュメントを参照してください。

Webhook Automations for Model EvaluationWebhook Automations for Model DeploymentのYouTubeビデオを参照して、モデル評価とデプロイのためのオートメーションを作成するステップバイステップのビデオをご覧ください。

このW&Bレポートを参照して、GitHub Actions Webhook Automation for Model CIの使用方法を学びます。このGitHubリポジトリをチェックして、Modal Labs WebhookでModel CIを作成する方法を学びましょう。

Webhookのトラブルシューティング

W&B App UIまたはBashスクリプトを使用してインタラクティブにWebhookをトラブルシュートします。Webhookを新しく作成する際や既存のWebhookを編集する際にトラブルシュートできます。

W&B App UIを使用してインタラクティブにWebhookをテストします。

  1. W&B Team Settingsページに移動します。
  2. Webhooksセクションまでスクロールします。
  3. Webhookの名前の横にある水平の3つのドット(ミートボールアイコン)をクリックします。
  4. Testを選択します。
  5. 表示されたUIパネルにPOSTリクエストをフィールドに貼り付けます。
  6. Test webhookをクリックします。

W&B App UI内で、W&Bはエンドポイントによって行われたレスポンスを投稿します。

Testing Webhooks in Weights & BiasesのYouTubeビデオを参照して、現実世界の例を確認してください。

Launchオートメーションを作成する

自動的にW&Bジョブを開始します。

備考

このセクションでは、すでにジョブ、キューを作成しており、アクティブなエージェントが待機中であることを前提としています。詳細については、W&B Launch ドキュメントを参照してください。

  1. Event typeドロップダウンからイベントタイプを選択します。サポートされているイベントについてはEvent typeセクションを参照してください。
  2. (任意) A new version is added to a registered modelイベントを選択した場合、Registered modelドロップダウンから登録モデルの名前を指定します。
  3. JobsAction typeドロップダウンから選択します。
  4. JobドロップダウンからW&B Launchジョブを選択します。
  5. Job versionドロップダウンからバージョンを選択します。
  6. (任意) 新しいジョブのためのハイパーパラメーターの上書きを指定します。
  7. Destination projectドロップダウンからプロジェクトを選択します。
  8. ジョブをキューに追加するキューを選択します。
  9. Next stepをクリックします。
  10. Automation nameフィールドにWebhookオートメーションの名前を入力します。
  11. (任意) Webhookの説明を入力します。
  12. Create automationボタンをクリックします。

この例を参照してくださいレポートで、W&B Launchを使用してモデルCIのためのオートメーションを作成する方法をご確認ください。

オートメーションを表示する

W&B App UIから登録モデルに関連付けられたオートメーションを表示する。

  1. Model Registry Appに移動します。
  2. 登録モデルを選択します。
  3. ページの下部にスクロールしてAutomationsセクションを見つけます。

Automationsセクションには、選択したモデルに対して作成されたオートメーションの次のプロパティが表示されます:

  • Trigger type: 設定されたトリガーのタイプ。
  • Action type: オートメーションをトリガーするアクションタイプ。利用可能なオプションはWebhooksとLaunchです。
  • Action name: オートメーションを作成する際に指定したアクション名。
  • Queue: ジョブがキューに追加されたキューの名前。このフィールドは、Webhookアクションタイプを選択した場合は空白のままです。

オートメーションを削除する

オートメーションに関連付けられたモデルを削除します。アクションが完了する前にオートメーションを削除した場合でも、進行中のアクションには影響ありません。

Was this page helpful?👍👎