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

Azure

備考

W&Bは、W&B Multi-tenant CloudW&B Dedicated Cloud のデプロイメントタイプなど、完全管理のデプロイメントオプションを推奨しています。W&Bの完全管理サービスはシンプルで安全に使用でき、設定が最小または不要です。

自己管理のW&B Serverを選んだ場合は、Azure上でプラットフォームをデプロイするために W&B Server Azure Terraform Module を使用することをお勧めします。

モジュールのドキュメントは豊富で、利用可能なすべてのオプションが含まれています。このドキュメントでは、一部のデプロイメントオプションをカバーします。

始める前に、TerraformのState Fileを格納するために使用可能なリモートバックエンドのいずれかを選択することをお勧めします。

State Fileはアップグレードを実施したり、すべてのコンポーネントを再作成することなくデプロイメントに変更を加えるために必要なリソースです。

Terraform Moduleは以下の 必須 コンポーネントをデプロイします:

  • Azure Resource Group
  • Azure Virtual Network (VPC)
  • Azure MySQL Fliexible Server
  • Azure Storage Account & Blob Storage
  • Azure Kubernetes Service
  • Azure Application Gateway

その他のデプロイメントオプションには、以下のオプションコンポーネントも含まれる場合があります:

  • Azure Cache for Redis
  • Azure Event Grid

事前条件の権限

AzureRMプロバイダーを設定する最も簡単な方法は Azure CLI を使用することですが、自動化の場合は Azure Service Principal を使用することもできます。 認証メソッドにかかわらず、Terraformを実行するアカウントは、イントロダクションで説明されているすべてのコンポーネントを作成できる必要があります。

一般的な手順

このトピックのステップは、このドキュメントでカバーされている任意のデプロイメントオプションに共通です。

  1. 開発環境を準備する。
  • Terraform をインストールする
  • 使用するコードを含むGitリポジトリを作成することをお勧めしますが、ファイルをローカルに保持することもできます。
  1. terraform.tfvarsファイルを作成する tfvarsファイルの内容はインストールタイプに応じてカスタマイズできますが、最低限の推奨事項は以下の例のようになります。

     namespace     = "wandb"
    wandb_license = "xxxxxxxxxxyyyyyyyyyyyzzzzzzz"
    subdomain = "wandb-aws"
    domain_name = "wandb.ml"
    location = "westeurope"

    ここで定義された変数はデプロイメント前に決定する必要があります。namespace変数は、Terraformによって作成されるすべてのリソースにプレフィックスとして使用される文字列です。

    subdomaindomainの組み合わせは、W&Bが設定されるFQDNを形成します。上記の例では、W&B FQDNはwandb-aws.wandb.mlとなり、FQDNレコードが作成されるDNS zone_idです。

  2. versions.tfファイルを作成する このファイルには、W&BをAWSにデプロイするために必要なTerraformおよびTerraformプロバイダーのバージョンが含まれます。

    terraform {
    required_version = "~> 1.3"

    required_providers {
    azurerm = {
    source = "hashicorp/azurerm"
    version = "~> 3.17"
    }
    }
    }

    AWSプロバイダーを設定するための詳細は、Terraform Official Documentation を参照してください。

    任意ですが強くお勧めするのは、このドキュメントの冒頭で述べたリモートバックエンド設定を追加することです。

  3. variables.tfファイルを作成する terraform.tfvarsに構成された各オプションには対応する変数宣言が必要です。

     variable "namespace" {
    type = string
    description = "プレフィックスリソースに使用される文字列。"
    }

    variable "location" {
    type = string
    description = "Azure Resource Groupの場所"
    }

    variable "domain_name" {
    type = string
    description = "Weights & Biases UIへアクセスするためのドメイン。"
    }

    variable "subdomain" {
    type = string
    default = null
    description = "Weights & Biases UIへアクセスするためのサブドメイン。デフォルトはRoute53 Routeにレコードを作成。"
    }

    variable "license" {
    type = string
    description = "あなたのwandb/localライセンス"
    }

デプロイメント - 推奨 (~20分)

これは、すべての必須コンポーネントを作成し、最新バージョンのW&BKubernetes クラスターにインストールする最も簡単なデプロイメントオプション設定です。

  1. main.tfを作成する 一般的な手順でファイルを作成したディレクトリに、以下の内容でmain.tfファイルを作成します:

    provider "azurerm" {
    features {}
    }

    provider "kubernetes" {
    host = module.wandb.cluster_host
    cluster_ca_certificate = base64decode(module.wandb.cluster_ca_certificate)
    client_key = base64decode(module.wandb.cluster_client_key)
    client_certificate = base64decode(module.wandb.cluster_client_certificate)
    }

    provider "helm" {
    kubernetes {
    host = module.wandb.cluster_host
    cluster_ca_certificate = base64decode(module.wandb.cluster_ca_certificate)
    client_key = base64decode(module.wandb.cluster_client_key)
    client_certificate = base64decode(module.wandb.cluster_client_certificate)
    }
    }

    # 必要なすべてのサービスを稼働させます
    module "wandb" {
    source = "wandb/wandb/azurerm"
    version = "~> 1.2"

    namespace = var.namespace
    location = var.location
    license = var.license
    domain_name = var.domain_name
    subdomain = var.subdomain

    deletion_protection = false

    tags = {
    "Example" : "PublicDns"
    }
    }

    output "address" {
    value = module.wandb.address
    }

    output "url" {
    value = module.wandb.url
    }
  2. W&Bにデプロイする W&Bにデプロイするには、以下のコマンドを実行します:

    terraform init
    terraform apply -var-file=terraform.tfvars

REDISキャッシュを使用したデプロイメント

別のデプロイメントオプションとして、Redisを使用してSQLクエリをキャッシュし、実験のメトリクスを読み込む際のアプリケーション応答速度を向上させる方法があります。

キャッシュを有効にするには、Deployment Recommendedで説明した同じmain.tfファイルにcreate_redis = trueオプションを追加する必要があります。

# 必要なすべてのサービスを稼働させます
module "wandb" {
source = "wandb/wandb/azurerm"
version = "~> 1.2"


namespace = var.namespace
location = var.location
license = var.license
domain_name = var.domain_name
subdomain = var.subdomain

create_redis = true # Redisを作成
[...]

外部キューを使用したデプロイメント

デプロイメントオプション3は、外部のメッセージブローカーを有効にするもので、これは任意です。なぜなら、W&Bには埋め込みブローカーが含まれているためです。このオプションはパフォーマンスの改善をもたらしません。

メッセージブローカーを提供するAzureリソースはAzure Event Gridであり、これを有効にするには、Deployment Recommendedで説明した同じmain.tfファイルにuse_internal_queue = falseオプションを追加する必要があります。

# 必要なすべてのサービスを稼働させます
module "wandb" {
source = "wandb/wandb/azurerm"
version = "~> 1.2"


namespace = var.namespace
location = var.location
license = var.license
domain_name = var.domain_name
subdomain = var.subdomain

use_internal_queue = false # Azure Event Gridを有効にする
[...]
}

その他のデプロイメントオプション

すべての構成を同じファイルに追加することで、3つのデプロイメントオプションを組み合わせることができます。 Terraform Module には、標準オプションやDeployment Recommendedで見つかる最小構成とともに組み合わせることができる複数のオプションが用意されています。

Was this page helpful?👍👎