このページでは、W&B デプロイメントのリファレンスアーキテクチャーについて説明し、プラットフォームのプロダクションデプロイメントをサポートするために推奨されるインフラストラクチャーとリソースの概要を示します。
W&B のデプロイ環境に応じて、さまざまなサービスを利用することでデプロイメントのレジリエンス(回復力)を高めることができます。
例えば、主要なクラウドプロバイダーは堅牢なマネージドデータベースサービスを提供しており、データベースの設定、メンテナンス、高可用性、およびレジリエンスの複雑さを軽減するのに役立ちます。
このリファレンスアーキテクチャーでは、一般的なデプロイシナリオを取り上げ、最適なパフォーマンスと信頼性を実現するために W&B デプロイメントをクラウドベンダーのサービスと統合する方法を示します。
開始する前に
プロダクション環境でアプリケーションを実行するには固有の課題が伴い、W&B も例外ではありません。プロセスの簡素化を目指していますが、独自のアーキテクチャーや設計上の決定によっては複雑さが生じる場合があります。通常、プロダクションデプロイメントの管理には、ハードウェア、オペレーティングシステム、ネットワーキング、ストレージ、セキュリティ、W&B プラットフォーム自体、およびその他の依存関係を含むさまざまなコンポーネントの監視が含まれます。この責任は、環境の初期セットアップと継続的なメンテナンスの両方に及びます。
W&B のセルフマネージド(Self-Managed)アプローチが、あなたのチームや特定の要件に適しているかどうかを慎重に検討してください。
セルフマネージド W&B をデプロイする前に、プロダクションレベルのアプリケーションを実行および維持する方法を深く理解していることが重要な前提条件となります。チームにサポートが必要な場合は、弊社のプロフェッショナルサービスチームやパートナーが導入と最適化のサポートを提供しています。
W&B を自身で管理するのではなく、管理されたソリューションを利用する方法については、 W&B Multi-tenant Cloud および W&B Dedicated Cloud を参照してください。
インフラストラクチャー
アプリケーションレイヤー
アプリケーションレイヤーはマルチノードの Kubernetes クラスターで構成され、ノード障害に対するレジリエンスを備えています。Kubernetes クラスターは W&B の Pod を実行および維持します。
ストレージレイヤー
ストレージレイヤーは MySQL データベースとオブジェクトストレージで構成されます。MySQL データベースにはメタデータが保存され、オブジェクトストレージには Models や Datasets などの Artifacts が保存されます。
インフラストラクチャー要件
Kubernetes
W&B サーバーアプリケーションは、複数の Pod をデプロイする Kubernetes Operator としてデプロイされます。このため、W&B には以下の機能を備えた Kubernetes クラスターが必要です。
- 完全に設定され、機能している Ingress コントローラ。
- Persistent Volumes をプロビジョニングする機能。
W&B は、クラウド、オンプレミス、およびエアギャップ環境における OpenShift Kubernetes クラスター へのデプロイをサポートしています。具体的な設定手順については、Operator ガイドの OpenShift セクション を参照してください。
MySQL
W&B はメタデータを MySQL データベースに保存します。データベースのパフォーマンスとストレージの要件は、モデルパラメータや関連メタデータの形式に依存します。例えば、トラッキングするトレーニング Runs が増えるにつれてデータベースのサイズは増大し、Run テーブル、ユーザーの Workspace、Reports でのクエリに基づいてデータベースへの負荷が増加します。
W&B では、プロダクションデプロイメントにおいてマネージドデータベースサービス(AWS RDS Aurora MySQL、Google Cloud SQL for MySQL、Azure Database for MySQL など)の使用を強く推奨します。マネージドサービスは、自動バックアップ、モニタリング、高可用性、パッチ適用を提供し、運用上の複雑さを大幅に軽減します。具体的な推奨サービスについては、以下の クラウドプロバイダーのインスタンス推奨事項 セクションを参照してください。
セルフマネージドな MySQL データベースをデプロイする場合は、以下を考慮してください。
- バックアップ: データベースは定期的に別の施設にバックアップする必要があります。W&B では、少なくとも 1 週間の保持期間を設けた毎日バックアップを推奨しています。
- パフォーマンス: データベースには SSD や高速化された NAS など、高速なストレージハードウェアが必要です。
- モニタリング: データベースには適切な CPU リソースが必要です。データベースサーバーの CPU 負荷を監視してください。CPU 使用率がシステムの 90% を超える状態が 5 分以上続く場合は、CPU 容量の追加を検討してください。
- 可用性: 可用性と耐久性の要件を満たすために、W&B では、プライマリデプロイメントからすべての更新をリアルタイムでストリーミングし、プライマリサーバーのクラッシュ、破損、または持続的なダウンタイムが発生した場合にフェイルオーバーできるホットスタンバイサーバーを別のマシンに設定することを推奨します。なお、W&B はマルチマスター構成や読み取り専用レプリカをサポートしていません。
MySQL データベースの作成
MySQL データベースとユーザーを手動で作成する手順については、 ベアメタルガイドの MySQL データベースセクション を参照してください。
MySQL 設定パラメータ
独自の MySQL インスタンスを実行している場合は、以下の設定を行ってください。
binlog_format = 'ROW'
binlog_row_image = 'MINIMAL'
innodb_flush_log_at_trx_commit = 1
innodb_online_alter_log_max_size = 268435456
max_prepared_stmt_count = 1048576
sort_buffer_size = '67108864'
sync_binlog = 1
これらの設定は、最適なパフォーマンスと信頼性を実現するために W&B によって検証されています。
Redis
W&B は、ジョブキューイングとデータキャッシュに使用されるシングルノードの Redis 7.x デプロイメントに依存しています。PoC(概念実証)のテストや開発時の便宜上、W&B セルフマネージドにはローカルの Redis デプロイメントが含まれていますが、これはプロダクションデプロイメントには適していません。
W&B は、以下の環境の Redis インスタンスに接続できます。
オブジェクトストレージ
W&B には、署名付き URL(pre-signed URL)と CORS をサポートし、以下のいずれかにデプロイされたオブジェクトストレージが必要です。
バージョン
| Software | Minimum version |
|---|
| Kubernetes | v1.32 or newer (Supported Kubernetes versions) |
| Helm | v3.x |
| MySQL | v8.0.x is required, v8.0.32 or newer; v8.0.44 or newer is recommended. Aurora MySQL 3.x releases, must be v3.05.2 or newer |
| Redis | v7.x |
ネットワーキング
For a networked deployment, egress to these endpoints is required during both installation and runtime:
Additional container registries may be required depending on your deployment configuration:
https://gcr.io is needed when deploying Bufstream and etcd for Weave online evaluations.
To learn about air-gapped deployments, refer to Kubernetes operator for air-gapped instances.
Access to W&B and to the object storage is required for the training infrastructure and for each system that tracks the needs of experiments.
DNS
W&B デプロイメントの完全修飾ドメイン名 (FQDN) は、A レコードを使用して Ingress / ロードバランサーの IP アドレスに解決される必要があります。
ロードバランサーと Ingress
W&B Kubernetes Operator は、異なるポートを持つ URL パスに基づいてサービスエンドポイントにルーティングする Kubernetes Ingress コントローラを使用してサービスを公開できます。Ingress コントローラは、機械学習のペイロードを実行したり、Web ブラウザを通じてサービスにアクセスしたりするすべてのマシンからアクセス可能である必要があります。
Ingress コントローラの要件
Kubernetes クラスターに IngressClass が利用可能である必要があります。一般的な Ingress コントローラのオプションには以下が含まれます。
W&B サービスルーティング
W&B Operator は、パスに基づいてリクエストを複数のバックエンドサービスに自動的にルーティングします。
| パス | サービス | デフォルトポート | 用途 |
|---|
/ | wandb-app | 8080 | メイン Web アプリケーション UI |
/api | wandb-api | 8081 | API サービス |
/graphql | wandb-api | 8081 | GraphQL API エンドポイント |
/graphql2 | wandb-api | 8081 | GraphQL API v2 エンドポイント |
/console | wandb-console | 8082 | システムコンソール |
/traces | wandb-weave-trace | 8722 | Weave トレースサービス (有効な場合) |
Ingress 設定例
以下は、W&B Operator によって作成される Ingress リソースの例です。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: wandb
namespace: wandb
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "0"
spec:
ingressClassName: nginx
rules:
- host: wandb.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: wandb-app
port:
number: 8080
- path: /api
pathType: Prefix
backend:
service:
name: wandb-api
port:
number: 8081
- path: /graphql
pathType: Prefix
backend:
service:
name: wandb-api
port:
number: 8081
- path: /graphql2
pathType: Prefix
backend:
service:
name: wandb-api
port:
number: 8081
- path: /console
pathType: Prefix
backend:
service:
name: wandb-console
port:
number: 8082
tls:
- hosts:
- wandb.example.com
secretName: wandb-tls
W&B Operator は Ingress 設定を自動的に作成および管理します。通常、手動で Ingress リソースを作成する必要はありません。クラスターで Ingress コントローラが機能しており、適切な IngressClass が設定されていることを確認してください。
SSL/TLS
W&B requires a valid signed SSL/TLS certificate for secure communication between clients and the server. SSL/TLS termination must occur on the ingress/load balancer. The W&B Server application does not terminate SSL or TLS connections.
Important: W&B does not support self-signed certificates and custom CAs. Using self-signed certificates will cause challenges for users and is not supported.
If possible, using a service like Let’s Encrypt is a great way to provide trusted certificates to your load balancer. Services like Caddy and Cloudflare manage SSL for you.
If your security policies require SSL communication within your trusted networks, consider using a tool like Istio and side car containers.
サポートされている CPU アーキテクチャー
W&B は Intel および AMD 64ビットアーキテクチャーで動作します。ARM はサポートされていません。
デプロイ方法
推奨: Helm を使用した W&B Kubernetes Operator
W&B セルフマネージドの推奨インストール方法は、Helm 経由でデプロイされる W&B Kubernetes Operator を使用することです。このアプローチには以下の利点があります。
- W&B コンポーネントの自動アップデートと管理
- 設定とデプロイの簡素化
- すべてのデプロイシナリオ(クラウド、オンプレミス、エアギャップ)のサポート
詳細なインストール手順については、以下を参照してください。
インフラストラクチャーのプロビジョニング
W&B のプロダクションデプロイメント用のインフラストラクチャーをプロビジョニングするには、Terraform が推奨されます。Terraform を使用して、必要なリソース、他のリソースへの参照、およびそれらの依存関係を定義します。W&B は主要なクラウドプロバイダー向けの Terraform モジュールを提供しています。詳細は、 セルフマネージドクラウド環境内での W&B サーバーのデプロイ を参照してください。
サイジング
デプロイメントの計画時には、以下の一般的なガイドラインを開始点として使用してください。W&B では、新しいデプロイメントのすべてのコンポーネントを注意深く監視し、観察された使用パターンに基づいて調整を行うことを推奨します。プロダクションデプロイメントを経時的に監視し続け、最適なパフォーマンスを維持するために必要に応じて調整を行ってください。
Models のみ
Kubernetes
| 環境 | CPU | メモリ | ディスク |
|---|
| テスト/開発 | 2 コア | 16 GB | 100 GB |
| プロダクション | 8 コア | 64 GB | 100 GB |
数値は Kubernetes ワーカーノードあたりのものです。
MySQL
| 環境 | CPU | メモリ | ディスク |
|---|
| テスト/開発 | 2 コア | 16 GB | 100 GB |
| プロダクション | 8 コア | 64 GB | 500 GB |
数値は MySQL ノードあたりのものです。
Weave のみ
Kubernetes
| 環境 | CPU | メモリ | ディスク |
|---|
| テスト/開発 | 4 コア | 32 GB | 100 GB |
| プロダクション | 12 コア | 96 GB | 100 GB |
数値は Kubernetes ワーカーノードあたりのものです。
MySQL
| 環境 | CPU | メモリ | ディスク |
|---|
| テスト/開発 | 2 コア | 16 GB | 100 GB |
| プロダクション | 8 コア | 64 GB | 500 GB |
数値は MySQL ノードあたりのものです。
Models および Weave
Kubernetes
| 環境 | CPU | メモリ | ディスク |
|---|
| テスト/開発 | 4 コア | 32 GB | 100 GB |
| プロダクション | 16 コア | 128 GB | 100 GB |
数値は Kubernetes ワーカーノードあたりのものです。
MySQL
| 環境 | CPU | メモリ | ディスク |
|---|
| テスト/開発 | 2 コア | 16 GB | 100 GB |
| プロダクション | 8 コア | 64 GB | 500 GB |
数値は MySQL ノードあたりのものです。
クラウドプロバイダーのインスタンス推奨事項
サービス
| クラウド | Kubernetes | MySQL | オブジェクトストレージ |
|---|
| AWS | EKS | RDS Aurora | S3 |
| Google Cloud | GKE | Google Cloud SQL - Mysql | Google Cloud Storage (GCS) |
| Azure | AKS | Azure Database for Mysql | Azure Blob Storage |
マシンタイプ
これらの推奨事項は、クラウドインフラストラクチャーにおける W&B セルフマネージドデプロイメントの各ノードに適用されます。
AWS
| 環境 | K8s (Models のみ) | K8s (Weave のみ) | K8s (Models&Weave) | MySQL |
|---|
| テスト/開発 | r6i.large | r6i.xlarge | r6i.xlarge | db.r6g.large |
| プロダクション | r6i.2xlarge | r6i.4xlarge | r6i.4xlarge | db.r6g.2xlarge |
Google Cloud
| 環境 | K8s (Models のみ) | K8s (Weave のみ) | K8s (Models&Weave) | MySQL |
|---|
| テスト/開発 | n2-highmem-2 | n2-highmem-4 | n2-highmem-4 | db-n1-highmem-2 |
| プロダクション | n2-highmem-8 | n2-highmem-16 | n2-highmem-16 | db-n1-highmem-8 |
Azure
| 環境 | K8s (Models のみ) | K8s (Weave のみ) | K8s (Models&Weave) | MySQL |
|---|
| テスト/開発 | Standard_E2_v5 | Standard_E4_v5 | Standard_E4_v5 | MO_Standard_E2ds_v4 |
| プロダクション | Standard_E8_v5 | Standard_E16_v5 | Standard_E16_v5 | MO_Standard_E8ds_v4 |