始める前に
アプリケーションを本番環境で稼働させるには固有の課題があり、W&B も例外ではありません。W&B は作業の簡素化を目指していますが、アーキテクチャや設計上の判断によっては複雑な問題が生じる場合があります。通常、本番デプロイメントの管理には、ハードウェア、オペレーティングシステム、ネットワーク、ストレージ、セキュリティ、W&B プラットフォーム自体、およびその他の依存関係を含む構成要素の監督が伴います。この責任は、環境の初期設定だけでなく、継続的な保守にも及びます。 W&B のセルフマネージド方式が、チームと要件に適しているかを慎重に検討してください。 セルフマネージド W&B をデプロイする前に、本番環境向けアプリケーションの運用と保守について十分に理解しておくことが重要です。チームが支援を必要とする場合は、W&B Professional Services チームとパートナーが導入と最適化をサポートします。 W&B を自分で管理する代わりに利用できるマネージドソリューションについては、W&B Multi-tenant Cloud と W&B 専用クラウド を参照してください。インフラストラクチャー
W&B のデプロイメントは、アプリケーション層とストレージ層で構成されます。次の図は、これらの層の関係を示しています。続く各セクションでは、それぞれについて説明します。
アプリケーション層
アプリケーション層は、ノード障害に対する耐障害性を備えた複数ノードの Kubernetes クラスターで構成されます。Kubernetes クラスターは W&B の Pod を実行し、維持します。ストレージ層
ストレージ層はMySQLデータベースとオブジェクトストレージで構成されています。MySQLデータベースはメタデータを保存し、オブジェクトストレージはモデルやデータセットなどのアーティファクトを保存します。インフラストラクチャーの要件
以下のセクションでは、Kubernetes クラスターの詳細、MySQL、Redis、オブジェクトストレージ、ソフトウェアバージョン、ネットワーク、DNS、ロードバランサーとイングレス、SSL/TLS、サポートされる CPU アーキテクチャーなど、W&B のデプロイメントに関する要件を詳しく説明します。デプロイメントを開始する前に、環境がこれらの要件をすべて満たしていることを確認してください。Kubernetes
W&B は、複数の Pod をデプロイする Kubernetes Operator として W&B Server アプリケーションをデプロイします。このため、W&B には以下を備えた Kubernetes クラスターが必要です。- 完全に設定され、正常に機能するイングレスコントローラー。
- Persistent Volume をプロビジョニングする機能。
MySQL
W&B はメタデータを MySQL データベースに保存します。データベースに必要なパフォーマンスとストレージは、モデルのパラメーターや関連するメタデータの構造によって異なります。たとえば、トラッキングするトレーニング run が増えるとデータベースのサイズが大きくなり、run テーブル、ユーザーの workspace、report でのクエリに応じてデータベースの負荷が増加します。 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 は別のマシンにホットスタンバイのデプロイメントを構成することを推奨します。スタンバイはプライマリのデプロイメントからすべての更新をリアルタイムで受信し、プライマリサーバーがクラッシュした場合、破損した場合、またはダウンタイムが長引いた場合に切り替えられる状態を維持します。
MySQL のトポロジ
本番環境で高可用性を実現するには、マネージド MySQL サービスの利用が最も簡単です。フェイルオーバー、バックアップ、パッチ適用をクラウドプロバイダーに任せられます。AWS の Aurora Multi-AZ など、プロバイダーが提供する高可用性オプションを使用してください。 セルフマネージドの MySQL を運用する場合は、リアルタイムでレプリケーションデータを受信し、障害時に処理を引き継げるホットスタンバイをプライマリデータベースに用意してください。W&B は、アプリケーションデータベースのマルチプライマリトポロジや読み取り専用レプリカをサポートしていません。MySQL データベースの作成
MySQL データベースとユーザーを手動で作成する手順については、ベアメタルガイドの MySQL データベースセクションを参照してください。MySQL 設定パラメーター
これらのパラメーターは、W&B が大規模に実行する書き込みパターンとスキーマ変更に合わせて MySQL を調整します。独自の MySQL インスタンスを運用している場合は、以下の設定で MySQL を構成してください。Redis
W&B は、W&B コンポーネントがジョブのキュー管理とデータ キャッシュに使用する、単一ノードの Redis 7.x デプロイメントに依存します。テストや概念実証の開発の便宜上、W&B Self-Managed には本番デプロイメントには適さないローカル Redis デプロイメントが含まれています。 W&B は、以下の環境の Redis インスタンスに接続できます:- AWS Elasticache.
- Google Cloud Memory Store.
- Azure Cache for Redis.
- クラウドまたはオンプレミスのインフラストラクチャーでホストされる Redis デプロイメント。
オブジェクトストレージ
W&B には、事前署名付き URL と CORS をサポートするオブジェクトストレージが必要です。次のいずれかにデプロイしてください。- CoreWeave AI Object Storage は、AI ワークロード向けに最適化された S3互換のオブジェクトストレージサービスです。
- Amazon S3 は、スケーラビリティ、データの可用性、セキュリティ、パフォーマンスを提供するオブジェクトストレージサービスです。
- Google Cloud Storage は、非構造化データを大規模に保存するためのマネージドサービスです。
- Azure Blob Storage は、テキスト、バイナリデータ、画像、動画、ログなどの非構造化データを保存するためのクラウドベースのオブジェクトストレージソリューションです。
- MinIO Enterprise (AIStor)、NetApp StorageGRID、またはクラウドやオンプレミスのインフラストラクチャーでホストされるその他のエンタープライズ向けソリューションなどの S3互換ストレージ。
バージョン
ネットワーク
ネットワーク接続されたデプロイメントでは、インストール時と実行時の両方で、以下のエンドポイントへの外向き通信を許可してください。https://deploy.wandb.aihttps://charts.wandb.aihttps://quay.io(Prometheus のイメージに使用)
デプロイメントの設定によっては、追加のコンテナーレジストリが必要になる場合があります。
- Weave のオンライン評価のために Bufstream と etcd をデプロイする場合は、
https://gcr.io。
DNS
W&B デプロイメントの完全修飾ドメイン名 (FQDN) は、A レコードを使用してイングレスまたはロードバランサーの IP アドレスに解決する必要があります。
ロードバランサーとイングレス
W&B Kubernetes Operator は、URL パスに基づいて異なるポートのサービスエンドポイントへルーティングする Kubernetes Ingress コントローラーを使用してサービスを公開できます。Ingress コントローラーは、機械学習のペイロードを実行するすべてのマシン、またはブラウザーを介してサービスにアクセスするすべてのマシンからアクセス可能である必要があります。Ingress controller requirements
Kubernetes クラスター では、IngressClass が利用可能である必要があります。一般的な イングレス コントローラー には、次の選択肢があります。
- Nginx Ingress Controller。
- Istio。
- Traefik。
- cloud provider の イングレス コントローラー (AWS ALB、GCP Ingress、Azure Application Gateway) 。
W&B サービスのルーティング
W&B Operator は、パスに基づいてリクエストを複数のバックエンドサービスに自動的にルーティングします。イングレス設定の例
以下は、W&B オペレーターによって作成された Ingress リソースの例です:W&B オペレーター はイングレスの設定を自動的に作成および管理します。通常、Ingress リソースを手動で作成する必要はありません。クラスターに機能する Ingress controller と適切な
IngressClass が設定されていることを確認してください。SSL/TLS
W&B では、クライアントとサーバー間の安全な通信のために、有効な署名済み SSL/TLS 証明書が必要です。SSL/TLS の終端は、イングレスまたはロードバランサーで行う必要があります。W&B Server アプリケーション自体は SSL/TLS 接続を終端しません。 可能であれば、Let’s Encrypt などのサービスを使用して、信頼された証明書をロードバランサーに提供してください。Caddy や Cloudflare などのサービスを利用すると、SSL の管理を任せることができます。 セキュリティポリシー上、信頼されたネットワーク内でも SSL 通信が必要な場合は、Istio などのツールとサイドカーコンテナーの使用を検討してください。サポートされる CPU アーキテクチャー
W&B は Intel および AMD の 64 ビットアーキテクチャで動作します。ARM はサポートされていません。デプロイ方法
インフラストラクチャーが前述の要件を満たしたら、W&B のインストール方法と基盤となるリソースのプロビジョニング方法を選択します。以下のセクションでは、推奨されるデプロイ方法とインフラストラクチャーのプロビジョニング方法について説明します。Helm を使用した W&B Kubernetes Operator
W&B Self-Managed の推奨インストール方法では、Helm を通じてデプロイされる W&B Kubernetes Operator を使用します。この方法には、次の利点があります。- W&B コンポーネントの更新と管理の自動化。
- 設定とデプロイの簡素化。
- すべてのデプロイメントシナリオ (クラウド、オンプレミス、エアギャップ) へのサポート。
- W&B プラットフォームをオンプレミスにデプロイする - 基本となるインストールガイド。
- エアギャップ環境のインスタンス向け Kubernetes Operator - 外部ネットワークから切り離された環境向け。
インフラストラクチャーのプロビジョニング
W&B の本番デプロイメント向けインフラストラクチャーのプロビジョニングには、Terraform の使用を推奨します。Terraform では、必要なリソース、他のリソースへの参照、リソース間の依存関係を定義できます。W&B は主要なクラウドプロバイダー向けに Terraform モジュールを提供しています。詳しくは、セルフマネージドのクラウドアカウントに W&B Server をデプロイするをご覧ください。サイジング
デプロイメントを計画する際は、以下のガイドラインを出発点として使用してください。W&B は、デプロイメントのすべてのコンポーネントを注意深く監視し、観測された使用パターンに基づいて調整することを推奨します。本番デプロイメントも継続的に監視し、パフォーマンスを維持するために必要に応じて調整してください。 キャパシティを計画する際は、W&B Operator のワークロードを実行する Kubernetes クラスターと、メタデータを保存する MySQL データベースという 2 つの主要コンポーネントのサイズを決定します。推奨事項は、環境 (Test/Dev または本番) によって異なり、Kubernetes については プロダクトの組み合わせ (Models のみ、Weave のみ、または Models と Weave) によっても異なります。W&B は、Test/Dev と本番のどちらも最低 3 台のワーカーノードから始め、本番ではクラスターのオートスケーリングを有効にすることを推奨します。 以下のセクションでは、Kubernetes クラスターと MySQL データベースについて、ノードごとの推奨サイズを示します。Kubernetes のサイジング
- Models のみ
- Weave のみ
- Models と Weave
数値は Kubernetes のワーカーノード 1 台あたりの値です。
MySQL のサイジング
これらの推奨事項は、プロダクトの組み合わせによって変わりません。トポロジと可用性に関するガイダンスについては、MySQL の MySQL のトポロジ を参照してください。
数値は MySQL ノードあたりの値です。
クラウドプロバイダーのインスタンスタイプに関する推奨事項
前述のサイジング表を基にノードごとの CPU、メモリ、ディスクの要件を把握したら、以下を参考に、要件を満たすクラウドプロバイダーのインスタンスタイプとマネージドサービスを選択してください。これらの推奨事項は、クラウドインフラストラクチャー上に W&B をセルフマネージドでデプロイする場合の各ノードに適用されます。- AWS
- Google Cloud
- Azure
推奨マネージドサービス
- Kubernetes: Amazon EKS
- MySQL: Amazon RDS Aurora
- オブジェクトストレージ: Amazon S3