W&Bでは、W&B Multi-tenant Cloud や W&B Dedicated Cloud デプロイメントタイプのような、フルマネージドなデプロイオプションを推奨しています。W&Bのフルマネージドサービスはシンプルかつ安全に利用でき、設定は最小限、あるいは全く必要ありません。
- VPC
- Cloud SQL for MySQL
- Cloud Storage バケット
- Google Kubernetes Engine
- KMS 暗号化キー
- ロードバランサー
- Redis 用の Memory Store
- Pub/Sub メッセージングシステム
必要な権限
Terraform を実行するアカウントは、使用する Google Cloud プロジェクトにおいてroles/owner ロールを持っている必要があります。
一般的な手順
このセクションの手順は、このドキュメントで扱うすべてのデプロイオプションに共通するものです。-
開発環境を準備します。
- Terraform をインストールします。
- 使用するコードを管理する Git リポジトリを作成することを推奨しますが、ローカルにファイルを保持することも可能です。
- Google Cloud Console でプロジェクトを作成します。
- Google Cloud で認証を行います(事前に gcloud のインストール を済ませてください)。
gcloud auth application-default login
-
terraform.tfvarsファイルを作成します。tfvarsファイルの内容はインストールタイプに応じてカスタマイズ可能ですが、推奨される最小構成は以下の例のようになります。ここで定義する変数は、デプロイ前に決定しておく必要があります。namespace変数は、Terraform によって作成されるすべてのリソースのプレフィックスとなる文字列になります。subdomainとdomain_nameの組み合わせが、W&B が設定される FQDN になります。上記の例では、W&B の FQDN はwandb-gcp.wandb.mlとなります。 -
variables.tfファイルを作成します。terraform.tfvarsで設定した各オプションに対して、Terraform では対応する変数宣言が必要です。
デプロイ - 推奨構成(所要時間:約20分)
これは最もシンプルなデプロイオプションで、すべての「必須」コンポーネントを作成し、Kubernetes クラスター に最新バージョンの W&B をインストールします。
-
main.tfを作成します。 一般的な手順 でファイルを作成したのと同じディレクトリーに、以下の内容でmain.tfファイルを作成します。 -
W&B をデプロイします。
W&B をデプロイするには、以下のコマンドを実行します。
Redis キャッシュを使用したデプロイ
別のデプロイオプションとして、Redis を使用して SQL クエリをキャッシュし、Experiments のメトリクスを読み込む際のアプリケーションの応答速度を向上させることができます。
キャッシュを有効にするには、推奨される デプロイセクション で指定したのと同じ main.tf ファイルに、オプション create_redis = true を追加します。
外部キューを使用したデプロイ
3つ目のデプロイオプションは、外部のmessage broker を有効にすることです。W&B にはブローカーが組み込まれているため、これはオプションです。このオプションによってパフォーマンスが向上するわけではありません。
メッセージブローカーを提供する Google Cloud リソースは Pub/Sub です。これを有効にするには、推奨される デプロイセクション で指定したのと同じ main.tf に、オプション use_internal_queue = false を追加します。
その他のデプロイオプション
これら3つのデプロイオプションを組み合わせて、すべての設定を同じファイルに追加することも可能です。 Terraform Module は、標準オプションやデプロイ - 推奨構成 にある最小限の設定と組み合わせて使用できる複数のオプションを提供しています。
手動設定
Google Cloud Storage バケットを W&B のファイルストレージバックエンドとして使用するには、以下を作成する必要があります。Pub/Sub トピックとサブスクリプションの作成
以下の手順に従って、Pub/Sub トピックとサブスクリプションを作成します。- Google Cloud Console 内の Pub/Sub サービスに移動します。
- トピックを作成 を選択し、トピックの名前を入力します。
- ページの下部で サブスクリプションを作成 を選択します。配信タイプ が プル に設定されていることを確認してください。
- 作成 をクリックします。
pubsub.admin ロールを持っていることを確認してください。詳細は https://cloud.google.com/pubsub/docs/access-control#console を参照してください。
Storage バケットの作成
- Cloud Storage バケット ページに移動します。
- バケットを作成 を選択し、バケットの名前を入力します。ストレージクラス は Standard を選択してください。
- 前の手順で作成したバケットへのアクセス権
- このバケットに対する
storage.objectAdminロール。詳細は https://cloud.google.com/storage/docs/access-control/using-iam-permissions#bucket-add を参照してください。
インスタンスは、署名付きファイル URL を作成するために、Google Cloud の
iam.serviceAccounts.signBlob 権限も必要です。権限を有効にするには、インスタンスが実行されているサービスアカウントまたは IAM メンバーに Service Account Token Creator ロールを追加してください。- CORS アクセスを有効にします。これはコマンドラインからのみ行えます。まず、以下の CORS 設定を含む JSON ファイルを作成します。
gcloudがインストールされており、正しい Google Cloud プロジェクトにログインしていることを確認します。- 次に、以下を実行します。
Pub/Sub 通知の作成
以下の手順をコマンドラインで実行し、Storage バケットから Pub/Sub トピックへの通知ストリームを作成します。通知ストリームの作成には CLI を使用する必要があります。
gcloud がインストールされていることを確認してください。- Google Cloud プロジェクトにログインします。
- ターミナルで以下を実行します。
W&B Server の設定
- 最後に、W&B の
System Connectionsページ(http(s)://YOUR-W&B-SERVER-HOST/console/settings/system)に移動します。 - プロバイダーに
Google Cloud Storage (gcs)を選択します。 - GCS バケットの名前を入力します。

- Update settings を押して新しい設定を適用します。
W&B Server のアップグレード
W&B を更新するには、以下の手順に従ってください。wandb_appモジュールの設定にwandb_versionを追加します。アップグレードしたい W&B のバージョンを指定してください。例えば、以下の行は W&B バージョン0.58.1を指定しています。
あるいは、
terraform.tfvars に wandb_version を追加し、同名の変数を作成して、リテラル値の代わりに var.wandb_version を使用することもできます。- 設定を更新した後、デプロイセクション で説明した手順を完了させます。