메인 콘텐츠로 건너뛰기
W&B는 W&B Multi-tenant Cloud 또는 W&B Dedicated Cloud와 같은 완전 관리형 배포 옵션을 권장합니다. W&B 완전 관리형 서비스는 설정이 거의 필요 없으며 안전하고 간편하게 사용할 수 있습니다.
Self-Managed W&B Server를 사용하기로 결정했다면, Google Cloud에 플랫폼을 배포하기 위해 W&B Server Google Cloud Terraform Module을 사용하는 것을 권장합니다. 모듈 문서는 매우 상세하며 사용 가능한 모든 옵션을 포함하고 있습니다. 시작하기 전에, State File을 저장하기 위해 Terraform에서 제공하는 remote backends 중 하나를 선택하는 것을 권장합니다. State File은 모든 컴포넌트를 다시 생성하지 않고 배포 환경을 업그레이드하거나 변경하는 데 필요한 리소스입니다. Terraform 모듈은 다음과 같은 필수 컴포넌트를 배포합니다:
  • VPC
  • Cloud SQL for MySQL
  • Cloud Storage 버킷
  • Google Kubernetes Engine
  • KMS Crypto Key
  • Load Balancer
다른 배포 옵션에는 다음과 같은 선택적 컴포넌트가 포함될 수 있습니다:
  • Redis용 Memory store
  • Pub/Sub 메시지 시스템

사전 필수 권한

Terraform을 실행할 계정은 사용 중인 Google Cloud 프로젝트에서 roles/owner 역할을 가지고 있어야 합니다.

일반적인 단계

이 섹션의 단계는 이 문서에서 다루는 모든 배포 옵션에 공통적으로 적용됩니다.
  1. 개발 환경을 준비합니다.
    • Terraform 설치
    • 사용할 코드가 담긴 Git 저장소를 만드는 것을 권장하지만, 파일을 로컬에 보관할 수도 있습니다.
    • Google Cloud Console에서 프로젝트 생성
    • Google Cloud 인증 (미리 gcloud 설치 확인) gcloud auth application-default login
  2. terraform.tfvars 파일을 생성합니다. tvfars 파일 내용은 설치 유형에 따라 커스터마이징할 수 있지만, 최소 권장 사항은 아래 예시와 같습니다.
    project_id  = "wandb-project"
    region      = "europe-west2"
    zone        = "europe-west2-a"
    namespace   = "wandb"
    license     = "xxxxxxxxxxyyyyyyyyyyyzzzzzzz"
    subdomain   = "wandb-gcp"
    domain_name = "wandb.ml"
    
    여기에 정의된 변수들은 배포 전에 결정되어야 합니다. namespace 변수는 Terraform에 의해 생성되는 모든 리소스의 접두사(prefix)로 사용되는 문자열입니다. subdomaindomain의 조합은 W&B가 설정될 FQDN을 형성합니다. 위의 예시에서 W&B FQDN은 wandb-gcp.wandb.ml이 됩니다.
  3. variables.tf 파일을 생성합니다. terraform.tfvars에 설정된 모든 옵션에 대해 Terraform은 해당 변수 선언을 요구합니다.
    variable "project_id" {
      type        = string
      description = "Project ID"
    }
    
    variable "region" {
      type        = string
      description = "Google region"
    }
    
    variable "zone" {
      type        = string
      description = "Google zone"
    }
    
    variable "namespace" {
      type        = string
      description = "Namespace prefix used for resources"
    }
    
    variable "domain_name" {
      type        = string
      description = "Domain name for accessing the Weights & Biases UI."
    }
    
    variable "subdomain" {
      type        = string
      description = "Subdomain for access the Weights & Biases UI."
    }
    
    variable "license" {
      type        = string
      description = "W&B License"
    }
    

배포 - 권장 사항 (~20분 소요)

이는 모든 필수 컴포넌트를 생성하고 Kubernetes Cluster에 최신 버전의 W&B를 설치하는 가장 간단한 배포 옵션 설정입니다.
  1. main.tf를 생성합니다. 일반적인 단계에서 파일을 생성한 것과 동일한 디렉토리에 다음 내용으로 main.tf 파일을 생성합니다:
    provider "google" {
     project = var.project_id
     region  = var.region
     zone    = var.zone
    }
    
    provider "google-beta" {
     project = var.project_id
     region  = var.region
     zone    = var.zone
    }
    
    data "google_client_config" "current" {}
    
    provider "kubernetes" {
      host                   = "https://${module.wandb.cluster_endpoint}"
      cluster_ca_certificate = base64decode(module.wandb.cluster_ca_certificate)
      token                  = data.google_client_config.current.access_token
    }
    
    # 필요한 모든 서비스 실행
    module "wandb" {
      source  = "wandb/wandb/google"
      version = "~> 5.0"
    
      namespace   = var.namespace
      license     = var.license
      domain_name = var.domain_name
      subdomain   = var.subdomain
    }
    
    # 프로비저닝된 IP 주소로 DNS를 업데이트해야 합니다
    output "url" {
      value = module.wandb.url
    }
    
    output "address" {
      value = module.wandb.address
    }
    
    output "bucket_name" {
      value = module.wandb.bucket_name
    }
    
  2. W&B 배포 W&B를 배포하려면 다음 코맨드를 실행하세요:
    terraform init
    terraform apply -var-file=terraform.tfvars
    

REDIS 캐시를 포함한 배포

또 다른 배포 옵션은 Redis를 사용하여 SQL 쿼리를 캐시하고 Experiments의 메트릭을 로드할 때 애플리케이션 응답 속도를 높이는 것입니다. 캐시를 활성화하려면 권장 배포 옵션 섹션에 명시된 것과 동일한 main.tf 파일에 create_redis = true 옵션을 추가해야 합니다.
[...]

module "wandb" {
  source  = "wandb/wandb/google"
  version = "~> 1.0"

  namespace    = var.namespace
  license      = var.license
  domain_name  = var.domain_name
  subdomain    = var.subdomain
  allowed_inbound_cidrs = ["*"]
  # Redis 활성화
  create_redis = true

}
[...]

외부 큐를 포함한 배포

세 번째 배포 옵션은 외부 message broker를 활성화하는 것입니다. W&B는 내장 브로커를 포함하고 있으므로 이는 선택 사항입니다. 이 옵션이 성능 향상을 가져다주지는 않습니다. 메시지 브로커를 제공하는 Google Cloud 리소스는 Pub/Sub이며, 이를 활성화하려면 권장 배포 옵션 섹션에 명시된 동일한 main.tfuse_internal_queue = false 옵션을 추가해야 합니다.
[...]

module "wandb" {
  source  = "wandb/wandb/google"
  version = "~> 1.0"

  namespace          = var.namespace
  license            = var.license
  domain_name        = var.domain_name
  subdomain          = var.subdomain
  allowed_inbound_cidrs = ["*"]
  # Pub/Sub 생성 및 사용
  use_internal_queue = false

}

[...]

기타 배포 옵션

모든 설정을 동일한 파일에 추가하여 세 가지 배포 옵션을 모두 결합할 수 있습니다. Terraform Module배포 - 권장 사항에서 볼 수 있는 표준 옵션 및 최소 설정과 결합하여 사용할 수 있는 다양한 옵션을 제공합니다.

수동 설정

Google Cloud Storage 버킷을 W&B의 파일 스토리지 백엔드로 사용하려면 다음을 생성해야 합니다:

PubSub Topic 및 Subscription 생성

아래 절차에 따라 PubSub 토픽과 서브스크립션을 생성하세요:
  1. Google Cloud Console 내의 Pub/Sub 서비스로 이동합니다.
  2. Create Topic을 선택하고 토픽의 이름을 입력합니다.
  3. 페이지 하단에서 Create subscription을 선택합니다. Delivery TypePull로 설정되어 있는지 확인합니다.
  4. Create를 클릭합니다.
인스턴스가 실행 중인 서비스 계정 또는 계정이 이 서브스크립션에 대해 pubsub.admin 역할을 가지고 있는지 확인하세요. 자세한 내용은 https://cloud.google.com/pubsub/docs/access-control#console 을 참조하세요.

Storage 버킷 생성

  1. Cloud Storage Buckets 페이지로 이동합니다.
  2. Create bucket을 선택하고 버킷 이름을 입력합니다. storage classStandard로 선택해야 합니다.
인스턴스가 실행 중인 서비스 계정 또는 계정이 다음 두 가지를 모두 충족하는지 확인하세요:
서명된 파일 URL을 생성하려면 인스턴스에 Google Cloud의 iam.serviceAccounts.signBlob 권한도 필요합니다. 권한을 활성화하려면 인스턴스가 실행 중인 서비스 계정 또는 IAM 멤버에 Service Account Token Creator 역할을 추가하세요.
  1. CORS 엑세스를 활성화합니다. 이는 커맨드라인을 통해서만 가능합니다. 먼저 다음 CORS 설정이 포함된 JSON 파일을 생성합니다.
cors:
- maxAgeSeconds: 3600
  method:
   - GET
   - PUT
     origin:
   - '<YOUR_W&B_SERVER_HOST>'
     responseHeader:
   - Content-Type
origin 값의 scheme, host, port가 정확히 일치해야 함에 유의하세요.
  1. gcloud가 설치되어 있고 올바른 Google Cloud 프로젝트에 로그인되어 있는지 확인합니다.
  2. 다음 명령을 실행합니다:
gcloud storage buckets update gs://<BUCKET_NAME> --cors-file=<CORS_CONFIG_FILE>

PubSub 알림 생성

다음 절차에 따라 커맨드라인에서 Storage 버킷에서 Pub/Sub 토픽으로의 알림 스트림을 생성하세요.
알림 스트림을 생성하려면 CLI를 사용해야 합니다. gcloud가 설치되어 있는지 확인하세요.
  1. Google Cloud 프로젝트에 로그인합니다.
  2. 터미널에서 다음을 실행합니다:
gcloud pubsub topics list  # 참조를 위한 토픽 이름 목록 확인
gcloud storage ls          # 참조를 위한 버킷 이름 목록 확인

# 버킷 알림 생성
gcloud storage buckets notifications create gs://<BUCKET_NAME> --topic=<TOPIC_NAME>
추가 참조 정보는 Cloud Storage 웹사이트에서 확인할 수 있습니다.

W&B 서버 설정

  1. 마지막으로, http(s)://YOUR-W&B-SERVER-HOST/console/settings/system에 있는 W&B System Connections 페이지로 이동합니다.
  2. Provider를 Google Cloud Storage (gcs)로 선택합니다.
  3. GCS 버킷 이름을 입력합니다.
Google Cloud 파일 스토리지 설정
  1. Update settings를 눌러 새로운 설정을 적용합니다.

W&B 서버 업그레이드

W&B를 업데이트하려면 다음 단계를 따르세요:
  1. wandb_app 모듈 설정에 wandb_version을 추가합니다. 업그레이드하려는 W&B 버전을 입력합니다. 예를 들어, 다음 줄은 W&B 버전 0.48.1을 지정합니다:
module "wandb_app" {
    source  = "wandb/wandb/kubernetes"
    version = "~>5.0"

    license       = var.license
    wandb_version = "0.58.1"
또는 terraform.tfvarswandb_version을 추가하고 같은 이름의 변수를 생성한 뒤, 직접 값을 입력하는 대신 var.wandb_version을 사용할 수도 있습니다.
  1. 설정을 업데이트한 후, 배포 옵션 섹션에 설명된 단계를 완료합니다.
terraform init
terraform apply -var-file=terraform.tfvars