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

사전 필요 권한

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

일반 단계

이 항목의 단계들은 이 문서에서 다루는 모든 배포 옵션에 공통으로 적용됩니다.
  1. 개발 환경을 준비합니다.
    • Terraform을 설치합니다.
    • 사용할 코드를 저장할 Git 리포지토리를 만드는 것을 권장하지만, 로컬 파일로만 유지해도 됩니다.
    • Google Cloud Console에서 프로젝트를 생성합니다.
    • gcloud auth application-default login을 사용해 Google Cloud에 인증합니다. 이 전에 gcloud를 설치했는지 확인하세요.
  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이 생성하는 모든 리소스 이름 앞에 붙는 문자열입니다. 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"
    }
    
이 배포 옵션 구성은 가장 간단한 방식으로, 모든 Mandatory 구성 요소를 생성하고 Kubernetes Cluster에 최신 버전의 W&B를 설치합니다.
  1. main.tf 파일을 생성합니다. General Steps에서 파일을 생성했던 것과 동일한 디렉터리에서 아래 내용을 가진 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
    }
    
    # Spin up all required services
    module "wandb" {
      source  = "wandb/wandb/google"
      version = "~> 10.0"
    
      namespace   = var.namespace
      license     = var.license
      domain_name = var.domain_name
      subdomain   = var.subdomain
    }
    
    # You'll want to update your DNS with the provisioned IP address
    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
    

기타 배포 옵션

세 가지 배포 옵션을 모두 조합해, 필요한 모든 설정을 하나의 파일에 넣을 수 있습니다. Terraform 모듈은 표준 옵션 및 Deployment - Recommended에 있는 최소 구성과 함께 조합해 사용할 수 있는 여러 가지 옵션을 제공합니다.

수동 구성

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

Pub/Sub 주제 및 구독 생성

아래 절차에 따라 Pub/Sub 주제와 구독을 생성합니다.
  1. Google Cloud Console에서 Pub/Sub 서비스로 이동합니다.
  2. Create Topic을 선택하고 주제 이름을 입력합니다.
  3. 페이지 하단에서 Create subscription을 선택합니다. Delivery TypePull로 설정되어 있는지 확인합니다.
  4. Create를 클릭합니다.
인스턴스를 실행 중인 서비스 계정 또는 사용자 계정에 이 구독에 대한 pubsub.admin 역할이 부여되어 있는지 확인하십시오. 자세한 내용은 Google Cloud Pub/Sub 액세스 제어 문서를 참조하십시오.

Storage 버킷 생성

  1. Cloud Storage Buckets 페이지로 이동합니다.
  2. Create bucket을 선택하고 버킷 이름을 지정합니다. Standard storage class를 선택했는지 확인합니다. 인스턴스를 실행 중인 서비스 계정 또는 계정에 다음 두 가지가 모두 있는지 확인합니다.
    인스턴스에서 서명된 파일 URL을 생성하려면 Google Cloud에서 iam.serviceAccounts.signBlob 권한도 필요합니다. 이 권한을 활성화하려면 인스턴스를 실행 중인 서비스 계정 또는 인스턴스가 실행 중인 IAM 구성원에 Service Account Token Creator 역할을 추가하세요.
  3. CORS 액세스를 활성화합니다. 이 작업은 명령줄에서만 수행할 수 있습니다. 먼저, 다음 CORS 구성이 포함된 JSON 파일을 생성합니다.
    cors:
    - maxAgeSeconds: 3600
      method:
       - GET
       - PUT
         origin:
       - '<YOUR_W&B_SERVER_HOST>'
         responseHeader:
       - Content-Type
    
    origin 값의 스킴, 호스트, 포트가 정확히 일치해야 합니다.
  4. gcloud가 설치되어 있고 올바른 Google Cloud 프로젝트에 로그인되어 있는지 확인합니다.
  5. 그런 다음 다음 명령을 실행합니다.
    gcloud storage buckets update gs://<BUCKET_NAME> --cors-file=<CORS_CONFIG_FILE>
    

PubSub 알림 생성

Storage Bucket에서 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. 공급자로 Google Cloud Storage (gcs)를 선택합니다.
  3. GCS 버킷 이름을 입력합니다.
    Google Cloud 파일 스토리지 구성
  4. Update settings 버튼을 눌러 새 설정을 적용합니다.

W&B Server 업그레이드

W&B Operator는 W&B를 자동으로 업그레이드합니다. 이 동작을 비활성화하려면 시스템 콘솔에서 UserSpec을 수정하여 이미지를 오버라이드하면 됩니다. 이미지 태그를 특정 버전에 고정(pinning)하려면:
  1. 시스템 콘솔에서 ActiveSpec에 액세스합니다: https://<W&B URL>/console/settings/advanced/spec/active.
  2. 다음과 유사한 컴포넌트 이미지 설정을 복사합니다:
      api:
        image:
          tag: 0.75.2
        initContainers:
          init-db:
            image:
              tag: 0.75.2
    
    W&B System Console - ActiveSpec
  3. 복사한 컴포넌트 설정을 UserSpec에 붙여넣고, image tag를 교체합니다.
    chart: {}
    values:
      api:
        image:
          tag: 0.76.3
        initContainers:
          init-db:
            image:
              tag: 0.76.3
    
    W&B System Console - UserSpec
  4. Save를 클릭합니다.
  5. Operator 탭으로 이동한 다음 Trigger reapply를 클릭합니다.
    W&B System Console - Operator
W&B Operator는 구성을 조정(reconcile)하여 이미지를 지정된 버전에 고정합니다.