W&B プラットフォーム
W&B Platformは、W&Bの製品であるCore 、Models 、およびWeave をサポートするための基本となるインフラストラクチャー、ツール、およびガバナンスの枠組みです。
W&B Platformは、以下の3つの異なるデプロイメントオプションで利用可能です:
以下の責任分担表は、いくつかの主な違いを示しています:
Multi-tenant Cloud
Dedicated Cloud
Customer-managed
MySQL / DB management
完全にW&Bがホストおよび管理
完全にW&Bが顧客が選択したクラウドまたはリージョンでホストおよび管理
完全に顧客がホストおよび管理
Object Storage (S3/GCS/Blob storage)
オプション 1 : W&Bが完全にホストオプション 2 : Secure Storage Connector を使用して、顧客がチームごとに独自のバケットを設定可能
オプション 1 : W&Bが完全にホストオプション 2 : Secure Storage Connector を使用して、顧客がインスタンスまたはチームごとに独自のバケットを設定可能
完全に顧客がホストおよび管理
SSO Support
Auth0を通じてW&Bが管理
オプション 1 : 顧客が管理オプション 2 : Auth0を通じてW&Bが管理
完全に顧客が管理
W&B Service (App)
W&Bが完全に管理
W&Bが完全に管理
完全に顧客が管理
App security
W&Bが完全に管理
W&Bと顧客の共同責任
完全に顧客が管理
Maintenance (upgrades, backups, etc.)
W&Bが管理
W&Bが管理
顧客が管理
Support
サポートSLA
サポートSLA
サポートSLA
Supported cloud infrastructure
GCP
AWS, GCP, Azure
AWS, GCP, Azure, オンプレミスベアメタル
デプロイメントオプション
以下のセクションでは、各デプロイメントタイプの概要を示します。
W&B Multi-tenant Cloud
W&B Multi-tenant Cloudは、W&Bのクラウドインフラストラクチャーにデプロイされた完全管理型サービスで、希望の規模でW&Bの製品にシームレスにアクセスでき、価格設定のための費用対効果の高いオプションや、最新の機能と機能性のための継続的なアップデートを提供します。W&Bは、Multi-tenant Cloudを製品トライアルに使用することを推奨しています。また、プライベートデプロイメントのセキュリティが不要で、自己サービスのオンボーディングが重要であり、コスト効率が重要である場合には、プロダクションAIワークフローを管理するのに適しています。
詳細は、W&B Multi-tenant Cloud をご覧ください。
W&B Dedicated Cloud
W&B Dedicated Cloudは、W&Bのクラウドインフラストラクチャーにデプロイされるシングルテナントの完全管理型サービスです。データレジデンシーを含む厳格なガバナンス管理に準拠する必要があり、高度なセキュリティ機能を求め、セキュリティ、スケール、性能特性を備えた必要なインフラストラクチャーを構築・管理することなくAI運用コストを最適化しようとしている場合、W&Bを導入する最適な場所です。
詳細は、W&B Dedicated Cloud をご覧ください。
W&B Customer-Managed
このオプションでは、独自に管理するインフラストラクチャーにW&B Serverをデプロイし、管理することができます。W&B Serverは、W&B Platformとそのサポート製品を実行するための自己完結型パッケージメカニズムです。W&Bは、既存のすべてのインフラストラクチャーがオンプレミスである場合、またはW&B Dedicated Cloudでは満たされない厳格な規制ニーズがある場合、このオプションを推奨します。このオプションでは、W&B Serverをサポートするために必要なインフラストラクチャーのプロビジョニング、および継続的なメンテナンスとアップグレードを管理する完全な責任を負います。
詳細は、W&B Self Managed をご覧ください。
次のステップ
W&Bの製品を試したい場合、W&BはMulti-tenant Cloud の使用を推奨します。企業向けのセットアップを探している場合は、こちら からトライアルに適したデプロイメントタイプを選択してください。
1 - デプロイメントオプション
1.1 - W&B マルチテナント SaaS を使用する
W&B マルチテナントクラウドは、W&B の Google Cloud Platform (GCP) アカウントに展開されている完全管理型のプラットフォームで、GPC の北米リージョン で利用可能です。W&B マルチテナントクラウドは、GCP の自動スケーリングを利用しており、トラフィックの増減に応じて適切にプラットフォームがスケールします。
データのセキュリティ
非エンタープライズプランのユーザーの場合、すべてのデータは共有クラウドストレージにのみ保存され、共有クラウドコンピューティングサービスで処理されます。料金プランによっては、保存容量制限が適用される場合があります。
エンタープライズプランのユーザーは、セキュアストレージコネクタを使用して独自のバケット(BYOB)をチームレベルで使用する ことができ、モデルやデータセットなどのファイルを保存できます。複数のチームに対して単一のバケットを設定することも、W&B Teams の異なるために個別のバケットを使用することも可能です。チームにセキュアストレージコネクタを設定しない場合、データは共有クラウドストレージに保存されます。
アイデンティティとアクセス管理 (IAM)
エンタープライズプランの場合、W&B Organization における安全な認証と効果的な権限付与のためのアイデンティティとアクセス管理機能を使用できます。マルチテナントクラウドで利用可能な IAM の機能は以下の通りです:
OIDC または SAML を使用した SSO 認証。組織で SSO を設定したい場合は、W&B チームまたはサポートにお問い合わせください。
組織の範囲およびチーム内で適切なユーザーロールを設定 します。
プロジェクトを制限されたプロジェクトとして定義し、誰がそのプロジェクトを見る、編集する、または W&B Runs を送信できるかを制限します。制限付きプロジェクト を参照。
モニター
組織の管理者は、アカウントビューの Billing
タブから使用状況と請求を管理できます。マルチテナントクラウドで共有クラウドストレージを使用している場合、管理者は組織内の異なるチーム間でストレージの使用を最適化することができます。
メンテナンス
W&B マルチテナントクラウドはマルチテナントの完全管理型プラットフォームです。W&B によって管理されているため、W&B プラットフォームのプロビジョニングや維持にかかるオーバーヘッドやコストは発生しません。
コンプライアンス
マルチテナントクラウドのセキュリティ管理は、定期的に内部および外部の監査を受けています。W&B セキュリティポータル を参照して、SOC2 レポートやその他のセキュリティおよびコンプライアンスに関する文書をリクエストしてください。
次のステップ
非エンタープライズ機能を探している場合は、マルチテナントクラウドに直接アクセス してください。エンタープライズプランを開始するには、このフォーム を提出してください。
1.2 - 自己管理
W&B をプロダクション環境に展開する
セルフ管理クラウドまたはオンプレインフラストラクチャーを使用
あなたの AWS, GCP, または Azure クラウドアカウント または オンプレミスのインフラストラクチャー に W&B Server をデプロイしてください。
あなたの IT/DevOps/MLOps チームが、デプロイメントのプロビジョニング、アップグレードの管理、セルフマネージド W&B Server インスタンスの継続的な保守を担当します。
セルフ管理クラウドアカウントに W&B Server をデプロイする
W&B は、公式の W&B Terraform スクリプトを使用して、AWS、GCP、または Azure のクラウドアカウントに W&B Server をデプロイすることを推奨します。
AWS 、GCP または Azure に W&B Server を設定する方法については、各クラウドプロバイダーのドキュメントを参照してください。
オンプレインフラストラクチャーに W&B Server をデプロイする
W&B Server をオンプレインフラストラクチャーに設定するには、いくつかのインフラストラクチャーコンポーネントを設定する必要があります。これらのコンポーネントには、以下が含まれますが、それに限定されません:
(強く推奨) Kubernetes クラスター
MySQL 8 データベースクラスター
Amazon S3 互換オブジェクトストレージ
Redis キャッシュクラスター
オンプレインフラストラクチャーに W&B Server をインストールする方法については、Install on on-prem infrastructure を参照してください。W&B はさまざまなコンポーネントに関する推奨事項を提供し、インストールプロセスをガイドします。
カスタムクラウドプラットフォームに W&B Server をデプロイする
AWS、GCP、または Azure ではないクラウドプラットフォームに W&B Server をデプロイすることができます。これには、オンプレインフラストラクチャー にデプロイする場合と同様の要件があります。
W&B Server ライセンスの取得
W&B server の設定を完了するには、W&B のトライアルライセンスが必要です。 Deploy Manager を開いて、無料のトライアルライセンスを生成してください。
まだ W&B アカウントをお持ちでない場合は、無料ライセンスを生成するためにアカウントを作成してください。
重要なセキュリティ & 企業向け機能のサポートを含む、W&B Server のエンタープライズライセンスが必要な場合は、このフォームを送信 するか、W&B チームに連絡してください。
URL は Get a License for W&B Local フォームにリダイレクトします。次の情報を提供してください:
Choose Platform ステップでデプロイタイプを選択します。
Basic Information ステップでライセンスの所有者を選択するか、新しい組織を追加します。
Get a License ステップでインスタンスの名前を入力し、任意で Description フィールドに説明を提供します。
Generate License Key ボタンを選択します。
インスタンスに関連付けられたライセンスとともにデプロイメントの概要を示すページが表示されます。
1.2.1 - リファレンス アーキテクチャー
W&B リファレンス アーキテクチャー
このページでは、Weights & Biasesデプロイメントのためのリファレンスアーキテクチャについて説明し、プラットフォームのプロダクションデプロイメントをサポートするための推奨インフラストラクチャとリソースを示します。
Weights & Biases(W&B)のデプロイメント環境に応じて、デプロイメントのレジリエンスを高めるためのさまざまなサービスが利用できます。
たとえば、主要なクラウドプロバイダは、データベースの設定、保守、高可用性、レジリエンスの複雑さを軽減する堅牢な管理データベースサービスを提供しています。
このリファレンスアーキテクチャは、一般的なデプロイメントシナリオに対応し、クラウドベンダーのサービスとW&Bデプロイメントを統合する方法を示します。
始める前に
プロダクション環境でアプリケーションを実行するには、それぞれの課題が伴い、W&Bも例外ではありません。プロセスを簡素化しようとしていますが、個別のアーキテクチャや設計の決定に応じて、ある程度の複雑さが発生する場合があります。通常、プロダクションデプロイメントの管理には、ハードウェア、オペレーティングシステム、ネットワーキング、ストレージ、セキュリティ、W&Bプラットフォーム自体、およびその他の依存関係を含むさまざまなコンポーネントの監督が含まれます。この責任は、環境の初期セットアップとその継続的な保守の両方に及びます。
W&Bを自社で管理するアプローチが、あなたのチームが抱える特定の要件に適しているかどうかを慎重に検討してください。
プロダクションレベルのアプリケーションを実行および維持する方法についての強力な理解は、自己管理型のW&Bをデプロイする前の重要な前提条件です。あなたのチームが支援を必要とする場合、弊社のプロフェッショナルサービスチームとパートナーが、実装と最適化のサポートを提供します。
自分で管理する代わりに、W&Bの管理されたソリューションについて詳しく知るには、W&Bマルチテナントクラウド およびW&B専用クラウド を参照してください。
インフラストラクチャ
アプリケーション層
アプリケーション層は、ノード障害に対するレジリエンスを備えたマルチノードKubernetesクラスターで構成されます。Kubernetesクラスターは、W&Bのポッドを実行および管理します。
ストレージ層
ストレージ層は、MySQLデータベースとオブジェクトストレージで構成されます。MySQLデータベースはメタデータを保存し、オブジェクトストレージはモデルやデータセットなどのアーティファクトを保存します。
インフラストラクチャの要件
Kubernetes
W&Bサーバーアプリケーションは、複数のポッドをデプロイするKubernetesオペレーター としてデプロイされます。このため、W&Bには以下の要件を備えたKubernetesクラスターが必要です:
完全に設定され機能するインフラストラクチャコントローラ。
永続ボリュームをプロビジョニングする能力。
MySQL
W&BはメタデータをMySQLデータベースに保存します。データベースのパフォーマンスとストレージの要件は、モデルパラメータの形状と関連するメタデータに依存します。たとえば、トレーニングランをより多くトラッキングするにつれてデータベースはサイズが成長し、ランテーブル、ユーザーワークスペース、およびレポートにおけるクエリに基づいてデータベースの負荷は増加します。
自己管理型のMySQLデータベースをデプロイするときは、以下の点を考慮してください:
バックアップ . データベースを別の施設に周期的にバックアップするべきです。W&Bは、少なくとも1週間の保持で、毎日のバックアップを推奨します。
パフォーマンス . サーバーが稼働しているディスクは高速であるべきです。W&Bは、データベースをSSDまたは加速されたNASで実行することを推奨しています。
モニタリング . データベースは負荷に対して監視されるべきです。システムのCPU使用率が5分以上持続的に40%を超える場合、サーバーがリソース不足であることを示している可能性があります。
可用性 . 可用性と耐久性の要件によって、プライマリサーバーからリアルタイムですべての更新をストリーミングし、プライマリサーバーがクラッシュするか破損するイベントに備えてフェイルオーバーできるホットスタンバイを別のマシンで設定することを検討するかもしれません。
オブジェクトストレージ
W&Bは、Pre-signed URLとCORSサポートのあるオブジェクトストレージを必要とし、次のいずれかにデプロイします:
Amazon S3
Azure Cloud Storage
Google Cloud Storage
Amazon S3互換のストレージサービス
バージョン
ソフトウェア
最小バージョン
Kubernetes
v1.29
MySQL
v8.0.0, “一般可用性"リリースのみ
ネットワーク
ネットワークデプロイメントの際、インストール中およびランタイム中にこれらのエンドポイントへのエージェントのアクセスが必要です:
エアギャップデプロイメントについて知るには、エアギャップインスタンス用Kubernetesオペレーター を参照してください。
トレーニングインフラストラクチャと実験のニーズを追跡する各システムにおいて、W&Bおよびオブジェクトストレージへのアクセスが必要です。
DNS
W&Bデプロイメントの完全修飾ドメイン名(FQDN)は、Aレコードを使用してインフラストラクチャのIPアドレスに解決する必要があります。
SSL/TLS
W&Bは、クライアントとサーバー間の安全な通信のために、有効な署名されたSSL/TLS証明書を必要とします。SSL/TLSの終端は、インフラストラクチャで行われる必要があります。W&Bサーバーアプリケーションは、SSLまたはTLS接続を終了しません。
ご注意: W&Bは自己署名証明書およびカスタムCAの使用を推奨していません。
対応するCPUアーキテクチャ
W&BはIntel(x86)CPUアーキテクチャ上で実行されます。ARMはサポートされていません。
インフラストラクチャのプロビジョニング
Terraformはプロダクション用にW&Bをデプロイするために推奨される方法です。Terraformを使用すると、必要なリソース、それらの他のリソースへの参照、および依存関係を定義できます。W&Bは主要なクラウドプロバイダ向けにTerraformモジュールを提供しています。詳細については、自己管理型クラウドアカウントでW&Bサーバーをデプロイする方法 を参照してください。
サイズ調整
デプロイメントを計画する際の出発点として、以下の一般的なガイドラインを使用してください。W&Bは、新しいデプロイメントのすべてのコンポーネントを厳密に監視し、観察された使用パターンに基づいて調整を行うことを推奨します。時間をかけてプロダクションデプロイメントを監視し、最適なパフォーマンスを維持するために必要に応じて調整を行い続けてください。
Modelsのみ
Kubernetes
環境
CPU
メモリ
ディスク
テスト・開発
2 cores
16 GB
100 GB
プロダクション
8 cores
64 GB
100 GB
数字はKubernetesワーカーノードごとです。
MySQL
環境
CPU
メモリ
ディスク
テスト・開発
2 cores
16 GB
100 GB
プロダクション
8 cores
64 GB
500 GB
数字はMySQLノードごとです。
Weaveのみ
Kubernetes
環境
CPU
メモリ
ディスク
テスト・開発
4 cores
32 GB
100 GB
プロダクション
12 cores
96 GB
100 GB
数字はKubernetesワーカーノードごとです。
MySQL
環境
CPU
メモリ
ディスク
テスト・開発
2 cores
16 GB
100 GB
プロダクション
8 cores
64 GB
500 GB
数字はMySQLノードごとです。
ModelsとWeave
Kubernetes
環境
CPU
メモリ
ディスク
テスト・開発
4 cores
32 GB
100 GB
プロダクション
16 cores
128 GB
100 GB
数字はKubernetesワーカーノードごとです。
MySQL
環境
CPU
メモリ
ディスク
テスト・開発
2 cores
16 GB
100 GB
プロダクション
8 cores
64 GB
500 GB
数字はMySQLノードごとです。
クラウドプロバイダーインスタンスの推奨
サービス
クラウド
Kubernetes
MySQL
オブジェクトストレージ
AWS
EKS
RDS Aurora
S3
GCP
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
GCP
環境
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
1.2.2 - W&B サーバーを Kubernetes で実行する
W&B プラットフォーム を Kubernetes Operator でデプロイする
W&B Kubernetes オペレーター
W&B Kubernetes オペレーターを使用して、Kubernetes 上の W&B Server デプロイメントを展開、管理、トラブルシューティング、およびスケーリングを簡素化します。このオペレーターは、W&B インスタンス用のスマートアシスタントと考えることができます。
W&B Server のアーキテクチャと設計は、AI 開発者のツール提供能力を拡張し、高性能でより優れたスケーラビリティと簡易な管理を提供するために進化し続けています。この進化は、コンピューティングサービス、関連ストレージ、およびそれらの接続性に適用されます。デプロイメントタイプ全体での継続的な更新と改善を促進するために、W&B は Kubernetes オペレーターを使用しています。
W&B はオペレーターを使用して、AWS、GCP、および Azure のパブリッククラウド上で専用クラウドインスタンスをデプロイおよび管理します。
Kubernetes オペレーターに関する詳細情報は、Kubernetes のドキュメントにあるオペレーターパターン を参照してください。
アーキテクチャの変更理由
歴史的に、W&B アプリケーションは Kubernetes クラスター内の単一デプロイメントおよびポッド、または単一の Docker コンテナとしてデプロイされていました。W&B は引き続き、データベースおよびオブジェクトストアを外部化することを推奨しています。データベースとオブジェクトストアの外部化は、アプリケーションの状態を切り離します。
アプリケーションが成長するにつれて、モノリシックコンテナから分散システム(マイクロサービス)へ進化するニーズが明らかになりました。この変更はバックエンドロジックの処理を容易にし、組み込みの Kubernetes インフラストラクチャ能力をスムーズに導入します。分散システムはまた、新しいサービスの展開をサポートし、W&B が依存する追加の機能を提供します。
2024年以前、Kubernetes 関連の変更は、terraform-kubernetes-wandb Terraform モジュールを手動で更新する必要がありました。Terraform モジュールを更新することで、クラウドプロバイダー間の互換性が確保され、必要な Terraform 変数が設定され、すべてのバックエンドまたは Kubernetes レベルの変更ごとに Terraform を適用することが保証されました。
このプロセスはスケーラブルではありませんでした。なぜなら、W&B サポートが各顧客に対して Terraform モジュールのアップグレードを支援しなければならなかったからです。
その解決策は、中央の deploy.wandb.ai サーバーに接続するオペレーターを実装し、特定のリリースチャンネルに対する最新の仕様変更を要求して適用することでした。ライセンスが有効な限り、更新が受け取れます。Helm は、W&B オペレーターのデプロイメントメカニズムとして、また W&B Kubernetes スタックのすべての設定テンプレート処理を行う手段として使用され、Helm-セプションを実現します。
仕組み
オペレーターを helm でインストールするか、ソースからインストールすることができます。詳細な手順はcharts/operator を参照してください。
インストールプロセスは controller-manager
という名前のデプロイメントを作成し、spec
をクラスターに適用する weightsandbiases.apps.wandb.com
(shortName: wandb
) という名前のカスタムリソース 定義を使用します。
apiVersion : apiextensions.k8s.io/v1
kind : CustomResourceDefinition
metadata :
name : weightsandbiases.apps.wandb.com
controller-manager
は、カスタムリソース、リリースチャンネル、およびユーザー定義の設定の spec に基づいて charts/operator-wandb をインストールします。設定の仕様の階層は、ユーザー側での最大限の設定の柔軟性を実現し、新しい画像、設定、機能、および Helm 更新を自動的にリリースすることが可能です。
設定オプションについては、設定仕様階層 および設定参照 を参照してください。
設定仕様階層
設定仕様は、上位レベルの仕様が下位レベルのものをオーバーライドする階層モデルに従います。以下はその仕組みです:
リリースチャンネル値 : これは基本レベルの設定で、デプロイメントに対する W&B によって設定されたリリースチャンネルに基づいてデフォルトの値と設定を設定します。
ユーザー入力値 : システムコンソールを通じて、ユーザーはリリースチャンネル Spec によって提供されるデフォルト設定をオーバーライドすることができます。
カスタムリソース値 : ユーザーから提供される最高レベルの仕様です。ここで指定された値は、ユーザー入力およびリリースチャンネルの仕様の両方をオーバーライドします。設定オプションの詳細な説明については、設定参照 を参照してください。
この階層モデルは、さまざまなニーズに合わせて柔軟でカスタマイズ可能な設定を保証し、管理可能で体系的なアップグレードと変更のアプローチを維持します。
W&B Kubernetes オペレーターを使用するための要件
W&B を W&B Kubernetes オペレーターでデプロイするために、次の要件を満たしてください:
リファレンスアーキテクチャ を参照してください。また、有効な W&B サーバーライセンスを取得 します。
セルフマネージドインストールのセットアップと構成方法についての詳細な説明は、こちらのガイド を参照してください。
インストール方法によっては、次の要件を満たす必要がある場合があります:
正しい Kubernetes クラスターコンテキストでインストール済みかつ構成済みの Kubectl。
Helm がインストールされていること。
エアギャップインストール
エアギャップ環境での W&B Kubernetes オペレーターのインストール方法については、Deploy W&B in airgapped environment with Kubernetes チュートリアルを参照してください。
W&B Server アプリケーションのデプロイ
このセクションでは、W&B Kubernetes オペレーターをデプロイするさまざまな方法を説明しています。
W&B Operator は、W&B Server のデフォルトで推奨されるインストール方法です
以下のいずれかを選択してください:
必要なすべての外部サービスをプロビジョニング済みで、Helm CLI を使用して W&B を Kubernetes にデプロイしたい場合はこちら を参照してください。
インフラストラクチャと W&B Server を Terraform で管理することを好む場合はこちら を参照してください。
W&B Cloud Terraform Modules を利用したい場合はこちら を参照してください。
Helm CLI で W&B をデプロイする
W&B は W&B Kubernetes オペレーターを Kubernetes クラスターにデプロイするための Helm Chart を提供しています。この方法により、Helm CLI または ArgoCD などの継続的デリバリーツールを使用して W&B Server をデプロイできます。上記の要件が満たされていることを確認してください。
次の手順に従って、Helm CLI を使用して W&B Kubernetes オペレーターをインストールします:
W&B Helm リポジトリを追加します。W&B Helm チャートは W&B Helm リポジトリで利用可能です。以下のコマンドでリポジトリを追加します:
helm repo add wandb https://charts.wandb.ai
helm repo update
Kubernetes クラスターにオペレーターをインストールします。以下をコピーして貼り付けます:
helm upgrade --install operator wandb/operator -n wandb-cr --create-namespace
W&B オペレーターのカスタムリソースを構成して W&B Server のインストールをトリガーします。この設定の例を operator.yaml
というファイルにコピーし、W&B デプロイメントをカスタマイズできるようにします。設定参照 を参照してください。
apiVersion : apps.wandb.com/v1
kind : WeightsAndBiases
metadata :
labels :
app.kubernetes.io/instance : wandb
app.kubernetes.io/name : weightsandbiases
name : wandb
namespace : default
spec :
chart :
url : http://charts.yourdomain.com
name : operator-wandb
version : 0.18.0
values :
global :
host : https://wandb.yourdomain.com
license : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
bucket :
accessKey : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
secretKey : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
name: s3.yourdomain.com:port #Ex. : s3.yourdomain.com:9000
path : bucket_name
provider : s3
region : us-east-1
mysql :
database : wandb
host : mysql.home.lab
password : password
port : 3306
user : wandb
extraEnv :
ENABLE_REGISTRY_UI : 'true'
# Ensure it's set to use your own MySQL
mysql :
install : false
app :
image :
repository : registry.yourdomain.com/local
tag : 0.59.2
console :
image :
repository : registry.yourdomain.com/console
tag : 2.12.2
ingress :
annotations :
nginx.ingress.kubernetes.io/proxy-body-size : 64m
class : nginx
独自の設定でオペレーターを開始して、W&B Server アプリケーションをインストールおよび構成できるようにします。
kubectl apply -f operator.yaml
デプロイメントが完了するまで待ちます。これには数分かかります。
Web UI を使用してインストールを検証するには、最初の管理者ユーザーアカウントを作成し、インストールの検証 で説明されている検証手順に従います。
この方法は、特定の要件に合わせたカスタマイズされたデプロイメントを可能にし、Terraform のインフラストラクチャ-as-code アプローチを活用して一貫性と再現性を実現します。公式の W&B Helm ベースの Terraform Module はこちら にあります。
以下のコードを出発点として使用し、本番グレードのデプロイメントに必要な設定オプションをすべて含めることができます。
module "wandb" {
source = "wandb/wandb/helm"
spec = {
values = {
global = {
host = "https://<HOST_URI>"
license = "eyJhbGnUzaH...j9ZieKQ2x5GGfw"
bucket = {
< details depend on the provider >
}
mysql = {
< redacted >
}
}
ingress = {
annotations = {
"a" = "b"
"x" = "y"
}
}
}
}
}
設定オプションは設定参照 に記載されているものと同じですが、構文は HashiCorp Configuration Language (HCL) に従う必要があります。Terraform モジュールは、W&B カスタムリソース定義 (CRD) を作成します。
W&B&Biases 自身が「Dedicated cloud」インストールをデプロイするために Helm Terraform モジュールをどのように活用しているかを知るには、次のリンクをたどってください:
W&B は AWS、GCP、および Azure のための Terraform Modules を提供しています。これらのモジュールは、Kubernetes クラスター、ロードバランサー、MySQL データベースなどのインフラ全体と同様に W&B Server アプリケーションをデプロイします。これらの公式 W&B クラウド固有の Terraform Modules には、W&B Kubernetes オペレーターが既に組み込まれています。
この統合により、最小限のセットアップで W&B インスタンス用の W&B Kubernetes オペレーターの準備が整い、クラウド環境での W&B Server のデプロイと管理がスムーズに行えます。
これらのモジュールの使用方法の詳細な説明については、これをセクション のセルフマネージドインストールセクションのドキュメントを参照してください。
インストールを検証する
インストールを検証するには、W&B は W&B CLI を使用することを推奨しています。検証コマンドは、すべてのコンポーネントと設定を検証するいくつかのテストを実行します。
このステップは、最初の管理者ユーザーアカウントをブラウザで作成してあることを前提としています。
インストールを検証するために以下の手順に従います:
W&B CLI をインストールします:
W&B にログインします:
wandb login --host= https://YOUR_DNS_DOMAIN
例:
wandb login --host= https://wandb.company-name.com
インストールを検証します:
正常なインストールと完全に機能する W&B デプロイメントは、次の出力を示します:
Default host selected: https://wandb.company-name.com
Find detailed logs for this test at: /var/folders/pn/b3g3gnc11_sbsykqkm3tx5rh0000gp/T/tmpdtdjbxua/wandb
Checking if logged in...................................................✅
Checking signed URL upload..............................................✅
Checking ability to send large payloads through proxy...................✅
Checking requests to base url...........................................✅
Checking requests made over signed URLs.................................✅
Checking CORs configuration of the bucket...............................✅
Checking wandb package version is up to date............................✅
Checking logged metrics, saving and downloading a file..................✅
Checking artifact save and download workflows...........................✅
W&B 管理コンソールへのアクセス
W&B Kubernetes オペレーターには管理コンソールが付属しています。 ${HOST_URI}/console
にあり、例えば https://wandb.company-name.com/
です。
管理コンソールにログインする方法は2つあります:
W&B アプリケーションをブラウザで開き、ログインします。W&B アプリケーションには ${HOST_URI}/
でログインします。例えば https://wandb.company-name.com/
コンソールにアクセスします。右上のアイコンをクリックし、次に System console をクリックします。管理者権限を持つユーザーだけが System console エントリを見ることができます。
W&B は、Option 1 が機能しない場合のみ、以下の手順を使用してコンソールにアクセスすることを推奨します。
ブラウザでコンソールアプリケーションを開きます。上記で説明されている URL を開くと、ログイン画面にリダイレクトされます:
インストールが生成する Kubernetes シークレットからパスワードを取得します:
kubectl get secret wandb-password -o jsonpath= '{.data.password}' | base64 -d
パスワードをコピーします。
コンソールにログインします。コピーしたパスワードを貼り付け、次に Login をクリックします。
W&B Kubernetes オペレーターの更新
このセクションでは、W&B Kubernetes オペレーターを更新する方法を説明します。
W&B Kubernetes オペレーターを更新しても、W&B サーバーアプリケーションは更新されません。
W&B Kubernetes オペレーターを使用していない helm chart を使用している場合は、続いて W&B オペレーターを更新する手順を実行する前にこちら の指示を参照してください。
以下のコードスニペットをターミナルにコピーして貼り付けます。
まず、 helm repo update
でリポジトリを更新します:
次に、 helm upgrade
で Helm チャートを更新します:
helm upgrade operator wandb/operator -n wandb-cr --reuse-values
W&B Server アプリケーションの更新
W&B Kubernetes オペレーターを使用する場合、W&B Server アプリケーションの更新は不要です。
オペレーターは、W&B のソフトウェアの新しいバージョンがリリースされると、W&B Server アプリケーションを自動的に更新します。
W&B オペレーターへのセルフマネージドインスタンスの移行
このセクションでは、自分自身で W&B Server インストールを管理することから、W&B オペレーターを使用してこれを実行するための移行プロセスを説明しています。移行プロセスは、W&B Server をインストールした方法によって異なります:
W&B オペレーターは、W&B Server のデフォルトで推奨されるインストール方法です。質問がある場合や不明点がある場合は、
カスタマーサポート または W&B チームに問い合わせてください。
移行プロセスの詳細な説明については、こちら here を参照してください。
質問がある場合や支援が必要な際は、カスタマーサポート または W&B チームにお問い合わせください。
質問がある場合や支援が必要な際は、カスタマーサポート または W&B チームにお問い合わせください。
オペレーターを基にした Helm チャートへの移行
オペレーターを基にした Helm チャートへの移行手順は次のとおりです:
現在の W&B 設定を取得します。W&B がオペレーターを基にしていないバージョンの Helm チャートでデプロイされている場合、次のように値をエクスポートします:
W&B が Kubernetes マニフェストでデプロイされている場合、次のように値をエクスポートします:
kubectl get deployment wandb -o yaml
これで、次のステップで必要なすべての設定値が手元にあります。
operator.yaml
というファイルを作成します。設定参照 で説明されている形式に従ってください。ステップ 1 の値を使用します。
現在のデプロイメントを 0 ポッドにスケールします。このステップで現在のデプロイメントを停止します。
kubectl scale --replicas= 0 deployment wandb
Helm チャートのリポジトリを更新します:
新しい Helm チャートをインストールします:
helm upgrade --install operator wandb/operator -n wandb-cr --create-namespace
新しい helm チャートを構成し、W&B アプリケーションのデプロイメントをトリガーします。新しい設定を適用します。
kubectl apply -f operator.yaml
デプロイメントが完了するまでに数分かかります。
インストールを検証します。すべてが正常に動作することを確認するために、インストールの検証 の手順に従います。
古いインストールの削除。古い helm チャートをアンインストールするか、マニフェストで作成されたリソースを削除します。
オペレーターを基にした Helm チャートへの移行手順は次のとおりです:
Terraform 設定を準備します。Terraform 設定内の古いデプロイメントの Terraform コードを、こちら で説明されているものに置き換えます。以前と同じ変数を設定します。.tfvars ファイルがある場合、それを変更しないでください。
Terraform run を実行します。terraform init、plan、および apply を実行します。
インストールを検証します。すべてが正常に動作することを確認するために、インストールの検証 の手順に従います。
古いインストールの削除。古い helm チャートをアンインストールするか、マニフェストで作成されたリソースを削除します。
Configuration Reference for W&B Server
このセクションでは、W&B サーバーアプリケーションの設定オプションについて説明します。アプリケーションは、WeightsAndBiases というカスタムリソース定義としてその設定を受け取ります。一部の設定オプションは以下の設定で公開され、他は環境変数として設定する必要があります。
ドキュメントには環境変数が2つのリストに分かれています:basic および advanced 。必要な設定オプションが Helm Chart を使用して公開されていない場合にのみ環境変数を使用してください。
本番展開用の W&B サーバーアプリケーションの設定ファイルには、以下の内容が必要です。この YAML ファイルは、W&B デプロイメントの望ましい状態を定義し、バージョン、環境変数、データベースなどの外部リソース、およびその他必要な設定を含みます。
apiVersion : apps.wandb.com/v1
kind : WeightsAndBiases
metadata :
labels :
app.kubernetes.io/name : weightsandbiases
app.kubernetes.io/instance : wandb
name : wandb
namespace : default
spec :
values :
global :
host : https://<HOST_URI>
license : eyJhbGnUzaH...j9ZieKQ2x5GGfw
bucket :
<details depend on the provider>
mysql :
<redacted>
ingress :
annotations :
<redacted>
完全な値セットは W&B Helm リポジトリ にあります。オーバーライドする必要がある値のみを変更してください。
完全な例
これは、GCP Kubernetes を使用した GCP Ingress および GCS(GCP オブジェクトストレージ)を使用した設定例です:
apiVersion : apps.wandb.com/v1
kind : WeightsAndBiases
metadata :
labels :
app.kubernetes.io/name : weightsandbiases
app.kubernetes.io/instance : wandb
name : wandb
namespace : default
spec :
values :
global :
host : https://abc-wandb.sandbox-gcp.wandb.ml
bucket :
name : abc-wandb-moving-pipefish
provider : gcs
mysql :
database : wandb_local
host : 10.218.0.2
name : wandb_local
password : 8wtX6cJHizAZvYScjDzZcUarK4zZGjpV
port : 3306
user : wandb
license : eyJhbGnUzaHgyQjQyQWhEU3...ZieKQ2x5GGfw
ingress :
annotations :
ingress.gcp.kubernetes.io/pre-shared-cert : abc-wandb-cert-creative-puma
kubernetes.io/ingress.class : gce
kubernetes.io/ingress.global-static-ip-name : abc-wandb-operator-address
ホスト
# プロトコルと共に完全修飾ドメイン名を提供
global :
# ホスト名の例、独自のものに置き換え
host : https://wandb example com
オブジェクトストレージ (バケット)
AWS
global :
bucket :
provider : "s3"
name : ""
kmsKey : ""
region : ""
GCP
global :
bucket :
provider : "gcs"
name : ""
Azure
global :
bucket :
provider : "az"
name : ""
secretKey : ""
その他のプロバイダー(Minio、Ceph、など)
他の S3 互換プロバイダーの場合、バケットの設定は次のようにします:
global :
bucket :
# 例の値、独自のものに置き換え
provider : s3
name : storage.example.com
kmsKey : null
path : wandb
region : default
accessKey : 5WOA500...P5DK7I
secretKey : HDKYe4Q...JAp1YyjysnX
AWS 外部でホスティングされている S3 互換ストレージの場合、kmsKey
は null
にする必要があります。
accessKey
および secretKey
をシークレットから参照するには:
global :
bucket :
# 例の値、独自のものに置き換え
provider : s3
name : storage.example.com
kmsKey : null
path : wandb
region : default
secret :
secretName : bucket-secret
accessKeyName : ACCESS_KEY
secretKeyName : SECRET_KEY
MySQL
global :
mysql :
# 例の値、独自のものに置き換え
host : db.example.com
port : 3306
database : wandb_local
user : wandb
password : 8wtX6cJH...ZcUarK4zZGjpV
password
をシークレットから参照するには:
global :
mysql :
# 例の値、独自のものに置き換え
host : db.example.com
port : 3306
database : wandb_local
user : wandb
passwordSecret :
name : database-secret
passwordKey : MYSQL_WANDB_PASSWORD
ライセンス
global :
# 例のライセンス、独自のものに置き換え
license : eyJhbGnUzaHgyQjQy...VFnPS_KETXg1hi
license
をシークレットから参照するには:
global :
licenseSecret :
name : license-secret
key : CUSTOMER_WANDB_LICENSE
Ingress
Kubernetes ingress クラスを識別する方法については、FAQ エントリ を参照してください。
TLS なし
global :
# 重要: Ingress は YAML の `global` と同じレベルにあります(子ではありません)
ingress :
class : ""
TLS 使用
証明書が含まれるシークレットを作成します
kubectl create secret tls wandb-ingress-tls --key wandb-ingress-tls.key --cert wandb-ingress-tls.crt
Ingress 設定でシークレットを参照します
global :
# 重要: Ingress は YAML の `global` と同じレベルにあります(子ではありません)
ingress :
class : ""
annotations :
{}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
tls :
- secretName : wandb-ingress-tls
hosts :
- <HOST_URI>
Nginx の場合、次の注釈を追加する必要があるかもしれません:
ingress:
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: 64m
カスタム Kubernetes ServiceAccounts
W&B ポッドを実行するためにカスタム Kubernetes Service Account を指定します。
次のスニペットは、指定された名前でデプロイメントの一部としてサービスアカウントを作成します:
app :
serviceAccount :
name : custom-service-account
create : true
parquet :
serviceAccount :
name : custom-service-account
create : true
global :
...
サブシステム “app” および “parquet” は指定されたサービスアカウントの下で実行されます。他のサブシステムはデフォルトのサービスアカウントで実行されます。
サービスアカウントがクラスター上で既に存在する場合、create: false
を設定します:
app :
serviceAccount :
name : custom-service-account
create : false
parquet :
serviceAccount :
name : custom-service-account
create : false
global :
...
app, parquet, console, その他の様々なサブシステム上にサービスアカウントを指定できます:
app :
serviceAccount :
name : custom-service-account
create : true
console :
serviceAccount :
name : custom-service-account
create : true
global :
...
サブシステム間でサービスアカウントを異なるものにすることができます:
app :
serviceAccount :
name : custom-service-account
create : false
console :
serviceAccount :
name : another-custom-service-account
create : true
global :
...
外部 Redis
redis :
install : false
global :
redis :
host : ""
port : 6379
password : ""
parameters : {}
caCert : ""
password
をシークレットから参照するには:
kubectl create secret generic redis-secret --from-literal=redis-password=supersecret
下記の設定で参照します:
redis :
install : false
global :
redis :
host : redis.example
port : 9001
auth :
enabled : true
secret : redis-secret
key : redis-password
LDAP
TLS を使用しない場合
global :
ldap :
enabled : true
# LDAP サーバーアドレスには "ldap://" または "ldaps://" を含める
host :
# ユーザーを見つけるために使用する LDAP 検索ベース
baseDN :
# バインドに使用する LDAP ユーザー(匿名バインドを使用しない場合)
bindDN :
# バインドに使用する LDAP パスワードを含むシークレットの名前とキー(匿名バインドを使用しない場合)
bindPW :
# 電子メールおよびグループ ID 属性名の LDAP 属性をカンマ区切りの文字列で指定
attributes :
# LDAP グループ許可リスト
groupAllowList :
# LDAP TLS の有効化
tls : false
TLS 使用
LDAP TLS 証明書の設定には、証明書内容をプレ作成した config map が必要です。
config map を作成するには、次のコマンドを使用できます:
kubectl create configmap ldap-tls-cert --from-file=certificate.crt
そして、下記の例のように YAML 内で config map を使用します:
global :
ldap :
enabled : true
# LDAP サーバーアドレスには "ldap://" または "ldaps://" を含める
host :
# ユーザーを見つけるために使用する LDAP 検索ベース
baseDN :
# バインドに使用する LDAP ユーザー(匿名バインドを使用しない場合)
bindDN :
# バインドに使用する LDAP パスワードを含むシークレットの名前とキー(匿名バインドを使用しない場合)
bindPW :
# 電子メールおよびグループ ID 属性名の LDAP 属性をカンマ区切りの文字列で指定
attributes :
# LDAP グループ許可リスト
groupAllowList :
# LDAP TLS の有効化
tls : true
# LDAP サーバーの CA 証明書を含む ConfigMap の名前とキー
tlsCert :
configMap :
name : "ldap-tls-cert"
key : "certificate.crt"
OIDC SSO
global :
auth :
sessionLengthHours : 720
oidc :
clientId : ""
secret : ""
# IdP が要求する場合のみ含める。
authMethod : ""
issuer : ""
authMethod
はオプションです。
SMTP
global :
email :
smtp :
host : ""
port : 587
user : ""
password : ""
環境変数
global :
extraEnv :
GLOBAL_ENV : "example"
カスタム証明書機関
customCACerts
はリストであり、複数の証明書を含むことができます。customCACerts
に指定された証明書機関は W&B サーバーアプリケーションのみに適用されます。
global :
customCACerts :
- |
-----BEGIN CERTIFICATE-----
MIIBnDCCAUKgAwIBAg.....................fucMwCgYIKoZIzj0EAwIwLDEQ
MA4GA1UEChMHSG9tZU.....................tZUxhYiBSb290IENBMB4XDTI0
MDQwMTA4MjgzMFoXDT.....................oNWYggsMo8O+0mWLYMAoGCCqG
SM49BAMCA0gAMEUCIQ.....................hwuJgyQRaqMI149div72V2QIg
P5GD+5I+02yEp58Cwxd5Bj2CvyQwTjTO4hiVl1Xd0M0=
-----END CERTIFICATE-----
- |
-----BEGIN CERTIFICATE-----
MIIBxTCCAWugAwIB.......................qaJcwCgYIKoZIzj0EAwIwLDEQ
MA4GA1UEChMHSG9t.......................tZUxhYiBSb290IENBMB4XDTI0
MDQwMTA4MjgzMVoX.......................UK+moK4nZYvpNpqfvz/7m5wKU
SAAwRQIhAIzXZMW4.......................E8UFqsCcILdXjAiA7iTluM0IU
aIgJYVqKxXt25blH/VyBRzvNhViesfkNUQ==
-----END CERTIFICATE-----
証明書機関を ConfigMap に保存することもできます:
global :
caCertsConfigMap : custom-ca-certs
ConfigMap は次のようになっている必要があります:
apiVersion : v1
kind : ConfigMap
metadata :
name : custom-ca-certs
data :
ca-cert1.crt : |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
ca-cert2.crt : |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
ConfigMap を使用する場合、ConfigMap 内の各キーは .crt
で終わる必要があります(例:my-cert.crt
または ca-cert1.crt
)。この名前付け規約は、update-ca-certificates
が各証明書をシステム CA ストアに解析して追加するために必要です。
カスタムセキュリティコンテキスト
各 W&B コンポーネントは、以下の形式のカスタムセキュリティコンテキスト設定をサポートしています:
pod :
securityContext :
runAsNonRoot : true
runAsUser : 1001
runAsGroup : 0
fsGroup : 1001
fsGroupChangePolicy : Always
seccompProfile :
type : RuntimeDefault
container :
securityContext :
capabilities :
drop :
- ALL
readOnlyRootFilesystem : false
allowPrivilegeEscalation : false
runAsGroup:
には 0
だけが有効な値です。 他の値はエラーです。
アプリケーションポッドを設定するには、設定に app
セクションを追加します:
global :
...
app :
pod :
securityContext :
runAsNonRoot : true
runAsUser : 1001
runAsGroup : 0
fsGroup : 1001
fsGroupChangePolicy : Always
seccompProfile :
type : RuntimeDefault
container :
securityContext :
capabilities :
drop :
- ALL
readOnlyRootFilesystem : false
allowPrivilegeEscalation : false
同じ概念は console
、weave
、weave-trace
、parquet
にも適用されます。
Configuration Reference for W&B Operator
このセクションでは、W&B Kubernetes オペレーター(wandb-controller-manager
)の設定オプションを説明しています。オペレーターは、YAML ファイルの形式でその設定を受け取ります。
デフォルトでは、W&B Kubernetes オペレーターには設定ファイルは必要ありません。必要な場合にだけ設定ファイルを作成します。たとえば、カスタム証明書機関を指定したり、エアギャップ環境にデプロイしたりする必要がある場合などです。
仕様のカスタマイズの完全なリストは、Helm リポジトリ で確認できます。
カスタム CA
カスタム証明書機関(customCACerts
)はリストであり、複数の証明書を含むことができます。それらの証明書機関が追加されると、W&B Kubernetes オペレーター(wandb-controller-manager
)のみに適用されます。
customCACerts :
- |
-----BEGIN CERTIFICATE-----
MIIBnDCCAUKgAwIBAg.....................fucMwCgYIKoZIzj0EAwIwLDEQ
MA4GA1UEChMHSG9tZU.....................tZUxhYiBSb290IENBMB4XDTI0
MDQwMTA4MjgzMFoXDT.....................oNWYggsMo8O+0mWLYMAoGCCqG
SM49BAMCA0gAMEUCIQ.....................hwuJgyQRaqMI149div72V2QIg
P5GD+5I+02yEp58Cwxd5Bj2CvyQwTjTO4hiVl1Xd0M0=
-----END CERTIFICATE-----
- |
-----BEGIN CERTIFICATE-----
MIIBxTCCAWugAwIB.......................qaJcwCgYIKoZIzj0EAwIwLDEQ
MA4GA1UEChMHSG9t.......................tZUxhYiBSb290IENBMB4XDTI0
MDQwMTA4MjgzMVoX.......................UK+moK4nZYvpNpqfvz/7m5wKU
SAAwRQIhAIzXZMW4.......................E8UFqsCcILdXjAiA7iTluM0IU
aIgJYVqKxXt25blH/VyBRzvNhViesfkNUQ==
-----END CERTIFICATE-----
CA 証明書を ConfigMap に保存することもできます:
caCertsConfigMap : custom-ca-certs
ConfigMap は次のようになっている必要があります:
apiVersion : v1
kind : ConfigMap
metadata :
name : custom-ca-certs
data :
ca-cert1.crt : |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
ca-cert2.crt : |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
ConfigMap の各キーは .crt
で終わる必要があります(例:my-cert.crt
または ca-cert1.crt
)。この命名規則は、update-ca-certificates
が各証明書をシステム CA ストアに解析して追加するために必要です。
FAQ
各個別のポッドの役割/目的は何ですか?
wandb-app
: W&B の中枢であり、GraphQL API およびフロントエンドアプリケーションを含みます。これは私たちのプラットフォームの大部分の機能を提供します。
wandb-console
: 管理コンソールであり、/console
を通じてアクセスできます。
wandb-otel
: OpenTelemetry エージェントであり、Kubernetes レイヤーでのリソースからメトリクスおよびログを収集して管理コンソールに表示します。
wandb-prometheus
: Prometheus サーバーであり、管理コンソールに表示するためにさまざまなコンポーネントからメトリクスを収集します。
wandb-parquet
: wandb-app
ポッドとは別のバックエンドマイクロサービスであり、データベースデータを Parquet 形式でオブジェクトストレージにエクスポートします。
wandb-weave
: UI でクエリテーブルをロードし、さまざまなコアアプリ機能をサポートする別のバックエンドマイクロサービス。
wandb-weave-trace
: LLM ベースのアプリケーションを追跡、実験、評価、展開、および改善するためのフレームワーク。このフレームワークは wandb-app
ポッドを介してアクセスできます。
W&B オペレーターコンソールパスワードの取得方法
W&B Kubernetes オペレーターマネジメントコンソールへのアクセス を参照してください。
Ingress が機能しない場合に W&B Operator Console にアクセスする方法
Kubernetes クラスターに到達可能なホストで以下のコマンドを実行してください:
kubectl port-forward svc/wandb-console 8082
https://localhost:8082/
console でブラウザからコンソールにアクセスしてください。
コンソールのパスワードの取得方法については、W&B Kubernetes オペレーターマネジメントコンソールへのアクセス (Option 2)を参照してください。
W&B Server のログを表示する方法
アプリケーションポッドの名前は wandb-app-xxx です。
kubectl get pods
kubectl logs wandb-XXXXX-XXXXX
Kubernetes ingress クラスを識別する方法
クラスターにインストールされている ingress クラスを取得するには、次のコマンドを実行します:
1.2.2.1 - エアギャップインスタンス用の Kubernetes オペレーター
Kubernetes Operator を使用して W&B プラットフォーム をデプロイする (Airgapped)
イントロダクション
このガイドは、顧客管理のエアギャップ環境で W&B プラットフォームをデプロイするためのステップバイステップの手順を提供します。
Helm チャートとコンテナイメージをホストするために内部のリポジトリーまたはレジストリーを使用します。Kubernetes クラスターへの適切なアクセスを備えたシェルコンソールで、すべてのコマンドを実行してください。
Kubernetes アプリケーションをデプロイするために使用している任意の継続的デリバリーツールで、同様のコマンドを利用できます。
ステップ 1: 前提条件
開始する前に、環境が次の要件を満たしていることを確認してください:
Kubernetes バージョン >= 1.28
Helm バージョン >= 3
必要な W&B イメージを備えた内部コンテナレジストリーへのアクセス
W&B Helm チャートのための内部 Helm リポジトリーへのアクセス
ステップ 2: 内部コンテナレジストリーの準備
デプロイメントを進める前に、以下のコンテナイメージが内部コンテナレジストリーに利用可能であることを確認する必要があります:
これらのイメージは、W&B コンポーネントの正常なデプロイメントに不可欠です。W&B はコンテナレジストリーを準備するために WSM を使用することをお勧めします。
もし組織がすでに内部コンテナレジストリーを使用している場合、イメージを追加することができます。そうでない場合は、次のセクションに進み、WSM と呼ばれるものを使用してコンテナリポジトリーを準備してください。
オペレーターの要件を追跡し、イメージのアップグレードを確認してダウンロードすることは、WSM を使用して または組織独自のプロセスを使用して行う責任があります。
WSM のインストール
WSM を次のいずれかのメソッドでインストールします。
WSM は、動作する Docker インストールを必要とします。
Bash
Bash スクリプトを GitHub から直接実行します:
curl -sSL https://raw.githubusercontent.com/wandb/wsm/main/install.sh | bash
スクリプトは、スクリプトを実行したフォルダーにバイナリをダウンロードします。別のフォルダーに移動するには、次を実行します:
sudo mv wsm /usr/local/bin
GitHub
W&B が管理する wandb/wsm
GitHub リポジトリーから WSM をダウンロードまたはクローンします。最新リリースについては、wandb/wsm
リリースノート を参照してください。
イメージとそのバージョンの一覧表示
wsm list
を使用して最新のイメージバージョンのリストを取得します。
出力は次のようになります:
:package: デプロイメントに必要なすべてのイメージを一覧表示するプロセスを開始しています...
オペレーターイメージ:
wandb/controller:1.16.1
W&B イメージ:
wandb/local:0.62.2
docker.io/bitnami/redis:7.2.4-debian-12-r9
quay.io/prometheus-operator/prometheus-config-reloader:v0.67.0
quay.io/prometheus/prometheus:v2.47.0
otel/opentelemetry-collector-contrib:0.97.0
wandb/console:2.13.1
ここに W&B をデプロイするために必要なイメージがあります。これらのイメージが内部コンテナレジストリーで利用可能であることを確認し、`values.yaml` を適切に更新してください。
イメージのダウンロード
最新バージョンのイメージをすべて wsm download
を使用してダウンロードします。
出力は次のようになります:
オペレーター Helm chart のダウンロード
wandb Helm chart のダウンロード
✓ wandb/controller:1.16.1
✓ docker.io/bitnami/redis:7.2.4-debian-12-r9
✓ otel/opentelemetry-collector-contrib:0.97.0
✓ quay.io/prometheus-operator/prometheus-config-reloader:v0.67.0
✓ wandb/console:2.13.1
✓ quay.io/prometheus/prometheus:v2.47.0
完了! 7 パッケージがインストールされました。
WSM は各イメージの .tgz
アーカイブを bundle
ディレクトリーにダウンロードします。
ステップ 3: 内部 Helm チャートリポジトリーの準備
コンテナイメージとともに、以下の Helm チャートが内部 Helm チャートリポジトリーに利用可能であることも確認する必要があります。前のステップで導入した WSM ツールは Helm チャートをダウンロードすることもできます。別の方法として、こちらでダウンロードしてください:
operator
チャートは W&B Oyserator 、つまりコントローラーマネージャーをデプロイするために使用されます。platform
チャートは、カスタムリソース定義 (CRD) に設定された値を使用して W&B プラットフォームをデプロイするために使用されます。
ステップ 4: Helm リポジトリーの設定
次に、W&B Helm チャートを内部リポジトリーからプルするために Helm リポジトリーを設定します。以下のコマンドを実行して、Helm リポジトリーを追加および更新します:
helm repo add local-repo https://charts.yourdomain.com
helm repo update
ステップ 5: Kubernetes オペレーターのインストール
W&B Kubernetes オペレーター、別名コントローラーマネージャーは、W&B プラットフォームのコンポーネントを管理する役割を果たします。エアギャップ環境でインストールするには、内部コンテナレジストリーを使用するように設定する必要があります。
そのためには、内部コンテナレジストリーを使用するためにデフォルトのイメージ設定をオーバーライドし、期待されるデプロイメントタイプを示すためにキー airgapped: true
を設定する必要があります。以下のように values.yaml
ファイルを更新します:
image :
repository : registry.yourdomain.com/library/controller
tag : 1.13.3
airgapped : true
タグを内部レジストリーで利用可能なバージョンに置き換えてください。
オペレーターと CRD をインストールします:
helm upgrade --install operator wandb/operator -n wandb --create-namespace -f values.yaml
サポートされている値の詳細については、Kubernetes オペレーター GitHub リポジトリー を参照してください。
ステップ 6: W&B カスタムリソースの設定
W&B Kubernetes オペレーターをインストールした後、内部 Helm リポジトリーおよびコンテナレジストリーを指すようにカスタムリソース (CR) を設定する必要があります。
この設定により、Kubernetes オペレーターが W&B プラットフォームに必要なコンポーネントをデプロイする際に、内部レジストリーとリポジトリーを使用することが保証されます。
この例の CR をコピーし、wandb.yaml
という新しいファイルに名前を付けます。
apiVersion : apps.wandb.com/v1
kind : WeightsAndBiases
metadata :
labels :
app.kubernetes.io/instance : wandb
app.kubernetes.io/name : weightsandbiases
name : wandb
namespace : default
spec :
chart :
url : http://charts.yourdomain.com
name : operator-wandb
version : 0.18.0
values :
global :
host : https://wandb.yourdomain.com
license : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
bucket :
accessKey : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
secretKey : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
name: s3.yourdomain.com:port #Ex. : s3.yourdomain.com:9000
path : bucket_name
provider : s3
region : us-east-1
mysql :
database : wandb
host : mysql.home.lab
password : password
port : 3306
user : wandb
extraEnv :
ENABLE_REGISTRY_UI : 'true'
# インストール: true の場合、Helm はデプロイメントが使用するための MySQL データベースをインストールします。独自の外部 MySQL デプロイメントを使用するには `false` に設定してください。
mysql :
install : false
app :
image :
repository : registry.yourdomain.com/local
tag : 0.59.2
console :
image :
repository : registry.yourdomain.com/console
tag : 2.12.2
ingress :
annotations :
nginx.ingress.kubernetes.io/proxy-body-size : 64m
class : nginx
Kubernetes オペレーターは、CR の値を使用して内部リポジトリーから operator-wandb
Helm チャートを設定し、W&B プラットフォームをデプロイします。
すべてのタグ/バージョンを内部レジストリーで利用可能なバージョンに置き換えてください。
前述の設定ファイルの作成に関する詳細情報はこちら にあります。
ステップ 7: W&B プラットフォームのデプロイ
Kubernetes オペレーターと CR が設定されたので、wandb.yaml
設定を適用して W&B プラットフォームをデプロイします:
kubectl apply -f wandb.yaml
FAQ
以下のよくある質問 (FAQs) およびデプロイメントプロセス中のトラブルシューティングのヒントを参照してください:
別のイングレスクラスがあります。それを使用できますか?
はい、values.yaml
のイングレス設定を変更して、イングレスクラスを設定できます。
証明書バンドルに複数の証明書があります。それは機能しますか?
証明書を values.yaml
の customCACerts
セクションに複数のエントリに分割する必要があります。
Kubernetes オペレーターが無人更新を適用するのを防ぐ方法はありますか?それは可能ですか?
W&B コンソールから自動更新をオフにできます。サポートされているバージョンについて質問がある場合は、W&B チームにお問い合わせください。また、W&B は過去 6 か月以内にリリースされたプラットフォームバージョンをサポートしていることを確認してください。W&B は定期的なアップグレードを推奨しています。
環境がパブリックリポジトリーに接続されていない場合、デプロイメントは機能しますか?
設定が airgapped
を true
に設定している場合、Kubernetes オペレーターは内部リソースのみを使用し、パブリックリポジトリーに接続しようとしません。
1.2.3 - パブリック クラウドにインストールする
1.2.3.1 - AWS に W&B プラットフォーム をデプロイ
W&B サーバーの AWS 上でのホスティング。
W&B は AWS 上にプラットフォームをデプロイするために W&B サーバー AWS Terraform モジュール の使用を推奨しています。
始める前に、W&B は Terraform が 状態ファイル を保存するための利用可能なリモートバックエンド を選択することを推奨します。
状態ファイルは、全てのコンポーネントを再作成せずに、アップグレードを展開したりデプロイメントに変更を加えるために必要なリソースです。
Terraform モジュールは以下の 必須
コンポーネントをデプロイします:
ロードバランサー
AWS アイデンティティ & アクセスマネジメント (IAM)
AWS キーマネジメントシステム (KMS)
Amazon Aurora MySQL
Amazon VPC
Amazon S3
Amazon Route53
Amazon Certificate Manager (ACM)
Amazon Elastic Load Balancing (ALB)
Amazon Secrets Manager
他のデプロイメントオプションには、以下のオプションコンポーネントを含めることもできます:
前提条件の許可
Terraform を実行するアカウントは、イントロダクションで説明されたすべてのコンポーネントを作成できる必要があり、IAM ポリシー と IAM ロール を作成し、リソースにロールを割り当てる許可が必要です。
一般的なステップ
このトピックのステップは、このドキュメントでカバーされる任意のデプロイメントオプションに共通です。
開発環境を準備します。
Terraform をインストールします。
W&B はバージョンコントロール用の Git リポジトリを作成することを推奨します。
terraform.tfvars
ファイルを作成します。
tfvars
ファイルの内容はインストールタイプに応じてカスタマイズできますが、推奨される最低限の内容は以下の例のようになります。
namespace = "wandb"
license = "xxxxxxxxxxyyyyyyyyyyyzzzzzzz"
subdomain = "wandb-aws"
domain_name = "wandb.ml"
zone_id = "xxxxxxxxxxxxxxxx"
allowed_inbound_cidr = [ "0.0.0.0/0" ]
allowed_inbound_ipv6_cidr = [ "::/0" ]
eks_cluster_version = "1.29"
変数をデプロイ前に tfvars
ファイルで定義してください。namespace
変数は Terraform によって作成される全てのリソースのプレフィックスとして使用される文字列です。
subdomain
と domain
の組み合わせにより W&B が設定される FQDN が形成されます。上記の例では、W&B の FQDN は wandb-aws.wandb.ml
となり、FQDN 記録が作成される DNS zone_id
になります。
allowed_inbound_cidr
と allowed_inbound_ipv6_cidr
も設定が必要です。このモジュールでは、これは必須の入力です。進行例では、W&B インストールへのアクセスを任意のソースから許可します。
versions.tf
ファイルを作成します。
このファイルは、AWS に W&B をデプロイするために必要な Terraformおよび Terraform プロバイダーのバージョンを含むものとします。
provider "aws" {
region = "eu-central-1"
default_tags {
tags = {
GithubRepo = "terraform-aws-wandb"
GithubOrg = "wandb"
Enviroment = "Example"
Example = "PublicDnsExternal"
}
}
}
AWS プロバイダーを設定するには Terraform 公式ドキュメント を参照してください。
オプションですが強く推奨されるのは、このドキュメントの最初で触れられているリモートバックエンド設定 を追加することです。
variables.tf
ファイルを作成します。
terraform.tfvars
で設定されたオプションごとに、Terraform は対応する変数宣言を必要とします。
variable "namespace" {
type = string
description = "リソースに使用される名前のプレフィックス"
}
variable "domain_name" {
type = string
description = "インスタンスにアクセスするために使用されるドメイン名。"
}
variable "subdomain" {
type = string
default = null
description = "Weights & Biases UI にアクセスするためのサブドメイン。"
}
variable "license" {
type = string
}
variable "zone_id" {
type = string
description = "Weights & Biases サブドメインを作成するためのドメイン。"
}
variable "allowed_inbound_cidr" {
description = "wandb-server にアクセスを許可される CIDR。"
nullable = false
type = list(string)
}
variable "allowed_inbound_ipv6_cidr" {
description = "wandb-server にアクセスを許可される CIDR。"
nullable = false
type = list(string)
}
variable "eks_cluster_version" {
description = "EKS クラスター用の Kubernetes バージョン"
nullable = false
type = string
}
推奨されるデプロイメントオプション
これは、全ての 必須
コンポーネントを作成し、最新バージョンの W&B
を Kubernetes クラスター
にインストールする最も簡単なデプロイメントオプションの設定です。
main.tf
を作成します。
一般的なステップ
で作成したファイルと同じディレクトリに、以下の内容を持つ main.tf
ファイルを作成してください。
module "wandb_infra" {
source = "wandb/wandb/aws"
version = "~>7.0"
namespace = var.namespace
domain_name = var.domain_name
subdomain = var.subdomain
zone_id = var.zone_id
allowed_inbound_cidr = var.allowed_inbound_cidr
allowed_inbound_ipv6_cidr = var.allowed_inbound_ipv6_cidr
public_access = true
external_dns = true
kubernetes_public_access = true
kubernetes_public_access_cidrs = ["0.0.0.0/0"]
eks_cluster_version = var.eks_cluster_version
}
data "aws_eks_cluster" "eks_cluster_id" {
name = module.wandb_infra.cluster_name
}
data "aws_eks_cluster_auth" "eks_cluster_auth" {
name = module.wandb_infra.cluster_name
}
provider "kubernetes" {
host = data.aws_eks_cluster.eks_cluster_id.endpoint
cluster_ca_certificate = base64decode(data.aws_eks_cluster.eks_cluster_id.certificate_authority.0.data)
token = data.aws_eks_cluster_auth.eks_cluster_auth.token
}
provider "helm" {
kubernetes {
host = data.aws_eks_cluster.eks_cluster_id.endpoint
cluster_ca_certificate = base64decode(data.aws_eks_cluster.eks_cluster_id.certificate_authority.0.data)
token = data.aws_eks_cluster_auth.eks_cluster_auth.token
}
}
output "url" {
value = module.wandb_infra.url
}
output "bucket" {
value = module.wandb_infra.bucket_name
}
W&B をデプロイします。
W&B をデプロイするには、以下のコマンドを実行してください:
terraform init
terraform apply -var-file=terraform.tfvars
REDIS を有効にする
別のデプロイメントオプションでは、Redis
を使用して SQL クエリをキャッシュし、実験のメトリクスを読み込む際のアプリケーションの応答をスピードアップさせます。
キャッシュを有効にするには、推奨されるデプロイメント Recommended deployment セクションで説明されている同じ main.tf
ファイルに create_elasticache_subnet = true
オプションを追加する必要があります。
module "wandb_infra" {
source = "wandb/wandb/aws"
version = "~>7.0"
namespace = var.namespace
domain_name = var.domain_name
subdomain = var.subdomain
zone_id = var.zone_id
**create_elasticache_subnet = true**
}
[...]
メッセージブローカー(キュー)を有効にする
デプロイメントオプション3は、外部の メッセージブローカー
を有効にすることを目的としています。これはオプションですが、W&B 内にブローカーが埋め込まれているため、これによってパフォーマンスが向上するわけではありません。
AWS リソースが提供するメッセージブローカーは SQS
です。これを有効にするには、推奨されるデプロイメント Recommended deployment セクションで説明されている同じ main.tf
に use_internal_queue = false
オプションを追加する必要があります。
module "wandb_infra" {
source = "wandb/wandb/aws"
version = "~>7.0"
namespace = var.namespace
domain_name = var.domain_name
subdomain = var.subdomain
zone_id = var.zone_id
**use_internal_queue = false**
[...]
}
その他のデプロイメントオプション
同じファイルにすべての設定を追加することで、これらの3つのデプロイメントオプションを組み合わせることができます。 Terraform Module は、標準オプションと デプロイメント - 推奨
に見つかる最小限の構成と共に組み合わせることができるいくつかのオプションを提供します。
手動設定
Amazon S3 バケットを W&B のファイルストレージバックエンドとして使用する場合は:
バケットと、バケットからのオブジェクト作成通知を受け取るように設定された SQS キューを作成する必要があります。インスタンスにはこのキューを読み取る権限が必要です。
S3 バケットとバケット通知の作成
以下の手順を実行して Amazon S3 バケットを作成し、バケット通知を有効化します。
AWS コンソールの Amazon S3 に移動します。
バケットを作成 を選択します。
詳細設定 の中で、イベント セクション内の 通知を追加 を選択します。
すべてのオブジェクト作成イベントを、先に設定した SQS キューに送信するように構成します。
CORS アクセスを有効にします。あなたの CORS 設定は以下のようになるはずです:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://YOUR-W&B-SERVER-IP</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
SQS キューの作成
以下の手順に従って SQS キューを作成します:
AWS コンソールの Amazon SQS に移動します。
キューの作成 を選択します。
詳細 セクションから 標準 キュータイプを選択します。
アクセスポリシーセクション内で、以下の主体に許可を追加します:
SendMessage
ReceiveMessage
ChangeMessageVisibility
DeleteMessage
GetQueueUrl
また、アクセスポリシー セクションで、高度なアクセスポリシーを追加することもできます。例えば、Amazon SQS へのアクセスを声明するポリシーは以下のようになります:
{
"Version" : "2012-10-17" ,
"Statement" : [
{
"Effect" : "Allow" ,
"Principal" : "*" ,
"Action" : ["sqs:SendMessage" ],
"Resource" : "<sqs-queue-arn>" ,
"Condition" : {
"ArnEquals" : { "aws:SourceArn" : "<s3-bucket-arn>" }
}
}
]
}
W&B を実行するノードへの権限付与
W&B サーバーが実行されているノードは、Amazon S3 および Amazon SQS へのアクセスを許可するように設定されている必要があります。選択したサーバーデプロイメントの種類に応じて、以下のポリシーステートメントをノードロールに追加する必要があります:
{
"Statement" :[
{
"Sid" :"" ,
"Effect" :"Allow" ,
"Action" :"s3:*" ,
"Resource" :"arn:aws:s3:::<WANDB_BUCKET>"
},
{
"Sid" :"" ,
"Effect" :"Allow" ,
"Action" :[
"sqs:*"
],
"Resource" :"arn:aws:sqs:<REGION>:<ACCOUNT>:<WANDB_QUEUE>"
}
]
}
W&B サーバーの設定
最後に、W&B サーバーを設定します。
W&B 設定ページに移動: http(s)://YOUR-W&B-SERVER-HOST/system-admin
.
**外部ファイルストレージバックエンド使用 オプションを有効化
以下の形式であなたの Amazon S3 バケット、リージョン、および Amazon SQS キューに関する情報を提供します:
ファイルストレージバケット : s3://<bucket-name>
ファイルストレージリージョン (AWS のみ) : <region>
通知サブスクリプション : sqs://<queue-name>
設定の更新 を選択して新しい設定を適用します。
W&B のバージョンをアップグレードする
W&B を更新するための手順をここに従ってください:
wandb_app
モジュール内の設定に wandb_version
を追加します。アップグレード先の W&B のバージョンを指定します。例えば、次の行は W&B バージョン 0.48.1
を指定します:
module "wandb_app" {
source = "wandb/wandb/kubernetes"
version = "~>1.0"
license = var.license
wandb_version = "0.48.1"
または、wandb_version
を terraform.tfvars
に追加して、同じ名前の変数を作成し、リテラル値の代わりに var.wandb_version
を使用することもできます。
設定を更新したら、推奨デプロイメントセクション で説明されている手順を完了します。
このセクションは、terraform-aws-wandb モジュールを使用して、プレオペレーター 環境から ポストオペレーター 環境へのアップグレードに必要な手順を詳細に説明します。
Kubernetes
オペレーター パターンへの移行は、W&B アーキテクチャーにとって必要です。アーキテクチャー変更の詳細な説明については
このセクション を参照してください。
アーキテクチャーのビフォーアフター
以前は、W&B アーキテクチャは以下のように使用されていました:
module "wandb_infra" {
source = "wandb/wandb/aws"
version = "1.16.10"
...
}
インフラストラクチャーを管理するために
そしてこのモジュールで W&B サーバーをデプロイしていました:
module "wandb_app" {
source = "wandb/wandb/kubernetes"
version = "1.12.0"
}
移行後、アーキテクチャーは以下のように使用されます:
module "wandb_infra" {
source = "wandb/wandb/aws"
version = "4.7.2"
...
}
これにより、インフラストラクチャーと W&B サーバーの Kubernetes クラスターへのインストールの両方を管理し、post-operator.tf
で module "wandb_app"
は不要となります。
このアーキテクチャーの変更により、OpenTelemetry、Prometheus、HPAs、Kafka、およびイメージの更新などの追加機能を、SRE/インフラストラクチャーチームによる手動の Terraform 操作なしで使用できるようになります。
W&B プレオペレーターの基本インストールを開始するには、post-operator.tf
に .disabled
ファイル拡張子が付いていることを確認し、pre-operator.tf
が有効であることを確認してください(.disabled
拡張子が付いていないもの)。これらのファイルはこちら で確認できます。
前提条件
移行プロセスを開始する前に、次の前提条件が満たされていることを確認してください:
アウトゴーイング接続 : デプロイメントはエアギャップされていない必要があります。リリース チャンネル の最新の仕様を取得するために deploy.wandb.ai へのアクセスが必要です。
AWS 資格情報 : AWS リソースと対話するために適切に構成された AWS 資格情報が必要です。
Terraform のインストール : 最新バージョンの Terraform がシステムにインストールされている必要があります。
Route53 ホステッドゾーン : アプリケーションが提供されるドメインに対応した既存の Route53 ホステッドゾーン。
プレオペレーターTerraformファイル : pre-operator.tf
と pre-operator.tfvars
のような関連変数ファイルが正しく設定されていることを確認してください。
プリアペレーター セットアップ
プレオペレーター設定の構成を初期化および適用するには、次の Terraform コマンドを実行します:
terraform init -upgrade
terraform apply -var-file= ./pre-operator.tfvars
pre-operator.tf
は次のようになっています:
namespace = "operator-upgrade"
domain_name = "sandbox-aws.wandb.ml"
zone_id = "Z032246913CW32RVRY0WU"
subdomain = "operator-upgrade"
wandb_license = "ey..."
wandb_version = "0.51.2"
pre-operator.tf
の構成は二つのモジュールを呼び出します:
module "wandb_infra" {
source = "wandb/wandb/aws"
version = "1.16.10"
...
}
このモジュールはインフラストラクチャーを起動します。
module "wandb_app" {
source = "wandb/wandb/kubernetes"
version = "1.12.0"
}
このモジュールはアプリケーションをデプロイします。
ポストオペレーター設定
pre-operator.tf
に .disabled
拡張子が付いていること、そして post-operator.tf
がアクティブであることを確認してください。
post-operator.tfvars
には追加の変数が含まれています:
...
# wandb_version = "0.51.2" はリリースチャンネル経由で管理されるか、ユーザースペックで設定されます。
# アップグレードのための必須オペレーター変数:
size = "small"
enable_dummy_dns = true
enable_operator_alb = true
custom_domain_filter = "sandbox-aws.wandb.ml"
以下のコマンドを実行してポストオペレーター設定を初期化および適用します:
terraform init -upgrade
terraform apply -var-file= ./post-operator.tfvars
計画および適用手順は、次のリソースを更新します:
actions :
create :
- aws_efs_backup_policy.storage_class
- aws_efs_file_system.storage_class
- aws_efs_mount_target.storage_class["0"]
- aws_efs_mount_target.storage_class["1"]
- aws_eks_addon.efs
- aws_iam_openid_connect_provider.eks
- aws_iam_policy.secrets_manager
- aws_iam_role_policy_attachment.ebs_csi
- aws_iam_role_policy_attachment.eks_efs
- aws_iam_role_policy_attachment.node_secrets_manager
- aws_security_group.storage_class_nfs
- aws_security_group_rule.nfs_ingress
- random_pet.efs
- aws_s3_bucket_acl.file_storage
- aws_s3_bucket_cors_configuration.file_storage
- aws_s3_bucket_ownership_controls.file_storage
- aws_s3_bucket_server_side_encryption_configuration.file_storage
- helm_release.operator
- helm_release.wandb
- aws_cloudwatch_log_group.this[0]
- aws_iam_policy.default
- aws_iam_role.default
- aws_iam_role_policy_attachment.default
- helm_release.external_dns
- aws_default_network_acl.this[0]
- aws_default_route_table.default[0]
- aws_iam_policy.default
- aws_iam_role.default
- aws_iam_role_policy_attachment.default
- helm_release.aws_load_balancer_controller
update_in_place :
- aws_iam_policy.node_IMDSv2
- aws_iam_policy.node_cloudwatch
- aws_iam_policy.node_kms
- aws_iam_policy.node_s3
- aws_iam_policy.node_sqs
- aws_eks_cluster.this[0]
- aws_elasticache_replication_group.default
- aws_rds_cluster.this[0]
- aws_rds_cluster_instance.this["1"]
- aws_default_security_group.this[0]
- aws_subnet.private[0]
- aws_subnet.private[1]
- aws_subnet.public[0]
- aws_subnet.public[1]
- aws_launch_template.workers["primary"]
destroy :
- kubernetes_config_map.config_map
- kubernetes_deployment.wandb
- kubernetes_priority_class.priority
- kubernetes_secret.secret
- kubernetes_service.prometheus
- kubernetes_service.service
- random_id.snapshot_identifier[0]
replace :
- aws_autoscaling_attachment.autoscaling_attachment["primary"]
- aws_route53_record.alb
- aws_eks_node_group.workers["primary"]
以下のような結果が表示されるはずです:
post-operator.tf
では一つの以下があります:
module "wandb_infra" {
source = "wandb/wandb/aws"
version = "4.7.2"
...
}
ポストオペレーター構成の変更:
必要なプロバイダーの更新 : required_providers.aws.version
を 3.6
から 4.0
に変更し、プロバイダー互換性を確保します。
DNS およびロードバランサーの設定 : enable_dummy_dns
および enable_operator_alb
を統合して、DNS レコードおよび AWS ロードバランサー設定を Ingress 経由で管理します。
ライセンスおよびサイズ構成 : 新しいオペレーション要件に合わせて、license
および size
パラメーターを直接 wandb_infra
モジュールに転送します。
カスタムドメインの処理 : 必要に応じて、custom_domain_filter
を使用して kube-system
名前空間内の外部 DNS ポッドログをチェックし、DNS 問題のトラブルシューティングを行います。
Helmプロバイダー構成 : 効果的に Kubernetes リソースを管理するためにHelm プロバイダーを有効にし、構成します:
provider "helm" {
kubernetes {
host = data .aws_eks_cluster .app_cluster .endpoint
cluster_ca_certificate = base64decode (data .aws_eks_cluster .app_cluster .certificate_authority [0 ].data )
token = data .aws_eks_cluster_auth .app_cluster .token
exec {
api_version = "client.authentication.k8s.io/v1beta1"
args = ["eks", "get-token", "--cluster-name" , data .aws_eks_cluster .app_cluster .name ]
command = "aws"
}
}
}
この包括的なセットアップにより、オペレーターモデルによって可能になった新しい効率性と機能を活用しながら、プレオペレーターからポストオペレーター構成への円滑な移行が可能になります。
1.2.3.2 - W&B プラットフォームを GCP にデプロイする
GCP で W&B サーバー をホスティングする。
W&B Server のセルフマネージドを選択した場合、W&B は W&B Server GCP Terraform Module を使用して GCP 上にプラットフォームをデプロイすることを推奨しています。
このモジュールのドキュメントは詳細で、使用可能なすべてのオプションが含まれています。
始める前に、Terraform 用の リモートバックエンド のいずれかを選択し、ステートファイル を保存することをお勧めします。
ステートファイルは、コンポーネントを再作成することなく、アップグレードを展開したり、デプロイメントに変更を加えたりするために必要なリソースです。
Terraform モジュールは以下の 必須
コンポーネントをデプロイします:
VPC
Cloud SQL for MySQL
Cloud Storage バケット
Google Kubernetes Engine
KMS 暗号キー
ロードバランサ
他のデプロイメントオプションには次のオプションコンポーネントが含まれることがあります:
Redis のためのメモリストア
Pub/Sub メッセージシステム
事前要件の許可
Terraform を実行するアカウントには、使用される GCP プロジェクトにおいて roles/owner
の役割が必要です。
一般的な手順
このトピックの手順は、このドキュメントでカバーされている任意のデプロイメントオプションに共通です。
開発環境を準備します。
Terraform をインストールします。
使用するコードを含む Git リポジトリを作成することをお勧めしますが、ファイルをローカルに保持することもできます。
Google Cloud Console でプロジェクトを作成します。
GCP に認証します(gcloud
をインストール しておくことを確認してください)
gcloud auth application-default login
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 によって作成されたすべてのリソースにプレフィックスとして付ける文字列になります。
subdomain
と domain
の組み合わせが W&B が設定される FQDN を形成します。上記の例では、W&B FQDN は wandb-gcp.wandb.ml
となります。
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 分)
これは Mandatory
コンポーネントをすべて作成し、Kubernetes Cluster
に W&B
の最新バージョンをインストールする最も単純なデプロイメントオプション設定です。
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
}
W&B をデプロイします。
W&B をデプロイするには、次のコマンドを実行します:
terraform init
terraform apply -var-file=terraform.tfvars
REDIS キャッシュを使用したデプロイメント
別のデプロイメントオプションでは、Redis
を使用して SQL クエリをキャッシュし、実験のメトリクスをロードする際のアプリケーションの応答速度を向上させます。
推奨される Deployment option section に示されている同じ 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
}
[...]
外部キューを使用したデプロイメント
デプロイメントオプション 3 は外部の メッセージブローカー
を有効化することから成ります。これは W&B が組み込みのブローカーを提供しているため、オプションです。性能改善はもたらしません。
メッセージブローカーを提供する GCP リソースは Pub/Sub
であり、これを有効にするには、推奨される Deployment option section に示されている同じ main.tf
に use_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 は、標準のオプションや Deployment - Recommended
で見つかる最小限の設定と共に組み合わせることができる複数のオプションを提供しています。
手動設定
GCP ストレージバケットを W&B のファイルストレージバックエンドとして使用するには、以下を作成する必要があります:
PubSub Topic と Subscription の作成
以下の手順に従って、PubSub トピックとサブスクリプションを作成します:
GCP Console 内の Pub/Sub サービスに移動します。
Create Topic を選択してトピックに名前を付けます。
ページの下部で、Create subscription を選択します。 Delivery Type が Pull に設定されていることを確認します。
Create をクリックします。
サービスアカウントまたはインスタンスが実行中のアカウントが、このサブスクリプションの pubsub.admin
ロールを持っていることを確認します。 詳細については、https://cloud.google.com/pubsub/docs/access-control#console を参照してください。
ストレージバケットの作成
Cloud Storage バケット ページに移動します。
Create bucket を選択してバケットに名前を付けます。 Standard の ストレージクラス を選択していることを確認します。
インスタンスが実行中のサービスアカウントまたはアカウントが、以下の条件をすべて満たしていることを確認してください:
前のステップで作成したバケットへのアクセス
このバケットに対する storage.objectAdmin
ロール。 詳細については、https://cloud.google.com/storage/docs/access-control/using-iam-permissions#bucket-add を参照してください。
インスタンスは署名付きファイル URL を作成するために GCP で iam.serviceAccounts.signBlob
の権限も必要です。 サービスアカウントまたはインスタンスが実行する IAM メンバーに サービスアカウントトークンクリエーター
のロールを追加して、権限を有効にします。
CORS アクセスを有効化します。これはコマンドラインのみで実行できます。まず、以下の CORS 設定を含む JSON ファイルを作成します。
cors:
- maxAgeSeconds: 3600
method:
- GET
- PUT
origin:
- '<YOUR_W&B_SERVER_HOST>'
responseHeader:
- Content-Type
ここでの origin の値のスキーム、ホスト、およびポートが正確に一致していることを確認してください。
gcloud
が正しくインストールされ、適切な GCP プロジェクトにログインしていることを確認してください。
次に、以下を実行します:
gcloud storage buckets update gs://<BUCKET_NAME> --cors-file= <CORS_CONFIG_FILE>
PubSub 通知の作成
コマンドラインで以下の手順に従って、ストレージバケットから Pub/Sub トピックへの通知ストリームを作成します。
通知ストリームを作成するには CLI を使用する必要があります。gcloud
がインストールされていることを確認してください。
GCP プロジェクトにログインします。
ターミナルで次の操作を実行します:
gcloud pubsub topics list # トピックの名前を参照用にリスト表示
gcloud storage ls # バケットの名前を参照用にリスト表示
# バケット通知を作成
gcloud storage buckets notifications create gs://<BUCKET_NAME> --topic= <TOPIC_NAME>
Cloud Storage のウェブサイトにさらに参考資料があります。
W&B サーバーの設定
最後に、W&B の System Connections
ページに http(s)://YOUR-W&B-SERVER-HOST/console/settings/system を開きます。
プロバイダーとして Google Cloud Storage (gcs)
を選択します。
GCS バケットの名前を提供します。
設定を更新 を押して、新しい設定を適用します。
W&B サーバーのアップグレード
ここに示された手順に従って W&B を更新します:
あなたの 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"
代わりに、wandb_version
を terraform.tfvars
に追加し、同じ名前の変数を作成して、リテラル値の代わりに var.wandb_version
を使用することができます。
設定を更新した後、Deployment option section に記載されている手順を完了します。
1.2.3.3 - Azureで W&B プラットフォーム を展開する
Azure で W&B サーバー をホスティングする。
自己管理の W&B サーバーを選択した場合、W&B は W&B Server Azure Terraform Module を使用して Azure 上でプラットフォームをデプロイすることをお勧めします。
このモジュールのドキュメントは詳細で、使用可能なオプションがすべて含まれています。本書では、一部のデプロイメント オプションについて説明します。
開始する前に、Terraform の State File を保存するために利用可能な リモート バックエンド のいずれかを選択することをお勧めします。
State File は、アップグレードを展開したり、すべてのコンポーネントを再作成することなくデプロイメントの変更を行ったりするために必要なリソースです。
Terraform モジュールは、次の「必須」コンポーネントをデプロイします。
Azure リソース グループ
Azure 仮想ネットワーク (VPC)
Azure MySQL Flexible サーバー
Azure ストレージ アカウント & Blob ストレージ
Azure Kubernetes サービス
Azure アプリケーション ゲートウェイ
その他のデプロイメント オプションには、次のオプション コンポーネントが含まれる場合があります。
Azure Cache for Redis
Azure Event Grid
前提条件の権限
AzureRM プロバイダーを設定する最も簡単な方法は Azure CLI 経由ですが、Azure サービス プリンシパル を使用した自動化の場合も便利です。 使用される認証メソッドに関わらず、Terraform を実行するアカウントはイントロダクションで説明されているすべてのコンポーネントを作成できる必要があります。
一般的な手順
このトピックの手順は、このドキュメントでカバーされているいずれのデプロイメント オプションにも共通しています。
開発環境を準備します。
Terraform をインストールします。
使用するコードで Git リポジトリを作成することをお勧めしますが、ファイルをローカルに保持することもできます。
terraform.tfvars
ファイルを作成します tvfars
ファイルの内容はインストール タイプに応じてカスタマイズできますが、最低限の推奨事項は以下の例のようになります。
namespace = "wandb"
wandb_license = "xxxxxxxxxxyyyyyyyyyyyzzzzzzz"
subdomain = "wandb-aws"
domain_name = "wandb.ml"
location = "westeurope"
ここで定義されている変数は、デプロイメントの前に決定する必要があります。namespace
変数は、Terraform によって作成されるすべてのリソースの接頭辞となる文字列です。
subdomain
と domain
の組み合わせは、W&B が設定される FQDN を形成します。上記の例では、W&B の FQDN は wandb-aws.wandb.ml
となり、FQDN レコードが作成される DNS zone_id
が指定されます。
versions.tf
ファイルを作成します このファイルには、AWS に W&B をデプロイするのに必要な Terraform および Terraform プロバイダーのバージョンが含まれています。
terraform {
required_version = "~> 1.3"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.17"
}
}
}
AWS プロバイダーを設定するには、Terraform Official Documentation を参照してください。
また、強く推奨される のは、ドキュメントの冒頭で言及された リモート バックエンド設定 を追加することです。
ファイル variables.tf
を作成します。terraform.tfvars
で構成されたすべてのオプションについて、Terraform は対応する変数宣言を必要とします。
variable "namespace" {
type = string
description = "リソースの接頭辞に使用される文字列。"
}
variable "location" {
type = string
description = "Azure リソース グループの場所"
}
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 ライセンス"
}
推奨デプロイメント
これは、すべての「必須」コンポーネントを作成し、最新バージョンの W&B
を Kubernetes クラスター
にインストールする最も簡単なデプロイメント オプション設定です。
main.tf
を作成します General Steps
で作成したファイルと同じディレクトリに、次の内容で 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
}
W&B にデプロイ W&B にデプロイするには、次のコマンドを実行します:
terraform init
terraform apply -var-file=terraform.tfvars
REDIS キャッシュを使用したデプロイメント
別のデプロイメント オプションとして、Redis
を使用して SQL クエリをキャッシュし、実験のメトリクスを読み込む際のアプリケーション応答を高速化します。
キャッシュを有効にするには、recommended deployment
(#recommended-deployment) で使用したのと同じ 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 は、外部の message broker
を有効にすることです。 これはオプションであり、W&B にはブローカーが組み込まれているため、パフォーマンスの向上はもたらされません。
message broker を提供する Azure リソースは Azure Event Grid
であり、有効にするには、recommended deployment
(#recommended-deployment) で使用したのと同じ 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 つのデプロイメント オプションすべてを組み合わせて、すべての構成を同じファイルに追加できます。
Teraform モジュール は、標準オプションや recommended deployment に見られる最小構成と組み合わせることができるいくつかのオプションを提供します。
1.2.4 - W&B プラットフォームをオンプレミスで展開する
オンプレミス インフラストラクチャーでの W&B Server のホスティング
関連する質問については、W&B セールスチームにお問い合わせください: contact@wandb.com .
インフラストラクチャーガイドライン
W&B のデプロイメントを開始する前に、特にインフラストラクチャー要件を確認するために、リファレンスアーキテクチャー を参照してください。
MySQL データベース
W&B は MySQL 5.7 の使用を推奨しません。MySQL 5.7 を使用している場合は、最新バージョンの W&B Server との互換性を最大限にするために MySQL 8 へ移行してください。W&B Server は現在、MySQL 8
バージョン 8.0.28
以降のみをサポートしています。
スケーラブルな MySQL データベースの運用を簡素化するエンタープライズサービスがいくつかあります。W&B は次のソリューションのいずれかを検討することを推奨します:
https://www.percona.com/software/mysql-database/percona-server
https://github.com/mysql/mysql-operator
以下の条件を満たすようにしてください。W&B Server MySQL 8.0 を実行する場合、または MySQL 5.7 から 8.0 へのアップグレード時に以下を行います:
binlog_format = 'ROW'
innodb_online_alter_log_max_size = 268435456
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
binlog_row_image = 'MINIMAL'
MySQL 8.0 で sort_buffer_size
の扱いにいくつか変更があったため、デフォルトの値である 262144
から sort_buffer_size
パラメータを更新する必要があるかもしれません。W&B と MySQL が効率よく連携することを保証するために、値を 67108864
(64MiB) に設定することを推奨します。MySQL はこの設定を v8.0.28 からサポートしています。
データベースに関する考慮事項
次の SQL クエリを使用してデータベースとユーザーを作成します。SOME_PASSWORD
を希望のパスワードに置き換えてください:
CREATE USER 'wandb_local' @ '%' IDENTIFIED BY 'SOME_PASSWORD' ;
CREATE DATABASE wandb_local CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL ON wandb_local.* TO 'wandb_local' @ '%' WITH GRANT OPTION ;
これは SSL 証明書が信頼されている場合にのみ機能します。W&B は自己署名証明書をサポートしていません。
パラメータグループ設定
データベースのパフォーマンスを最適化するために、次のパラメータグループが設定されていることを確認してください:
binlog_format = 'ROW'
innodb_online_alter_log_max_size = 268435456
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
binlog_row_image = 'MINIMAL'
sort_buffer_size = 67108864
オブジェクトストレージ
オブジェクトストアは、Minio クラスター または署名付き URL をサポートする Amazon S3 互換のオブジェクトストアでホストできます。次のスクリプト を実行して、オブジェクトストアが署名付き URL をサポートしているか確認してください。
さらに、次の CORS ポリシーをオブジェクトストアに適用する必要があります。
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns= "http://s3.amazonaws.com/doc/2006-03-01/" >
<CORSRule>
<AllowedOrigin> http://YOUR-W& B-SERVER-IP</AllowedOrigin>
<AllowedMethod> GET</AllowedMethod>
<AllowedMethod> PUT</AllowedMethod>
<AllowedMethod> HEAD</AllowedMethod>
<AllowedHeader> *</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Amazon S3 互換のオブジェクトストアに接続する際、自分の資格情報を接続文字列で指定できます。たとえば、次のように指定します:
s3://$ACCESS_KEY:$SECRET_KEY@$HOST/$BUCKET_NAME
オブジェクトストア用の信頼された SSL 証明書を設定している場合、W&B が TLS 経由でのみ接続するように指示することもできます。それには、URL に tls
クエリパラメータを追加します。たとえば、次の URL 例は、Amazon S3 URI に TLS クエリパラメータを追加する方法を示しています:
s3://$ACCESS_KEY:$SECRET_KEY@$HOST/$BUCKET_NAME?tls=true
これは SSL 証明書が信頼されている場合にのみ機能します。W&B は自己署名証明書をサポートしていません。
サードパーティのオブジェクトストアを使用している場合、BUCKET_QUEUE
を internal://
に設定します。これにより、外部の SQS キューやそれに相当するものに依存せずに、W&B サーバーがすべてのオブジェクト通知を内部で管理できるようになります。
独自のオブジェクトストアを運用する際に考慮すべき最も重要なことは次のとおりです:
ストレージ容量とパフォーマンス 。磁気ディスクを使用しても構いませんが、これらのディスクの容量を監視している必要があります。平均的な W&B の使用量は 10 ギガバイトから 100 ギガバイトに達します。大量使用はペタバイトのストレージ消費を引き起こす可能性があります。
フォールトトレランス 。最低限、オブジェクトを保存する物理ディスクは RAID アレイにあるべきです。minio を使用する場合は、分散モード での実行を検討してください。
可用性 。ストレージが利用可能であることを確認するために監視を設定する必要があります。
独自のオブジェクトストレージサービスを運用するためのエンタープライズ代替策は多数存在します:
https://aws.amazon.com/s3/outposts/
https://www.netapp.com/data-storage/storagegrid/
MinIO 設定
minio を使用する場合、次のコマンドを実行してバケットを作成できます。
mc config host add local http://$MINIO_HOST:$MINIO_PORT " $MINIO_ACCESS_KEY" " $MINIO_SECRET_KEY" --api s3v4
mc mb --region= us-east1 local/local-files
W&B Server アプリケーションを Kubernetes にデプロイ
公式の W&B Helm チャートを使用することが推奨されるインストール方法です。こちらのセクション に従って W&B Server アプリケーションをデプロイしてください。
OpenShift
W&B は、OpenShift Kubernetes クラスター 内からの運用をサポートしています。
W&B は公式の W&B Helm チャートでのインストールをお勧めします。
コンテナを非特権ユーザーとして実行
デフォルトでは、コンテナは $UID
999 を使用します。オーケストレーターが非ルートユーザーでのコンテナ実行を要求する場合、$UID
>= 100000 そして $GID
を 0 に指定します。
W&B はファイルシステム権限が正しく機能するためにルートグループ ($GID=0
) として開始する必要があります。
Kubernetes のセキュリティコンテキストの例は次のようになります:
spec:
securityContext:
runAsUser: 100000
runAsGroup: 0
ネットワーキング
ロードバランサー
適切なネットワーク境界でネットワークリクエストを停止するロードバランサーを実行します。
一般的なロードバランサーには以下があります:
Nginx Ingress
Istio
Caddy
Cloudflare
Apache
HAProxy
機械学習のペイロードを実行するために使用されるすべてのマシンと、Web ブラウザを介してサービスにアクセスするために使用されるデバイスがこのエンドポイントと通信できることを確認してください。
SSL / TLS
W&B Server は SSL を停止しません。信頼されたネットワーク内での SSL 通信がセキュリティポリシーで求められている場合、Istio や サイドカーコンテナ などのツールを使用してください。ロードバランサー自体は有効な証明書で SSL を終了させる必要があります。自己署名証明書はサポートされておらず、ユーザーに多くの問題を引き起こします。可能であれば、Let’s Encrypt のようなサービスを使用してロードバランサーに信頼された証明書を提供することは素晴らしい方法です。Caddy や Cloudflare のようなサービスは SSL を自動的に管理します。
nginx 設定の例
以下は、nginx をリバースプロキシとして使用する例の設定です。
events {}
http {
# If we receive X-Forwarded-Proto, pass it through; otherwise, pass along the
# scheme used to connect to this server
map $http_x_forwarded_proto $proxy_x_forwarded_proto {
default $http_x_forwarded_proto;
'' $scheme;
}
# Also, in the above case, force HTTPS
map $http_x_forwarded_proto $sts {
default '' ;
"https" "max-age=31536000 ; includeSubDomains" ;
}
# If we receive X-Forwarded-Host, pass it though; otherwise, pass along $http_host
map $http_x_forwarded_host $proxy_x_forwarded_host {
default $http_x_forwarded_host;
'' $http_host;
}
# If we receive X-Forwarded-Port, pass it through; otherwise, pass along the
# server port the client connected to
map $http_x_forwarded_port $proxy_x_forwarded_port {
default $http_x_forwarded_port;
'' $server_port;
}
# If we receive Upgrade, set Connection to "upgrade"; otherwise, delete any
# Connection header that may have been passed to this server
map $http_upgrade $proxy_connection {
default upgrade ;
'' close ;
}
server {
listen 443 ssl ;
server_name www.example.com ;
ssl_certificate www.example.com.crt ;
ssl_certificate_key www.example.com.key ;
proxy_http_version 1 .1 ;
proxy_buffering off ;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
proxy_set_header X-Forwarded-Host $proxy_x_forwarded_host;
location / {
proxy_pass http:// $YOUR_UPSTREAM_SERVER_IP:8080/;
}
keepalive_timeout 10 ;
}
}
インストールの確認
W&B Server が正しく設定されていることを確認してください。次のコマンドをターミナルで実行します:
pip install wandb
wandb login --host= https://YOUR_DNS_DOMAIN
wandb verify
開始時に W&B Server にヒットするエラーを表示するためにログファイルを確認してください。次のコマンドを実行します:
kubectl get pods
kubectl logs wandb-XXXXX-XXXXX
エラーが発生した場合は W&B サポートにお問い合わせください。
1.2.5 - W&B ライセンスと バージョン を更新する
W&B (Weights & Biases) のバージョンとライセンスを異なるインストールメソッドで更新するためのガイド。
W&B Server の バージョン と ライセンスのアップデートは、W&B Server のインストール方法と同じ方法で行います。次の表に、さまざまな デプロイメント メソッド に基づいたライセンスとバージョンのアップデート方法を示します。
Release Type
Description
Terraform
W&B は、クラウド デプロイメント用に 3 つのパブリック Terraform モジュールをサポートしています: AWS , GCP , および Azure 。
Helm
既存の Kubernetes クラスターに W&B をインストールするために Helm Chart を使用できます。
Terraform を使ってライセンスと バージョン を更新します。以下の表に、クラウド プラットフォーム に基づく W&B 管理Terraform モジュールを示します。
まず、お使いの クラウド プロバイダー 用の W&B 管理の Terraform モジュールに移動します。前の表を参照して、クラウド プロバイダー に基づいた適切な Terraform モジュールを見つけてください。
Terraform 設定内で、Terraform wandb_app
モジュールの設定で wandb_version
と license
を更新します:
module "wandb_app" {
source = "wandb/wandb/<cloud-specific-module>"
version = "new_version"
license = "new_license_key" # 新しいライセンス キー
wandb_version = "new_wandb_version" # 希望する W&B バージョン
...
}
terraform plan
および terraform apply
コマンドで Terraform 設定を適用します。
terraform init
terraform apply
(オプション) terraform.tfvars
またはその他の .tfvars
ファイルを使用する場合。
新しい W&B バージョン と ライセンス キー を指定して terraform.tfvars
ファイルを更新または作成します。
terraform plan -var-file= "terraform.tfvars"
設定を適用します。Terraform ワークスペース ディレクトリー で以下を実行します:
terraform apply -var-file= "terraform.tfvars"
Helm を使用してアップデート
Spec を使って W&B をアップデート
Helm チャート *.yaml
設定 ファイルで image.tag
および/または license
の 値 を変更して新しい バージョン を指定します:
license : 'new_license'
image :
repository : wandb/local
tag : 'new_version'
以下の コマンド で Helm アップグレード を実行します:
helm repo update
helm upgrade --namespace= wandb --create-namespace \
--install wandb wandb/wandb --version ${ chart_version} \
-f ${ wandb_install_spec.yaml}
ライセンスと バージョン を直接アップデート
新しい ライセンス キー と イメージ タグ を 環境 変数として設定します:
export LICENSE= 'new_license'
export TAG= 'new_version'
以下の コマンド で Helm リリース をアップグレードし、新しい 値 を既存の設定とマージします:
helm repo update
helm upgrade --namespace= wandb --create-namespace \
--install wandb wandb/wandb --version ${ chart_version} \
--reuse-values --set license= $LICENSE --set image.tag= $TAG
詳細については、パブリック リポジトリのアップグレード ガイド を参照してください。
管理者 UI を使用してアップデート
この方法は、通常、自己ホスト型 Docker インストール で、環境 変数 を使用して W&B サーバー コンテナ内に設定されていないライセンスを更新する場合にのみ使用されます。
W&B デプロイメント ページ から新しいライセンスを取得し、アップグレードしようとしている デプロイメント に対して正しい組織およびデプロイメント ID と一致することを確認します。
W&B 管理者 UI に <host-url>/system-settings
でアクセスします。
ライセンス管理セクションに移動します。
新しいライセンスキーを入力し、変更を保存します。
1.3 - 専用クラウド
専用クラウドの利用 (シングルテナント SaaS)
W&B 専用クラウドは、シングルテナントで完全に管理されたプラットフォームであり、W&B の AWS、GCP または Azure クラウドアカウントにデプロイされます。各専用クラウドインスタンスは、他の W&B 専用クラウドインスタンスと隔離されたネットワーク、コンピュート、ストレージを持っています。W&B 固有のメタデータとデータは、隔離されたクラウドストレージに保存され、隔離されたクラウドコンピュートサービスを使って処理されます。
W&B 専用クラウドは各クラウドプロバイダーにとって複数の世界各地域で利用可能です
データセキュリティ
セキュアストレージコネクタ を使用して、インスタンスおよびチームレベル で自分のバケット (BYOB) を持ち込むことで、モデル、データセットなどのファイルを保存できます。
W&B マルチテナントクラウドと同様に、複数のチーム用に 1 つのバケットを設定するか、異なるチームに対して別々のバケットを使用することができます。チーム用にセキュアストレージコネクタを設定しない場合、そのデータはインスタンスレベルのバケットに保存されます。
セキュアストレージコネクタを使用した BYOB に加えて、信頼できるネットワーク場所からのみ専用クラウドインスタンスにアクセスを制限するために IP 許可リスト を利用できます。
また、クラウドプロバイダーのセキュア接続ソリューション を使用して、専用クラウドインスタンスにプライベートに接続することもできます。
アイデンティティとアクセス管理 (IAM)
W&B 組織での安全な認証と効果的な認可のためのアイデンティティおよびアクセス管理機能を利用してください。専用クラウドインスタンスの IAM には、次の機能があります:
監視
監査ログ を使用して、チーム内でのユーザー活動を追跡し、企業ガバナンス要件に準拠します。また、専用クラウドインスタンス内の W&B 組織ダッシュボードを使用して、組織の利用状況を確認できます。
メンテナンス
W&B マルチテナントクラウドと同様に、専用クラウドを使用することで、W&B プラットフォームのプロビジョニングやメンテナンスに関するオーバーヘッドやコストを負担することはありません。
専用クラウドで W&B がどのようにアップデートを管理するかを理解するためには、サーバーリリースプロセス を参照してください。
コンプライアンス
W&B 専用クラウドのセキュリティ管理は、定期的に内部および外部で監査されています。セキュリティ評価演習のためのセキュリティとコンプライアンス文書をリクエストするには、W&B セキュリティポータル を参照してください。
移行オプション
セルフマネージドインスタンス またはマルチテナントクラウド から専用クラウドへの移行がサポートされています。
次のステップ
専用クラウドの利用に興味がある場合は、このフォーム を提出してください。
1.3.1 - 専用クラウドがサポートされている地域
AWS、GCP、Azure は世界中の複数の場所でクラウドコンピューティングサービスをサポートしています。グローバル地域は、データの居住地やコンプライアンス、レイテンシー、コスト効率などに関連する要件を満たすのに役立ちます。W&B は、Dedicated Cloud のために利用可能な多くのグローバル地域をサポートしています。
ご希望の AWS、GCP、Azure の地域がリストにない場合は、W&B サポートにご連絡ください。W&B は、該当する地域が Dedicated Cloud に必要なすべてのサービスを備えているかどうかを検証し、評価の結果に応じてサポートを優先することができます。
サポートされている AWS 地域
以下の表は、W&B が現在 Dedicated Cloud インスタンスについてサポートしている AWS 地域 の一覧です。
地域の場所
地域名
US East (Ohio)
us-east-2
US East (N. Virginia)
us-east-1
US West (N. California)
us-west-1
US West (Oregon)
us-west-2
Canada (Central)
ca-central-1
Europe (Frankfurt)
eu-central-1
Europe (Ireland)
eu-west-1
Europe (London)
eu-west-2
Europe (Milan)
eu-south-1
Europe (Stockholm)
eu-north-1
Asia Pacific (Mumbai)
ap-south-1
Asia Pacific (Singapore)
ap-southeast-1
Asia Pacific (Sydney)
ap-southeast-2
Asia Pacific (Tokyo)
ap-northeast-1
Asia Pacific (Seoul)
ap-northeast-2
AWS 地域についての詳細は、AWS ドキュメントの Regions, Availability Zones, and Local Zones を参照してください。
AWS 地域を選択する際に考慮すべき要素の概要については、What to Consider when Selecting a Region for your Workloads をご覧ください。
サポートされている GCP 地域
以下の表は、W&B が現在 Dedicated Cloud インスタンスについてサポートしている GCP 地域 の一覧です。
地域の場所
地域名
South Carolina
us-east1
N. Virginia
us-east4
Iowa
us-central1
Oregon
us-west1
Los Angeles
us-west2
Las Vegas
us-west4
Toronto
northamerica-northeast2
Belgium
europe-west1
London
europe-west2
Frankfurt
europe-west3
Netherlands
europe-west4
Sydney
australia-southeast1
Tokyo
asia-northeast1
Seoul
asia-northeast3
GCP 地域についての詳細は、GCP ドキュメントの Regions and zones を参照してください。
サポートされている Azure 地域
以下の表は、W&B が現在 Dedicated Cloud インスタンスについてサポートしている Azure 地域 の一覧です。
地域の場所
地域名
Virginia
eastus
Iowa
centralus
Washington
westus2
California
westus
Canada Central
canadacentral
France Central
francecentral
Netherlands
westeurope
Tokyo, Saitama
japaneast
Seoul
koreacentral
Azure 地域についての詳細は、Azure ドキュメントの Azure geographies を参照してください。
1.3.2 - 専用クラウドからデータをエクスポートする
専用クラウドからデータをエクスポートする
もし専用クラウドインスタンスで管理されているすべてのデータをエクスポートしたい場合、W&B SDK APIを使用して、インポートおよびエクスポートAPI を利用して runs、メトリクス、Artifacts などを抽出できます。以下の表は、いくつかの主要なエクスポートユースケースについて説明しています。
専用クラウドで保管されている Artifacts を Secure Storage Connector で管理している場合、W&B SDK APIを使用してアーティファクトをエクスポートする必要はないかもしれません。
大量の runs や Artifacts などがある場合、W&B SDK APIを使用してすべてのデータをエクスポートするのは遅くなる可能性があります。W&Bは、専用クラウドインスタンスを圧迫しないように、適切なサイズのバッチでエクスポートプロセスを実行することを推奨しています。
2 - アイデンティティとアクセス管理 (IAM)
W&B プラットフォームには、W&B 内での 3 つの IAM スコープがあります: Organizations 、Teams 、および Projects 。
Organization
Organization は、あなたの W&B アカウントまたはインスタンスのルートスコープです。ユーザー管理、チーム管理、チーム内のプロジェクト管理、使用状況の追跡など、アカウントまたはインスタンス内のすべてのアクションは、このルートスコープのコンテキスト内で行われます。
Multi-tenant Cloud を使用している場合、複数の組織を持っている可能性があります。それぞれが事業部門、個人のユーザー、他社との共同パートナーシップなどに対応する場合があります。
Dedicated Cloud または Self-managed instance を使用している場合、それは1つの組織に対応しています。あなたの会社は、異なる事業部門または部門に対応するために Dedicated Cloud または Self-managed インスタンスを複数持つことができますが、それは業務や部門全体にわたる AI 実践者を管理するためのオプションの方法に過ぎません。
詳細については、Manage organizations を参照してください。
Team
Team は、組織内のサブスコープであり、事業部門、機能、部門、または会社内のプロジェクトチームに対応する場合があります。デプロイメントタイプと価格プランに応じて、組織内に複数のチームを持つことができます。
AI プロジェクトはチームのコンテキスト内で編成されます。チーム内のアクセス制御は、親組織レベルで管理者であるかどうかに関係なく、チーム管理者によって管理されます。
詳細については、Add and manage teams を参照してください。
Project
Project は、特定の目標を持つ実際の AI プロジェクトに対応するチーム内のサブスコープです。チーム内に複数のプロジェクトを持つことができます。各プロジェクトには、誰がプロジェクトにアクセスできるかを決定する公開範囲モードがあります。
各プロジェクトは、Workspaces と Reports で構成され、関連する Artifacts 、Sweeps 、および Automations とリンクされています。
2.1 - 認証
2.1.1 - SDK でフェデレーテッドアイデンティティを使用する
W&B SDKを使用して、組織の資格情報を使用したサインインにアイデンティティ連携を利用します。W&Bの組織管理者が組織向けにSSOを設定している場合、すでに組織の資格情報を使用してW&BアプリのUIにサインインしています。この意味で、アイデンティティ連携はW&B SDKのためのSSOに似ていますが、JSON Web Tokens (JWTs) を直接使用しています。APIキーの代わりにアイデンティティ連携を使用できます。
RFC 7523 は、SDKを使用したアイデンティティ連携の基盤を形成しています。
アイデンティティ連携は、すべてのプラットフォームタイプの Enterprise
プランで Preview
として利用可能です - SaaS Cloud、Dedicated Cloud、およびセルフマネージドインスタンス。ご質問がある場合は、W&Bチームにお問い合わせください。
このドキュメントの目的のために、identity provider
と JWT issuer
という用語は交換可能に使われています。この機能のコンテキストでは、両方とも同じものを指します。
JWTイシュア設定
最初のステップとして、組織管理者はW&B組織とアクセス可能なJWTイシュアの間で連携を設定しなければなりません。
組織ダッシュボードの Settings タブに移動します。
Authentication オプションで Set up JWT Issuer
をクリックします。
テキストボックスにJWTイシュアのURLを追加し、Create
を押します。
W&Bは、${ISSUER_URL}/.well-known/oidc-configuration
パスでOIDCディスカバリードキュメントを自動的に探し、ディスカバリードキュメント内の関連URLでJSON Web Key Set (JWKS) を見つけようとします。JWKSは、JWTが関連するアイデンティティプロバイダーによって発行されたものであることを確認するために使用されるリアルタイム検証に利用されます。
W&BへのJWTを使用
JWTイシュアがW&B組織のために設定されると、ユーザーはそのアイデンティティプロバイダーによって発行されたJWTを使用して関連するW&B Projectsへのアクセスを開始できます。JWTを使用するメカニズムは次の通りです:
組織内で利用可能なメカニズムの1つを使用して、アイデンティティプロバイダーにサインインする必要があります。一部のプロバイダーはAPIやSDKを使用して自動化された方法でアクセスでき、他のプロバイダーは関連するUIを使用してのみアクセス可能です。詳細については、W&B組織管理者やJWTイシュアの所有者にお問い合わせください。
アイデンティティプロバイダーにサインインした後、JWTをセキュアな場所に保存し、環境変数 WANDB_IDENTITY_TOKEN_FILE
に絶対ファイルパスを設定してください。
W&B SDKやCLIを使用してW&Bプロジェクトにアクセスします。SDKやCLIは自動的にJWTを検出し、JWTが正常に検証された後にそれをW&Bアクセストークンと交換します。W&Bアクセストークンは、AIワークフローを有効にするためにrun、メトリクス、アーティファクトのログを記録するための関連するAPIにアクセスするために使用されます。アクセストークンはデフォルトで ~/.config/wandb/credentials.json
のパスに保存されます。環境変数 WANDB_CREDENTIALS_FILE
を指定することでそのパスを変更することができます。
JWTは、APIキー、パスワードなどの長期間の資格情報の欠点に対処するための短期間の資格情報として意図されています。あなたのアイデンティティプロバイダーで設定されたJWTの有効期限に応じて、JWTを継続的にリフレッシュし、環境変数 WANDB_IDENTITY_TOKEN_FILE
で参照されるファイルに保存されていることを確認する必要があります。
W&Bアクセストークンにもデフォルトの有効期限があり、SDKまたはCLIは、それがあなたのJWTを使用して自動的にリフレッシュしようとします。その時点でユーザーJWTが期限切れになってリフレッシュされていない場合、認証に失敗する可能性があります。可能であれば、W&B SDKやCLIを使用したAIワークロードの一部として、JWTの取得と有効期限後のリフレッシュメカニズムを実装するべきです。
JWT検証
JWTをW&Bアクセストークンと交換し、プロジェクトにアクセスするためのワークフローの一環として、JWTは以下の検証を受けます:
JWT署名はW&B組織レベルでJWKSを使用して検証されます。これが最初の防御線であり、これが失敗した場合、あなたのJWKSやJWTの署名に問題があることを意味します。
JWT内の iss
クレームは、組織レベルで設定されたイシュアURLと等しいものである必要があります。
JWT内の sub
クレームは、W&B組織で設定されたユーザーのメールアドレスと等しいものである必要があります。
JWT内の aud
クレームは、AIワークフローの一部としてアクセスしているプロジェクトを保有しているW&B組織の名前と同じである必要があります。Dedicated Cloud または セルフマネージド インスタンスの場合、インスタンスレベルの環境変数 SKIP_AUDIENCE_VALIDATION
を true
に設定してオーディエンスクレームの検証をスキップするか、wandb
をオーディエンスとして使用します。
JWT内の exp
クレームは、トークンが有効で期限が切れていないか、リフレッシュが必要であるかを確認するためにチェックされます。
外部サービスアカウント
W&Bは長期間のAPIキーを持つ組み込みのサービスアカウントを長年にわたりサポートしてきました。SDKとCLIのアイデンティティ連携機能を使用すると、外部サービスアカウントを持ち込むことができ、JWTを使用して認証することも可能です。ただし、それらが組織レベルで設定されている同じイシュアによって発行されている限りです。チーム管理者は、組み込みのサービスアカウントのように、チームの範囲内で外部サービスアカウントを設定することができます。
外部サービスアカウントを設定するには:
チームの Service Accounts タブに移動します。
New service account
を押します。
サービスアカウントの名前を入力し、Authentication Method
として Federated Identity
を選択し、Subject
を提供して Create
を押します。
外部サービスアカウントのJWT内の sub
クレームは、チーム管理者がチームレベルの Service Accounts タブでそのサブジェクトとして設定したものと同じである必要があります。このクレームは、JWT検証 の一環として検証されます。aud
クレームの要件は、人間のユーザーJWTと同様です。
W&Bへの外部サービスアカウントのJWTを使用するとき 、通常、初期JWTを生成し、継続的にリフレッシュするワークフローを自動化する方が簡単です。外部サービスアカウントを使用してログに記録されたrunを人間ユーザーに帰属させる場合、組み込みサービスアカウントと同様に、AIワークフローのために環境変数 WANDB_USERNAME
または WANDB_USER_EMAIL
を設定することができます。
W&Bは、データの機密性が異なるAIワークロード全体で、柔軟性と簡潔さのバランスを取るために、組み込みおよび外部サービスアカウントの組み合わせを使用することをお勧めします。
2.1.2 - SSO を LDAP で設定
資格情報を W&B Server の LDAP サーバーで認証します。次のガイドは W&B Server の設定を行う方法を説明しています。必須およびオプションの設定、システム設定 UI から LDAP 接続を設定する手順をカバーしています。また、アドレス、ベース識別名、属性など、LDAP 設定のさまざまな入力についての情報を提供します。これらの属性は W&B アプリ UI から、または環境変数を使用して指定できます。匿名バインドを設定するか、管理者 DN とパスワードでバインドすることができます。
W&B 管理者ロールのみが LDAP 認証を有効化および設定できます。
LDAP 接続の設定
W&B アプリに移動します。
右上のプロフィールアイコンを選択します。ドロップダウンから System Settings を選択します。
Configure LDAP Client を切り替えます。
フォームに詳細を追加します。各入力の詳細は、Configuring Parameters セクションを参照してください。
Update Settings をクリックして設定をテストします。これにより、W&B サーバーとのテストクライアント/接続が確立されます。
接続が検証されたら、Enable LDAP Authentication を切り替え、Update Settings ボタンを選択します。
次の環境変数を使用して LDAP 接続を設定します。
環境変数
必須
例
LOCAL_LDAP_ADDRESS
はい
ldaps://ldap.example.com:636
LOCAL_LDAP_BASE_DN
はい
email=mail,group=gidNumber
LOCAL_LDAP_BIND_DN
いいえ
cn=admin
, dc=example,dc=org
LOCAL_LDAP_BIND_PW
いいえ
LOCAL_LDAP_ATTRIBUTES
はい
email=mail
, group=gidNumber
LOCAL_LDAP_TLS_ENABLE
いいえ
LOCAL_LDAP_GROUP_ALLOW_LIST
いいえ
LOCAL_LDAP_LOGIN
いいえ
各環境変数の定義については Configuration parameters セクションを参照してください。明確さのために、環境変数の接頭辞 LOCAL_LDAP
を定義名から省略しました。
設定パラメータ
以下の表には、必須およびオプションの LDAP 設定を一覧し説明しています。
環境変数
定義
必須
ADDRESS
W&B Server をホストする VPC 内の LDAP サーバーのアドレスです。
はい
BASE_DN
ディレクトリ内で検索を開始するルートパスであり、クエリを行うために必要です。
はい
BIND_DN
LDAP サーバーに登録された管理者ユーザーのパスです。LDAP サーバーが未認証のバインドをサポートしていない場合、これが必要です。指定された場合、W&B Server はこのユーザーとして LDAP サーバーに接続します。指定されていない場合、W&B Server は匿名バインドを使用して接続します。
いいえ
BIND_PW
管理者ユーザーのパスワードで、バインドを認証するために使用されます。空白の場合、W&B Server は匿名バインドを使用して接続します。
いいえ
ATTRIBUTES
メールとグループ ID 属性名をコンマ区切りの文字列値として提供します。
はい
TLS_ENABLE
TLS を有効にします。
いいえ
GROUP_ALLOW_LIST
グループ許可リスト。
いいえ
LOGIN
W&B Server に LDAP を使用して認証するかどうかを指定します。True
または False
を設定します。オプションとして、LDAP の設定をテストするために false に設定することができます。LDAP 認証を開始するには true に設定します。
いいえ
2.1.3 - SSO を OIDC で設定
W&B サーバーは、OpenID Connect (OIDC) 互換のアイデンティティ プロバイダーをサポートしており、Okta、Keycloak、Auth0、Google、および Entra などの外部アイデンティティ プロバイダーを通じてユーザー アイデンティティとグループ メンバーシップを管理できます。
OpenID Connect (OIDC)
W&B サーバーは、外部アイデンティティプロバイダー (IdP) とのインテグレーションのために、次の OIDC 認証フローをサポートします。
フォームポストを使用したインプリシットフロー
コードエクスチェンジのための証明キーを使用した認可コードフロー (PKCE)
これらのフローはユーザーを認証し、必要なアイデンティティ情報 (ID トークンの形式) を W&B サーバーに提供してアクレス制御を管理します。
ID トークンは、ユーザーの名前、ユーザー名、メール、およびグループメンバーシップなど、ユーザーのアイデンティティ情報を含む JWT です。W&B サーバーはこのトークンを使用してユーザーを認証し、システム内で適切なロールやグループにマッピングします。
W&B サーバーのコンテキストでは、アクセストークンはユーザーを代表して API へのリクエストを認可しますが、W&B サーバーの主な関心はユーザー認証とアイデンティティであるため、ID トークンのみが必要です。
環境変数を使用して、Dedicated cloud の IAM オプションを設定 するか、Self-managed インスタンスを設定することができます。
Dedicated cloud または Self-managed W&B サーバーインストールのためにアイデンティティ プロバイダーを設定する際は、さまざまな IdP に関するこれらのガイドラインに従ってください。SaaS バージョンの W&B を使用している場合は、組織の Auth0 テナントを設定するための支援を求めるには support@wandb.com に連絡してください。
AWS Cognito を認証に設定する手順は以下の通りです:
最初に AWS アカウントにサインインし、AWS Cognito アプリに移動します。
IdP にアプリケーションを設定するための許可されたコールバック URL を入力します:
http(s)://YOUR-W&B-HOST/oidc/callback
をコールバック URL として追加します。 YOUR-W&B-HOST
を W&B ホストパスに置き換えます。
IdP がユニバーサルログアウトをサポートしている場合は、ログアウト URL を http(s)://YOUR-W&B-HOST
に設定します。 YOUR-W&B-HOST
を W&B ホストパスに置き換えます。
たとえば、アプリケーションが https://wandb.mycompany.com
で実行されている場合、YOUR-W&B-HOST
を wandb.mycompany.com
に置き換えます。
下の画像は、AWS Cognito で許可されたコールバックとサインアウト URL を提供する方法を示しています。
wandb/local はデフォルトで implicit
grant with the form_post
response type を使用します。
また、wandb/local を設定して、PKCE Code Exchange フローを使用する authorization_code
grant を実行することもできます。
アプリにトークンを届ける方法を AWS Cognito で設定するために、1 つ以上の OAuth グラントタイプを選択します。
W&B は特定の OpenID Connect (OIDC) スコープを要求します。AWS Cognito App から以下を選択してください:
“openid”
“profile”
“email”
たとえば、AWS Cognito アプリの UI は以下の画像のようになります:
設定ページで Auth Method を選択するか、OIDC_AUTH_METHOD
環境変数を設定して、どのグラントが wandb/local に適しているかを指定します。
Auth Method を pkce
に設定する必要があります。
クライアント ID および OIDC 発行者の URL が必要です。OpenID ディスカバリドキュメントは $OIDC_ISSUER/.well-known/openid-configuration
で利用可能でなければなりません。
たとえば、ユーザープール ID を User Pools セクションの App Integration タブから、Cognito IdP URL に追加することで発行者 URL を生成できます:
IDP URL には「Cognito ドメイン」を使用しないでください。Cognito は https://cognito-idp.$REGION.amazonaws.com/$USER_POOL_ID
でそのディスカバリドキュメントを提供します。
Okta を認証に設定する手順は以下の通りです:
https://login.okta.com/ で Okta ポータルにログインします。
左側のサイドバーで Applications 、そして再度 Applications を選択します。
“Create App integration” をクリックします。
“Create a new app integration” 画面で OIDC - OpenID Connect と Single-Page Application を選択し、次に「Next」をクリックします。
“New Single-Page App Integration” 画面で、次の内容を入力し「Save」をクリックします:
アプリ統合名、例として “Weights & Biases”
グラントタイプ: Authorization Code と Implicit (hybrid) の両方を選択
サインイン リダイレクト URI: https://YOUR_W_AND_B_URL/oidc/callback
サインアウト リダイレクト URI: https://YOUR_W_AND_B_URL/logout
割り当て: Skip group assignment for now を選択
作成したばかりの Okta アプリケーションの概要画面で、Client ID を Client Credentials の General タブの下に記録します:
Okta OIDC 発行者 URL を特定するには、左側のメニューで Settings そして Account を選択します。
Okta UI は Organization Contact の下に企業名を表示します。
OIDC 発行者 URL は https://COMPANY.okta.com
の形式です。該当する値で COMPANY を置き換えて、注意してください。
https://portal.azure.com/ で Azure ポータルにログインします。
「Microsoft Entra ID」サービスを選択します。
左側のサイドバーで「App registrations」を選択します。
上部で「New registration」をクリックします。
「アプリケーションの登録」画面で次の値を入力します:
名前を指定します。例として「Weights and Biases application」
デフォルトでは選択されたアカウントタイプは「この組織ディレクトリ内のアカウントのみ (デフォルトディレクトリのみ - シングルテナント)」です。必要に応じて修正してください。
リダイレクト URI を Web タイプで設定し、値は https://YOUR_W_AND_B_URL/oidc/callback
「登録」をクリックします。
「アプリケーション (client) ID」と「ディレクトリ (テナント) ID」をメモしておいてください。
左側のサイドバーで、Authentication をクリックします。
左側のサイドバーで「Certificates & secrets」をクリックします。
「Client secrets」をクリックし、「New client secret」をクリックします。
「クライアントシークレットの追加」画面で次の値を入力します:
これで次の 3 つの値をメモしておいてください:
OIDC クライアント ID
OIDC クライアントシークレット
OIDC 発行者 URL に必要なテナント ID
OIDC 発行者 URL は次の形式です:https://login.microsoftonline.com/${TenantID}/v2.0
W&B サーバーでの SSO 設定
SSO を設定するには、管理者権限と次の情報が必要です:
OIDC クライアント ID
OIDC 認証方法(implicit
または pkce
)
OIDC 発行者 URL
OIDC クライアントシークレット (オプション; IdP の設定方法に依存します)
IdP が OIDC クライアントシークレットを要求する場合、環境変数 OIDC_CLIENT_SECRET
で指定してください。
SSO の設定は、W&B サーバー UI を使用するか、wandb/local
pod に環境変数 を渡して設定することができます。環境変数が UI よりも優先されます。
SSO を設定した後でインスタンスにログインできない場合、LOCAL_RESTORE=true
環境変数を設定してインスタンスを再起動できます。これにより、一時的なパスワードがコンテナのログに出力され、SSO が無効になります。SSO の問題を解決したら、環境変数を削除して SSO を再度有効化する必要があります。
System Console
System settings
System Console は System Settings ページの後継です。これは W&B Kubernetes Operator ベースのデプロイメントで利用可能です。
Access the W&B Management Console を参照してください。
Settings に移動し、次に Authentication を選択します。Type ドロップダウンで OIDC を選択します。
値を入力します。
Save をクリックします。
ログアウトし、IdP ログイン画面を使用して再度ログインします。
Weights&Biases インスタンスにサインインします。
W&B アプリに移動します。
ドロップダウンから System Settings を選択します:
発行者、クライアント ID、および認証方法を入力します。
Update settings を選択します。
SSO を設定した後でインスタンスにログインできない場合、LOCAL_RESTORE=true
環境変数を設定してインスタンスを再起動できます。これにより、一時的なパスワードがコンテナのログに出力され、SSO がオフになります。SSO の問題を解決したら、環境変数を削除して SSO を再度有効化する必要があります。
セキュリティ・アサーション・マークアップ言語 (SAML)
W&B サーバーは SAML をサポートしていません。
2.1.4 - ワークフローを自動化するためにサービスアカウントを使用する
組織およびチームスコープのサービスアカウントを使用して、自動または非対話型のワークフローを管理する
サービスアカウントは、チーム内のプロジェクト全体または複数チームにわたって、一般的なタスクを自動で実行できる人間でない(または機械の)ユーザーを表します。
組織の管理者は、組織のスコープでサービスアカウントを作成することができます。
チームの管理者は、そのチームのスコープでサービスアカウントを作成することができます。
サービスアカウントの APIキー により、呼び出し元はサービスアカウントのスコープ内のプロジェクトを読み書きできます。
サービスアカウントは、W&B Modelsの実験管理を自動化したり、W&B Weaveのトレースをログ記録したりするために、複数のユーザーやチームによるワークフローを集中管理することを可能にします。また、WANDB_USERNAME
またはWANDB_USER_EMAIL
の環境変数 を使用することにより、サービスアカウントで管理されているワークフローに人間ユーザーのアイデンティティを関連付けるオプションもあります。
組織スコープのサービスアカウント
組織スコープのサービスアカウントは、チームに関係なく、組織内のすべてのプロジェクトを読み書きする権限を持ちます。ただし、制限付きプロジェクト は例外です。制限付きプロジェクトにアクセスする前に、そのプロジェクトの管理者は明示的にサービスアカウントをプロジェクトに追加する必要があります。
組織管理者は、組織またはアカウントダッシュボードの Service Accounts タブから組織スコープのサービスアカウントの APIキー を取得できます。
新しい組織スコープのサービスアカウントを作成するには:
組織ダッシュボードの Service Accounts タブで New service account ボタンをクリックします。
Name を入力します。
サービスアカウントのデフォルトチームを選択します。
Create をクリックします。
新しく作成されたサービスアカウントの横で Copy API key をクリックします。
コピーした APIキー を秘密管理マネージャーまたは他の安全でアクセス可能な場所に保存します。
組織スコープのサービスアカウントはデフォルトのチームが必要ですが、それでも組織内のすべてのチームが所有する非制限プロジェクトにアクセスできます。これは、 WANDB_ENTITY
変数が モデルトレーニング や生成AIアプリの環境に設定されていない場合に、ワークロードが失敗するのを防ぐのに役立ちます。異なるチームのプロジェクトに組織スコープのサービスアカウントを使用するには、そのチームに WANDB_ENTITY
環境変数を設定する必要があります。
チームスコープのサービスアカウント
チームスコープのサービスアカウントは、そのチーム内のすべてのプロジェクトを読み書きできますが、そのチーム内の制限付きプロジェクト は除きます。制限付きプロジェクトにアクセスする前に、そのプロジェクトの管理者は明示的にサービスアカウントをプロジェクトに追加する必要があります。
チームの管理者として、 <WANDB_HOST_URL>/<your-team-name>/service-accounts
でチームスコープのサービスアカウントの APIキー を取得できます。あるいは、チームの Team settings で Service Accounts タブを参照してください。
チーム用の新しいチームスコープのサービスアカウントを作成するには:
チームの Service Accounts タブで New service account ボタンをクリックします。
Name を入力します。
認証メソッドとして Generate API key (Built-in) を選択します。
Create をクリックします。
新しく作成されたサービスアカウントの横で Copy API key をクリックします。
コピーした APIキー を秘密管理マネージャーまたは他の安全でアクセス可能な場所に保存します。
チームスコープのサービスアカウントを使用する モデルトレーニング や生成AIアプリの環境でチームを設定しないと、モデルのrunやweaveトレースがサービスアカウントの親チーム内の指定されたプロジェクトにログ記録されます。このようなシナリオでは、参照されているユーザーがサービスアカウントの親チームの一部でない限り、WANDB_USERNAME
または WANDB_USER_EMAIL
変数を使用したユーザー帰属は 機能しません 。
チームスコープのサービスアカウントは、親チームとは異なるチーム内の
チームスコープか制限スコープのプロジェクト に runをログ記録することはできませんが、他のチーム内の公開範囲プロジェクトには runをログ記録できます。
外部サービスアカウント
Built-in サービスアカウントに加えて、W&B は アイデンティティのフェデレーション を使用して、JSON Web Tokens (JWTs) を発行できるアイデンティティプロバイダー (IdPs) とともに、W&B SDK と CLI を用いたチームスコープの 外部サービスアカウント もサポートしています。
2.2 - アクセス管理
組織内でのユーザーとチームの管理
ユニークな組織ドメインで W&B に初めてサインアップしたユーザーは、その組織のインスタンス管理者ロール に割り当てられます。組織管理者は特定のユーザーにチーム管理者ロールを割り当てます。
W&B は、組織に複数のインスタンス管理者を持つことを推奨しています。これは、主な管理者が不在の場合にも管理業務を継続できるようにするためのベストプラクティスです。
チーム管理者 は、チーム内で管理権限を持つ組織内のユーザーです。
組織管理者は、https://wandb.ai/account-settings/
の組織アカウント設定にアクセスして、ユーザーを招待したり、ユーザーの役割を割り当てたり更新したり、チームを作成したり、組織からユーザーを削除したり、請求管理者を割り当てたりすることができます。詳細については、ユーザーの追加と管理 を参照してください。
組織管理者がチームを作成すると、インスタンス管理者またはチーム管理者は次のことができます:
デフォルトでは、管理者のみがそのチームにユーザーを招待したり、チームからユーザーを削除したりできます。この振る舞いを変更するには、チーム設定 を参照してください。
チームメンバーの役割を割り当てたり更新したりします。
組織に参加した際に自動的に新しいユーザーをチームに追加します。
組織管理者とチーム管理者は、https://wandb.ai/<your-team-name>
のチームダッシュボードを使用してチームを管理します。詳細とチームのデフォルトの公開範囲を設定するには、チームの追加と管理 を参照してください。
特定のプロジェクトへの公開範囲の制限
W&B プロジェクトの範囲を定義して、誰がそのプロジェクトを閲覧、編集、そして W&B の run をサブミットできるかを制限します。プロジェクトを閲覧できる人を制限することは、特にチームが機密または秘密のデータを扱う場合に役立ちます。
組織管理者、チーム管理者、またはプロジェクトの所有者は、プロジェクトの公開範囲を設定および編集することができます。
詳細については、プロジェクトの公開範囲 を参照してください。
2.2.1 - あなたの組織を管理する
組織の管理者として、組織内の個々のユーザーを管理 し、チームを管理 できます。
チーム管理者として、チームを管理 できます。
以下のワークフローは、インスタンス管理者の役割を持つユーザーに適用されます。インスタンス管理者の権限が必要だと思われる場合は、組織の管理者に問い合わせてください。
組織内のユーザー管理を簡素化したい場合は、ユーザーとチームの管理を自動化する を参照してください。
組織名の変更
以下のワークフローはW&BマルチテナントSaaSクラウドにのみ適用されます。
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウン内の アカウント セクションで 設定 を選択します。
設定 タブ内で 一般 を選択します。
名前を変更 ボタンを選択します。
表示されるモーダル内に、新しい組織名を入力し、名前を保存 ボタンを選択します。
ユーザーの追加と管理
管理者として、組織のダッシュボードを使用して次のことを行います。
ユーザーを招待または削除する。
ユーザーの組織の役割を割り当てまたは更新し、カスタム役割を作成する。
請求管理者を割り当てる。
組織の管理者がユーザーを組織に追加する方法はいくつかあります。
招待によるメンバー
SSOによる自動プロビジョニング
ドメインキャプチャ
シートと価格
以下の表は、Models と Weave のシートの仕組みをまとめたものです。
製品
シート
費用基準
Models
セットごとの支払い
支払い済みの Models シートの数と、累積した使用量が総合的なサブスクリプション費用を決定します。各ユーザーには、3 つの利用可能なシートタイプのいずれかを割り当てることができます: Full, Viewer, No-Access
Weave
無料
使用量に基づく
ユーザーを招待する
管理者は、組織内の特定のチームに加えてユーザーを組織に招待できます。
Multi-tenant SaaS Cloud
Dedicated or Self-managed
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウン内の アカウント セクションで ユーザー を選択します。
新しいユーザーを招待する を選択します。
表示されるモーダルで、メールまたはユーザー名 フィールドにそのユーザーのメールまたはユーザー名を入力します。
(推奨) チームを選択 ドロップダウンメニューから、そのユーザーをチームに追加します。
役割を選択 ドロップダウンから、そのユーザーに割り当てる役割を選択します。ユーザーの役割は後で変更可能です。役割を割り当てる に記載されている表を参照して、可能な役割について更に詳しく知ってください。
招待を送信 ボタンを選択します。
W&Bはサードパーティのメールサーバーを使って、招待を送信 ボタンを選択した後にユーザーのメールに招待リンクを送信します。ユーザーが招待を受け入れると、あなたの組織にアクセスできるようになります。
https://<org-name>.io/console/settings/
に移動します。<org-name>
はあなたの組織の名前に置き換えてください。
ユーザーを追加 ボタンを選択します。
表示されるモーダルで、新しいユーザーのメールアドレスを メール フィールドに入力します。
役割 ドロップダウンからユーザーに割り当てる役割を選択します。ユーザーの役割は後で変更可能です。役割を割り当てる に記載されている表を参照して、可能な役割について更に詳しく知ってください。
ユーザーのメールにサードパーティのメールサーバーを使って招待リンクを送信したい場合は、招待メールをユーザーに送信 ボックスにチェックを入れます。
新しいユーザーを追加 ボタンを選択します。
ユーザーの自動プロビジョニング
一致するメールドメインを持つW&Bユーザーは、SSOを設定し、SSOプロバイダーが許可した場合、SSOを使ってW&B組織にサインインすることができます。SSOはすべてのエンタープライズライセンスに利用可能です。
認証にSSOを有効にする W&Bは、ユーザーがSSOを使って認証することを強く推奨しています。組織のSSOを有効にするためには、W&Bチームに連絡してください。
Dedicated cloudまたはSelf-managedインスタンスでSSOを設定する方法についての詳細は、SSO with OIDC またはSSO with LDAP を参照してください。
W&Bはデフォルトで自動プロビジョニングされたユーザーに「メンバー」役割を割り当てます。自動プロビジョニングされたユーザーの役割はいつでも変更可能です。
Dedicated cloudインスタンスおよびSelf-managedデプロイメントでは、SSOを使ったユーザーの自動プロビジョニングがデフォルトでオンになっています。自動プロビジョニングをオフにすることができ、特定のユーザーを選んでW&B組織に追加することができます。
以下のタブでは、デプロイメントタイプに基づいてSSOをオフにする方法を説明します:
Dedicated cloud
Self-managed
Dedicated cloudインスタンスを使用している場合で、自動プロビジョニングをオフにしたい場合は、W&Bチームに連絡してください。
W&Bコンソールを使用してSSOを使った自動プロビジョニングをオフにします。
https://<org-name>.io/console/settings/
に移動します。<org-name>
をあなたの組織名に置き換えてください。
セキュリティ を選択します。
SSOプロビジョニングを無効にする を選択して、SSOを使った自動プロビジョニングをオフにします。
SSOを使った自動プロビジョニングは、大規模にユーザーを組織に追加するのに役立ちます。なぜなら、組織の管理者が個別のユーザー招待を生成する必要がないからです。
カスタム役割を作成する
Dedicated cloudまたはSelf-managedデプロイメントでカスタム役割を作成または割り当てるには、エンタープライズライセンスが必要です。
組織の管理者は、View-Only または Member 役割に基づいて新しい役割を作成し、追加の許可を追加することで詳細なアクセス制御を実現できます。チーム管理者は、チームメンバーにカスタム役割を割り当てることができます。カスタム役割は組織レベルで作成され、チームレベルで割り当てられます。
カスタム役割を作成するには:
Multi-tenant SaaS Cloud
Dedicated or Self-managed
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウン内の アカウント セクションで 設定 を選択します。
役割 をクリックします。
カスタム役割 セクションで 役割を作成 をクリックします。
役割の名前を入力します。必要に応じて説明を追加します。
カスタム役割のベースとする役割を Viewer または Member から選択します。
許可を追加するには、許可を検索 フィールドをクリックし、追加する1つ以上の許可を選択します。
役割が持つ許可を要約している カスタム役割の許可 セクションを確認します。
役割を作成 をクリックします。
W&Bコンソールを使ってカスタム役割を作成します:
https://<org-name>.io/console/settings/
に移動します。<org-name>
をあなたの組織名に置き換えてください。
カスタム役割 セクションで 役割を作成 をクリックします。
役割の名前を入力します。必要に応じて説明を追加します。
カスタム役割のベースとする役割を Viewer または Member から選択します。
許可を追加するには、許可を検索 フィールドをクリックし、追加する1つ以上の許可を選択します。
役割が持つ許可を要約している カスタム役割の許可 セクションを確認します。
役割を作成 をクリックします。
チーム管理者は、今後、チーム設定 からチームのメンバーにカスタム役割を割り当てることができます。
ドメインキャプチャ
ドメインキャプチャは、従業員があなたの会社の組織に参加する手助けをし、新しいユーザーが会社の管轄外で資産を作成することがないようにします。
ドメインはユニークである必要があります ドメインは一意の識別子です。つまり、他の組織ですでに使用されているドメインは使用できません。
Multi-tenant SaaS Cloud
Dedicated or Self-managed
ドメインキャプチャを使用すると、@example.com
のような会社のメールアドレスを持つ人々を自動的にW&B SaaSクラウド組織に追加できます。これにより、すべての従業員が適切な組織に参加し、新しいユーザーが会社の管轄外で資産を作成することを防ぎます。
この表は、ドメインキャプチャが有効か無効かによる、新しいユーザーと既存のユーザーの振る舞いを要約したものです。
ドメインキャプチャあり
ドメインキャプチャなし
新しいユーザー
確認済みドメインからW&Bに登録したユーザーは自動的に組織のデフォルトチームにメンバーとして追加されます。チーム参加を有効にしている場合、登録時に追加のチームを選択することができます。招待を受け入れて他の組織やチームにも参加することができます。
ユーザーは、集中化された組織があることを知らずにW&Bアカウントを作成することができます。
招待されたユーザー
招待を受け入れたときに招待されたユーザーは自動的にあなたの組織に参加します。招待されたユーザーは組織のデフォルトチームに自動的にメンバーとして追加されません。招待を受けて他の組織やチームにも参加できます。
招待を受け入れたときに招待されたユーザーは自動的にあなたの組織に参加します。招待を受けて他の組織やチームにも参加できます。
既存のユーザー
あなたのドメインからの確認済みメールアドレスを持つ既存のユーザーは、W&Bアプリ内の組織のチームに参加できます。組織に参加する前に既存のユーザーが作成したすべてのデータは残ります。W&Bは既存ユーザーのデータを移行しません。
既存のW&Bユーザーは、複数の組織やチームに分散している可能性があります。
招待されていない新しいユーザーを組織に参加した際にデフォルトチームに自動的に割り当てるには:
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウンから 設定 を選択します。
設定 タブ内で 一般 を選択します。
ドメインキャプチャ 内の ドメインを請求する ボタンを選択します。
デフォルトチーム ドロップダウンから新しいユーザーが自動的に参加するチームを選択します。利用可能なチームがない場合は、チーム設定を更新する必要があります。チームを追加し管理する の指示を参照してください。
メールドメインを請求する ボタンをクリックします。
招待されていない新しいユーザーを自動的にそのチームに割り当てる前に、チームの設定でドメインマッチングを有効にする必要があります。
https://wandb.ai/<team-name>
にあるチームのダッシュボードに移動します。ここで <team-name>
はドメインマッチングを有効にしたいチームの名前です。
チームのダッシュボードの左側のグローバルナビゲーションで チーム設定 を選択します。
プライバシー セクションで、「一致するメールドメインを持つ新しいユーザーに、サインアップ時にこのチームに参加することを推奨する」オプションを切り替えます。
専用または自己管理のデプロイメントタイプを使用してドメインキャプチャを構成する際は、W&Bアカウントチームにご連絡ください。設定が完了すると、会社のメールアドレスでW&Bアカウントを作成したユーザーに対し、専用または自己管理のインスタンスへのアクセスを求めるために管理者に連絡するよう自動的に促されます。
ドメインキャプチャあり
ドメインキャプチャなし
新しいユーザー
確認済みドメインからSaaSクラウド上のW&Bにサインアップしたユーザーは、カスタマイズしたメールアドレスを持つ管理者に連絡するように自動的に促されます。プロダクトのトライアルのためにSaaSクラウド上に新しい組織を作成することもできます。
ユーザーは、会社に集中化された専用インスタンスがあることを知らないまま、W&B SaaSクラウドアカウントを作成することができます。
既存のユーザー
既存のW&Bユーザーは、複数の組織やチームに分散している可能性があります。
既存のW&Bユーザーは、複数の組織やチームに分散している可能性があります。
ユーザーの役割を割り当てまたは更新する
組織内のすべてのメンバーは、W&B Models および Weave のための組織役割とシートを持っています。彼らのシートタイプによって、彼らの請求状況と各製品ラインで取ることのできるアクションが決まります。
組織に招待する際に、ユーザーに組織の役割を初めて割り当てます。後でどのユーザーの役割も変更できます。
組織内のユーザーは、以下のいずれかの役割を持つことができます:
役割
説明
管理者
他のユーザーを組織に追加または削除し、ユーザーの役割を変更し、カスタム役割を管理し、チームを追加することができるインスタンス管理者。管理者が不在の場合に備えて、W&Bは複数の管理者がいることを推奨しています。
メンバー
インスタンス管理者によって招待された組織の通常のユーザー。組織メンバーは、他のユーザーを招待したり、組織内の既存のユーザーを管理したりすることはできません。
ビューアー (エンタープライズのみの機能)
インスタンス管理者によって招待された、組織のビュー専用ユーザー。ビューアーは、組織と彼らがメンバーである基盤となるチームに対して読み取り専用アクセスを持ちます。
カスタムロール (エンタープライズのみの機能)
カスタム役割は、組織の管理者が前述の View-Only または Member 役割を継承し、追加の許可を追加して微細かいアクセス制御を達成するために作成することができます。チーム管理者は、その役割をそれぞれのチーム内のユーザーに割り当てることができます。
ユーザーの役割を変更するには:
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンから ユーザー を選択します。
検索バーにユーザーの名前またはメールアドレスを入力します。
チーム役割 ドロップダウンからユーザー名の横にある役割を選択します。
ユーザーのアクセスを割り当てまたは更新する
組織内のユーザーは、以下のいずれかのモデルシートまたは Weave アクセスタイプを持っています:フル、ビューアー、またはアクセスなし。
シートタイプ
説明
フル
この役割タイプのユーザーは、Models または Weave のデータを書き込み、読み取り、およびエクスポートするための完全な権限を持ちます。
ビューアー
あなたの組織のビュー専用ユーザー。ビューアーは、組織とその基となるチームに対してのみ読み取りアクセスを持ち、Models または Weave に対してビュー専用アクセスを持ちます。
アクセスなし
この役割を持つユーザーは、Models または Weave 製品へのアクセスはありません。
モデルシートタイプと Weave アクセスタイプは組織レベルで定義され、チームに継承されます。ユーザーのシートタイプを変更したい場合は、組織の設定に移動し、次のステップに従ってください:
SaaS ユーザーの場合、https://wandb.ai/account-settings/<organization>/settings
にある組織の設定に移動します。角括弧(<>
)で囲まれた値を組織名に置き換えてください。他の専用または自己管理のデプロイメントの場合は、https://<your-instance>.wandb.io/org/dashboard
に移動します。
ユーザー タブを選択します。
役割 ドロップダウンからユーザーに割り当てたいシートタイプを選択します。
組織の役割とサブスクリプションタイプが、あなたの組織内で利用可能なシートタイプを決定します。
ユーザーを削除する
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウンから ユーザー を選択します。
検索バーにユーザーの名前またはメールアドレスを提供します。
表示されたら、三点リーダーまたは3つの点のアイコン(… )を選択します。
ドロップダウンから メンバーを削除 を選択します。
請求管理者を割り当てる
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウンから ユーザー を選択します。
検索バーにユーザーの名前またはメールアドレスを入力します。
請求管理者 列の下で、請求管理者として割り当てたいユーザーを選択します。
チームを追加し管理する
組織のダッシュボードを使って、組織内でチームを作成し管理します。組織の管理者またはチーム管理者は、以下のことができます:
ユーザーをチームに招待したり、チームからユーザーを削除したりする。
チームメンバーの役割を管理する。
組織に参加した時にユーザーをチームに自動的に追加する。
https://wandb.ai/<team-name>
にあるチームのダッシュボードでチームストレージを管理する。
チームを作成する
組織のダッシュボードを使用してチームを作成します:
https://wandb.ai/home に移動します。
チーム の下の左側のナビゲーションパネルで コラボレーション用のチームを作成 を選択します。
表示されるモーダルで チーム名 フィールドにチームの名前を入力します。
ストレージタイプを選択します。
チームを作成 ボタンを選択します。
チームを作成 ボタンを選択すると、W&Bは https://wandb.ai/<team-name>
の新しいチームページにリダイレクトします。<team-name>
はチーム作成時に入力した名前を使用します。
チームを持ったら、そのチームにユーザーを追加することができます。
チームにユーザーを招待する
組織内のチームにユーザーを招待します。ユーザーがすでにW&Bアカウントを持っている場合は、メールアドレスまたはW&Bユーザー名を使用してチームのダッシュボードからユーザーを招待します。
https://wandb.ai/<team-name>
に移動します。
ダッシュボードの左側のグローバルナビゲーションで チーム設定 を選択します。
ユーザー タブを選択します。
新しいユーザーを招待する を選びます。
表示されるモーダルで、メールまたはユーザー名 フィールドにそのユーザーのメールを提供し、チームを選択する ドロップダウンからそのユーザーに割り当てる役割を選択します。チーム内でユーザーが持つことができる役割について詳しくは、チーム役割 を参照してください。
招待を送信 ボタンを選びます。
デフォルトでは、チームまたはインスタンスの管理者のみがメンバーをチームに招待できます。この動作を変更するには、チーム設定 を参照してください。
メール招待でユーザーを手動で招待することに加えて、新しいユーザーのメールがあなたの組織のドメインと一致する 場合は、自動的に新しいユーザーをチームに追加できます。
新メンバーを登録時にチーム組織と一致させる
新規ユーザーがサインアップ時に組織内のチームを発見できるようにします。新しいユーザーは、あなたの組織の確認済みメールドメインと一致する確認済みのメールドメインを持っている必要があります。確認済みの新規ユーザーは、W&Bアカウントに登録する際に組織に属する確認済みのチームの一覧を見ることができます。
組織の管理者はドメイン請求を有効にする必要があります。ドメインキャプチャを有効にするには、ドメインキャプチャ に記載されている手順を参照してください。
チームメンバーの役割を割り当てまたは更新する
チームメンバーの名前の横にあるアカウントタイプのアイコンを選択します。
ドロップダウンから、そのチームメンバーが持つことを望むアカウントタイプを選択します。
この表は、チームメンバーに割り当てることができる役割を示しています:
役割
定義
管理者
チーム内で他のユーザーを追加し削除したり、ユーザー役割を変更したり、チームの設定を構成できるユーザー。
メンバー
チーム管理者によってメールまたは組織レベルのユーザー名で招待された、チームの通常のユーザー。メンバー ユーザーは、他のユーザーをチームに招待できません。
ビュー専用 (エンタープライズのみの機能)
チーム管理者によってメールまたは組織レベルのユーザー名で招待された、チームのビュー専用ユーザー。ビュー専用ユーザーは、チームとそのコンテンツに対して読み取り専用アクセスしか持たない。
サービス (エンタープライズのみの機能)
サービスワーカーまたはサービスアカウントは、W&Bをあなたのrunオートメーションツールで利用するために役立つAPIキーです。チームのためにサービスアカウントからAPIキーを使用する場合は、環境変数 WANDB_USERNAME
を設定して正しいユーザーにrunを紐付けることを確認してください。
カスタムロール (エンタープライズのみの機能)
カスタム役割は、組織管理者が前述の View-Only または Member 役割を継承し、追加の許可を追加して微細かいアクセス制御を達成するために作成することができます。チーム管理者は、その役割をそれぞれのチーム内のユーザーに割り当てることができます。詳細については、この記事 を参照してください。
専用クラウドまたは自己管理デプロイメントのエンタープライズライセンスのみが、チームメンバーにカスタム役割を割り当てることができます。
チームからユーザーを削除する
チームのダッシュボードを使用してユーザーをチームから削除します。メンバーが作成したrunは、そのメンバーがそのチームにいなくなった場合でもW&Bに保存されます。
https://wandb.ai/<team-name>
に移動します。
左側のナビゲーションバーで チーム設定 を選択します。
ユーザー タブを選択します。
削除したいユーザーの名前の横にマウスをホバーします。表示されたら、三点リーダーまたは3つの点のアイコン(… )を選択します。
ドロップダウンから ユーザーを削除 を選択します。
2.2.2 - プロジェクトのアクセス制御を管理する
プロジェクトの公開範囲スコープとプロジェクトレベルの役割を使用してプロジェクトのアクセスを管理する
W&B プロジェクトの範囲を設定し、誰が W&B の run を表示、編集、提出できるかを制限します。
W&B チーム内の任意のプロジェクトに対するアクセスレベルを設定するために、いくつかのコントロールを組み合わせて使用できます。 公開範囲 は、上位レベルのメカニズムです。これを使用して、どのユーザーグループがプロジェクト内の run を表示または提出できるかを制御します。Team または Restricted の公開範囲を持つプロジェクトでは、プロジェクトレベルの役割 を使用して、各ユーザーのプロジェクト内でのアクセスレベルを制御できます。
プロジェクトのオーナーやチーム管理者、組織の管理者は、プロジェクトの公開範囲を設定または編集できます。
公開範囲
選択できるプロジェクトの公開範囲は4つあります。最も公開されているものから最もプライベートなものの順に、それらは次のとおりです:
範囲
説明
Open
プロジェクトを知っている人は誰でもプロジェクトを表示し、run やレポートを提出できます。
Public
プロジェクトを知っている人は誰でもプロジェクトを表示できます。run やレポートを提出できるのはプロジェクトのチームだけです。
Team
親チームのメンバーのみがプロジェクトを表示でき、run やレポートを提出できます。チーム外の人はプロジェクトにアクセスできません。
Restricted
親チームから招待されたメンバーのみがプロジェクトを表示し、run やレポートを提出できます。
機密性や機密データに関連するワークフローでコラボレーションしたい場合は、プロジェクトの範囲を Restricted に設定します。Restricted プロジェクトをチーム内に作成するとき、チーム内の特定のメンバーを実験、アーティファクト、レポートなどにコラボレーションするために招待または追加することができます。
他のプロジェクト範囲とは異なり、チームの全メンバーが暗黙のうちにリストリクションプロジェクトにアクセスできるわけではありません。同時に、チーム管理者は必要に応じてリストリクションプロジェクトに参加できます。
新規または既存のプロジェクトの公開範囲を設定する
プロジェクトを作成するとき、または後で編集するときに、プロジェクトの公開範囲を設定します。
プロジェクトのオーナーやチーム管理者のみが公開範囲を設定または編集できます。
チーム管理者がチームのプライバシー設定内で Make all future team projects private (public sharing not allowed) を有効にすると、そのチームの Open および Public プロジェクトの公開範囲がオフになります。この場合、チームは Team および Restricted の範囲のみを使用できます。
新しいプロジェクトを作成するときに公開範囲を設定する
SaaS クラウド、専用クラウド、または自己管理インスタンスで W&B 組織に移動します。
左側のサイドバーの My projects セクションで Create a new project ボタンをクリックします。代わりに、チームの Projects タブに移動し、右上のコーナーの Create new project ボタンをクリックします。
親チームを選択し、プロジェクトの名前を入力した後、プロジェクトの公開範囲 ドロップダウンから希望の範囲を選択します。
Restricted の公開範囲を選択した場合、次のステップを完了します。
プロジェクトでコラボレーションするために必要な W&B チームメンバーの名前を 招待チームメンバー フィールドに入力します。
Users タブから、後でリストリクションプロジェクトにメンバーを追加または削除できます。
既存のプロジェクトの公開範囲を編集する
W&B プロジェクトに移動します。
左の列で Overview タブを選択します。
右上のコーナーで Edit Project Details ボタンをクリックします。
Project Visibility ドロップダウンから希望の範囲を選択します。
Restricted の公開範囲を選択した場合、次のステップを完了します。
プロジェクトの Users タブに移動し、特定のユーザーをリストリクションプロジェクトに招待するために ユーザーを追加 ボタンをクリックします。
プロジェクトの公開範囲を Team から Restricted に変更した場合、必要なチームメンバーをプロジェクトに招待しない限り、すべてのチームメンバーがプロジェクトのアクセスを失います。
プロジェクトの公開範囲を Restricted から Team に変更すると、すべてのメンバーがプロジェクトにアクセスできます。
リストリクションプロジェクトからユーザーリストを削除すると、そのプロジェクトへのアクセスを失います。
リストリクション範囲についてのその他の重要な注意事項
チームレベルのサービスアカウントをリストリクションプロジェクトで使用したい場合は、そのアカウントをプロジェクトに特に招待または追加する必要があります。そうでないと、デフォルトではチームレベルのサービスアカウントはリストリクションプロジェクトにアクセスできません。
リストリクションプロジェクトから run を移動することはできませんが、非リストリクションプロジェクトからリストリクションプロジェクトに run を移動することはできます。
プロジェクトの公開範囲をチーム にのみ変換することができ、その際、チームのプライバシー設定 Make all future team projects private (public sharing not allowed) に依存しません。
リストリクションプロジェクトのオーナーが親チームの一員でなくなった場合、チーム管理者はスムーズなプロジェクト運営のためにオーナーを変更する必要があります。
プロジェクトレベルの役割
チーム内の Team または Restricted 範囲のプロジェクトでは、ユーザーに特定の役割を割り当てることができ、その役割はそのユーザーのチームレベルの役割と異なる場合があります。例えば、ユーザーがチームレベルで Member 役割を持っている場合、そのユーザーに View-Only 、Admin 、または利用可能なカスタム役割をそのチーム内の Team あるいは Restricted 範囲のプロジェクトで割り当てることができます。
プロジェクトレベルの役割は、SaaS クラウド、専用クラウド、自己管理インスタンスでプレビュー中です。
ユーザーにプロジェクトレベルの役割を割り当てる
W&B プロジェクトに移動します。
左の列で Overview タブを選択します。
プロジェクトの Users タブに進みます。
関連するユーザーの Project Role フィールドに現在割り当てられている役割をクリックすると、他の利用可能な役割がリストされているドロップダウンが開きます。
ドロップダウンから別の役割を選択します。それは即座に保存されます。
プロジェクトレベル役割をユーザーのチームレベル役割と異なるものに変更すると、プロジェクトレベル役割には*****が含まれ、違いを示します。
プロジェクトレベルの役割についてのその他の重要な注意事項
デフォルトでは、チーム_または_リストリクション のプロジェクトにおける全ユーザーのプロジェクトレベルの役割は、それぞれのチームレベルの役割を継承 します。
チームレベルで View-Only 役割を持つユーザーのプロジェクトレベルの役割を変更することはできません 。
特定のプロジェクト内でのユーザーのプロジェクトレベル役割がチームレベルの役割と同じ である場合、チーム管理者がいつかチームレベルの役割を変更した場合、関連するプロジェクト役割も自動的にチームレベルの役割に追随して変更されます。
特定のプロジェクト内のユーザーのプロジェクトレベル役割をチームレベルの役割と異なるもの に変更した場合、チーム管理者がいつかチームレベルの役割を変更しても、関連するプロジェクトレベルの役割はそのままとなります。
プロジェクトレベルの役割がチームレベルの役割と異なる場合に、リストリクション プロジェクトからユーザーを削除し、その後しばらくしてユーザーをプロジェクトに戻した場合、デフォルトの振る舞いによりそのチームレベルの役割を継承します。必要であれば、プロジェクトレベルの役割を再度チームレベルの役割と異なるものに変更する必要があります。
2.3 - ユーザーとチームの管理を自動化する
SCIM API
SCIM API を使用して、ユーザーやその所属するチームを効率的かつ再現可能な方法で管理します。また、SCIM API を使用してカスタムロールを管理したり、 W&B 組織内のユーザーにロールを割り当てたりすることもできます。ロールエンドポイントは公式の SCIM スキーマの一部ではありません。 W&B はカスタムロールの自動管理をサポートするためにロールエンドポイントを追加しています。
SCIM API は特に以下の場合に役立ちます:
大規模なユーザーのプロビジョニングおよびプロビジョニング解除の管理
SCIMサポートのアイデンティティプロバイダーを使用してユーザーを管理
SCIM API には大きく分けて 3 つのカテゴリがあります - User 、 Group 、および Roles 。
User SCIM API
User SCIM API を使用すると、ユーザーの作成、無効化、詳細の取得、または W&B 組織内の全ユーザーの一覧を表示できます。この API は、組織内のユーザーに事前定義されたロールまたはカスタムロールを割り当てることもサポートしています。
DELETE User
エンドポイントを使用して、W&B 組織内のユーザーを無効化します。無効化されたユーザーはサインインできなくなります。ただし、無効化されたユーザーは引き続き組織のユーザーリストに表示されます。
無効化されたユーザーをユーザーリストから完全に削除するには、 ユーザーを組織から削除 する必要があります。
必要に応じて無効化されたユーザーを再有効化することが可能です。
Group SCIM API
Group SCIM API は、組織内での W&B チームの作成や削除を含めた管理を行うことができます。 PATCH Group
を使用して、既存のチームにユーザーを追加または削除します。
W&B には、 グループ内のユーザーが同じロールを持つ
という概念はありません。 W&B チームはグループに非常に似ており、さまざまな役割を持った多様な個人が関連するプロジェクトで共同作業することができます。チームは異なるユーザーグループで構成されることができます。チーム内の各ユーザーに、チームの管理者、メンバー、閲覧者、またはカスタムロールのいずれかのロールを割り当てます。
グループと W&B チームの類似性のために、 W&B は Group SCIM API エンドポイントを W&B チームにマップしています。
Custom role API
Custom role SCIM API は、組織内でのカスタムロールの作成、一覧表示、更新を含めた管理を行うことができます。
カスタムロールを削除する際は注意してください。
DELETE Role
エンドポイントを使用して W&B 組織内でカスタムロールを削除します。カスタムロールが継承する事前定義ロールは、操作が実行される前にカスタムロールに割り当てられたすべてのユーザーに割り当てられます。
PUT Role
エンドポイントを使用してカスタムロールの継承ロールを更新します。この操作は、カスタムロールの既存の、つまり非継承のカスタム許可には影響しません。
W&B Python SDK API
SCIM API がユーザーとチームの管理を自動化するのと同様に、一部のメソッドを使用して W&B Python SDK API も同様の目的で使用できます。以下のメソッドに注意してください:
メソッド名
目的
create_user(email, admin=False)
ユーザーを組織に追加し、オプションで組織の管理者に設定します。
user(userNameOrEmail)
組織に既に存在するユーザーを返します。
user.teams()
ユーザーのチームを返します。ユーザーオブジェクトは user(userNameOrEmail) メソッドを使用して取得できます。
create_team(teamName, adminUserName)
新しいチームを作成し、オプションで組織レベルのユーザーをチーム管理者に設定します。
team(teamName)
組織に既に存在するチームを返します。
Team.invite(userNameOrEmail, admin=False)
ユーザーをチームに追加します。team(teamName) メソッドを使用してチームオブジェクトを取得できます。
Team.create_service_account(description)
サービスアカウントをチームに追加します。team(teamName) メソッドを使用してチームオブジェクトを取得できます。
Member.delete()
チームからメンバーを削除します。team オブジェクトの members
属性を使用してチーム内のメンバーオブジェクトのリストを取得できます。そして、 team(teamName) メソッドを使用してチームオブジェクトを取得できます。
2.4 - ユーザー、グループ、およびロールを SCIM で管理する
クロスドメイン・アイデンティティ管理システム (SCIM) API は、インスタンスまたは組織の管理者が W&B 組織内のユーザー、グループ、およびカスタムロールを管理できるようにします。SCIM グループは W&B のチームにマップされます。
SCIM API は <host-url>/scim/
でアクセス可能であり、RC7643 プロトコル に見られるフィールドのサブセットを持つ /Users
と /Groups
エンドポイントをサポートしています。さらに、公式の SCIM スキーマの一部ではない /Roles
エンドポイントを含んでいます。W&B は /Roles
エンドポイントを追加して、W&B 組織でのカスタムロールの自動管理をサポートしています。
複数の Enterprise SaaS Cloud 組織の管理者である場合、SCIM API リクエストが送信される組織を設定する必要があります。プロファイル画像をクリックし、User Settings をクリックします。設定名は Default API organization です。これは、Dedicated Cloud 、Self-managed instances 、および SaaS Cloud を含むすべてのホスティングオプションで必要です。SaaS Cloud では、組織の管理者は SCIM API リクエストが正しい組織に行くように、ユーザー設定でデフォルトの組織を設定する必要があります。
選択したホスティングオプションに応じて、このページの例で使用される <host-url>
プレースホルダーの値が決まります。
さらに、例では abc
や def
のようなユーザー ID が使用されています。実際のリクエストとレスポンスでは、ユーザー ID はハッシュ化された値を持っています。
認証
組織またはインスタンスの管理者は、自分の API キーを使用した基本認証を利用して SCIM API にアクセスできます。HTTP リクエストの Authorization
ヘッダーを文字列 Basic
の後にスペースを置き、その後のベース64エンコードされた文字列を username:API-KEY
形式に設定します。つまり、ユーザー名と API キーを :
文字で区切った後、その結果をベース64エンコードします。例えば、demo:p@55w0rd
として認証するには、ヘッダーは Authorization: Basic ZGVtbzpwQDU1dzByZA==
であるべきです。
ユーザーリソース
SCIM ユーザーリソースは W&B のユーザーにマップされます。
ユーザーの取得
{
"active" : true ,
"displayName" : "Dev User 1" ,
"emails" : {
"Value" : "dev-user1@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "abc" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Users/abc"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user1"
}
ユーザーのリスト
{
"Resources" : [
{
"active" : true ,
"displayName" : "Dev User 1" ,
"emails" : {
"Value" : "dev-user1@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "abc" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Users/abc"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user1"
}
],
"itemsPerPage" : 9999 ,
"schemas" : [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"startIndex" : 1 ,
"totalResults" : 1
}
ユーザーの作成
エンドポイント : <host-url>/scim/Users
メソッド : POST
説明 : 新しいユーザーリソースを作成します。
サポートされているフィールド :
フィールド
型
必要
emails
Multi-Valued Array
Yes (必ず primary
email を設定してください)
userName
文字列型
Yes
{
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"emails" : [
{
"primary" : true ,
"value" : "admin-user2@test.com"
}
],
"userName" : "dev-user2"
}
{
"active" : true ,
"displayName" : "Dev User 2" ,
"emails" : {
"Value" : "dev-user2@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "def" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"location" : "Users/def"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user2"
}
ユーザーの削除
ユーザーの無効化
フィールド
型
必要
op
文字列型
操作のタイプ。許可される唯一の値は replace
です。
value
オブジェクト型
オブジェクト {"active": false}
を示し、ユーザーが無効化されるべきことを示します。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"value" : {"active" : false }
}
]
}
レスポンス例 :
この操作はユーザーオブジェクトを返します。
{
"active" : true ,
"displayName" : "Dev User 1" ,
"emails" : {
"Value" : "dev-user1@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "abc" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Users/abc"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user1"
}
ユーザーの再有効化
エンドポイント : <host-url>/scim/Users/{id}
メソッド : PATCH
説明 : ユーザーの一意の ID を提供することにより、Dedicated Cloud または Self-managed インスタンス内で無効化されたユーザーを再有効化します。
サポートされているフィールド :
フィールド
型
必要
op
文字列型
操作のタイプ。許可される唯一の値は replace
です。
value
オブジェクト型
オブジェクト {"active": true}
を示し、ユーザーが再有効化されるべきことを示します。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"value" : {"active" : true }
}
]
}
レスポンス例 :
この操作はユーザーオブジェクトを返します。
{
"active" : true ,
"displayName" : "Dev User 1" ,
"emails" : {
"Value" : "dev-user1@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "abc" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Users/abc"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user1"
}
組織レベルのロールをユーザーに割り当てる
エンドポイント : <host-url>/scim/Users/{id}
メソッド : PATCH
説明 : 組織レベルのロールをユーザーに割り当てます。このロールは、ここで説明されているように admin
、viewer
または member
のいずれかになります (こちらを参照 )。 SaaS Cloud では、ユーザー設定で SCIM API の正しい組織を設定することを確認してください。
サポートされているフィールド :
フィールド
型
必要
op
文字列型
操作のタイプ。許可される唯一の値は replace
です。
path
文字列型
ロール割り当て操作が影響を及ぼすスコープ。許可される唯一の値は organizationRole
です。
value
文字列型
ユーザーに割り当てる予定の定義済みの組織レベルのロール。それは admin
、viewer
または member
のいずれかです。このフィールドは定義済みロールに対して大文字小文字を区別しません。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"path" : "organizationRole" ,
"value" : "admin" // ユーザーの組織スコープのロールを admin に設定
}
]
}
レスポンス例 :
この操作はユーザーオブジェクトを返します。
{
"active" : true ,
"displayName" : "Dev User 1" ,
"emails" : {
"Value" : "dev-user1@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "abc" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Users/abc"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user1" ,
"teamRoles" : [ // ユーザーが所属するすべてのチームでのロールを返します
{
"teamName" : "team1" ,
"roleName" : "admin"
}
],
"organizationRole" : "admin" // 組織スコープでのユーザーのロールを返します
}
チームレベルのロールをユーザーに割り当てる
エンドポイント : <host-url>/scim/Users/{id}
メソッド : PATCH
説明 : チームレベルのロールをユーザーに割り当てます。このロールは、ここで説明されているように admin
、viewer
、member
またはカスタムロールのいずれかになります (こちらを参照 )。 SaaS Cloud では、ユーザー設定で SCIM API の正しい組織を設定することを確認してください。
サポートされているフィールド :
フィールド
型
必要
op
文字列型
操作のタイプ。許可される唯一の値は replace
です。
path
文字列型
ロール割り当て操作が影響を及ぼすスコープ。許可される唯一の値は teamRoles
です。
value
オブジェクト配列型
1つのオブジェクトを持つ配列で、そのオブジェクトは teamName
と roleName
属性を持ちます。teamName
はユーザーがそのロールを持つチームの名前であり、roleName
は admin
、viewer
、member
またはカスタムロールのいずれかです。このフィールドは定義済みロールに対して大文字小文字を区別しませんが、カスタムロールに対しては区別します。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"path" : "teamRoles" ,
"value" : [
{
"roleName" : "admin" , // 定義済みロールのロール名は大文字小文字を区別しませんが、カスタムロールでは区別します
"teamName" : "team1" // チームteam1でのユーザーのロールをadminに設定
}
]
}
]
}
レスポンス例 :
この操作はユーザーオブジェクトを返します。
{
"active" : true ,
"displayName" : "Dev User 1" ,
"emails" : {
"Value" : "dev-user1@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "abc" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Users/abc"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user1" ,
"teamRoles" : [ // ユーザーが所属するすべてのチームでのロールを返します
{
"teamName" : "team1" ,
"roleName" : "admin"
}
],
"organizationRole" : "admin" // 組織スコープでのユーザーのロールを返します
}
グループリソース
SCIM グループリソースは W&B のチームにマップされます。つまり、W&B デプロイメントで SCIM グループを作成すると W&B チームが作成されます。その他のグループエンドポイントにも同様です。
チームの取得
エンドポイント : <host-url>/scim/Groups/{id}
メソッド : GET
説明 : チームの一意の ID を提供してチーム情報を取得します。
リクエスト例 :
{
"displayName" : "wandb-devs" ,
"id" : "ghi" ,
"members" : [
{
"Value" : "abc" ,
"Ref" : "" ,
"Type" : "" ,
"Display" : "dev-user1"
}
],
"meta" : {
"resourceType" : "Group" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Groups/ghi"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:Group"
]
}
チームのリスト
エンドポイント : <host-url>/scim/Groups
メソッド : GET
説明 : チームのリストを取得します。
リクエスト例 :
{
"Resources" : [
{
"displayName" : "wandb-devs" ,
"id" : "ghi" ,
"members" : [
{
"Value" : "abc" ,
"Ref" : "" ,
"Type" : "" ,
"Display" : "dev-user1"
}
],
"meta" : {
"resourceType" : "Group" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Groups/ghi"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:Group"
]
}
],
"itemsPerPage" : 9999 ,
"schemas" : [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"startIndex" : 1 ,
"totalResults" : 1
}
チームの作成
エンドポイント : <host-url>/scim/Groups
メソッド : POST
説明 : 新しいチームリソースを作成します。
サポートされているフィールド :
フィールド
型
必要
displayName
文字列型
Yes
members
Multi-Valued Array
Yes (value
サブフィールドが必要で、ユーザー ID にマップされます)
wandb-support
というチームを作成し、そのメンバーとして dev-user2
を設定します。
{
"schemas" : ["urn:ietf:params:scim:schemas:core:2.0:Group" ],
"displayName" : "wandb-support" ,
"members" : [
{
"value" : "def"
}
]
}
{
"displayName" : "wandb-support" ,
"id" : "jkl" ,
"members" : [
{
"Value" : "def" ,
"Ref" : "" ,
"Type" : "" ,
"Display" : "dev-user2"
}
],
"meta" : {
"resourceType" : "Group" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Groups/jkl"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:Group"
]
}
チームの更新
エンドポイント : <host-url>/scim/Groups/{id}
メソッド : PATCH
説明 : 既存のチームのメンバーシップリストを更新します。
サポートされている操作 : メンバーの追加
、メンバーの削除
リクエスト例 :
wandb-devs
に dev-user2
を追加する
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "add" ,
"path" : "members" ,
"value" : [
{
"value" : "def" ,
}
]
}
]
}
{
"displayName" : "wandb-devs" ,
"id" : "ghi" ,
"members" : [
{
"Value" : "abc" ,
"Ref" : "" ,
"Type" : "" ,
"Display" : "dev-user1"
},
{
"Value" : "def" ,
"Ref" : "" ,
"Type" : "" ,
"Display" : "dev-user2"
}
],
"meta" : {
"resourceType" : "Group" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:01:00Z" ,
"location" : "Groups/ghi"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:Group"
]
}
チームの削除
SCIM API では、チームには追加データがリンクされているため、現在チームの削除はサポートされていません。削除を確認するにはアプリからチームを削除してください。
ロールリソース
SCIM ロールリソースは W&B のカスタムロールにマップされます。前述したように、/Roles
エンドポイントは公式 SCIM スキーマの一部ではありません。W&B は W&B
組織内のカスタムロールの自動管理をサポートするために /Roles
エンドポイントを追加しています。
カスタムロールの取得
エンドポイント: <host-url>/scim/Roles/{id}
メソッド : GET
説明 : ロールの一意の ID を提供し、カスタムロールの情報を取得します。
リクエスト例 :
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // 定義済みロールを示します
"meta" : {
"resourceType" : "Role" ,
"created" : "2023-11-20T23:10:14Z" ,
"lastModified" : "2023-11-20T23:31:23Z" ,
"location" : "Roles/Um9sZTo3"
},
"name" : "Sample custom role" ,
"organizationID" : "T3JnYW5pemF0aW9uOjE0ODQ1OA==" ,
"permissions" : [
{
"name" : "artifact:read" ,
"isInherited" : true // member 定義済みロールから継承された
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // 管理者によって追加されたカスタム権限
}
],
"schemas" : [
""
]
}
カスタムロールの一覧
エンドポイント: <host-url>/scim/Roles
メソッド : GET
説明 : W&B 組織のすべてのカスタムロールの情報を取得します
リクエスト例 :
{
"Resources" : [
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // 定義済みロールからカスタムロールが継承されていることを示します
"meta" : {
"resourceType" : "Role" ,
"created" : "2023-11-20T23:10:14Z" ,
"lastModified" : "2023-11-20T23:31:23Z" ,
"location" : "Roles/Um9sZTo3"
},
"name" : "Sample custom role" ,
"organizationID" : "T3JnYW5pemF0aW9uOjE0ODQ1OA==" ,
"permissions" : [
{
"name" : "artifact:read" ,
"isInherited" : true // member 定義済みロールから継承された
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // 管理者によって追加されたカスタム権限
}
],
"schemas" : [
""
]
},
{
"description" : "Another sample custom role for example" ,
"id" : "Um9sZToxMg==" ,
"inheritedFrom" : "viewer" , // 定義済みロールからカスタムロールが継承されていることを示します
"meta" : {
"resourceType" : "Role" ,
"created" : "2023-11-21T01:07:50Z" ,
"location" : "Roles/Um9sZToxMg=="
},
"name" : "Sample custom role 2" ,
"organizationID" : "T3JnYW5pemF0aW9uOjE0ODQ1OA==" ,
"permissions" : [
{
"name" : "launchagent:read" ,
"isInherited" : true // viewer 定義済みロールから継承された
},
...
...
{
"name" : "run:stop" ,
"isInherited" : false // 管理者によって追加されたカスタム権限
}
],
"schemas" : [
""
]
}
],
"itemsPerPage" : 9999 ,
"schemas" : [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"startIndex" : 1 ,
"totalResults" : 2
}
カスタムロールの作成
エンドポイント : <host-url>/scim/Roles
メソッド : POST
説明 : W&B 組織内で新しいカスタムロールを作成します。
サポートされているフィールド :
フィールド
型
必要
name
文字列型
カスタムロールの名前
description
文字列型
カスタムロールの説明
permissions
オブジェクト配列型
各オブジェクトが name
文字列フィールドを含む許可オブジェクトの配列で、そのフィールドは w&bobject:operation
の形式を持ちます。例えば、W&B Run に対する削除操作の許可オブジェクトは name
を run:delete
として持ちます。
inheritedFrom
文字列型
カスタムロールが継承する定義済みロール。それは member
または viewer
のいずれかになります。
{
"schemas" : ["urn:ietf:params:scim:schemas:core:2.0:Role" ],
"name" : "Sample custom role" ,
"description" : "A sample custom role for example" ,
"permissions" : [
{
"name" : "project:update"
}
],
"inheritedFrom" : "member"
}
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // 定義済みロールを示します
"meta" : {
"resourceType" : "Role" ,
"created" : "2023-11-20T23:10:14Z" ,
"lastModified" : "2023-11-20T23:31:23Z" ,
"location" : "Roles/Um9sZTo3"
},
"name" : "Sample custom role" ,
"organizationID" : "T3JnYW5pemF0aW9uOjE0ODQ1OA==" ,
"permissions" : [
{
"name" : "artifact:read" ,
"isInherited" : true // member 定義済みロールから継承された
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // 管理者によって追加されたカスタム権限
}
],
"schemas" : [
""
]
}
カスタムロールの削除
エンドポイント : <host-url>/scim/Roles/{id}
メソッド : DELETE
説明 : W&B 組織内のカスタムロールを削除します。慎重に使用してください。 カスタムロールから継承される定義済みロールは、操作前にカスタムロールに割り当てられていたすべてのユーザーに再び割り当てられます。
リクエスト例 :
カスタムロールの権限の更新
エンドポイント : <host-url>/scim/Roles/{id}
メソッド : PATCH
説明 : W&B 組織内のカスタムロールにカスタム権限を追加または削除します。
サポートされているフィールド :
フィールド
型
必要
operations
オブジェクト配列型
操作オブジェクトの配列
op
文字列型
操作オブジェクト内の操作のタイプ。それは add
または remove
のいずれかになります。
path
文字列型
操作オブジェクト内の静的フィールド。許可される唯一の値は permissions
です。
value
オブジェクト配列型
各オブジェクトが name
文字列フィールドを含む許可オブジェクトの配列で、そのフィールドは w&bobject:operation
の形式を持ちます。例えば、W&B Run に対する削除操作の許可オブジェクトは name
を run:delete
として持ちます。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "add" , // 操作のタイプを示し、他の可能な値は `remove`
"path" : "permissions" ,
"value" : [
{
"name" : "project:delete"
}
]
}
]
}
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // 定義済みロールを示します
"meta" : {
"resourceType" : "Role" ,
"created" : "2023-11-20T23:10:14Z" ,
"lastModified" : "2023-11-20T23:31:23Z" ,
"location" : "Roles/Um9sZTo3"
},
"name" : "Sample custom role" ,
"organizationID" : "T3JnYW5pemF0aW9uOjE0ODQ1OA==" ,
"permissions" : [
{
"name" : "artifact:read" ,
"isInherited" : true // member 定義済みロールから継承された
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // 更新前に管理者によって追加された既存のカスタム権限
},
{
"name" : "project:delete" ,
"isInherited" : false // 更新の一部として管理者によって追加された新規のカスタム権限
}
],
"schemas" : [
""
]
}
カスタムロールメタデータの更新
エンドポイント : <host-url>/scim/Roles/{id}
メソッド : PUT
説明 : W&B 組織内のカスタムロールの名前、説明、または継承ロールを更新します。この操作は、既存の、つまり非継承のカスタム権限には影響しません。
サポートされているフィールド :
フィールド
型
必要
name
文字列型
カスタムロールの名前
description
文字列型
カスタムロールの説明
inheritedFrom
文字列型
カスタムロールが継承する定義済みロール。それは member
または viewer
のいずれかになります。
{
"schemas" : ["urn:ietf:params:scim:schemas:core:2.0:Role" ],
"name" : "Sample custom role" ,
"description" : "A sample custom role for example but now based on viewer" ,
"inheritedFrom" : "viewer"
}
{
"description" : "A sample custom role for example but now based on viewer" , // リクエストに応じて説明を変更
"id" : "Um9sZTo3" ,
"inheritedFrom" : "viewer" , // リクエストに応じて変更された定義済みロールを示します
"meta" : {
"resourceType" : "Role" ,
"created" : "2023-11-20T23:10:14Z" ,
"lastModified" : "2023-11-20T23:31:23Z" ,
"location" : "Roles/Um9sZTo3"
},
"name" : "Sample custom role" ,
"organizationID" : "T3JnYW5pemF0aW9uOjE0ODQ1OA==" ,
"permissions" : [
{
"name" : "artifact:read" ,
"isInherited" : true // viewer 定義済みロールから継承された
},
... // 更新後に member 定義済みロールにあるが viewer にはない権限は継承されません
{
"name" : "project:update" ,
"isInherited" : false // 管理者によって追加されたカスタム権限
},
{
"name" : "project:delete" ,
"isInherited" : false // 管理者によって追加されたカスタム権限
}
],
"schemas" : [
""
]
}
2.5 - 高度な IAM 設定
基本的な環境変数 に加えて、環境変数を使用して、専用クラウド または自己管理 インスタンスの IAM オプションを設定できます。
お使いのインスタンスにおける IAM のニーズに応じて、以下の環境変数のいずれかを選んでください。
Environment variable
説明
DISABLE_SSO_PROVISIONING
W&B インスタンスでのユーザー自動プロビジョニングを無効にするには、これを true
に設定します。
SESSION_LENGTH
デフォルトのユーザーセッション有効期限を変更したい場合は、この変数を希望する時間数に設定します。例えば、SESSION_LENGTH を 24
に設定すると、セッション有効期限が 24 時間に設定されます。デフォルト値は 720 時間です。
GORILLA_ENABLE_SSO_GROUP_CLAIMS
OIDC ベースの SSO を使用している場合、この変数を true
に設定すると、OIDC グループに基づいて W&B チームメンバーシップが自動化されます。ユーザー OIDC トークンに groups
クレームを追加してください。これは、ユーザーが所属するべき W&B チームの名前をそれぞれのエントリーとして含む文字列配列であるべきです。配列には、ユーザーが所属するすべてのチームを含める必要があります。
GORILLA_LDAP_GROUP_SYNC
LDAP ベースの SSO を使用している場合、これを true
に設定すると、LDAP グループに基づいて W&B チームメンバーシップが自動化されます。
GORILLA_OIDC_CUSTOM_SCOPES
OIDC ベースの SSO を使用している場合、W&B インスタンスがアイデンティティプロバイダーから要求する追加のスコープ を指定できます。W&B は、これらのカスタムスコープによって SSO 機能をいかなる形でも変更しません。
GORILLA_USE_IDENTIFIER_CLAIMS
OIDC ベースの SSO を使用している場合、この変数を true
に設定すると、特定の OIDC クレームを使用してユーザーのユーザー名とフルネームを強制します。設定する場合は、preferred_username
と name
の OIDC クレームで強制されるユーザー名とフルネームを設定してください。ユーザー名には、英数字とアンダースコア、ハイフンの特殊文字のみを含めることができます。
GORILLA_DISABLE_PERSONAL_ENTITY
W&B インスタンスでの個人用ユーザープロジェクトを無効にするには、これを true
に設定します。設定すると、ユーザーは個人用 Entities 内で新しい個人用プロジェクトを作成できなくなり、既存の個人用プロジェクトへの書き込みも無効になります。
GORILLA_DISABLE_ADMIN_TEAM_ACCESS
これを true
に設定すると、組織またはインスタンスの管理者が自分で W&B チームに参加したり、自分を追加したりすることを制限します。これにより、Data & AI の関係者のみがチーム内のプロジェクトにアクセスできるようになります。
W&B は、GORILLA_DISABLE_ADMIN_TEAM_ACCESS
などの設定を有効にする前にあらゆる影響を理解し、注意を払うことを推奨します。ご質問があれば、W&B チームにお問い合わせください。
3 - データセキュリティ
3.1 - 独自の バケット を持ち込む (BYOB)
自分のバケットを持ち込む (BYOB) を使用することで、W&B Artifacts やその他の機密性の高いデータを、自分のクラウドやオンプレミスのインフラストラクチャーに保存することができます。専用クラウド またはSaaS クラウド の場合、バケットに保存したデータは W&B が管理するインフラストラクチャーにコピーされません。
W&B SDK / CLI / UI とあなたのバケットとの通信は、事前署名URL を使用して行われます。
W&B はガベージコレクションプロセスを使用して W&B Artifacts を削除します。詳細はArtifacts の削除 をご覧ください。
バケットを設定する際にサブパスを指定することができ、これにより W&B がバケットのルートフォルダにファイルを保存しないようにできます。これにより、組織のバケットガバナンスポリシーによりよく適合するのに役立つかもしれません。
中央データベースとバケットに保存されるデータ
BYOB 機能を使用すると、データの一部は W&B の中央データベースに保存され、その他のデータは自分のバケットに保存されます。
データベース
ユーザー、チーム、Artifacts、Experiments、および Projects のメタデータ
Reports
実験ログ
システムメトリクス
バケット
実験ファイルとメトリクス
Artifact ファイル
メディアファイル
Run ファイル
設定オプション
ストレージバケットを設定するには、インスタンスレベル またはチームレベル の二つのスコープがあります。
インスタンスレベル: 組織内で関連権限を持つユーザーがインスタンスレベルのストレージバケットに保存されたファイルにアクセスできます。
チームレベル: W&B チームのメンバーは、チームレベルで設定されたバケットに保存されたファイルにアクセスできます。チームレベルのストレージバケットは、機密性の高いデータや厳しいコンプライアンス要件を持つチームに対してより厳格なデータ アクセス制御とデータの分離を提供します。
バケットをインスタンスレベルで設定し、組織内の1つ以上のチームでそれぞれ設定することができます。
たとえば、組織内に Kappa というチームがあるとします。あなたの組織 (およびチーム Kappa) は、デフォルトでインスタンスレベルのストレージバケットを使用します。次に Omega というチームを作成します。チーム Omega を作成する際に、そのチームのためのチームレベルのストレージバケットを設定することができます。チーム Omega によって生成されたファイルはチーム Kappa によってアクセスすることはできません。ただし、チーム Kappa によって作成されたファイルはチーム Omega によってアクセスすることができます。チーム Kappa のデータを分離したい場合は、彼らのためにチームレベルのストレージバケットを設定する必要があります。
チームレベルのストレージバケットは、特に異なる事業部門や部門がインスタンスを共有してインフラストラクチャーや管理資源を効果的に利用するため、
セルフマネージド インスタンスにも同じ恩恵を提供します。これは、別々のプロジェクトチームが別々の顧客向けの AI ワークフローを管理する企業にも適用されます。
利用可能性マトリックス
以下の表は、異なる W&B サーバーデプロイメントタイプでの BYOB の利用可能性を示しています。 X
は、そのデプロイメントタイプで機能が利用可能であることを示します。
W&B サーバーデプロイメントタイプ
インスタンスレベル
チームレベル
追加情報
専用クラウド
X
X
Amazon Web Services、Google Cloud Platform、Microsoft Azure のいずれでもインスタンスとチームレベルの BYOB が利用可能です。チームレベルの BYOB については、クラウドネイティブのストレージバケットに同じクラウドまたは別のクラウド、またはあなたのクラウドやオンプレミスのインフラストラクチャーにホストされた MinIO のような S3 互換の安全なストレージにも接続できます。
SaaS クラウド
該当なし
X
チームレベルの BYOB は Amazon Web Services および Google Cloud Platform のみで利用可能です。W&B は Microsoft Azure のデフォルトで唯一のストレージバケットを完全に管理しています。
セルフマネージド
X
X
インスタンスレベルの BYOB がデフォルトです。なぜなら、インスタンスは完全にあなたによって管理が行われるためです。もしあなたのセルフマネージドインスタンスがクラウドにある場合、チームレベルの BYOB のために同じまたは別のクラウドにクラウドネイティブのストレージバケットに接続できます。また、インスタンスまたはチームレベルの BYOB のいずれかに MinIO のような S3 互換の安全なストレージを使用することもできます。
専用クラウドまたはセルフマネージドインスタンスの場合、インスタンスレベルまたはチームレベルのストレージバケットを一度設定すると、そのスコープのストレージバケットを変更したり再設定したりすることはできません。それにはデータを別のバケットに移行したり、主な製品ストレージの関連する参照をリマップしたりすることができないことも含まれます。W&B では、インスタンスおよびチームレベルのいずれかのスコープのストレージバケットを設定する前に、ストレージバケットのレイアウトを注意深く計画することをお勧めします。質問がある場合は、W&B チームにご連絡ください。
チームレベル BYOB のためのクロスクラウドまたは S3 互換ストレージ
専用クラウド または セルフマネージド インスタンスにおいて、別のクラウドのクラウドネイティブのストレージバケットまたは MinIO のような S3 互換のストレージバケットに接続して、チームレベル BYOB を利用することができます。
クロスクラウドまたは S3 互換のストレージの利用を有効にするには、次のフォーマットのいずれかを使用してストレージバケットを指定し、W&B インスタンス用のGORILLA_SUPPORTED_FILE_STORES
環境変数を設定します。
専用クラウドまたはセルフマネージドインスタンスでチームレベル BYOB のために S3 互換のストレージを設定する
次のフォーマットを使用してパスを指定します:
s3://<accessKey>:<secretAccessKey>@<url_endpoint>/<bucketName>?region=<region>?tls=true
region
パラメータは必須です。ただし、W&B インスタンスが AWS 内にあり、W&B インスタンスノードで設定されているAWS_REGION
が S3 互換ストレージ用に設定されたリージョンと一致している場合を除きます。
専用クラウドまたはセルフマネージドインスタンスでチームレベル BYOB のためにクロスクラウドネイティブストレージを設定する
W&B インスタンスとストレージバケットの場所に特有のフォーマットでパスを指定します:
GCP または Azure にある W&B インスタンスから AWS にあるバケットへ:
s3://<accessKey>:<secretAccessKey>@<s3_regional_url_endpoint>/<bucketName>
GCP または AWS にある W&B インスタンスから Azure にあるバケットへ:
az://:<urlEncodedAccessKey>@<storageAccountName>/<containerName>
AWS または Azure にある W&B インスタンスから GCP にあるバケットへ:
gs://<serviceAccountEmail>:<urlEncodedPrivateKey>@<bucketName>
チームレベル BYOB 用の S3 互換ストレージへの接続は
SaaS クラウド では利用できません。また、
SaaS クラウド の場合、チームレベル BYOB 用の AWS バケットへの接続はクロスクラウドで行われます。これは、そのインスタンスが GCP に存在するためです。そのクロスクラウドの接続は、以前説明した専用クラウドやセルフマネージドインスタンスのようにアクセキーおよび環境変数ベースのメカニズムを使用しません。
詳しくは support@wandb.com までお問い合わせください。
W&B プラットフォームと同じクラウドのクラウドストレージ
ユースケースに基づいて、チームまたはインスタンスレベルにストレージバケットを設定します。ストレージバケットが調達または設定される方法は、それがどのレベルで設定されているかにかかわらず同じです。ただし、Azure のアクセスメカニズムに不一致があります。
W&B は、ストレージバケットをプロビジョニングするために W&B が管理する Terraform モジュールを使用して、必要なアクセスメカニズムと関連する IAM 権限と共に使用することをお勧めします:
KMS キーのプロビジョニング
W&B では、S3 バケット上のデータを暗号化および復号化するために KMS キーをプロビジョニングする必要があります。キーの使用タイプは ENCRYPT_DECRYPT
である必要があります。キーに次のポリシーを割り当てます:
{
"Version" : "2012-10-17" ,
"Statement" : [
{
"Sid" : "Internal" ,
"Effect" : "Allow" ,
"Principal" : { "AWS" : "<Your_Account_Id>" },
"Action" : "kms:*" ,
"Resource" : "<aws_kms_key.key.arn>"
},
{
"Sid" : "External" ,
"Effect" : "Allow" ,
"Principal" : { "AWS" : "<aws_principal_and_role_arn>" },
"Action" : [
"kms:Decrypt" ,
"kms:Describe*" ,
"kms:Encrypt" ,
"kms:ReEncrypt*" ,
"kms:GenerateDataKey*"
],
"Resource" : "<aws_kms_key.key.arn>"
}
]
}
<Your_Account_Id>
および <aws_kms_key.key.arn>
を適宜置き換えてください。
SaaS クラウド または 専用クラウド を使用している場合は、<aws_principal_and_role_arn>
を次の値で置き換えてください:
SaaS クラウド の場合: arn:aws:iam::725579432336:role/WandbIntegration
専用クラウド の場合: arn:aws:iam::830241207209:root
このポリシーは、AWS アカウントに対してキーへの完全なアクセス権を与え、W&B プラットフォームをホスティングする AWS アカウントに必要な権限も割り当てます。KMS キーの ARN を記録してください。
S3 バケットのプロビジョニング
AWS アカウントに S3 バケットをプロビジョニングするために、以下の手順に従ってください:
お好みの名前で S3 バケットを作成します。必要に応じてフォルダーを作成し、サブパスとして設定して W&B のすべてのファイルを保存します。
バケットのバージョニングを有効にします。
前のステップで生成した KMS キーを使用して、サーバー側の暗号化を有効にします。
以下のポリシーで CORS を設定します:
[
{
"AllowedHeaders" : [
"*"
],
"AllowedMethods" : [
"GET" ,
"HEAD" ,
"PUT"
],
"AllowedOrigins" : [
"*"
],
"ExposeHeaders" : [
"ETag"
],
"MaxAgeSeconds" : 3600
}
]
W&B プラットフォームのホスティング先の AWS アカウントに必要な S3 権限を付与します。これにより、AI ワークロードがクラウドインフラストラクチャーやユーザーブラウザーでバケットにアクセスするための事前署名された URL が生成されます。
{
"Version" : "2012-10-17" ,
"Id" : "WandBAccess" ,
"Statement" : [
{
"Sid" : "WAndBAccountAccess" ,
"Effect" : "Allow" ,
"Principal" : { "AWS" : "<aws_principal_and_role_arn>" },
"Action" : [
"s3:GetObject*" ,
"s3:GetEncryptionConfiguration" ,
"s3:ListBucket" ,
"s3:ListBucketMultipartUploads" ,
"s3:ListBucketVersions" ,
"s3:AbortMultipartUpload" ,
"s3:DeleteObject" ,
"s3:PutObject" ,
"s3:GetBucketCORS" ,
"s3:GetBucketLocation" ,
"s3:GetBucketVersioning"
],
"Resource" : [
"arn:aws:s3:::<wandb_bucket>" ,
"arn:aws:s3:::<wandb_bucket>/*"
]
}
]
}
<wandb_bucket>
を適宜置き換え、バケット名を記録してください。もし専用クラウドを使用している場合、インスタンスレベルの BYOB の場合は W&B チームとバケット名を共有してください。どのデプロイメントタイプにおいてもチームレベルの BYOB の場合、チーム作成時にバケットを設定してください 。
SaaS クラウド または 専用クラウド を使用している場合、<aws_principal_and_role_arn>
を次の値で置き換えてください。
SaaS クラウド : arn:aws:iam::725579432336:role/WandbIntegration
専用クラウド : arn:aws:iam::830241207209:root
詳細については、AWS セルフマネージドホスティングガイド をご覧ください。
GCS バケットのプロビジョニング
GCP プロジェクト内で GCS バケットをプロビジョニングするために、以下の手順に従います:
好みの名前で GCS バケットを作成します。必要に応じてフォルダーを作成し、サブパスとして設定して W&B のすべてのファイルを保存します。
ソフト削除を有効にします。
オブジェクトのバージョニングを有効にします。
暗号化タイプを Google-managed
に設定します。
UI では不可能なので、gsutil
を用いて CORS ポリシーを設定します。
cors-policy.json
という名前のファイルをローカルに作成します。
ファイルに以下の CORS ポリシーをコピーして保存します。
[
{
"origin" : ["*" ],
"responseHeader" : ["Content-Type" ],
"exposeHeaders" : ["ETag" ],
"method" : ["GET" , "HEAD" , "PUT" ],
"maxAgeSeconds" : 3600
}
]
<bucket_name>
を正しいバケット名で置き換えて gsutil
を実行します。
gsutil cors set cors-policy.json gs://<bucket_name>
バケットのポリシーを確認します。<bucket_name>
を正しいバケット名で置き換えます。
gsutil cors get gs://<bucket_name>
SaaS クラウド または 専用クラウド を使用している場合、W&B プラットフォームにリンクされた GCP サービスアカウントに Storage Admin
ロールを付与します:
SaaS クラウド の場合、アカウントは: wandb-integration@wandb-production.iam.gserviceaccount.com
専用クラウド の場合、アカウントは: deploy@wandb-production.iam.gserviceaccount.com
バケット名を記録してください。専用クラウドを使用している場合、インスタンスレベルの BYOB ではバケット名を W&B チームと共有してください。どのデプロイメントタイプにおいてもチームレベルの BYOB の場合、チーム作成時にバケットを設定してください 。
Azure Blob Storage のプロビジョニング
インスタンスレベルの BYOB の場合、この Terraform モジュール を使用していない場合は、以下のステップに従って Azure サブスクリプション内で Azure Blob Storage バケットをプロビジョニングします:
ストレージ アカウント アクセス キーを生成し、ストレージ アカウント名と共に記録します。専用クラウドを使用している場合、ストレージ アカウント名とアクセス キーを安全な共有方法で W&B チームと共有します。
チームレベルの BYOB の場合、W&B はTerraform を使用して、必要なアクセスメカニズムと権限と共に Azure Blob Storage バケットをプロビジョニングすることをお勧めします。専用クラウドを使用する場合、インスタンスのための OIDC 発行者 URL を提供します。バケットを設定する際に必要な詳細をメモしてください:
ストレージ アカウント名
ストレージ コンテナ名
マネージドアイデンティティ クライアント ID
Azure テナント ID
W&B での BYOB の設定
W&B チーム作成時にチームレベルでストレージバケットを設定するには:
チーム名 フィールドにチーム名を入力します。
ストレージタイプ オプションとして 外部ストレージ を選択します。
ドロップダウンから 新しいバケット を選択するか、既存のバケットを選択します。
複数の W&B チームが同じクラウドストレージバケットを使用できます。これを有効にするには、ドロップダウンから既存のクラウドストレージバケットを選択してください。
クラウドプロバイダー ドロップダウンからクラウドプロバイダーを選択します。
名前 フィールドにストレージバケットの名前を入力します。Azure で 専用クラウド または セルフマネージド インスタンスを持っている場合は、アカウント名 および コンテナ名 の値を入力してください。
(オプション) バケットのサブパスをオプションの パス フィールドに入力します。そうすることで、W&B がバケットのルートにあるフォルダにファイルを保存しないようにすることができます。
(AWS バケットを使用する場合はオプション) KMSキーARN フィールドに暗号化キーの ARN を入力します。
(Azure バケットを使用する場合はオプション) テナントID および マネージド アイデンティティ クライアント ID の値を入力します。
(SaaS クラウド でオプション) チームの作成時にオプションでチームメンバーを招待します。
チームを作成 ボタンを押します。
バケットにアクセスする際や設定が無効な場合、ページの下部にエラーや警告が表示されます。
専用クラウドまたはセルフマネージドインスタンスのインスタンスレベル BYOB を設定するには、support@wandb.com まで W&B サポートにお問い合わせください。
3.2 - BYOB に事前署名済みの URL を使用してアクセスする
W&B は事前署名付き URL を使用して、AI ワークロードやユーザー ブラウザからの blob ストレージへのアクセスを簡素化します。事前署名付き URL の基本情報については、AWS S3 の事前署名付き URL 、Google Cloud Storage の署名付き URL 、Azure Blob Storage の共有アクセス署名 を参照してください。
必要に応じて、ネットワーク内の AI ワークロードまたはユーザー ブラウザー クライアントが W&B プラットフォームから事前署名付き URL を要求します。その後、W&B プラットフォームは関連する blob ストレージにアクセスして、必要な権限で事前署名付き URL を生成し、クライアントに返します。クライアントは、事前署名付き URL を使用して blob ストレージにアクセスし、オブジェクトのアップロードまたは取得操作を行います。オブジェクトのダウンロードの URL は 1 時間で期限切れになり、巨大なオブジェクトをチャンクでアップロードするのに時間がかかる可能性があるため、オブジェクトのアップロードについては 24 時間有効です。
チームレベルのアクセス制御
各事前署名付き URL は、W&B プラットフォームのチームレベルのアクセス制御 に基づいて特定のバケットに限定されます。ユーザーがセキュア ストレージ コネクタ を使用して blob ストレージ バケットにマッピングされているチームの一員であり、そのユーザーがそのチームにのみ属している場合、彼らの要求に対して生成された事前署名付き URL には、他のチームにマッピングされている blob ストレージ バケットにアクセスする権限がありません。
W&B は、ユーザーを所属すべきチームのみに追加することを推奨します。
ネットワーク制限
W&B は、IAM ポリシーに基づくバケットの制限を使用して、事前署名付き URL を使用して blob ストレージにアクセスできるネットワークを制限することを推奨します。
AWS の場合、VPC または IP アドレスに基づくネットワーク制限 を使用できます。これにより、あなたの AI ワークロードが稼働しているネットワークから、または W&B UI を使用してアーティファクトにアクセスする場合にユーザーマシンにマッピングされるゲートウェイの IP アドレスから、のみ W&B に特化したバケットにアクセスできることが保証されます。
監査ログ
W&B は、blob ストレージ固有の監査ログに加えて、W&B 監査ログ を使用することを推奨します。後者については、AWS S3 のアクセスログ 、Google Cloud Storage の監査ログ 、Azure blob storage の監視 を参照してください。管理者とセキュリティ チームは、W&B 製品でどのユーザーが何をしているかを追跡し、特定のユーザーに対していくつかの操作を制限する必要があると判断した場合に必要な対策を講じるために監査ログを使用できます。
事前署名付き URL は、W&B でサポートされている唯一の blob ストレージ アクセス メカニズムです。W&B は、リスク許容度に応じて、セキュリティ制御の上記リストの一部またはすべてを設定することを推奨します。
3.3 - 専用クラウドのための IP 許可リストを設定する
You can restrict access to your Dedicated Cloud インスタンスを許可された IP アドレスのリストからのみとすることができます。これは、AI ワークロードから W&B API へのアクセスおよびユーザーのブラウザから W&B アプリの UI へのアクセスにも適用されます。Dedicated Cloud インスタンスに対して IP ホワイトリストが設定されると、W&B は他の許可されていない場所からの要求を拒否します。Dedicated Cloud インスタンスの IP ホワイトリスト設定については、W&B チームにお問い合わせください。
IP ホワイトリストは、AWS、GCP、Azure 上の Dedicated Cloud インスタンスで利用可能です。
セキュアなプライベート接続 とともに IP ホワイトリストを使用できます。セキュアなプライベート接続とともに IP ホワイトリストを使用する場合、W&B は AI ワークロードからのすべてのトラフィックおよび可能であればユーザーのブラウザからのトラフィックの大部分にセキュアなプライベート接続を使用し、特権のある場所からのインスタンス管理には IP ホワイトリストを使用することを推奨します。
W&B は、個々の
/32
IP アドレスではなく、企業または事業 egress ゲートウェイに割り当てられた
CIDR ブロック の使用を強く推奨します。個々の IP アドレスの使用は、スケーラブルではなく、クラウドごとに厳しい制限があります。
3.4 - 専用クラウドへのプライベート接続を設定します
クラウドプロバイダーの安全なプライベートネットワークを介して、Dedicated Cloud インスタンスに接続できます。これは、AI ワークロードから W&B API へのアクセス、およびオプションでユーザーのブラウザから W&B アプリ UI へのアクセスにも適用されます。プライベート接続を使用する場合、関連するリクエストとレスポンスはパブリックネットワークやインターネットを経由しません。
安全なプライベート接続は、専用クラウドの高度なセキュリティオプションとして間もなく利用可能になります。
安全なプライベート接続は、AWS、GCP、および Azure 上の専用クラウドインスタンスで利用可能です:
一度有効にすると、W&B はインスタンス用のプライベートエンドポイントサービスを作成し、接続するための関連する DNS URI を提供します。それにより、クラウドアカウント内にプライベートエンドポイントを作成し、関連するトラフィックをプライベートエンドポイントサービスにルーティングできます。プライベートエンドポイントは、クラウド VPC または VNet 内で動作する AI トレーニングワークロードに対して、設定が容易です。ユーザーブラウザから W&B アプリ UI へのトラフィックに対しても同じメカニズムを使用するには、企業ネットワークからクラウドアカウント内のプライベートエンドポイントへの適切な DNS ベースのルーティングを設定する必要があります。
この機能を使用したい場合は、W&B チームにご連絡ください。
IP allowlisting とともに安全なプライベート接続を使用できます。IP allowlisting のために安全なプライベート接続を使用する場合、W&B は可能であれば、IP allowlisting を特権的な場所からのインスタンス管理のために使用しつつ、AI ワークロードからのすべてのトラフィックと、ユーザーブラウザからのトラフィックの大部分に対して安全なプライベート接続を確保することをお勧めします。
3.5 - 専用クラウドでのデータ暗号化
W&B は、クラウドごとの customer-managed encryption key (CMEK) 機能を使用して、各 専用クラウド の W&B 管理データベースとオブジェクトストレージを暗号化するために、W&B 管理のクラウドネイティブキーを使用します。この場合、W&B はクラウドプロバイダの customer
として機能し、W&B プラットフォームをサービスとして提供します。W&B 管理のキーを使用するということは、W&B がクラウドごとにデータを暗号化するために使用するキーを管理するということであり、これにより、すべての顧客に対して非常に安全でセキュアなプラットフォームを提供するという約束を強化します。
W&B は、各顧客インスタンスのデータを暗号化するために unique key
を使用し、専用クラウドテナント間のもう一つの分離のレイヤーを提供します。この機能は AWS、Azure、GCP で利用可能です。
2024 年 8 月より前に W&B がプロビジョニングした GCP と Azure 上の専用クラウドインスタンスは、W&B 管理データベースとオブジェクトストレージを暗号化するためにデフォルトのクラウドプロバイダ管理キーを使用しています。2024 年 8 月以降に W&B が作成した新しいインスタンスのみが、関連する暗号化のために W&B 管理のクラウドネイティブキーを使用しています。
AWS 上の専用クラウドインスタンスは、2024 年 8 月より前から W&B 管理のクラウドネイティブキーを暗号化に使用しています。
W&B は、通常、顧客が自身のクラウドネイティブキーを持ち込んで専用クラウドインスタンス内の W&B 管理データベースとオブジェクトストレージを暗号化することを許可していません。なぜなら、複数のチームや人物が、さまざまな理由でそのクラウドインフラストラクチャーにアクセスできる可能性があるためです。これらのチームや人物の中には、組織のテクノロジースタックにおける重要なコンポーネントとして W&B を理解していないケースがあり、クラウドネイティブキーを完全に削除したり、W&B のアクセスを取り消したりする可能性があります。このような行動は、組織の W&B インスタンス内のすべてのデータを破損させ、回復不可能な状態にする可能性があります。
もし組織が専用クラウドを AI ワークフローで使用するために、W&B 管理データベースとオブジェクトストレージを暗号化するために独自のクラウドネイティブキーを使用する必要がある場合、W&B は例外的にレビューを行うことができます。承認された場合、暗号化に独自のクラウドネイティブキーを使用することは、W&B 専用クラウドの shared responsibility model
に準拠します。専用クラウドインスタンスが稼働中に組織の任意のユーザーがキーを削除したり、W&B のアクセスを取り消したりした場合、W&B はそれに伴うデータの損失や破損に対して責任を負わず、そのデータの回復も行いません。
4 - プライバシー設定を設定する
組織およびチームの管理者は、それぞれのスコープでプライバシー設定を設定することができます。組織スコープで設定されると、組織の管理者はその組織内のすべてのチームに対してその設定を施行します。
W&Bは、組織の管理者が事前にすべてのチーム管理者やユーザーにそのことを伝えた上でプライバシー設定を施行することを推奨します。これは、ワークフローに予期しない変更が生じるのを避けるためです。
チームのプライバシー設定を設定する
チーム管理者は、チームの設定 タブのプライバシー
セクション内でそれぞれのチームのプライバシー設定を行うことができます。各設定は、組織スコープで施行されていない限り、設定可能です。
このチームをすべての非メンバーから隠す
将来のチームプロジェクトをすべて非公開にする(公開共有は許可されません)
すべてのチームメンバーが他のメンバーを招待することを許可する(管理者のみでなく)
プライベートプロジェクトのReportsをチーム外に公開して共有することをオフにする。これにより既存のマジックリンクをオフにします。
組織のメールドメインが一致するユーザーがこのチームに参加することを許可する。
コードの保存をデフォルトで有効にする。
すべてのチームに対するプライバシー設定を施行する
組織の管理者は、アカウントまたは組織ダッシュボードの設定 タブのプライバシー
セクションから、その組織内のすべてのチームに対してプライバシー設定を施行することができます。組織の管理者が設定を施行した場合、チーム管理者はそれぞれのチーム内でその設定を変更することはできません。
チームの公開範囲制限を施行する
このオプションを有効にして、すべてのチームを非メンバーから隠します
将来のプロジェクトに対するプライバシーを施行する
このオプションを有効にして、すべてのチームの将来のプロジェクトを非公開または制限付き にします
招待管理を施行する
このオプションを有効にして、管理者以外のメンバーが任意のチームに招待することを禁止します
レポート共有管理を施行する
このオプションを有効にして、プライベートプロジェクトのReportsの公開共有をオフにし、既存のマジックリンクを無効にします
チームの自己参加制限を施行する
デフォルトのコード保存制限を施行する
このオプションを有効にして、すべてのチームでのコード保存をデフォルトでオフにします
5 - 監視と利用状況
5.1 - ユーザーのアクティビティを監査ログで追跡する
W&B の監査ログを使用して、組織内のユーザー活動を追跡し、企業のガバナンス要件に準拠します。監査ログは JSON フォーマットで利用可能です。監査ログスキーマ を参照してください。
監査ログへのアクセス方法は、W&B プラットフォームのデプロイメントタイプによって異なります:
監査ログを取得した後、Pandas 、Amazon Redshift 、Google BigQuery 、Microsoft Fabric などのツールを使用して分析できます。監査ログの分析ツールによっては JSON をサポートしていないものもあります。分析ツールのドキュメントを参照して、分析前に JSON 形式の監査ログを変換するためのガイドラインと要件をご確認ください。
監査ログスキーマ
この表は、監査ログエントリに現れる可能性のあるすべてのキーをアルファベット順に示しています。アクションと状況によって、特定のログエントリには、可能なフィールドのサブセットのみが含まれる場合があります。
キー
定義
action
イベントのアクション 。
actor_email
アクションを開始したユーザーのメールアドレス(該当する場合)。
actor_ip
アクションを開始したユーザーの IP アドレス。
actor_user_id
アクションを実施したログインユーザーの ID(該当する場合)。
artifact_asset
アクションに関連するアーティファクト ID(該当する場合)。
artifact_digest
アクションに関連するアーティファクトダイジェスト(該当する場合)。
artifact_qualified_name
アクションに関連するアーティファクトの完全名(該当する場合)。
artifact_sequence_asset
アクションに関連するアーティファクトシーケンス ID(該当する場合)。
cli_version
アクションを開始した Python SDK のバージョン(該当する場合)。
entity_asset
アクションに関連するエンティティまたはチーム ID(該当する場合)。
entity_name
アクションに関連するエンティティまたはチーム名(該当する場合)。
project_asset
アクションに関連するプロジェクト(該当する場合)。
project_name
アクションに関連するプロジェクトの名前(該当する場合)。
report_asset
アクションに関連するレポート ID(該当する場合)。
report_name
アクションに関連するレポートの名前(該当する場合)。
response_code
アクションの HTTP レスポンスコード(該当する場合)。
timestamp
イベントの時間を RFC3339 形式 で示します。例えば、2023-01-23T12:34:56Z
は 2023 年 1 月 23 日 12 時 34 分 56 秒 UTC を示します。
user_asset
アクションが影響を与えるユーザーアセット(アクションを実行するユーザーではなく)(該当する場合)。
user_email
アクションが影響を与えるユーザーのメールアドレス(アクションを実行するユーザーのメールアドレスではなく)(該当する場合)。
個人を特定できる情報 (PII)
個人を特定できる情報 (PII) は API エンドポイントオプションを使用することによってのみ利用可能です。
監査ログの取得
W&B インスタンスの監査ログは、Audit Logging API を使用して、組織またはインスタンス管理者が取得できます。そのエンドポイントは audit_logs/
です。
インスタンスに対する正しい API エンドポイントを決定します:
次のステップで、<API-endpoint>
を実際の API エンドポイントで置き換えてください。
基本エンドポイントから完全な API エンドポイントを構築し、必要に応じて URL パラメータを含めます:
anonymize
: true
に設定すると、PII を削除します。デフォルトは false
です。監査ログ取得時の PII を除外 を参照してください。SaaS Cloud ではサポートされていません。
numDays
: today - numdays
から最新のログまで取得されます。デフォルトは 0
で、今日のログのみを返します。SaaS Cloud では過去最大 7 日分の監査ログを取得できます。
startDate
: オプションの日付、YYYY-MM-DD
形式で指定します。 SaaS Cloud でのみサポートされています。
startDate
と numDays
の相互作用:
startDate
と numDays
の両方を設定すると、startDate
から startDate
+ numDays
の範囲でログが返されます。
startDate
を省略して numDays
を含めると、today
から numDays
までの範囲でログが返されます。
startDate
と numDays
のどちらも設定しないと、今日のログのみが返されます。
Web ブラウザーや Postman 、HTTPie 、cURL などのツールを使用して、構築した完全修飾 API エンドポイントに対して HTTP GET
リクエストを実行します。
API レスポンスには、新しい行で区切られた JSON オブジェクトが含まれます。監査ログがインスタンスレベルのバケットに同期される場合と同じように、そのオブジェクトには スキーマ に記載されたフィールドが含まれます。その場合、監査ログはバケット内の /wandb-audit-logs
ディレクトリー内に配置されます。
基本認証を使用する
Audit logs API に アクセスするために基本認証を API キーで使用するには、HTTP リクエストの Authorization
ヘッダーを Basic
という文字列の後にスペースを置き、 その後にフォーマット username:API-KEY
で base-64 エンコードされた文字列を設定します。すなわち、ユーザー名と API キーを :
文字で区切って、その結果を base-64 エンコードします。例えば、demo:p@55w0rd
として認証するには、ヘッダーは Authorization: Basic ZGVtbzpwQDU1dzByZA==
となります。
監査ログ取得時の PII を除外する
Self-managed および Dedicated Cloud では、W&B の組織やインスタンス管理者が監査ログを取得する際に PII を除外できます。SaaS Cloud では、監査ログの関連フィールドを常に API エンドポイントが返します。この設定は変更できません。
PII を除外するには、URL パラメータ anonymize=true
を渡します。例えば、W&B インスタンスの URL が https://mycompany.wandb.io
で、過去 1 週間のユーザー活動の監査ログを取得し、PII を除外したい場合、以下のような API エンドポイントを使用します:
https://mycompany.wandb.io/admin/audit_logs?numDays=7&anonymize=true
.
アクション
この表は、W&B によって記録される可能性のあるアクションをアルファベット順で説明しています。
アクション
定義
artifact:create
アーティファクトが作成されます。
artifact:delete
アーティファクトが削除されます。
artifact:read
アーティファクトが読み取られます。
project:delete
プロジェクトが削除されます。
project:read
プロジェクトが読み取られます。
report:read
レポートが読み取られます。 1
run:delete_many
複数の run が削除されます。
run:delete
run が削除されます。
run:stop
run が停止されます。
run:undelete_many
複数の run がゴミ箱から復元されます。
run:update_many
複数の run が更新されます。
run:update
run が更新されます。
sweep:create_agent
sweep agent が作成されます。
team:create_service_account
チーム用のサービスアカウントが作成されます。
team:create
チームが作成されます。
team:delete
チームが削除されます。
team:invite_user
ユーザーがチームに招待されます。
team:uninvite
ユーザーまたはサービスアカウントがチームから招待取り消されます。
user:create_api_key
ユーザーの API キーが作成されます。1
user:create
ユーザーが作成されます。 1
user:deactivate
ユーザーが無効化されます。1
user:delete_api_key
ユーザーの API キーが削除されます。1
user:initiate_login
ユーザーがログインを開始します。1
user:login
ユーザーがログインします。1
user:logout
ユーザーがログアウトします。1
user:permanently_delete
ユーザーが完全に削除されます。1
user:reactivate
ユーザーが再活性化されます。1
user:read
ユーザーのプロフィールが読み取られます。1
user:update
ユーザーが更新されます。1
1 : SaaS Cloud では、監査ログは次の項目で収集されません:
オープンまたはパブリックプロジェクトの場合。
report:read
のアクション。
特定の組織に関連付けられていない User
のアクション。
5.2 - Prometheus モニタリングを使用する
Prometheus を W&B サーバーと一緒に使用します。Prometheus のインストールは Kubernetes ClusterIP サービス として公開されます。
以下の手順に従って、Prometheus メトリクスエンドポイント (/metrics
) にアクセスします:
Kubernetes CLI ツールキットの kubectl を使用してクラスターに接続します。詳細については、Kubernetes の クラスターへのアクセス ドキュメントを参照してください。
クラスターの内部アドレスを見つけます:
kubectl describe svc prometheus
Kubernetes クラスターで実行中のコンテナ内でシェルセッションを開始し、kubectl exec
を使用して、<internal address>/metrics
エンドポイントにアクセスします。
以下のコマンドをコピーしてターミナルで実行し、<internal address>
を内部アドレスに置き換えます:
kubectl exec <internal address>/metrics
テストポッドが開始され、ネットワーク内の何かにアクセスするためだけに exec することができます:
kubectl run -it testpod --image= alpine bin/ash --restart= Never --rm
そこから、ネットワークへのアクセスを内部に保つか、kubernetes nodeport サービスで自分で公開するかを選択できます。
5.3 - Slack アラートの設定
Integrate W&B Server with Slack .
W&B 専用クラウドデプロイメントでの Slack アラートの設定を示した
ビデオを見る (6 分)。
Slack アプリケーションを作成する
以下の手順に従って Slack アプリケーションを作成してください。
https://api.slack.com/apps にアクセスし、Create an App を選択します。
App Name フィールドにアプリの名前を入力します。
アプリを開発したい Slack ワークスペースを選択します。アラートに使用する予定のワークスペースと同じワークスペースを使用していることを確認してください。
Slack アプリケーションを設定する
左側のサイドバーで OAth & Permissions を選択します。
Scopes セクションで、ボットに incoming_webhook スコープを追加します。スコープは、アプリに開発ワークスペースでのアクションを実行する権限を与えます。
Bot の OAuth スコープについての詳細は、Slack API ドキュメントの「Understanding OAuth scopes for Bots」チュートリアルを参照してください。
W&B インストールを指すようにリダイレクト URL を設定します。ローカルシステム設定で指定されたホスト URL と同じ URL を使用してください。インスタンスへの異なる DNS マッピングを持つ場合は、複数の URL を指定できます。
Save URLs を選択します。
Restrict API Token Usage で、オプションとして W&B インスタンスの IP または IP 範囲を許可リストに指定できます。許可された IP アドレスの制限は、Slack アプリケーションのセキュリティをより強化します。
Slack アプリケーションを W&B に登録する
W&B インスタンスの System Settings または System Console ページに移動します。デプロイメントに応じて異なります。
使用している System ページに応じて、以下のオプションのいずれかを実行します:
Slack client ID と Slack secret を入力し、Save をクリックします。設定の基本情報でアプリケーションのクライアント ID とシークレットを見つけることができます。
W&B アプリケーションで Slack インテグレーションを設定して、すべてが正常に動作していることを確認します。
5.4 - 組織のダッシュボードを表示する
組織の W&B 使用状況を確認する
組織のダッシュボードを使用して、組織の W&B 使用状況の全体像を把握できます。このダッシュボードはタブごとに整理されています。
Users : 各ユーザーの名前、メール、チーム、役割、最後の活動を含む詳細をリストします。
Service accounts : サービスアカウントに関する詳細をリストし、サービスアカウントを作成することができます。
Activity : 各ユーザーの活動に関する詳細をリストします。
Teams : 各チームのユーザー数や追跡時間を含む詳細をリストし、管理者がチームに参加できるようにします。
Billing : 組織の請求内容を要約し、請求レポートを実行およびエクスポートすることができ、ライセンスの期限などの詳細を示します。
Settings : カスタムロールとプライバシーや認証に関連する設定を構成できます。
ユーザーのステータスを確認する
Users タブには、すべてのユーザーと各ユーザーに関するデータが一覧表示されます。Last Active 列は、ユーザーが招待を受け入れたかどうか、およびユーザーの現在のステータスを示します。
Invite pending : 管理者が招待を送信しましたが、ユーザーが招待を受け入れていない状態。
Active : ユーザーが招待を受け入れ、アカウントを作成した状態。
- : ユーザーは以前にアクティブでしたが、過去6カ月間活動していない状態。
Deactivated : 管理者がユーザーのアクセスを取り消した状態。
アクティビティでユーザーのリストを並べ替えるには、Last Active 列の見出しをクリックします。
組織の W&B 利用方法を確認して共有する
Users タブから、組織の W&B 利用方法の詳細を CSV 形式で確認できます。
Invite new user ボタンの横にあるアクション ...
メニューをクリックします。
Export as CSV をクリックします。ダウンロードされた CSV ファイルには、組織の各ユーザーに関する詳細(ユーザー名、メールアドレス、最後のアクティブ時刻、役割など)が記載されています。
ユーザーのアクティビティを確認する
Users タブ内の Last Active 列を使用して、個々のユーザーの Activity summary を取得します。
Last Active でユーザーのリストを並べ替えるには、列名をクリックします。
ユーザーの最後のアクティビティについての詳細を見るには、ユーザーの Last Active フィールドにマウスを重ねます。ツールチップが表示され、ユーザーが追加された日時と、ユーザーがアクティブであった総日数が示されます。
ユーザーが アクティブ であるとは以下の場合を指します:
W&B にログインする。
W&B アプリ内の任意のページを見る。
run をログする。
SDK を使用して実験を追跡する。
W&B サーバーと何らかの方法でやり取りする。
時間経過によるアクティブユーザーの確認
Activity タブのプロットを利用して、時間の経過とともに何人のユーザーがアクティブであったかの総合的なビューを取得できます。
Activity タブをクリックします。
Total active users プロットは、一定期間(デフォルトでは3カ月)におけるアクティブユーザー数を示します。
Users active over time プロットは、一定期間(デフォルトでは6カ月)におけるアクティブユーザー数の変動を示します。ポイントにマウスを重ねると、その日時のユーザー数が表示されます。
プロットの期間を変更するには、ドロップダウンを使用します。次のオプションから選択できます:
過去30日間
過去3カ月
過去6カ月
過去12カ月
すべての時間
6 - SMTP を設定
W&B server では、 インスタンスやチームにユーザーを追加すると、メール招待がトリガーされます。これらのメール招待を送信するために、 W&B はサードパーティのメールサーバーを使用します。場合によっては、企業ネットワークからのトラフィックを厳しく制限するポリシーがあり、その結果としてこれらのメール招待がエンドユーザーに送信されないことがあります。W&B server は、内部 SMTP サーバーを通じてこれらの招待メールを送信するオプションを提供しています。
設定手順は次の通りです:
dockerコンテナまたは kubernetes デプロイメント内で GORILLA_EMAIL_SINK
環境変数を smtp://<user:password>@smtp.host.com:<port>
に設定します
username
と password
はオプションです
認証不要な SMTP サーバーを使用している場合は、環境変数の値を GORILLA_EMAIL_SINK=smtp://smtp.host.com:<port>
として設定します
SMTPで一般的に使用されるポート番号は 587, 465, 25 です。お使いのメールサーバーの種類に応じて異なる場合がありますので注意してください。
SMTP のデフォルト送信元メールアドレスを設定するには、 GORILLA_EMAIL_FROM_ADDRESS
環境変数を サーバー上であなたの望む送信元メールアドレスに設定することができます。初期設定は noreply@wandb.com
になっていますが、これを変更することが可能です。
7 - 環境変数を設定する
W&B サーバー インストールの設定方法
インスタンスレベルの設定を System Settings 管理 UI 経由で設定することに加えて、W&B は環境変数を使用してこれらの値をコードで設定する方法も提供しています。また、IAM の高度な設定 も参照してください。
環境変数リファレンス
環境変数
説明
LICENSE
あなたの wandb/local ライセンス
MYSQL
MySQL 接続文字列
BUCKET
データを保存するための S3 / GCS バケット
BUCKET_QUEUE
オブジェクト作成イベントのための SQS / Google PubSub キュー
NOTIFICATIONS_QUEUE
run イベントを公開するための SQS キュー
AWS_REGION
バケットが存在する AWS リージョン
HOST
インスタンスの FQD、つまり https://my.domain.net
OIDC_ISSUER
Open ID Connect アイデンティティプロバイダーのURL、つまり https://cognito-idp.us-east-1.amazonaws.com/us-east-1_uiIFNdacd
OIDC_CLIENT_ID
あなたのアイデンティティプロバイダーにあるアプリケーションのクライアントID
OIDC_AUTH_METHOD
デフォルトは Implicit で、pkceも可能です。詳細は以下を参照してください。
SLACK_CLIENT_ID
アラートに使用したい Slack アプリケーションのクライアント ID
SLACK_SECRET
アラートに使用したい Slack アプリケーションの秘密キー
LOCAL_RESTORE
インスタンスにアクセスできない場合、一時的にこれをtrueに設定できます。コンテナのログを確認して一時的な資格情報を取得してください。
REDIS
W&B で外部の REDIS インスタンスを設定するために使用できます。
LOGGING_ENABLED
true に設定すると、アクセスログが stdout にストリームされます。また、この変数を設定しなくてもサイドカーコンテナをマウントし、/var/log/gorilla.log
を追跡できます。
GORILLA_ALLOW_USER_TEAM_CREATION
true に設定すると、非管理者ユーザーが新しいチームを作成できるようになります。デフォルトは false です。
GORILLA_DATA_RETENTION_PERIOD
削除された run のデータを何時間保持するか。削除された run データは復元できません。入力値に h
を付けてください。例えば、"24h"
。
ENABLE_REGISTRY_UI
true に設定すると、新しい W&B Registry UI が有効になります。
GORILLA_DATA_RETENTION_PERIOD 環境変数は慎重に使用してください。環境変数が設定されるとすぐにデータは削除されます。また、このフラグを有効にする前に、データベースとストレージバケットの両方をバックアップすることをお勧めします。
高度な信頼性設定
Redis
外部の Redis サーバーを設定することはオプションですが、プロダクションシステムでは推奨されます。Redis はサービスの信頼性を向上させ、特に大規模プロジェクトでのロード時間を短縮するためのキャッシングを可能にします。ElastiCache などの高可用性 (HA) を備えた管理された Redis サービスを使用し、以下の仕様を備えています:
最小 4GB のメモリ、推奨 8GB
Redis バージョン 6.x
転送中の暗号化
認証が有効
W&B で Redis インスタンスを設定するには、http(s)://YOUR-W&B-SERVER-HOST/system-admin
の W&B 設定ページに移動します。「外部 Redis インスタンスを使用する」オプションを有効にし、Redis 接続文字列を次の形式で入力します:
また、コンテナ上や Kubernetes デプロイメントで環境変数 REDIS
を使って Redis を設定することもできます。あるいは、REDIS
を Kubernetes シークレットとして設定することもできます。
このページは、Redis インスタンスがデフォルトのポート 6379
で動作していることを前提としています。異なるポートを設定した場合、認証をセットアップし、さらに Redis インスタンスで TLS を有効にしたい場合、接続文字列の形式は次のようになります: redis://$USER:$PASSWORD@$HOST:$PORT?tls=true
8 - W&B サーバーのリリースプロセス
W&B サーバーのリリース プロセス
Frequency and deployment types
W&B Server のリリースは、専用クラウド と 自己管理 デプロイメントに適用されます。サーバーリリースには 3 種類あります。
リリースの種類
説明
Monthly
月次リリースには、新機能、拡張機能、中程度および軽度のバグ修正が含まれます。
Patch
パッチリリースには、重大および高重要度のバグ修正が含まれます。パッチは必要に応じてまれにリリースされます。
Feature
機能リリースは、新しい製品機能のリリース日に特化しており、時折、通常の月次リリースの前に行われます。
すべてのリリースは、受け入れテストフェーズが完了次第、すぐにすべての 専用クラウド インスタンスにデプロイされます。これにより、管理されているインスタンスが完全に最新の状態に保たれ、関連する顧客が最新の機能と修正を利用できるようになります。自己管理 インスタンスを持つ顧客は、自分のスケジュールで更新プロセス を実行する責任があります。また、最新の Docker イメージ を使用することができます。リリースのサポートと終了時のポリシー を参照してください。
一部の高度な機能は、エンタープライズライセンスでのみ利用可能です。そのため、最新の Docker イメージを取得したとしても、エンタープライズライセンスを持っていない場合、関連する高度な機能を利用することはできません。
一部の新機能はプライベートプレビューで開始されます。これは、設計パートナーまたはアーリーアダプターにのみ利用可能であることを意味します。W&B チームがプライベートプレビュー機能を有効にする必要がありますので、インスタンスで使用する前にこれを行ってください。
Release notes
すべてのリリースのリリースノートは、W&B Server Releases on GitHub で確認できます。Slack を利用している顧客は、自分の W&B Slack チャンネルで自動リリース通知を受け取ることができます。これらの更新を有効にするよう、W&B チームに依頼してください。
Release update and downtime
サーバーリリースは通常、専用クラウド インスタンスや、適切なロールアップデートプロセスを実装した自己管理 デプロイメントの顧客にはダウンタイムを必要としません。
ダウンタイムが発生する可能性があるシナリオは次のとおりです:
新機能や拡張機能により、コンピュート、ストレージ、ネットワークなどの基盤 インフラストラクチャーへの変更が必要な場合。W&B は、専用クラウド の顧客に、関連する事前通知を送信するよう努めています。
特定のバージョンの サポート終了
を回避するため、またはセキュリティパッチによるインフラストラクチャーの変更。緊急の変更の場合、専用クラウド 顧客は事前通知を受け取らない可能性があります。ここでの優先事項は、艦隊を安全かつ完全にサポートされている状態に保つことです。
どちらのケースでも、更新プログラムは例外なくすべての 専用クラウド インスタンスに展開されます。自己管理 インスタンスを持つ顧客は、自分のスケジュールでこれらの更新を管理する責任があります。リリースのサポートと終了時のポリシー を参照してください。
Release support and end of life policy
W&B は、リリース日から 6 か月間すべてのサーバー リリースをサポートしています。専用クラウド インスタンスは自動的に更新されます。自己管理 インスタンスを持つ顧客は、サポートポリシーに従うためにタイムリーにデプロイメントを更新する責任があります。6 か月より古いバージョンにとどまることは、W&B のサポートを大幅に制限します。
W&B は、自己管理 インスタンスを持つ顧客に、少なくとも四半期に一度は最新のリリースでデプロイメントを更新することを強くお勧めします。これにより、最新の機能を利用できるだけでなく、リリース終了に先んじることができます。