W&B Platform
W&B Platform は、Core 、Models 、Weave などの W&B 製品をサポートする、基盤となるインフラストラクチャー、 ツール 、およびガバナンスの足場です。
W&B Platform は、次の3つの異なる デプロイメント オプションで利用できます。
次の責任分担表は、主な違いの概要を示しています。
Multi-tenant Cloud
Dedicated Cloud
Customer-managed
MySQL / DB 管理
W&B が完全にホストおよび管理
W&B が クラウド 上またはお客様が選択したリージョンで完全にホストおよび管理
お客様が完全にホストおよび管理
オブジェクトストレージ (S3/GCS/Blob storage)
オプション1 : W&B が完全にホストオプション2 : お客様は、Secure Storage Connector を使用して、 チーム ごとに独自の バケット を構成できます
オプション1 : W&B が完全にホストオプション2 : お客様は、Secure Storage Connector を使用して、インスタンスまたは チーム ごとに独自の バケット を構成できます
お客様が完全にホストおよび管理
SSO サポート
Auth0 経由で W&B が管理
オプション1 : お客様が管理オプション2 : Auth0 経由で W&B が管理
お客様が完全に管理
W&B サービス (App)
W&B が完全に管理
W&B が完全に管理
お客様が完全に管理
App セキュリティー
W&B が完全に管理
W&B とお客様の共同責任
お客様が完全に管理
メンテナンス (アップグレード、 バックアップ など)
W&B が管理
W&B が管理
お客様が管理
サポート
サポート SLA
サポート SLA
サポート SLA
サポートされている クラウド インフラストラクチャー
GCP
AWS、GCP、Azure
AWS、GCP、Azure、 オンプレミス ベアメタル
デプロイメント オプション
次のセクションでは、各 デプロイメント タイプの概要について説明します。
W&B Multi-tenant Cloud
W&B Multi-tenant Cloud は、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 製品のいずれかを試してみたい場合は、Multi-tenant Cloud を使用することをお勧めします。エンタープライズ向けのセットアップをお探しの場合は、 トライアル に適した デプロイメント タイプをこちら から選択してください。
1 - Deployment options
1.1 - Use W&B Multi-tenant SaaS
W&B Multi-tenant Cloud は、W&B の Google Cloud Platform (GCP) アカウント内の GPC の北米リージョン にデプロイされた、フルマネージドのプラットフォームです。 W&B Multi-tenant Cloud は、GCP の自動スケーリングを利用して、トラフィックの増減に基づいてプラットフォームが適切にスケーリングされるようにします。
データセキュリティ
エンタープライズプラン以外のユーザーの場合、すべての data は共有クラウドストレージにのみ保存され、共有クラウドコンピューティングサービスで処理されます。料金プランによっては、ストレージ制限が適用される場合があります。
エンタープライズプランのユーザーは、セキュアストレージコネクタを使用して、独自の bucket (BYOB) を持ち込む ことができます。team level で、model、datasets などのファイルを保存できます。複数の Teams に対して 1 つの bucket を設定することも、異なる W&B Teams に対して個別の buckets を使用することもできます。team に対してセキュアストレージコネクタを設定しない場合、その data は共有クラウドストレージに保存されます。
Identity and access management (IAM)
エンタープライズプランをご利用の場合、W&B Organization でセキュアな認証と効果的な承認のために、identity and access managements 機能を使用できます。 Multi-tenant Cloud の IAM では、次の機能が利用可能です。
OIDC または SAML による SSO 認証。 Organization の SSO を設定する場合は、W&B team またはサポートにお問い合わせください。
Organization のスコープ内および team 内で、適切な user ロールを設定 します。
W&B project のスコープを定義して、制限付き projects で、誰が W&B runs を表示、編集、送信できるかを制限します。
モニター
Organization 管理者は、アカウントビューの [Billing] タブから、アカウントの使用状況と請求を管理できます。 Multi-tenant Cloud 上の共有クラウドストレージを使用している場合、管理者は organization 内の異なる Teams 間でストレージ使用量を最適化できます。
メンテナンス
W&B Multi-tenant Cloud は、マルチテナントのフルマネージドプラットフォームです。 W&B Multi-tenant Cloud は W&B によって管理されているため、W&B プラットフォームのプロビジョニングとメンテナンスのオーバーヘッドとコストは発生しません。
コンプライアンス
Multi-tenant Cloud のセキュリティコントロールは、定期的 内部および外部で監査されます。 SOC2 レポートおよびその他のセキュリティとコンプライアンスに関するドキュメントをリクエストするには、W&B Security Portal を参照してください。
次のステップ
エンタープライズ機能以外をお探しの場合は、Multi-tenant Cloud に直接アクセス してください。エンタープライズプランを開始するには、このフォーム を送信してください。
1.2 - Dedicated Cloud
専用クラウド (シングルテナントSaaS)
W&B 専用クラウド は、W&B の AWS、GCP、または Azure クラウドアカウントにデプロイされた、シングルテナントで完全に管理されたプラットフォームです。各 専用クラウド インスタンスは、他の W&B 専用クラウド インスタンスから独立したネットワーク、コンピューティング、ストレージを持っています。お客様の W&B 固有の メタデータ と データ は、独立したクラウドストレージに保存され、独立したクラウドコンピューティングサービスを使用して処理されます。
W&B 専用クラウド は、各クラウドプロバイダーの複数のグローバルリージョン で利用可能です。
データセキュリティ
セキュアストレージコネクタ を使用して、インスタンスおよび Team レベル で、お客様自身の バケット (BYOB) を持ち込み、モデル、データセット などのファイル を保存できます。
W&B マルチテナント Cloud と同様に、複数の Team に対して単一の バケット を構成するか、異なる Team に対して別々の バケット を使用できます。Team に対してセキュアストレージコネクタを構成しない場合、その データ はインスタンスレベルの バケット に保存されます。
セキュアストレージコネクタによる BYOB に加えて、IP 許可リスト を利用して、信頼できるネットワークロケーションからのみ 専用クラウド インスタンスへの アクセス を制限できます。
また、クラウドプロバイダーのセキュアな接続ソリューション を使用して、専用クラウド インスタンスにプライベートに接続することもできます。
ID と アクセス 管理 (IAM)
W&B Organization でセキュアな認証と効果的な認可のために、ID と アクセス 管理機能を使用します。専用クラウド インスタンスの IAM では、次の機能が利用可能です。
モニター
監査 ログ を使用して、Team 内の ユーザー アクティビティを追跡し、エンタープライズガバナンス要件に準拠します。また、W&B Organization Dashboard で 専用クラウド インスタンスの Organization の使用状況を表示できます。
メンテナンス
W&B マルチテナント Cloud と同様に、専用クラウド では W&B プラットフォーム のプロビジョニングとメンテナンスのオーバーヘッドとコストは発生しません。
W&B が 専用クラウド での更新をどのように管理するかを理解するには、サーバー リリース プロセス を参照してください。
コンプライアンス
W&B 専用クラウド のセキュリティコントロールは、定期的 に内部および外部で監査されます。製品評価の演習のためにセキュリティおよびコンプライアンスドキュメントをリクエストするには、W&B Security Portal を参照してください。
移行オプション
自己管理インスタンス またはマルチテナント Cloud からの 専用クラウド への移行がサポートされています。
次のステップ
専用クラウド の使用にご興味がある場合は、このフォーム を送信してください。
1.2.1 - Supported Dedicated Cloud regions
AWS、GCP、および Azure は、世界中の複数の場所でクラウドコンピューティングサービスをサポートしています。グローバルリージョンは、データ所在地とコンプライアンス、レイテンシー、コスト効率などに関連する要件を満たすのに役立ちます。W&B は、専用クラウドで利用可能な多くのグローバルリージョンをサポートしています。
ご希望の AWS、GCP、または Azure リージョンがリストにない場合は、W&B Support にお問い合わせください。W&B は、関連するリージョンに専用クラウドに必要なすべてのサービスがあるかどうかを検証し、評価の結果に応じてサポートを優先順位付けできます。
サポートされている AWS リージョン
次の表は、W&B が現在専用クラウドインスタンスでサポートしている AWS リージョン を示しています。
リージョンの場所
リージョン名
米国東部 (オハイオ)
us-east-2
米国東部 (バージニア北部)
us-east-1
米国西部 (北カリフォルニア)
us-west-1
米国西部 (オレゴン)
us-west-2
カナダ (中部)
ca-central-1
ヨーロッパ (フランクフルト)
eu-central-1
ヨーロッパ (アイルランド)
eu-west-1
ヨーロッパ (ロンドン)
eu-west-2
ヨーロッパ (ミラノ)
eu-south-1
ヨーロッパ (ストックホルム)
eu-north-1
アジアパシフィック (ムンバイ)
ap-south-1
アジアパシフィック (シンガポール)
ap-southeast-1
アジアパシフィック (シドニー)
ap-southeast-2
アジアパシフィック (東京)
ap-northeast-1
アジアパシフィック (ソウル)
ap-northeast-2
AWS リージョンの詳細については、AWS ドキュメントの リージョン、アベイラビリティーゾーン、およびローカルゾーン を参照してください。
AWS リージョンを選択する際に考慮すべき要素の概要については、ワークロードのリージョンを選択する際に考慮すべきこと を参照してください。
サポートされている GCP リージョン
次の表は、W&B が現在専用クラウドインスタンスでサポートしている GCP リージョン を示しています。
リージョンの場所
リージョン名
サウスカロライナ
us-east1
バージニア北部
us-east4
アイオワ
us-central1
オレゴン
us-west1
ロサンゼルス
us-west2
ラスベガス
us-west4
トロント
northamerica-northeast2
ベルギー
europe-west1
ロンドン
europe-west2
フランクフルト
europe-west3
オランダ
europe-west4
シドニー
australia-southeast1
東京
asia-northeast1
ソウル
asia-northeast3
GCP リージョンの詳細については、GCP ドキュメントの リージョンとゾーン を参照してください。
サポートされている Azure リージョン
次の表は、W&B が現在専用クラウドインスタンスでサポートしている Azure リージョン を示しています。
リージョンの場所
リージョン名
バージニア
eastus
アイオワ
centralus
ワシントン
westus2
カリフォルニア
westus
カナダ中部
canadacentral
フランス中部
francecentral
オランダ
westeurope
東京、埼玉
japaneast
ソウル
koreacentral
Azure リージョンの詳細については、Azure ドキュメントの Azure geography を参照してください。
1.2.2 - Export data from Dedicated cloud
専用クラウド からのデータのエクスポート
もし、 専用クラウド インスタンスで管理されている全てのデータをエクスポートしたい場合は、W&B SDK API を使用して、runs、metrics、Artifacts などを抽出できます。詳しくは、インポートとエクスポート API を参照してください。以下の表は、主要なエクスポートの ユースケース をまとめたものです。
Secure Storage Connector で 専用クラウド に保存されている Artifacts を管理している場合、W&B SDK API を使用して Artifacts をエクスポートする必要はないかもしれません。
W&B SDK API を使用してすべてのデータをエクスポートすると、多数の runs や Artifacts がある場合に処理が遅くなる可能性があります。W&B では、 専用クラウド インスタンスに負荷がかかりすぎないように、適切なサイズのバッチでエクスポート プロセス を実行することをお勧めします。
1.3 - Self-managed
W&B をプロダクション環境にデプロイする
セルフマネージドクラウドまたはオンプレミスインフラストラクチャーの使用
AWS、GCP、または Azure クラウドアカウント または オンプレミスインフラストラクチャー に W&B Server をデプロイします。
お客様の IT/DevOps/MLOps チームは、お客様のデプロイメントのプロビジョニング、アップグレードの管理、およびセルフマネージドな W&B Server インスタンスの継続的なメンテナンスを担当します。
セルフマネージドクラウドアカウント内への W&B Server のデプロイ
W&B は、W&B Server を AWS、GCP、または Azure クラウドアカウントにデプロイするために、公式の W&B Terraform スクリプトを使用することを推奨します。
AWS , GCP または Azure での W&B Server のセットアップ方法の詳細については、特定のクラウドプロバイダーのドキュメントを参照してください。
オンプレミスインフラストラクチャーへの W&B Server のデプロイ
オンプレミスインフラストラクチャーに W&B Server をセットアップするには、いくつかのインフラストラクチャーコンポーネントを設定する必要があります。これらのコンポーネントには、以下が含まれますが、これらに限定されません。
(強く推奨) Kubernetes cluster
MySQL 8 database cluster
Amazon S3 互換 object storage
Redis cache cluster
オンプレミスインフラストラクチャーへの W&B Server のインストール方法の詳細については、オンプレミスインフラストラクチャーへのインストール を参照してください。W&B は、さまざまなコンポーネントに関する推奨事項を提供し、インストールプロセスを通じてガイダンスを提供できます。
カスタムクラウドプラットフォームへの W&B Server のデプロイ
AWS、GCP、または Azure ではないクラウドプラットフォームに W&B Server をデプロイできます。そのための要件は、オンプレミスインフラストラクチャー にデプロイする場合と同様です。
W&B Server のライセンスの取得
W&B サーバーの設定を完了するには、W&B trial ライセンスが必要です。Deploy Manager を開いて、無料の trial ライセンスを生成してください。
まだ W&B アカウントをお持ちでない場合は、アカウントを作成して無料ライセンスを生成してください。
重要なセキュリティやその他のエンタープライズフレンドリーな機能のサポートを含む W&B Server のエンタープライズライセンスが必要な場合は、このフォームを送信 するか、W&B チームにお問い合わせください。
URL をクリックすると、Get a License for W&B Local フォームにリダイレクトされます。次の情報を提供してください。
Choose Platform ステップで、デプロイメントタイプを選択します。
Basic Information ステップで、ライセンスの所有者を選択するか、新しい組織を追加します。
Get a License ステップの Name of Instance フィールドにインスタンスの名前を入力し、必要に応じて Description フィールドに説明を入力します。
Generate License Key ボタンを選択します。
ページに、デプロイメントの概要と、インスタンスに関連付けられたライセンスが表示されます。
1.3.1 - Reference Architecture
W&B リファレンス アーキテクチャー
このページでは、Weights & Biases のデプロイメントのリファレンスアーキテクチャについて説明し、プラットフォームのプロダクションデプロイメントをサポートするために推奨されるインフラストラクチャとリソースの概要を示します。
Weights & Biases (W&B) に選択したデプロイメント環境に応じて、さまざまなサービスがデプロイメントの回復性を高めるのに役立ちます。
たとえば、主要なクラウドプロバイダーは、データベースの構成、メンテナンス、高可用性、および回復性の複雑さを軽減するのに役立つ、堅牢なマネージドデータベースサービスを提供しています。
このリファレンスアーキテクチャは、一般的なデプロイメントシナリオに対応し、最適なパフォーマンスと信頼性を実現するために、W&B のデプロイメントをクラウドベンダーサービスと統合する方法を示しています。
開始する前に
プロダクション環境でアプリケーションを実行するには、独自の課題があり、W&B も例外ではありません。プロセスの合理化を目指していますが、固有のアーキテクチャと設計上の決定によっては、特定の複雑さが発生する可能性があります。通常、プロダクションデプロイメントの管理には、ハードウェア、オペレーティングシステム、ネットワーク、ストレージ、セキュリティ、W&B プラットフォーム自体、およびその他の依存関係を含む、さまざまなコンポーネントの監視が含まれます。この責任は、環境の初期設定とその継続的なメンテナンスの両方に及びます。
W&B を使用した自己管理アプローチが、チームと特定の要件に適しているかどうかを慎重に検討してください。
プロダクショングレードのアプリケーションを実行および保守する方法をしっかりと理解しておくことは、自己管理の W&B をデプロイする前に重要な前提条件となります。チームが支援を必要とする場合は、当社の Professional Services チームとパートナーが、実装と最適化のサポートを提供します。
W&B を自分で管理する代わりに、W&B を実行するためのマネージドソリューションの詳細については、W&B Multi-tenant Cloud および W&B Dedicated Cloud を参照してください。
インフラストラクチャ
アプリケーション層
アプリケーション層は、ノード障害に対する回復性を持つ、マルチノード Kubernetes クラスターで構成されています。Kubernetes クラスターは、W&B の pod を実行および保守します。
ストレージ層
ストレージ層は、MySQL データベースとオブジェクトストレージで構成されています。MySQL データベースはメタデータを格納し、オブジェクトストレージはモデルやデータセットなどの Artifacts を格納します。
インフラストラクチャ要件
Kubernetes
W&B Server アプリケーションは、複数の pod をデプロイする Kubernetes Operator としてデプロイされます。このため、W&B には次のものを持つ Kubernetes クラスターが必要です。
完全に構成され、機能する Ingress コントローラー。
Persistent Volumes をプロビジョニングする機能。
MySQL
W&B は、メタデータを MySQL データベースに格納します。データベースのパフォーマンスとストレージ要件は、モデルパラメータと関連するメタデータの形状によって異なります。たとえば、トレーニング run を追跡するほどデータベースのサイズが大きくなり、run テーブル、ユーザー Workspace 、および Reports のクエリに基づいてデータベースの負荷が増加します。
自己管理の MySQL データベースをデプロイする場合は、以下を検討してください。
バックアップ 。データベースを別の施設に定期的にバックアップする必要があります。W&B は、少なくとも 1 週間の保持期間で毎日バックアップすることをお勧めします。
パフォーマンス 。サーバーが実行されているディスクは高速である必要があります。W&B は、SSD または高速化された NAS でデータベースを実行することをお勧めします。
監視 。データベースの負荷を監視する必要があります。CPU 使用率がシステムの 40% を超えて 5 分以上維持されている場合は、サーバーのリソースが不足している可能性が高いことを示しています。
可用性 。可用性と耐久性の要件に応じて、プライマリサーバーからリアルタイムですべての更新をストリーミングし、プライマリサーバーがクラッシュまたは破損した場合にフェイルオーバーに使用できる、別のマシン上のホットスタンバイを構成することができます。
オブジェクトストレージ
W&B には、次のいずれかにデプロイされた、事前署名付き URL と CORS をサポートするオブジェクトストレージが必要です。
Amazon S3
Azure Cloud Storage
Google Cloud Storage
Amazon S3 と互換性のあるストレージサービス
バージョン
ソフトウェア
最小バージョン
Kubernetes
v1.29
MySQL
v8.0.0, “General Availability” リリースのみ
ネットワーク
ネットワーク化されたデプロイメントでは、インストール時と実行時の_両方_で、これらのエンドポイントへの出力が必要です。
エアギャップデプロイメントの詳細については、エアギャップインスタンス用の Kubernetes operator を参照してください。
トレーニングインフラストラクチャと、 Experiments のニーズを追跡する各システムには、W&B とオブジェクトストレージへのアクセスが必要です。
DNS
W&B デプロイメントの完全修飾ドメイン名 (FQDN) は、A レコードを使用して、イングレス/ロードバランサーの IP アドレスに解決される必要があります。
SSL/TLS
W&B では、クライアントとサーバー間の安全な通信のために、有効な署名付き SSL/TLS 証明書が必要です。SSL/TLS 終端は、イングレス/ロードバランサーで発生する必要があります。W&B Server アプリケーションは、SSL または TLS 接続を終端しません。
注意: W&B は、自己署名証明書とカスタム CA の使用を推奨していません。
サポートされている CPU アーキテクチャ
W&B は、Intel (x86) CPU アーキテクチャで実行されます。ARM はサポートされていません。
インフラストラクチャのプロビジョニング
Terraform は、プロダクション用に W&B をデプロイする推奨される方法です。Terraform を使用して、必要なリソース、他のリソースへの参照、および依存関係を定義します。W&B は、主要なクラウドプロバイダー向けの Terraform モジュールを提供しています。詳細については、自己管理のクラウドアカウント内で W&B Server をデプロイする を参照してください。
サイジング
デプロイメントを計画する際の開始点として、次の一般的なガイドラインを使用してください。W&B は、新しいデプロイメントのすべてのコンポーネントを注意深く監視し、観察された使用パターンに基づいて調整することをお勧めします。時間の経過とともにプロダクションデプロイメントを監視し続け、最適なパフォーマンスを維持するために必要に応じて調整します。
Models のみ
Kubernetes
環境
CPU
メモリ
ディスク
テスト/開発
2 コア
16 GB
100 GB
プロダクション
8 コア
64 GB
100 GB
数値は Kubernetes ワーカーノードごとの値です。
MySQL
環境
CPU
メモリ
ディスク
テスト/開発
2 コア
16 GB
100 GB
プロダクション
8 コア
64 GB
500 GB
数値は MySQL ノードごとの値です。
Weave のみ
Kubernetes
環境
CPU
メモリ
ディスク
テスト/開発
4 コア
32 GB
100 GB
プロダクション
12 コア
96 GB
100 GB
数値は Kubernetes ワーカーノードごとの値です。
MySQL
環境
CPU
メモリ
ディスク
テスト/開発
2 コア
16 GB
100 GB
プロダクション
8 コア
64 GB
500 GB
数値は MySQL ノードごとの値です。
Models と Weave
Kubernetes
環境
CPU
メモリ
ディスク
テスト/開発
4 コア
32 GB
100 GB
プロダクション
16 コア
128 GB
100 GB
数値は Kubernetes ワーカーノードごとの値です。
MySQL
環境
CPU
メモリ
ディスク
テスト/開発
2 コア
16 GB
100 GB
プロダクション
8 コア
64 GB
500 GB
数値は MySQL ノードごとの値です。
クラウドプロバイダーのインスタンス推奨事項
サービス
クラウド
Kubernetes
MySQL
オブジェクトストレージ
AWS
EKS
RDS Aurora
S3
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.3.2 - Run W&B Server on Kubernetes
Kubernetes Operator を使用して W&B Platform をデプロイする
W&B Kubernetes Operator
W&B Kubernetes Operatorを使用すると、Kubernetes上でのW&B Serverのデプロイ、管理、トラブルシューティング、およびスケーリングを簡素化できます。このOperatorは、W&Bインスタンスのスマートアシスタントとして考えることができます。
W&B Serverのアーキテクチャと設計は、AI開発者向け ツール の機能を拡張し、高パフォーマンス、優れたスケーラビリティ、および容易な管理のための適切なプリミティブを提供するために、継続的に進化しています。この進化は、コンピューティングサービス、関連するストレージ、およびそれらの間の接続に適用されます。デプロイメントタイプ全体での継続的な更新と改善を促進するために、W&B は Kubernetes operator を使用します。
W&B は、この operator を使用して、AWS、GCP、および Azure パブリック クラウド上に Dedicated cloud インスタンスをデプロイおよび管理します。
Kubernetes operator の詳細については、KubernetesドキュメントのOperator pattern を参照してください。
アーキテクチャ移行の理由
従来、W&B アプリケーションは、Kubernetes クラスター内の単一のデプロイメントおよび pod として、または単一の Docker コンテナとしてデプロイされていました。W&B は、データベースと Object Store を外部化することを推奨しており、今後も推奨していきます。データベースと Object Store を外部化すると、アプリケーションの状態が分離されます。
アプリケーションの成長に伴い、モノリシックなコンテナから分散システム(マイクロサービス)に進化する必要性が明らかになりました。この変更により、バックエンドロジックの処理が容易になり、Kubernetes インフラストラクチャの機能がシームレスに組み込まれます。分散システムは、W&B が依存する追加機能に不可欠な新しいサービスのデプロイもサポートします。
2024年以前は、Kubernetes関連の変更を行うには、terraform-kubernetes-wandb Terraformモジュールを手動で更新する必要がありました。Terraformモジュールを更新することで、クラウドプロバイダー間での互換性が確保され、必要なTerraform変数が構成され、バックエンドまたはKubernetesレベルの変更ごとにTerraformが適用されます。
このプロセスは、W&Bサポートが各顧客のTerraformモジュールのアップグレードを支援する必要があったため、スケーラブルではありませんでした。
解決策は、中央のdeploy.wandb.ai サーバーに接続して、特定のリリースチャネルの最新の仕様変更をリクエストし、適用する operator を実装することでした。ライセンスが有効である限り、更新が受信されます。Helm は、W&B operator のデプロイメントメカニズムと、W&B Kubernetesスタックのすべての構成テンプレートを operator が処理する手段の両方として使用されます(Helm-ception)。
仕組み
Operator は、helm またはソースからインストールできます。詳細な手順については、charts/operator を参照してください。
インストールプロセスでは、controller-manager
というデプロイメントが作成され、weightsandbiases.apps.wandb.com
というカスタムリソース 定義(shortName:wandb
)が使用されます。これは単一のspec
を取得し、それをクラスターに適用します。
apiVersion : apiextensions.k8s.io/v1
kind : CustomResourceDefinition
metadata :
name : weightsandbiases.apps.wandb.com
controller-manager
は、カスタムリソースの仕様、リリースチャネル、およびユーザー定義の構成に基づいて、charts/operator-wandb をインストールします。構成仕様の階層により、ユーザー側で最大限の構成の柔軟性が実現し、W&B は新しいイメージ、構成、機能、および Helm の更新を自動的にリリースできます。
構成オプションについては、構成仕様の階層 および構成リファレンス を参照してください。
構成仕様の階層
構成仕様は、高レベルの仕様が低レベルの仕様をオーバーライドする階層モデルに従います。その仕組みは次のとおりです。
リリースチャネルの値 : この基本レベルの構成では、W&B によってデプロイメント用に設定されたリリースチャネルに基づいて、デフォルト値と構成が設定されます。
ユーザー入力値 : ユーザーは、システムコンソールを介して、リリースチャネルの仕様によって提供されるデフォルト設定をオーバーライドできます。
カスタムリソースの値 : ユーザーからの仕様の最上位レベル。ここで指定された値は、ユーザー入力とリリースチャネルの両方の仕様をオーバーライドします。構成オプションの詳細については、構成リファレンス を参照してください。
この階層モデルにより、構成は柔軟で、さまざまなニーズに合わせてカスタマイズでき、アップグレードと変更に対する管理可能で体系的なアプローチを維持できます。
W&B Kubernetes Operatorを使用するための要件
W&B Kubernetes operator で W&B をデプロイするには、次の要件を満たす必要があります。
リファレンスアーキテクチャ を参照してください。さらに、有効な W&B Server ライセンスを取得 してください。
自己管理型インストールを設定および構成する方法の詳細な説明については、こちら のガイドを参照してください。
インストール方法によっては、次の要件を満たす必要がある場合があります。
Kubectl がインストールされ、正しい Kubernetes クラスターコンテキストで構成されている。
Helm がインストールされている。
エアギャップ環境へのインストール
エアギャップ環境に W&B Kubernetes Operator をインストールする方法については、Kubernetes を使用したエアギャップ環境での W&B のデプロイ のチュートリアルを参照してください。
W&B Server アプリケーションのデプロイ
このセクションでは、W&B Kubernetes operator をデプロイするさまざまな方法について説明します。
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 operator を Kubernetes クラスターにデプロイするための Helm Chart を提供します。このアプローチを使用すると、Helm CLI または ArgoCD などの継続的デリバリー ツールで W&B Server をデプロイできます。上記の要件が満たされていることを確認してください。
Helm CLI を使用して W&B Kubernetes Operator をインストールするには、次の手順に従います。
W&B Helm リポジトリを追加します。W&B Helm チャートは、W&B Helm リポジトリで入手できます。次のコマンドを使用してリポジトリを追加します。
helm repo add wandb https://charts.wandb.ai
helm repo update
Kubernetes クラスターに Operator をインストールします。以下をコピーして貼り付けます。
helm upgrade --install operator wandb/operator -n wandb-cr --create-namespace
W&B Server のインストールをトリガーするように W&B operator カスタムリソースを構成します。この構成例を 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 アプリケーションをインストールおよび構成できるように、カスタム構成で Operator を起動します。
kubectl apply -f operator.yaml
デプロイメントが完了するまで待ちます。これには数分かかります。
Web UI を使用してインストールを検証するには、最初 の 管理 ユーザー アカウントを作成し、インストールの検証 に概説されている検証手順に従います。
この方法では、Terraform の Infrastructure-as-Code アプローチを活用して、一貫性と再現性を実現し、特定の要件に合わせてカスタマイズされたデプロイメントが可能です。公式の W&B Helm ベースの Terraform モジュールは、こちら にあります。
次のコードは、開始点として使用でき、本番環境グレードのデプロイメントに必要なすべての構成オプションが含まれています。
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 自体が Helm Terraform モジュールを使用して顧客向けの「Dedicated cloud」インストールをデプロイする方法については、次のリンクを参照してください。
W&B は、AWS、GCP、および Azure 用の一連の Terraform モジュールを提供します。これらのモジュールは、Kubernetes クラスター、ロードバランサー、MySQL データベースなど、インフラストラクチャ全体と W&B Server アプリケーションをデプロイします。W&B Kubernetes Operator は、次のバージョンの公式 W&B クラウド固有の Terraform モジュールですでに事前構築されています。
この統合により、最小限のセットアップでインスタンスに W&B Kubernetes Operator を使用する準備が整い、クラウド環境での W&B Server のデプロイと管理への合理化されたパスが提供されます。
これらのモジュールの使用方法の詳細については、ドキュメントの自己管理型インストールセクションのこのセクション を参照してください。
インストールの検証
インストールを検証するために、W&B はW&B CLI を使用することをお勧めします。verify コマンドは、すべてのコンポーネントと構成を検証するいくつかのテストを実行します。
この手順では、最初の 管理 ユーザー アカウントがブラウザーで作成されていることを前提としています。
インストールを検証するには、次の手順に従います。
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 operator には、管理コンソールが付属しています。これは${HOST_URI}/console
にあります。たとえば、https://wandb.company-name.com/
console などです。
管理コンソールにログインするには、次の2つの方法があります。
ブラウザで W&B アプリケーションを開き、ログインします。${HOST_URI}/
で W&B アプリケーションにログインします。たとえば、https://wandb.company-name.com/
コンソールにアクセスします。右上隅のアイコンをクリックし、次にシステムコンソール をクリックします。管理者権限を持つユーザーのみがシステムコンソール エントリを表示できます。
オプション 1 が機能しない場合にのみ、次の手順を使用してコンソールにアクセスすることをお勧めします。
ブラウザでコンソールアプリケーションを開きます。上記の URL を開き、ログイン画面にリダイレクトします。
インストールによって生成される Kubernetes シークレットからパスワードを取得します。
kubectl get secret wandb-password -o jsonpath= '{.data.password}' | base64 -d
パスワードをコピーします。
コンソールにログインします。コピーしたパスワードを貼り付け、次にログイン をクリックします。
W&B Kubernetes operator の更新
このセクションでは、W&B Kubernetes operator を更新する方法について説明します。
W&B Kubernetes operator を更新しても、W&B サーバーアプリケーションは更新されません。
W&B operator を更新する手順に進む前に、W&B Kubernetes operator を使用しない Helm チャートを使用している場合は、こちら の手順を参照してください。
以下のコードスニペットをコピーしてターミナルに貼り付けます。
まず、helm repo update
でリポジトリを更新します。
次に、helm upgrade
で Helm チャートを更新します。
helm upgrade operator wandb/operator -n wandb-cr --reuse-values
W&B Server アプリケーションの更新
W&B Kubernetes operator を使用する場合は、W&B Server アプリケーションを更新する必要はなくなりました。
operator は、W&B のソフトウェアの新しいバージョンがリリースされると、W&B Server アプリケーションを自動的に更新します。
自己管理型インスタンスの W&B Operator への移行
次のセクションでは、独自の W&B Server インストールを自己管理することから、W&B Operator を使用してこれを行うように移行する方法について説明します。移行プロセスは、W&B Server のインストール方法によって異なります。
W&B Operator は、W&B Server のデフォルトであり、推奨されるインストール方法です。ご不明な点がございましたら、
カスタマーサポート または W&B チームにお問い合わせください。
移行プロセスの詳細については、こちら に進んでください。
ご不明な点がある場合や、サポートが必要な場合は、カスタマーサポート または W&B チームにお問い合わせください。
ご不明な点がある場合や、サポートが必要な場合は、カスタマーサポート または W&B チームにお問い合わせください。
Operator ベースの Helm チャートへの移行
Operator ベースの Helm チャートに移行するには、次の手順に従います。
現在の W&B 構成を取得します。W&B が非 operator ベースのバージョンの Helm チャートでデプロイされた場合は、次のように値をエクスポートします。
W&B が Kubernetes マニフェストでデプロイされた場合は、次のように値をエクスポートします。
kubectl get deployment wandb -o yaml
これで、次のステップに必要なすべての構成値が揃いました。
operator.yaml
というファイルを作成します。構成リファレンス で説明されている形式に従ってください。ステップ 1 の値を使用します。
現在のデプロイメントを 0 pod にスケールします。このステップでは、現在のデプロイメントを停止します。
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 チャートをアンインストールするか、マニフェストで作成されたリソースを削除します。
Operator ベースの Helm チャートに移行するには、次の手順に従います。
Terraform 構成を準備します。Terraform 構成で古いデプロイメントの Terraform コードをこちら で説明されているコードに置き換えます。以前と同じ変数を設定します。tfvars ファイルがある場合は変更しないでください。
Terraform run を実行します。terraform init、plan、および apply を実行します。
インストールを検証します。インストールの検証 の手順に従って、すべてが正常に動作することを確認します。
古いインストールを削除します。古い Helm チャートをアンインストールするか、マニフェストで作成されたリソースを削除します。
W&B Server の構成リファレンス
このセクションでは、W&B Server アプリケーションの構成オプションについて説明します。アプリケーションは、WeightsAndBiases というカスタムリソース定義として構成を受け取ります。一部の構成オプションは以下の構成で公開され、一部は環境変数として設定する必要があります。
ドキュメントには、基本 および詳細 の2つの環境変数リストがあります。Helm Chart を使用して必要な構成オプションが公開されていない場合にのみ、環境変数を使用してください。
本番環境デプロイメント用の W&B Server アプリケーション構成ファイルには、次の内容が必要です。この 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 Ingress と GCS(GCP Object storage)を備えた GCP Kubernetes を使用する構成例です。
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
ホスト
# プロトコルを含む FQDN を指定します
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
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 ServiceAccount
カスタム Kubernetes サービスアカウントを指定して、W&B pod を実行します。
次のスニペットは、指定された名前でデプロイメントの一部としてサービスアカウントを作成します。
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://" または "ldaps://" を含む LDAP サーバーアドレス
host :
# ユーザーの検索に使用する LDAP 検索ベース
baseDN :
# バインドする LDAP ユーザー (匿名バインドを使用しない場合)
bindDN :
# バインドする LDAP パスワードを含むシークレット名とキー (匿名バインドを使用しない場合)
bindPW :
# 電子メールとグループ ID 属性の LDAP 属性名をコンマ区切りの文字列値として指定します。
attributes :
# LDAP グループ許可リスト
groupAllowList :
# LDAP TLS を有効にする
tls : false
TLS あり
LDAP TLS 証明書構成には、証明書コンテンツで事前に作成された構成マップが必要です。
構成マップを作成するには、次のコマンドを使用します。
kubectl create configmap ldap-tls-cert --from-file=certificate.crt
次の例のように、YAML で構成マップを使用します。
global :
ldap :
enabled : true
# "ldap://" または "ldaps://" を含む LDAP サーバーアドレス
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 Server アプリケーションにのみ適用されます。
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-----
CA 証明書は、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
のみです。他の値はエラーです。
たとえば、アプリケーション pod を構成するには、構成にセクション 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
にも適用されます。
W&B Operator の構成リファレンス
このセクションでは、W&B Kubernetes operator(wandb-controller-manager
)の構成オプションについて説明します。operator は、構成を YAML ファイルの形式で受け取ります。
デフォルトでは、W&B Kubernetes operator に構成ファイルは必要ありません。必要な場合は、構成ファイルを作成します。たとえば、カスタム認証局を指定したり、エアギャップ環境にデプロイしたりするために、構成ファイルが必要になる場合があります。
仕様のカスタマイズの完全なリストについては、Helm リポジトリ を参照してください。
カスタム CA
カスタム認証局(customCACerts
)はリストであり、多くの証明書を使用できます。これらの認証局を追加すると、W&B Kubernetes operator(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
個々の pod の目的/役割は何ですか?
wandb-app
: W&B のコア。GraphQL API とフロントエンドアプリケーションが含まれています。プラットフォームの機能のほとんどを強化します。
wandb-console
: 管理コンソール。/console
経由でアクセスします。
wandb-otel
: OpenTelemetry エージェント。Kubernetes レイヤーのリソースからメトリクスとログを収集し、管理コンソールに表示します。
wandb-prometheus
: Prometheus サーバー。さまざまなコンポーネントからメトリクスを取得し、管理コンソールに表示します。
wandb-parquet
: wandb-app
pod とは別のバックエンドマイクロサービス。データベースデータを Parquet 形式でオブジェクトストレージにエクスポートします。
wandb-weave
: UI でクエリテーブルをロードし、さまざまなコアアプリ機能をサポートする別のバックエンドマイクロサービス。
wandb-weave-trace
: LLM ベースのアプリケーションを追跡、実験、評価、デプロイ、および改善するためのフレームワーク。フレームワークは wandb-app
pod 経由でアクセスします。
W&B Operator Console のパスワードを取得する方法
W&B Kubernetes Operator 管理コンソールへのアクセス を参照してください。
Ingress が機能しない場合に W&B Operator Console にアクセスする方法
Kubernetes クラスターに到達できるホストで、次のコマンドを実行します。
kubectl port-forward svc/wandb-console 8082
ブラウザで https://localhost:8082/
console を使用してコンソールにアクセスします。
パスワードの取得方法については、W&B Kubernetes Operator 管理コンソールへのアクセス (オプション 2)を参照してください。
W&B Server のログを表示する方法
アプリケーション pod の名前は wandb-app-xxx です。
kubectl get pods
kubectl logs wandb-XXXXX-XXXXX
Kubernetes Ingress クラスを識別する方法
次のコマンドを実行して、クラスターにインストールされている Ingress クラスを取得できます。
1.3.2.1 - Kubernetes operator for air-gapped instances
Kubernetes Operator で W&B プラットフォーム をデプロイする (エアギャップ)
イントロダクション
このガイドでは、エアギャップされた顧客管理環境に W&B Platform をデプロイするためのステップごとの手順を説明します。
内部リポジトリまたはレジストリを使用して、Helm chartとコンテナイメージをホストします。 Kubernetes クラスターへの適切なアクセス権を持つシェルコンソールですべてのコマンドを実行します。
Kubernetes アプリケーションのデプロイに使用する継続的デリバリー ツールで、同様のコマンドを利用できます。
ステップ 1: 前提条件
開始する前に、ご使用の環境が次の要件を満たしていることを確認してください。
Kubernetes バージョン >= 1.28
Helm バージョン >= 3
必要な W&B イメージを持つ内部コンテナレジストリへのアクセス
W&B Helm chart 用の内部 Helm リポジトリへのアクセス
ステップ 2: 内部コンテナレジストリの準備
デプロイメントに進む前に、次のコンテナイメージが内部コンテナレジストリで利用可能であることを確認する必要があります。
これらのイメージは、W&B コンポーネントを正常にデプロイするために重要です。 W&B は、WSM を使用してコンテナレジストリを準備することを推奨します。
組織がすでに内部コンテナレジストリを使用している場合は、イメージをそこに追加できます。 それ以外の場合は、次のセクションに従って、WSM と呼ばれるものを使用してコンテナリポジトリを準備します。
Operator の要件の追跡、およびイメージのアップグレードの確認とダウンロードは、WSM を使用 するか、組織独自のプロセスを使用することによって、ユーザーが行う必要があります。
WSM のインストール
次のいずれかの方法を使用して WSM をインストールします。
WSM には、機能する Docker インストールが必要です。
Bash
GitHub から Bash スクリプトを直接実行します。
curl -sSL https://raw.githubusercontent.com/wandb/wsm/main/install.sh | bash
スクリプトは、スクリプトを実行したフォルダーにバイナリをダウンロードします。 別のフォルダーに移動するには、次を実行します。
sudo mv wsm /usr/local/bin
GitHub
W&B が管理する GitHub リポジトリ wandb/wsm
(https://github.com/wandb/wsm
)から WSM をダウンロードまたはクローンします。 最新リリースについては、wandb/wsm
の リリースノート を参照してください。
イメージとそのバージョンのリスト
wsm list
を使用して、イメージバージョンの最新リストを取得します。
出力は次のようになります。
:package: Starting the process to list all images required for deployment...
Operator Images:
wandb/controller:1.16.1
W&B Images:
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
Here are the images required to deploy W&B. Ensure these images are available in your internal container registry and update the values.yaml accordingly.
イメージのダウンロード
wsm download
を使用して、最新バージョンのすべてのイメージをダウンロードします。
出力は次のようになります。
Downloading operator helm chart
Downloading 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
Done! Installed 7 packages.
WSM は、各イメージの .tgz
アーカイブを bundle
ディレクトリーにダウンロードします。
ステップ 3: 内部 Helm chart リポジトリの準備
コンテナイメージに加えて、次の Helm chartが内部 Helm Chart リポジトリで利用可能であることも確認する必要があります。 前のステップで紹介した WSM ツールは、Helm chartもダウンロードできます。 または、ここでダウンロードしてください。
operator
chartは、Controller Manager とも呼ばれる W&B Operator をデプロイするために使用されます。 platform
chartは、カスタムリソース定義 (CRD) で構成された値を使用して W&B Platform をデプロイするために使用されます。
ステップ 4: Helm リポジトリの設定
次に、内部リポジトリから W&B Helm chartをプルするように Helm リポジトリを設定します。 次のコマンドを実行して、Helm リポジトリを追加および更新します。
helm repo add local-repo https://charts.yourdomain.com
helm repo update
ステップ 5: Kubernetes operator のインストール
コントローラマネージャとも呼ばれる W&B Kubernetes operator は、W&B platform コンポーネントの管理を担当します。 エアギャップ環境にインストールするには、内部コンテナレジストリを使用するように構成する必要があります。
これを行うには、内部コンテナレジストリを使用するようにデフォルトのイメージ設定をオーバーライドし、キー airgapped: true
を設定して、予想されるデプロイメントタイプを示す必要があります。 次に示すように、values.yaml
ファイルを更新します。
image :
repository : registry.yourdomain.com/library/controller
tag : 1.13.3
airgapped : true
タグを、内部レジストリで使用可能なバージョンに置き換えます。
operator と CRD をインストールします。
helm upgrade --install operator wandb/operator -n wandb --create-namespace -f values.yaml
サポートされている値の詳細については、Kubernetes operator GitHub リポジトリ を参照してください。
ステップ 6: W&B カスタムリソースの設定
W&B Kubernetes operator をインストールしたら、内部 Helm リポジトリとコンテナレジストリを指すようにカスタムリソース (CR) を構成する必要があります。
この設定により、Kubernetes operator は、W&B platform の必要なコンポーネントをデプロイするときに、内部レジストリとリポジトリを使用することが保証されます。
この 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'
# If install: true, Helm installs a MySQL database for the deployment to use. Set to `false` to use your own external MySQL deployment.
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 platform をデプロイするために、Kubernetes Operator は CR の値を使用して、内部リポジトリから operator-wandb
Helm chart を構成します。
すべてのタグ/バージョンを、内部レジストリで使用可能なバージョンに置き換えます。
上記の構成ファイルの作成の詳細については、こちら をご覧ください。
Kubernetes operator と CR が構成されたので、wandb.yaml
構成を適用して W&B platform をデプロイします。
kubectl apply -f wandb.yaml
FAQ
デプロイメントプロセス中に、以下のよくある質問 (FAQ) とトラブルシューティングのヒントを参照してください。
別の ingress クラスがあります。 そのクラスを使用できますか?
はい、values.yaml
で ingress 設定を変更することで、ingress クラスを構成できます。
証明書バンドルに複数の証明書があります。 それは機能しますか?
証明書を values.yaml
の customCACerts
セクションの複数のエントリに分割する必要があります。
Kubernetes operator が無人アップデートを適用するのを防ぐにはどうすればよいですか。 それは可能ですか?
W&B console から自動アップデートをオフにすることができます。 サポートされているバージョンに関する質問については、W&B チームにお問い合わせください。 また、W&B は過去 6 か月以内にリリースされた platform バージョンをサポートしていることに注意してください。 W&B は定期的なアップグレードを実行することをお勧めします。
環境がパブリックリポジトリに接続されていない場合、デプロイメントは機能しますか?
構成で airgapped
を true
に設定すると、Kubernetes operator は内部リソースのみを使用し、パブリックリポジトリへの接続を試みません。
1.3.3 - Install on public cloud
1.3.3.1 - Deploy W&B Platform on AWS
AWS 上で W&B サーバー をホストする。
W&B は、W&B Server AWS Terraform Module を使用して、AWS にプラットフォームをデプロイすることをお勧めします。
開始する前に、W&B は、Terraform で利用可能な リモートバックエンド のいずれかを選択して、State File を保存することをお勧めします。
State File は、すべてのコンポーネントを再作成せずに、アップグレードを展開したり、デプロイメントに変更を加えたりするために必要なリソースです。
Terraform Module は、次の 必須
コンポーネントをデプロイします。
ロードバランサー
AWS Identity & Access Management (IAM)
AWS Key Management System (KMS)
Amazon Aurora MySQL
Amazon VPC
Amazon S3
Amazon Route53
Amazon Certificate Manager (ACM)
Amazon Elastic Load Balancing (ALB)
Amazon Secrets Manager
その他のデプロイメントオプションには、次のオプションコンポーネントを含めることもできます。
Redis 用 Elastic Cache
SQS
前提条件のアクセス許可
Terraform を実行するアカウントは、イントロダクションで説明されているすべてのコンポーネントを作成でき、IAM Policies と IAM Roles を作成し、リソースにロールを割り当てるアクセス許可が必要です。
一般的な手順
このトピックの手順は、このドキュメントで説明されているすべてのデプロイメントオプションに共通です。
開発環境を準備します。
Terraform をインストールします。
W&B は、バージョン管理のために Git リポジトリーを作成することをお勧めします。
terraform.tfvars
ファイルを作成します。
tvfars
ファイルの内容は、インストールタイプに応じてカスタマイズできますが、最小限の推奨設定は以下の例のようになります。
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"
namespace
変数は、Terraform によって作成されたすべてのリソースのプレフィックスとなる文字列であるため、デプロイする前に tvfars
ファイルで変数を定義してください。
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 Official Documentation を参照してください。
オプションですが、強く推奨されるのは、このドキュメントの冒頭で説明した リモートバックエンド構成 を追加することです。
ファイル 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
}
推奨されるデプロイメントオプション
これは、すべての 必須
コンポーネントを作成し、Kubernetes Cluster
に最新バージョンの W&B
をインストールする、最も簡単なデプロイメントオプション構成です。
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 クエリをキャッシュし、実験のメトリクスをロードする際のアプリケーションの応答を高速化します。
キャッシュを有効にするには、推奨されるデプロイメント セクションで説明されているのと同じ 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 は、外部 message broker
を有効にすることで構成されています。これは、W&B にブローカーが埋め込まれているため、オプションです。このオプションは、パフォーマンスの向上をもたらしません。
メッセージブローカーを提供する AWS リソースは SQS
であり、これを有効にするには、推奨されるデプロイメント セクションで説明されているのと同じ 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 は、標準オプションと Deployment - Recommended
にある最小構成とともに組み合わせることができるいくつかのオプションを提供します。
手動構成
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 サーバーを設定します。
http(s)://YOUR-W&B-SERVER-HOST/system-admin
で W&B 設定ページに移動します。
[**外部ファイルストレージバックエンドを使用する ] オプションを有効にします。
次の形式で、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 モジュールを使用して、プレオペレーター 環境から ポストオペレーター 環境にアップグレードするために必要な手順について詳しく説明します。
W&B アーキテクチャでは、Kubernetes
operator パターンへの移行が必要です。アーキテクチャの移行に関する詳細な説明については、
このセクション を参照してください。
移行前後のアーキテクチャ
以前の 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"
...
}
インフラストラクチャのインストールと Kubernetes クラスターへの W&B サーバーのデプロイの両方を管理するため、post-operator.tf
では module "wandb_app"
は不要になります。
このアーキテクチャの移行により、SRE/インフラストラクチャチームによる手動の Terraform 操作を必要とせずに、追加機能 (OpenTelemetry、Prometheus、HPA、Kafka、およびイメージ更新など) を有効にできます。
W&B Pre-Operator の基本インストールを開始するには、post-operator.tf
に .disabled
ファイル拡張子があり、pre-operator.tf
がアクティブであることを確認します (.disabled` 拡張子がない)。これらのファイルは、ここ にあります。
前提条件
移行プロセスを開始する前に、次の前提条件が満たされていることを確認してください。
エグレス : デプロイメントはエアギャップにできません。Release Channel の最新の仕様を取得するには、deploy.wandb.ai へのアクセスが必要です。
AWS 認証情報 : AWS リソースと対話するように構成された適切な AWS 認証情報。
Terraform のインストール : 最新バージョンの Terraform がシステムにインストールされている必要があります。
Route53 ホストゾーン : アプリケーションが提供されるドメインに対応する既存の Route53 ホストゾーン。
Pre-Operator Terraform ファイル : pre-operator.tf
および関連する変数ファイル (例: pre-operator.tfvars
) が正しく設定されていることを確認します。
Pre-Operator の設定
次の Terraform コマンドを実行して、Pre-Operator セットアップの構成を初期化して適用します。
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
構成は、次の 2 つのモジュールを呼び出します。
module "wandb_infra" {
source = "wandb/wandb/aws"
version = "1.16.10"
...
}
このモジュールはインフラストラクチャを起動します。
module "wandb_app" {
source = "wandb/wandb/kubernetes"
version = "1.12.0"
}
このモジュールはアプリケーションをデプロイします。
Post-Operator の設定
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"
次のコマンドを実行して、Post-Operator 構成を初期化して適用します。
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
には、次のように 1 つがあります。
module "wandb_infra" {
source = "wandb/wandb/aws"
version = "4.7.2"
...
}
ポストオペレーター構成の変更点:
必要なプロバイダーの更新 : プロバイダーの互換性を保つために、required_providers.aws.version
を 3.6
から 4.0
に変更します。
DNS とロード バランサーの構成 : Ingress を介して DNS レコードと AWS ロード バランサーの設定を管理するために、enable_dummy_dns
と enable_operator_alb
を統合します。
ライセンスとサイズの構成 : 新しい運用要件に合わせて、license
パラメーターと size
パラメーターを wandb_infra
モジュールに直接転送します。
カスタムドメインの処理 : 必要に応じて、kube-system
名前空間内の外部 DNS ポッドログを確認して DNS の問題をトラブルシューティングするために、custom_domain_filter
を使用します。
Helm プロバイダーの構成 : Helm プロバイダーを有効にして構成し、Kubernetes リソースを効果的に管理します。
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"
}
}
}
この包括的な設定により、オペレーターモデルによって有効になる新しい効率と機能を活用して、Pre-Operator 構成から Post-Operator 構成へのスムーズな移行が保証されます。
1.3.3.2 - Deploy W&B Platform on GCP
GCP 上での W&B サーバー のホスティング。
W&B Server の自己管理を行う場合、GCP 上にプラットフォームをデプロイするために、W&B Server GCP Terraform Module を使用することを推奨します。
モジュールのドキュメントは広範囲にわたり、利用可能なすべてのオプションが記載されています。
開始する前に、Terraform の リモートバックエンド のいずれかを選択して、State File を保存することを推奨します。
State File は、すべてのコンポーネントを再作成せずに、アップグレードを展開したり、デプロイメントに変更を加えたりするために必要なリソースです。
Terraform Module は、以下の必須コンポーネントをデプロイします。
VPC
Cloud SQL for MySQL
Cloud Storage Bucket
Google Kubernetes Engine
KMS Crypto Key
Load Balancer
その他のデプロイメントオプションには、以下のオプションコンポーネントを含めることもできます。
Redis 用のメモリーストア
Pub/Sub メッセージシステム
事前requisite 権限
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
の組み合わせで、Weights & Biases が設定される FQDN が形成されます。上記の例では、Weights & Biases の 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 = "Weights & Biases UI にアクセスするためのドメイン名"
}
variable "subdomain" {
type = string
description = "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
}
# Spin up all required services
module "wandb" {
source = "wandb/wandb/google"
version = "~> 5.0"
namespace = var.namespace
license = var.license
domain_name = var.domain_name
subdomain = var.subdomain
}
# You'll want to update your DNS with the provisioned IP address
output "url" {
value = module.wandb.url
}
output "address" {
value = module.wandb.address
}
output "bucket_name" {
value = module.wandb.bucket_name
}
W&B をデプロイします。
W&B をデプロイするには、次のコマンドを実行します。
terraform init
terraform apply -var-file=terraform.tfvars
REDIS キャッシュを使用したデプロイメント
別のデプロイメントオプションでは、Redis
を使用して SQL クエリをキャッシュし、実験のメトリクスをロードする際のアプリケーションの応答を高速化します。
キャッシュを有効にするには、推奨される デプロイメントオプションのセクション で指定されている同じ 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 = ["*"]
#Enable Redis
create_redis = true
}
[...]
外部キューを使用したデプロイメント
デプロイメントオプション 3 は、外部 message broker
を有効にすることです。W&B にはブローカーが組み込まれているため、これはオプションです。このオプションは、パフォーマンスの向上をもたらしません。
メッセージブローカーを提供する GCP リソースは Pub/Sub
であり、これを有効にするには、推奨される デプロイメントオプションのセクション で指定されている同じ 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 = ["*"]
#Create and use Pub/Sub
use_internal_queue = false
}
[...]
その他のデプロイメントオプション
3 つのデプロイメントオプションすべてを組み合わせて、すべての構成を同じファイルに追加できます。
Terraform Module は、標準オプションと Deployment - Recommended
にある最小限の構成とともに組み合わせることができるいくつかのオプションを提供します。
手動構成
GCP Storage バケットを W&B のファイルストレージバックエンドとして使用するには、以下を作成する必要があります。
PubSub トピックとサブスクリプションを作成する
PubSub トピックとサブスクリプションを作成するには、以下の手順に従ってください。
GCP Console 内の Pub/Sub サービスに移動します。
[トピックを作成 ] を選択し、トピックの名前を指定します。
ページの下部で、[サブスクリプションを作成 ] を選択します。[配信タイプ ] が [プル ] に設定されていることを確認します。
[作成 ] をクリックします。
インスタンスを実行しているサービスアカウントまたはアカウントに、このサブスクリプションに対する pubsub.admin
ロールがあることを確認してください。詳細については、https://cloud.google.com/pubsub/docs/access-control#console を参照してください。
ストレージバケットを作成する
[Cloud Storage バケット ] ページに移動します。
[バケットを作成 ] を選択し、バケットの名前を指定します。[標準 ] ストレージクラス を選択してください。
インスタンスを実行しているサービスアカウントまたはアカウントに、以下の両方があることを確認してください。
前の手順で作成したバケットへのアクセス
このバケットに対する storage.objectAdmin
ロール。詳細については、https://cloud.google.com/storage/docs/access-control/using-iam-permissions#bucket-add を参照してください。
インスタンスが署名付きファイル URL を作成するには、GCP で iam.serviceAccounts.signBlob
権限も必要です。インスタンスを実行しているサービスアカウントまたは IAM メンバーに Service Account Token Creator
ロールを追加して、権限を有効にします。
CORS アクセスを有効にします。これはコマンドラインでのみ実行できます。まず、次の CORS 構成で JSON ファイルを作成します。
cors:
- maxAgeSeconds: 3600
method:
- GET
- PUT
origin:
- '<YOUR_W&B_SERVER_HOST>'
responseHeader:
- Content-Type
オリジンのスキーム、ホスト、ポートの値が正確に一致する必要があることに注意してください。
gcloud
がインストールされ、正しい GCP プロジェクトにログインしていることを確認します。
次に、以下を実行します。
gcloud storage buckets update gs://<BUCKET_NAME> --cors-file= <CORS_CONFIG_FILE>
PubSub 通知を作成する
ストレージバケットから Pub/Sub トピックへの通知ストリームを作成するには、コマンドラインで以下の手順に従ってください。
通知ストリームを作成するには、CLI を使用する必要があります。gcloud
がインストールされていることを確認してください。
GCP プロジェクトにログインします。
ターミナルで以下を実行します。
gcloud pubsub topics list # list names of topics for reference
gcloud storage ls # list names of buckets for reference
# create bucket notification
gcloud storage buckets notifications create gs://<BUCKET_NAME> --topic= <TOPIC_NAME>
詳細については、Cloud Storage の Web サイトをご覧ください。
W&B サーバーを設定する
最後に、http(s)://YOUR-W&B-SERVER-HOST/console/settings/system
で W&B の [システム接続] ページに移動します。
プロバイダー 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
を使用することもできます。
構成を更新したら、デプロイメントオプションのセクション で説明されている手順を完了します。
1.3.3.3 - Deploy W&B Platform on Azure
Azure 上での W&B サーバー のホスティング
W&B Server の自己管理を選択した場合、Azure にプラットフォームをデプロイするには、W&B Server Azure Terraform Module を使用することをお勧めします。
このモジュールのドキュメントは広範囲にわたり、利用可能なすべてのオプションが記載されています。このドキュメントでは、いくつかのデプロイメントオプションについて説明します。
開始する前に、Terraform で利用可能な remote backends のいずれかを選択して、State File を保存することをお勧めします。
State File は、すべてのコンポーネントを再作成せずに、アップグレードを展開したり、デプロイメントに変更を加えたりするために必要なリソースです。
Terraform Module は、次の mandatory
コンポーネントをデプロイします。
Azure Resource Group
Azure Virtual Network (VPC)
Azure MySQL Fliexible Server
Azure Storage Account & Blob Storage
Azure Kubernetes Service
Azure Application Gateway
その他のデプロイメントオプションには、次のオプションコンポーネントも含まれます。
Azure Cache for Redis
Azure Event Grid
前提条件となる権限
AzureRM プロバイダーを設定する最も簡単な方法は、Azure CLI を使用することですが、Azure Service Principal を使用した自動化も役立ちます。
使用する認証方法に関係なく、Terraform を実行するアカウントは、イントロダクションで説明されているすべてのコンポーネントを作成できる必要があります。
一般的な手順
このトピックの手順は、このドキュメントで説明されているすべてのデプロイメントオプションに共通です。
開発 環境 を準備します。
Terraform をインストールします。
使用する コード で Git リポジトリを作成することをお勧めしますが、ファイルをローカルに保持することもできます。
terraform.tfvars
ファイルを作成します。 tvfars
ファイルの内容は、インストールタイプに応じてカスタマイズできますが、推奨される最小限の内容は以下の例のようになります。
namespace = "wandb"
wandb_license = "xxxxxxxxxxyyyyyyyyyyyzzzzzzz"
subdomain = "wandb-aws"
domain_name = "wandb.ml"
location = "westeurope"
ここで定義されている変数は、デプロイメントの前に決定する必要があります。namespace
変数は、Terraform によって作成されたすべてのリソースにプレフィックスを付ける 文字列 になります。
subdomain
と domain
の組み合わせで、Weights & Biases が設定される FQDN が形成されます。上記の例では、Weights & Biases の FQDN は wandb-aws.wandb.ml
になり、FQDN レコードが作成される DNS zone_id
になります。
ファイル versions.tf
を作成します。 このファイルには、Weights & Biases を AWS にデプロイするために必要な Terraform および Terraform プロバイダーの バージョン が含まれます。
terraform {
required_version = "~> 1.3"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.17"
}
}
}
AWS プロバイダーを設定するには、Terraform Official Documentation を参照してください。
オプションで、強く推奨されますが 、このドキュメントの冒頭で説明した remote backend configuration を追加できます。
ファイル variables.tf
を作成します。terraform.tfvars
で設定されたすべてのオプションについて、Terraform は対応する変数宣言を必要とします。
variable "namespace" {
type = string
description = "String used for prefix resources."
}
variable "location" {
type = string
description = "Azure Resource Group location"
}
variable "domain_name" {
type = string
description = "Domain for accessing the Weights & Biases UI."
}
variable "subdomain" {
type = string
default = null
description = "Subdomain for accessing the Weights & Biases UI. Default creates record at Route53 Route."
}
variable "license" {
type = string
description = "Your wandb/local license"
}
推奨されるデプロイメント
これは最も簡単なデプロイメントオプションの設定で、すべての Mandatory
コンポーネントを作成し、最新 バージョン の W&B
を Kubernetes Cluster
にインストールします。
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)
}
}
# Spin up all required services
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 Cache を使用したデプロイメント
別のデプロイメントオプションでは、SQL クエリをキャッシュし、Experiments の Metrics をロードする際のアプリケーション応答を高速化するために Redis
を使用します。
キャッシュを有効にするには、推奨されるデプロイメント で使用したのと同じ main.tf
ファイルにオプション create_redis = true
を追加する必要があります。
# Spin up all required services
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 # Create Redis
[ ...]
外部キューを使用したデプロイメント
デプロイメントオプション 3 は、外部 message broker
を有効にすることで構成されます。W&B にはブローカーが組み込まれているため、これはオプションです。このオプションは、パフォーマンスの向上をもたらしません。
message broker を提供する Azure リソースは Azure Event Grid
であり、これを有効にするには、推奨されるデプロイメント で使用したのと同じ main.tf
にオプション use_internal_queue = false
を追加する必要があります。
# Spin up all required services
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 # Enable Azure Event Grid
[ ...]
}
その他のデプロイメントオプション
3 つのデプロイメントオプションすべてを組み合わせて、すべての構成を同じファイルに追加できます。
Terraform Module には、標準オプションと 推奨されるデプロイメント にある最小限の構成とともに組み合わせることができる、いくつかのオプションが用意されています。
1.3.4 - Deploy W&B Platform On-premises
W&B サーバー をオンプレミス の インフラストラクチャー 上でホストする
関連する質問については、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
の処理方法の変更により、sort_buffer_size
パラメータをデフォルト値の 262144
から更新する必要がある場合があります。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 cluster で外部ホストすることも、署名付き 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://
に設定します。これにより、W&B サーバーは、外部の SQS キューまたは同等のものに依存する代わりに、すべてのオブジェクト通知を内部で管理するように指示されます。
独自のオブジェクトストレージを実行する際に考慮すべき最も重要な点は次のとおりです。
ストレージ容量とパフォーマンス 。磁気ディスクを使用しても問題ありませんが、これらのディスクの容量を監視する必要があります。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 cluster 内からの運用をサポートしています。
W&B では、公式の W&B Helm チャートを使用してインストールすることをお勧めします。
特権のない ユーザー として コンテナ を実行する
デフォルトでは、コンテナ は $UID
999 を使用します。オーケストレーターが非 root ユーザー で コンテナ を実行する必要がある場合は、$UID
>= 100000 および $GID
0 を指定します。
W&B は、ファイルシステムの権限が適切に機能するように、root グループ ($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 や side car containers などの ツール の使用を検討してください。ロードバランサー 自体が有効な証明書で 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
# X-Forwarded-Proto を受信した場合は、そのまま渡します。それ以外の場合は、このサーバーへの接続に使用されたスキームを渡します。
map $http_x_forwarded_proto $proxy_x_forwarded_proto {
default $http_x_forwarded_proto;
'' $scheme;
}
# Also, in the above case, force HTTPS
# また、上記の場合、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
# X-Forwarded-Host を受信した場合は、そのまま渡します。それ以外の場合は、$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
# X-Forwarded-Port を受信した場合は、そのまま渡します。それ以外の場合は、クライアントが接続したサーバーポートを渡します。
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
# Upgrade を受信した場合は、Connection を "upgrade" に設定します。それ以外の場合は、このサーバーに渡された可能性のある Connection ヘッダーを削除します。
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 Support にお問い合わせください。
1.3.5 - Update W&B license and version
さまざまなインストール メソッドにおける W&B (Weights & Biases) の バージョン およびライセンスを更新するための ガイド。
W&B サーバー のバージョンとライセンスの更新は、W&B サーバー のインストール時と同じ方法で行います。以下の表は、さまざまなデプロイメント方法に基づいてライセンスとバージョンを更新する方法をまとめたものです。
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 chart *.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
詳細については、パブリック リポジトリー の アップグレード ガイド を参照してください。
admin UI で更新
このメソッド は、通常セルフホスト Docker インストールで、W&B サーバー コンテナー の 環境 変数 で設定されていないライセンスを更新する場合にのみ機能します。
W&B Deployment Page から新しいライセンスを取得し、アップグレードする デプロイメント の正しい organization と デプロイメント ID に一致することを確認します。
<host-url>/system-settings
で W&B Admin UI にアクセスします。
ライセンス管理セクションに移動します。
新しいライセンス キー を入力して変更を保存します。
2 - Identity and access management (IAM)
W&B Platform には、W&B 内に3つの IAM スコープがあります。Organizations 、Teams 、および Projects です。
Organization
Organization は、W&B アカウントまたはインスタンスのルートスコープです。アカウントまたはインスタンス内のすべてのアクションは、そのルートスコープのコンテキスト内で実行されます。これには、ユーザーの管理、Teams の管理、Teams 内の Projects の管理、使用状況の追跡などが含まれます。
Multi-tenant Cloud を使用している場合、複数の Organization を持つことができ、それぞれが事業部門、個人のユーザー、他の企業との共同パートナーシップなどに対応する場合があります。
Dedicated Cloud または Self-managed instance を使用している場合は、1つの Organization に対応します。貴社は、事業部門や部署に対応するために、複数の Dedicated Cloud または Self-managed instance を持つことができますが、これは厳密には、貴社のビジネスまたは部署全体で AI 実務者を管理するためのオプションの方法です。
詳細については、Organization の管理 を参照してください。
Team
Team は、Organization 内のサブスコープであり、事業部門/機能、部署、または社内の project team に対応する場合があります。デプロイメントの種類と料金プランに応じて、Organization 内に複数の Team を持つことができます。
AI projects は、Team のコンテキスト内で編成されます。Team 内のアクセス制御は、親 Organization レベルの管理者である場合とそうでない場合がある Team 管理者によって管理されます。
詳細については、Team の追加と管理 を参照してください。
Project
Project は、Team 内のサブスコープであり、特定の意図された結果を持つ実際の AI project に対応します。Team 内に複数の project を持つことができます。各 project には、誰がアクセスできるかを決定する可視性モードがあります。
すべての project は、Workspaces と Reports で構成され、関連する Artifacts 、Sweeps 、および Automations にリンクされています。
2.1 - Authentication
2.1.1 - Configure SSO with LDAP
W&B サーバー LDAP サーバーで認証情報を認証します。次のガイドでは、W&B サーバーの 設定を構成する方法について説明します。必須およびオプションの設定、システム設定 UI から LDAP 接続を構成する手順について説明します。また、アドレス、ベース識別名、属性など、LDAP 設定のさまざまな入力に関する情報も提供します。これらの属性は、W&B App UI または 環境変数を使用して指定できます。匿名バインド、または管理者 DN とパスワードを使用したバインドのいずれかをセットアップできます。
W&B 管理者ロールのみが LDAP 認証を有効化および構成できます。
LDAP 接続を構成する
W&B App
Environment variable
W&B App に移動します。
右上からプロフィール アイコンを選択します。ドロップダウンから、[システム 設定 ] を選択します。
[LDAP クライアントを構成 ] を切り替えます。
フォームに詳細を追加します。各入力の詳細については、[パラメータの構成 ] セクションを参照してください。
[設定の更新 ] をクリックして、設定をテストします。これにより、W&B サーバーとのテスト クライアント/接続が確立されます。
接続が確認されたら、[LDAP 認証を有効にする ] を切り替え、[設定の更新 ] ボタンを選択します。
次の 環境変数を使用して 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
いいえ
各 環境変数の定義については、設定 パラメータ セクションを参照してください。わかりやすくするために、環境変数プレフィックス LOCAL_LDAP
が定義名から省略されていることに注意してください。
設定 パラメータ
次の表に、必須およびオプションの LDAP 構成を示し、説明します。
環境変数
定義
必須
ADDRESS
これは、W&B サーバーをホストする VPC 内の LDAP サーバーの アドレスです。
はい
BASE_DN
ルート パスは検索の開始元であり、この ディレクトリーにクエリを実行するために必要です。
はい
BIND_DN
LDAP サーバーに登録されている管理 ユーザーのパス。LDAP サーバーが認証されていないバインドをサポートしていない場合に必要です。指定した場合、W&B サーバーはこの ユーザーとして LDAP サーバーに接続します。それ以外の場合、W&B サーバーは匿名バインドを使用して接続します。
いいえ
BIND_PW
管理 ユーザーのパスワード。これはバインドの認証に使用されます。空白のままにすると、W&B サーバーは匿名バインドを使用して接続します。
いいえ
ATTRIBUTES
メールとグループ ID の属性名をコンマ区切りの文字列値として指定します。
はい
TLS_ENABLE
TLS を有効にします。
いいえ
GROUP_ALLOW_LIST
グループ許可リスト。
いいえ
LOGIN
これは、W&B サーバーに LDAP を使用して認証するように指示します。True
または False
に設定します。オプションで、LDAP 構成をテストするために false に設定します。LDAP 認証を開始するには、これを true に設定します。
いいえ
2.1.2 - Configure SSO with OIDC
W&B Server の OpenID Connect (OIDC) 互換アイデンティティプロバイダーのサポートにより、Okta、Keycloak、Auth0、Google、Entra などの外部アイデンティティプロバイダーを介したユーザーアイデンティティとグループメンバーシップの管理が可能になります。
OpenID Connect (OIDC)
W&B Server は、外部 Identity Provider (IdP) との統合のために、以下の OIDC 認証フローをサポートしています。
フォームポストによる暗黙的フロー
Proof Key for Code Exchange (PKCE) を使用した認証コードフロー
これらのフローはユーザーを認証し、アクセス制御を管理するために必要なアイデンティティ情報 (ID トークンの形式) を W&B Server に提供します。
ID トークンは、ユーザーの名前、ユーザー名、メール、グループメンバーシップなどのユーザーのアイデンティティ情報を含む JWT です。W&B Server はこのトークンを使用してユーザーを認証し、システム内の適切なロールまたはグループにマップします。
W&B Server のコンテキストでは、アクセス トークンはユーザーに代わって API へのリクエストを承認しますが、W&B Server の主な関心事はユーザー認証とアイデンティティであるため、ID トークンのみが必要です。
環境変数を使用して、IAM オプションを設定 して、専用クラウド または Self-managed インスタンスを構成できます。
専用クラウド または Self-managed W&B Server インストール用に Identity Provider を構成するには、次のガイドラインに従って、さまざまな IdP に従ってください。W&B の SaaS バージョンを使用している場合は、support@wandb.com に連絡して、組織の Auth0 テナントの構成を支援してください。
認証に AWS Cognito を設定するには、以下の手順に従ってください。
まず、AWS アカウントにサインインし、AWS Cognito アプリケーションに移動します。
IdP でアプリケーションを構成するために、許可されたコールバック URL を指定します。
コールバック URL として http(s)://YOUR-W&B-HOST/oidc/callback
を追加します。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 は、デフォルトで form_post
応答タイプによる implicit
付与 を使用します。
PKCE Code Exchange フローを使用する authorization_code
付与を実行するように wandb/local を構成することもできます。
AWS Cognito がトークンをアプリに配信する方法を構成するために、1 つ以上の OAuth 付与タイプを選択します。
W&B には特定の OpenID Connect (OIDC) スコープが必要です。AWS Cognito アプリから以下を選択します。
“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
で利用可能である必要があります。
たとえば、ユーザープール セクション内の アプリの統合 タブから Cognito IdP URL にユーザープール ID を追加して、発行者 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) の両方を選択します
Sign-in redirect URIs: https://YOUR_W_AND_B_URL/oidc/callback
Sign-out redirect URIs: https://YOUR_W_AND_B_URL/logout
Assignments: Skip group assignment for now を選択します
作成した Okta アプリケーションの概要画面で、General タブの Client Credentials の下の Client ID をメモします。
Okta OIDC Issuer URL を識別するには、左側の Settings を選択し、次に Account を選択します。
Okta UI には、Organization Contact の下に会社名が表示されます。
OIDC 発行者 URL の形式は https://COMPANY.okta.com
です。COMPANY を対応する値に置き換えます。メモしておいてください。
Azure ポータル (https://portal.azure.com/ ) にログインします。
「Microsoft Entra ID」サービスを選択します。
左側で、「App registrations」を選択します。
上部で、「New registration」をクリックします。
「Register an application」という画面で、以下の値を入力します。
名前を指定します(例: “Weights and Biases application”)
デフォルトでは、選択されているアカウントの種類は「Accounts in this organizational directory only (Default Directory only - Single tenant)」です。必要に応じて変更します。
リダイレクト URI をタイプ Web で値 https://YOUR_W_AND_B_URL/oidc/callback
で構成します
「Register」をクリックします。
「Application (client) ID」と「Directory (tenant) ID」をメモします。
左側で、Authentication をクリックします。
左側で、「Certificates & secrets」をクリックします。
「Client secrets」をクリックし、次に「New client secret」をクリックします。
「Add a client secret」という画面で、以下の値を入力します。
説明を入力します(例: “wandb”)
「Expires」はそのままにするか、必要に応じて変更します。
「Add」をクリックします。
シークレットの「Value」をメモします。「Secret ID」は必要ありません。
これで、次の 3 つの値をメモしておく必要があります。
OIDC クライアント ID
OIDC クライアントシークレット
テナント ID は OIDC Issuer URL に必要です
OIDC 発行者 URL の形式は https://login.microsoftonline.com/${TenantID}/v2.0
です
W&B Server で SSO をセットアップする
SSO を設定するには、管理者権限と以下の情報が必要です。
OIDC クライアント ID
OIDC 認証方式 (implicit
または pkce
)
OIDC Issuer URL
OIDC クライアントシークレット (オプション、IdP の設定方法によって異なります)
IdP が OIDC クライアントシークレットを必要とする場合は、環境変数 OIDC_CLIENT_SECRET
で指定します。
W&B Server UI を使用するか、環境変数 を wandb/local
pod に渡すことによって、SSO を設定できます。環境変数は UI より優先されます。
SSO の設定後にインスタンスにログインできない場合は、LOCAL_RESTORE=true
環境変数を設定してインスタンスを再起動できます。これにより、コンテナログに一時パスワードが出力され、SSO が無効になります。SSO の問題を解決したら、その環境変数を削除して SSO を再度有効にする必要があります。
システムコンソールは、システム設定ページの後継です。W&B Kubernetes Operator ベースのデプロイで使用できます。
W&B 管理コンソールへのアクセス を参照してください。
Settings に移動し、次に Authentication に移動します。Type ドロップダウンで OIDC を選択します。
値を入力します。
Save をクリックします。
ログアウトし、再度ログインします。今回は IdP ログイン画面を使用します。
Weights&Biases インスタンスにサインインします。
W&B アプリケーションに移動します。
ドロップダウンから、System Settings を選択します。
発行者、クライアント ID、および認証方式を入力します。
Update settings を選択します。
SSO の設定後にインスタンスにログインできない場合は、LOCAL_RESTORE=true
環境変数を設定してインスタンスを再起動できます。これにより、コンテナログに一時パスワードが出力され、SSO がオフになります。SSO の問題を解決したら、その環境変数を削除して SSO を再度有効にする必要があります。
Security Assertion Markup Language (SAML)
W&B Server は SAML をサポートしていません。
2.1.3 - Use federated identities with SDK
Identity federation を使用して、W&B SDK 経由で組織の認証情報を使用してサインインします。W&B organization の管理者が organization 向けに SSO を設定している場合、すでに組織の認証情報を使用して W&B アプリの UI にサインインしているはずです。その意味で、identity federation は W&B SDK の SSO のようなものですが、JSON Web Tokens (JWT) を直接使用します。identity federation は、APIキー の代替として使用できます。
RFC 7523 は、SDK との identity federation の基礎を形成します。
Identity federation は、すべてのプラットフォームタイプ(SaaS Cloud、Dedicated Cloud、および Self-managed インスタンス)の Enterprise
プランで Preview
として利用できます。ご不明な点がございましたら、W&B チームにお問い合わせください。
このドキュメントでは、identity provider
と JWT issuer
という用語は同じ意味で使用されます。どちらも、この機能のコンテキストでは同じものを指します。
JWT issuer の設定
最初の手順として、organization の管理者は、W&B organization と公開されている JWT issuer の間の federation を設定する必要があります。
organization の ダッシュボード で Settings タブに移動します
Authentication オプションで、Set up JWT Issuer
を押します
テキストボックスに JWT issuer の URL を追加し、Create
を押します
W&B は、${ISSUER_URL}/.well-known/oidc-configuration
のパスで OIDC discovery document を自動的に検索し、discovery document 内の関連する URL で JSON Web Key Set (JWKS) を見つけようとします。JWKS は、JWT が関連する identity provider によって発行されたことを確認するために、JWT のリアルタイム検証に使用されます。
JWT を使用して W&B にアクセスする
JWT issuer が W&B organization 用に設定されると、ユーザーはその identity provider によって発行された JWT を使用して、関連する W&B プロジェクト へのアクセスを開始できます。JWT を使用するメカニズムは次のとおりです。
organization で利用可能なメカニズムのいずれかを使用して、identity provider にサインインする必要があります。一部のプロバイダーには、API または SDK を使用して自動化された方法でアクセスできますが、関連する UI を使用してのみアクセスできるプロバイダーもあります。詳細については、W&B organization の管理者または JWT issuer の所有者にお問い合わせください。
identity provider へのサインイン後に JWT を取得したら、安全な場所にファイルに保存し、環境変数 WANDB_IDENTITY_TOKEN_FILE
に絶対ファイルパスを設定します。
W&B SDK または CLI を使用して W&B project にアクセスします。SDK または CLI は、JWT を自動的に検出し、JWT が正常に検証された後、W&B access token と交換する必要があります。W&B access token は、AI ワークフローを有効にするための関連する API にアクセスするために使用されます。つまり、run、メトリクス、Artifacts などを ログ に記録します。access token は、デフォルトで ~/.config/wandb/credentials.json
のパスに保存されます。環境変数 WANDB_CREDENTIALS_FILE
を指定することで、そのパスを変更できます。
JWT は、APIキー、パスワードなどの有効期間の長い認証情報の欠点に対処するための有効期間の短い認証情報です。identity provider で設定された JWT の有効期限に応じて、JWT を継続的に更新し、環境変数 WANDB_IDENTITY_TOKEN_FILE
で参照されるファイルに保存されていることを確認する必要があります。
W&B access token にもデフォルトの有効期限があり、その後、SDK または CLI は JWT を使用して自動的に更新を試みます。その時点でユーザー JWT も期限切れになり、更新されない場合、認証エラーが発生する可能性があります。可能であれば、JWT の取得と有効期限後の更新メカニズムは、W&B SDK または CLI を使用する AI ワークロードの一部として実装する必要があります。
JWT の検証
JWT を W&B access token と交換し、project にアクセスする ワークフロー の一部として、JWT は次の検証を受けます。
JWT 署名は、W&B organization レベルで JWKS を使用して検証されます。これは最初の防御線であり、これが失敗した場合、JWKS または JWT の署名方法に問題があることを意味します。
JWT の iss
クレームは、organization レベルで設定された issuer URL と同じである必要があります。
JWT の sub
クレームは、W&B organization で設定されているユーザーのメールアドレスと同じである必要があります。
JWT の aud
クレームは、AI ワークフローの一部としてアクセスしている project を収容する W&B organization の名前と同じである必要があります。Dedicated Cloud または Self-managed インスタンスの場合、インスタンスレベルの環境変数 SKIP_AUDIENCE_VALIDATION
を true
に設定して、オーディエンスクレームの検証をスキップするか、オーディエンスとして wandb
を使用できます。
JWT の exp
クレームは、トークンが有効かどうか、または期限切れで更新が必要かどうかを確認するためにチェックされます。
外部サービスアカウント
W&B は、有効期間の長い APIキー を持つ組み込みのサービスアカウントを長年サポートしてきました。SDK および CLI 向けの identity federation 機能を使用すると、organization レベルで設定されているのと同じ issuer によって発行されている限り、JWT を認証に使用できる外部サービスアカウントも導入できます。team 管理者は、組み込みのサービスアカウントと同様に、team のスコープ内で外部サービスアカウントを設定できます。
外部サービスアカウントを設定するには:
team の Service Accounts タブに移動します
New service account
を押します
サービスアカウントの名前を入力し、Authentication Method
として Federated Identity
を選択し、Subject
を入力して、Create
を押します
外部サービスアカウントの JWT の sub
クレームは、team 管理者が team レベルの Service Accounts タブでサブジェクトとして設定したものと同じである必要があります。そのクレームは、JWT の検証 の一部として検証されます。aud
クレームの要件は、ヒューマンユーザー JWT の要件と同様です。
外部サービスアカウントの JWT を使用して W&B にアクセスする 場合、通常は、初期 JWT を生成し、継続的に更新する ワークフロー を自動化する方が簡単です。外部サービスアカウントを使用して ログ に記録された run をヒューマンユーザーに帰属させたい場合は、組み込みのサービスアカウントの場合と同様に、AI ワークフローの環境変数 WANDB_USERNAME
または WANDB_USER_EMAIL
を設定できます。
W&B は、柔軟性と簡素さのバランスを取るために、データ感度のレベルが異なる AI ワークロード全体で、組み込みおよび外部サービスアカウントを組み合わせて使用することをお勧めします。
2.1.4 - Use service accounts to automate workflows
組織とチームのスコープを持つサービスアカウントを使用して、自動化された、または非インタラクティブな ワークフロー を管理します。
サービスアカウントは、チーム内またはチーム間で、プロジェクトを横断して共通タスクを自動的に実行できる、人間ではないまたは機械の ユーザー を表します。
組織の 管理者 は、組織の スコープ で サービスアカウント を作成できます。
チーム の 管理者 は、その チーム の スコープ で サービスアカウント を作成できます。
サービスアカウント の APIキー を使用すると、呼び出し元は サービスアカウント の スコープ 内の プロジェクト から読み取りまたは書き込みができます。
サービスアカウント を使用すると、複数の ユーザー または チーム による ワークフロー の集中管理、W&B Models の 実験管理 の自動化、または W&B Weave の トレース の ログ記録 が可能になります。 環境変数 WANDB_USERNAME
または WANDB_USER_EMAIL
のいずれかを使用することにより、人間の ユーザー の ID を サービスアカウント によって管理される ワークフロー に関連付けるオプションがあります。
組織スコープ の サービスアカウント
組織に スコープ された サービスアカウント は、 制限付き プロジェクト を除き、 チーム に関係なく、組織内のすべての プロジェクト で読み取りおよび書き込みの権限を持ちます。組織スコープ の サービスアカウント が 制限付き プロジェクト に アクセス するには、その プロジェクト の 管理者 が サービスアカウント を プロジェクト に明示的に追加する必要があります。
組織の 管理者 は、組織またはアカウント ダッシュボード の [ Service Accounts ] タブから、組織スコープ の サービスアカウント の APIキー を取得できます。
新しい組織スコープ の サービスアカウント を作成するには:
組織 ダッシュボード の [ Service Accounts ] タブにある [ New service account ] ボタンをクリックします。
[ Name ] を入力します。
サービスアカウント のデフォルト チーム を選択します。
[ Create ] をクリックします。
新しく作成された サービスアカウント の横にある [ Copy API key ] をクリックします。
コピーした APIキー を、シークレットマネージャーまたはその他の安全で アクセス 可能な場所に保存します。
組織スコープ の サービスアカウント には、組織内のすべての チーム が所有する制限のない プロジェクト に アクセス できる場合でも、デフォルト チーム が必要です。これにより、モデルトレーニング または 生成AI アプリ の 環境 で WANDB_ENTITY
変数 が 設定 されていない場合に、 ワークロード が失敗するのを防ぐことができます。別の チーム の プロジェクト で組織スコープ の サービスアカウント を使用するには、WANDB_ENTITY
環境変数 をその チーム に設定する必要があります。
チームスコープ の サービスアカウント
チームスコープ の サービスアカウント は、その チーム 内のすべての プロジェクト で読み取りおよび書き込みができます。ただし、その チーム 内の 制限付き プロジェクト は除きます。チームスコープ の サービスアカウント が 制限付き プロジェクト に アクセス するには、その プロジェクト の 管理者 が サービスアカウント を プロジェクト に明示的に追加する必要があります。
チーム の 管理者 として、チームスコープ の サービスアカウント の APIキー を <WANDB_HOST_URL>/<your-team-name>/service-accounts
で取得できます。または、チーム の [ 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
変数 を使用した ユーザー 属性は、参照される ユーザー が サービスアカウント の親 チーム の一部である場合を除き、機能しません 。
外部 サービスアカウント
Built-in サービスアカウント に加えて、W&B は、JSON Web Tokens (JWT) を発行できる ID プロバイダー (IdP) との Identity federation を使用して、W&B SDK および CLI を使用した チーム スコープ の External service accounts もサポートしています。
2.2 - Access management
組織内の ユーザー と Teams を管理する
一意の組織ドメインで W&B に最初にサインアップした ユーザー は、その組織の インスタンス管理者ロール として割り当てられます。組織管理者は、特定の ユーザー に チーム 管理者ロールを割り当てます。
W&B では、組織内に複数のインスタンス管理者を持つことを推奨します。これは、プライマリアドミンが利用できない場合でも、管理業務を継続できるようにするためのベストプラクティスです。
チーム管理者 は、 チーム 内で管理権限を持つ組織内の ユーザー です。
組織管理者は、https://wandb.ai/account-settings/
で組織のアカウント 設定 にアクセスして使用し、 ユーザー の招待、 ユーザー のロールの割り当てまたは更新、 Teams の作成、組織からの ユーザー の削除、請求管理者の割り当てなどを行うことができます。詳細については、ユーザー の追加と管理 を参照してください。
組織管理者が チーム を作成すると、インスタンス管理者または チーム 管理者は次のことができます。
デフォルトでは、管理者のみがその チーム に ユーザー を招待したり、 チーム から ユーザー を削除したりできます。この 振る舞い を変更するには、チーム の 設定 を参照してください。
チームメンバー のロールを割り当てるか、更新します。
新しい ユーザー が組織に参加したときに、自動的に ユーザー を チーム に追加します。
組織管理者と チーム 管理者の両方が、https://wandb.ai/<your-team-name>
の チーム ダッシュボード を使用して Teams を管理します。詳細、および チーム のデフォルトのプライバシー 設定 の構成については、Teams の追加と管理 を参照してください。
特定の Projects への可視性を制限する
W&B の Project のスコープを定義して、誰が W&B の Runs を表示、編集、および送信できるかを制限します。 チーム が機密 データ を扱う場合、 Project を表示できる ユーザー を制限すると特に役立ちます。
組織管理者、 チーム 管理者、または Project のオーナーは、 Project の可視性を 設定 および編集できます。
詳細については、Project の可視性 を参照してください。
2.2.1 - Manage your organization
組織の管理者として、組織内の 個々のユーザーを管理 したり、Teams を管理 したりできます。
Team の管理者として、Teams を管理 できます。
以下のワークフローは、インスタンス管理者のロールを持つユーザーに適用されます。インスタンス管理者権限が必要と思われる場合は、組織の管理者に連絡してください。
組織内のユーザー管理を簡素化したい場合は、ユーザーと Team の管理の自動化 を参照してください。
組織名の変更
以下のワークフローは、W&B Multi-tenant SaaS Cloud にのみ適用されます。
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンの アカウント セクションで、設定 を選択します。
設定 タブ内で、一般 を選択します。
名前の変更 ボタンを選択します。
表示されるモーダル内で、組織の新しい名前を入力し、名前を保存 ボタンを選択します。
ユーザーの追加と管理
管理者として、組織のダッシュボードを使用して以下を行います。
ユーザーの招待または削除。
ユーザーの組織ロールの割り当てまたは更新、およびカスタムロールの作成。
課金管理者の割り当て。
組織管理者が組織にユーザーを追加する方法はいくつかあります。
招待によるメンバー追加
SSO による自動プロビジョニング
ドメインキャプチャ
シートと料金
以下の表は、Models と Weave のシートの仕組みをまとめたものです。
製品
シート
料金の基準
Models
セットごとに支払い
Models の有料シートの数と、発生した使用量によって、全体のサブスクリプション料金が決まります。各ユーザーには、フル、ビューアー、アクセスなしの 3 種類のシートタイプのうち 1 つを割り当てることができます
Weave
無料
使用量ベース
ユーザーの招待
管理者は、ユーザーを組織、および組織内の特定の Team に招待できます。
Multi-tenant SaaS Cloud
Dedicated or Self-managed
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンの アカウント セクションで、ユーザー を選択します。
新しいユーザーを招待 を選択します。
表示されるモーダルで、メールアドレスまたはユーザー名 フィールドにユーザーのメールアドレスまたはユーザー名を入力します。
(推奨) Team を選択 ドロップダウンメニューから、ユーザーを Team に追加します。
ロールを選択 ドロップダウンから、ユーザーに割り当てるロールを選択します。ユーザーのロールは後で変更できます。可能なロールの詳細については、ロールの割り当て に記載されている表を参照してください。
招待を送信 ボタンを選択します。
W&B は、招待を送信 ボタンを選択した後、サードパーティのメールサーバーを使用して、ユーザーのメールアドレスに招待リンクを送信します。ユーザーは招待を承諾すると、組織にアクセスできます。
https://<org-name>.io/console/settings/
に移動します。<org-name>
を組織名に置き換えます。
ユーザーを追加 ボタンを選択します。
表示されるモーダルで、メールアドレス フィールドに新しいユーザーのメールアドレスを入力します。
ロール ドロップダウンから、ユーザーに割り当てるロールを選択します。ユーザーのロールは後で変更できます。可能なロールの詳細については、ロールの割り当て に記載されている表を参照してください。
W&B がサードパーティのメールサーバーを使用して、ユーザーのメールアドレスに招待リンクを送信する場合は、ユーザーに招待メールを送信 ボックスをオンにします。
新しいユーザーを追加 ボタンを選択します。
ユーザーの自動プロビジョニング
SSO を構成し、SSO プロバイダーが許可している場合、一致するメールアドレスドメインを持つ W&B ユーザーは、シングルサインオン (SSO) で W&B Organization にサインインできます。SSO は、すべてのエンタープライズライセンスで利用できます。
認証に SSO を有効にする W&B は、シングルサインオン (SSO) を使用して認証することを強く推奨および推奨します。組織の SSO を有効にするには、W&B Team にお問い合わせください。
Dedicated cloud または Self-managed インスタンスで SSO を設定する方法の詳細については、OIDC での SSO または LDAP での SSO を参照してください。
W&B は、自動プロビジョニングユーザーにデフォルトで「メンバー」ロールを割り当てます。自動プロビジョニングされたユーザーのロールはいつでも変更できます。
SSO を使用したユーザーの自動プロビジョニングは、Dedicated cloud インスタンスと Self-managed デプロイメントではデフォルトでオンになっています。自動プロビジョニングはオフにすることができます。自動プロビジョニングをオフにすると、特定のユーザーを選択的に W&B 組織に追加できます。
以下のタブでは、デプロイメントタイプに基づいて SSO をオフにする方法について説明します。
Dedicated cloud
Self-managed
Dedicated cloud インスタンスを使用している場合に、SSO での自動プロビジョニングをオフにする場合は、W&B Team にお問い合わせください。
W&B Console を使用して、SSO での自動プロビジョニングをオフにします。
https://<org-name>.io/console/settings/
に移動します。<org-name>
を組織名に置き換えます。
セキュリティ を選択します
SSO プロビジョニングを無効にする を選択して、SSO での自動プロビジョニングをオフにします。
SSO での自動プロビジョニングは、組織管理者が個々のユーザー招待状を生成する必要がないため、大規模にユーザーを組織に追加する場合に役立ちます。
カスタムロールの作成
Dedicated cloud または Self-managed デプロイメントでカスタムロールを作成または割り当てるには、エンタープライズライセンスが必要です。
組織管理者は、表示のみまたはメンバーロールに基づいて新しいロールを作成し、追加の権限を追加して、きめ細かいアクセス制御を実現できます。Team 管理者は、Team メンバーにカスタムロールを割り当てることができます。カスタムロールは組織レベルで作成されますが、Team レベルで割り当てられます。
カスタムロールを作成するには:
Multi-tenant SaaS Cloud
Dedicated or Self-managed
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンの アカウント セクションで、設定 を選択します。
ロール をクリックします。
カスタムロール セクションで、ロールを作成 をクリックします。
ロールの名前を入力します。オプションで説明を入力します。
カスタムロールのベースにするロールを選択します (ビューアー または メンバー )。
権限を追加するには、権限を検索 フィールドをクリックし、追加する 1 つ以上の権限を選択します。
カスタムロールの権限 セクションを確認します。ここには、ロールが持つ権限がまとめられています。
ロールを作成 をクリックします。
W&B Console を使用して、SSO での自動プロビジョニングをオフにします。
https://<org-name>.io/console/settings/
に移動します。<org-name>
を組織名に置き換えます。
カスタムロール セクションで、ロールを作成 をクリックします。
ロールの名前を入力します。オプションで説明を入力します。
カスタムロールのベースにするロールを選択します (ビューアー または メンバー )。
権限を追加するには、権限を検索 フィールドをクリックし、追加する 1 つ以上の権限を選択します。
カスタムロールの権限 セクションを確認します。ここには、ロールが持つ権限がまとめられています。
ロールを作成 をクリックします。
これで、Team 管理者は Team の設定 から Team のメンバーにカスタムロールを割り当てることができます。
ドメインキャプチャ
ドメインキャプチャは、従業員が会社組織に参加するのに役立ち、新しいユーザーが会社の管轄外で資産を作成しないようにします。
ドメインは一意である必要があります ドメインは一意の識別子です。つまり、別の組織ですでに使用されているドメインは使用できません。
Multi-tenant SaaS Cloud
Dedicated or Self-managed
ドメインキャプチャを使用すると、@example.com
などの会社のメールアドレスを持つユーザーを W&B SaaS cloud organization に自動的に追加できます。これにより、すべての従業員が適切な組織に参加し、新しいユーザーが会社の管轄外で資産を作成しないようにします。
以下の表は、ドメインキャプチャが有効な場合と無効な場合における、新規および既存のユーザーの振る舞いをまとめたものです。
ドメインキャプチャあり
ドメインキャプチャなし
新規ユーザー
検証済みのドメインから W&B にサインアップしたユーザーは、自動的に組織のデフォルト Team のメンバーとして追加されます。Team への参加を有効にすると、サインアップ時に参加する追加の Team を選択できます。招待状があれば、他の組織や Team にも参加できます。
ユーザーは、利用可能な集中管理された組織があることを知らずに、W&B アカウントを作成できます。
招待されたユーザー
招待されたユーザーは、招待を承諾すると自動的に組織に参加します。招待されたユーザーは、自動的に組織のデフォルト Team のメンバーとして追加されるわけではありません。招待状があれば、他の組織や Team にも参加できます。
招待されたユーザーは、招待を承諾すると自動的に組織に参加します。招待状があれば、他の組織や Team にも参加できます。
既存のユーザー
ドメインからの検証済みのメールアドレスを持つ既存のユーザーは、W&B App 内で組織の Team に参加できます。既存のユーザーが組織に参加する前に作成したすべてのデータは保持されます。W&B は既存のユーザーのデータを移行しません。
既存の W&B ユーザーは、複数の組織や Team に分散している可能性があります。
招待されていない新規ユーザーが組織に参加するときに、デフォルトの Team に自動的に割り当てるには:
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンから、設定 を選択します。
設定 タブ内で、一般 を選択します。
ドメインキャプチャ 内の ドメインの要求 ボタンを選択します。
新しいユーザーが自動的に参加する Team を デフォルト Team ドロップダウンから選択します。利用可能な Team がない場合は、Team の設定を更新する必要があります。Team の追加と管理 の手順を参照してください。
メールアドレスドメインの要求 ボタンをクリックします。
招待されていない新しいユーザーを Team に自動的に割り当てるには、Team の設定内でドメイン一致を有効にする必要があります。
https://wandb.ai/<team-name>
で Team のダッシュボードに移動します。<team-name>
は、ドメイン一致を有効にする Team の名前です。
Team のダッシュボードの左側にあるグローバルナビゲーションで Team の設定 を選択します。
プライバシー セクション内で、“サインアップ時に、一致するメールアドレスドメインを持つ新しいユーザーにこの Team への参加を推奨する” オプションを切り替えます。
ドメインキャプチャを構成するには、Dedicated または Self-managed デプロイメントタイプを使用している場合は、W&B アカウント Team にお問い合わせください。構成が完了すると、W&B SaaS インスタンスは、会社のメールアドレスで W&B アカウントを作成するユーザーに、Dedicated または Self-managed インスタンスへのアクセスを要求するために管理者に連絡するように自動的に促します。
ドメインキャプチャあり
ドメインキャプチャなし
新規ユーザー
検証済みのドメインから SaaS cloud で W&B にサインアップしたユーザーは、カスタマイズしたメールアドレスで管理者に連絡するように自動的に促されます。SaaS cloud で組織を作成して、製品をトライアルできます。
ユーザーは、会社に集中管理された Dedicated インスタンスがあることを知らずに、W&B SaaS cloud アカウントを作成できます。
既存のユーザー
既存の W&B ユーザーは、複数の組織や Team に分散している可能性があります。
既存の W&B ユーザーは、複数の組織や Team に分散している可能性があります。
ユーザーのロールの割り当てまたは更新
Organization のすべてのメンバーは、W&B Models と Weave の両方に対して組織ロールとシートを持っています。シートのタイプによって、課金ステータスと各製品ラインで実行できるアクションが決まります。
最初にユーザーを組織に招待するときに、ユーザーに組織ロールを割り当てます。ユーザーのロールは後で変更できます。
組織内のユーザーは、次のいずれかのロールを持つことができます。
ロール
説明
admin
他のユーザーを組織に追加または削除したり、ユーザーロールを変更したり、カスタムロールを管理したり、Team を追加したりできるインスタンス管理者。W&B は、管理者が不在の場合に備えて、複数の管理者がいることを推奨します。
Member
インスタンス管理者によって招待された、組織の通常のユーザー。組織メンバーは、他のユーザーを招待したり、組織内の既存のユーザーを管理したりすることはできません。
Viewer (エンタープライズ限定機能)
インスタンス管理者によって招待された、組織の表示専用ユーザー。ビューアーは、組織とメンバーである基盤となる Team への読み取りアクセスのみを持っています。
カスタムロール (エンタープライズ限定機能)
カスタムロールを使用すると、組織管理者は、上記の表示専用またはメンバーロールから継承し、追加の権限を追加して、きめ細かいアクセス制御を実現することで、新しいロールを作成できます。Team 管理者は、これらのカスタムロールをそれぞれの Team のユーザーに割り当てることができます。
ユーザーのロールを変更するには:
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンから、ユーザー を選択します。
検索バーにユーザーの名前またはメールアドレスを入力します。
ユーザーの名前の横にある TEAM ROLE ドロップダウンからロールを選択します。
ユーザーのアクセスの割り当てまたは更新
組織内のユーザーは、フル、ビューアー、またはアクセスなしのいずれかのモデルシートまたは Weave アクセスタイプを持っています。
シートタイプ
説明
Full
このロールタイプのユーザーは、Models または Weave のデータを書き込み、読み取り、エクスポートするための完全な権限を持っています。
Viewer
組織の表示専用ユーザー。ビューアーは、組織と所属する基盤となる Team への読み取りアクセスのみを持ち、Models または Weave への表示のみのアクセスを持っています。
No access
このロールのユーザーは、Models または Weave 製品にアクセスできません。
モデルシートタイプと Weave アクセスタイプは組織レベルで定義され、Team に継承されます。ユーザーのシートタイプを変更する場合は、組織の設定に移動し、次の手順に従ってください。
SaaS ユーザーの場合は、https://wandb.ai/account-settings/<organization>/settings
で組織の設定に移動します。山かっこ (<>
) で囲まれた値を組織名に置き換えてください。他の Dedicated および Self-managed デプロイメントの場合は、https://<your-instance>.wandb.io/org/dashboard
に移動します。
ユーザー タブを選択します。
ロール ドロップダウンから、ユーザーに割り当てるシートタイプを選択します。
組織のロールとサブスクリプションタイプによって、組織内で利用できるシートタイプが決まります。
ユーザーの削除
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンから、ユーザー を選択します。
検索バーにユーザーの名前またはメールアドレスを入力します。
表示されたら、省略記号または 3 つのドットのアイコン (… ) を選択します。
ドロップダウンから、メンバーを削除 を選択します。
課金管理者の割り当て
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンから、ユーザー を選択します。
検索バーにユーザーの名前またはメールアドレスを入力します。
課金管理者 列で、課金管理者として割り当てるユーザーを選択します。
Team の追加と管理
組織のダッシュボードを使用して、組織内に Team を作成および管理します。組織管理者または Team 管理者は次のことができます。
ユーザーを Team に招待したり、Team からユーザーを削除したりします。
Team メンバーのロールを管理します。
組織に参加するときに、ユーザーを Team に自動的に追加します。
https://wandb.ai/<team-name>
の Team のダッシュボードで Team のストレージを管理します。
Team の作成
組織のダッシュボードを使用して Team を作成します。
https://wandb.ai/home に移動します。
左側のナビゲーションパネルの Team の下にある コラボレーションする Team を作成 を選択します。
表示されるモーダルの Team 名 フィールドに Team の名前を入力します。
ストレージタイプを選択します。
Team を作成 ボタンを選択します。
Team を作成 ボタンを選択すると、W&B は https://wandb.ai/<team-name>
の新しい Team ページにリダイレクトします。<team-name>
は、Team の作成時に入力した名前で構成されます。
Team を作成したら、その Team にユーザーを追加できます。
Team へのユーザーの招待
組織内の Team にユーザーを招待します。Team のダッシュボードを使用して、メールアドレスまたは W&B のユーザー名を使用してユーザーを招待します (すでに W&B アカウントを持っている場合)。
https://wandb.ai/<team-name>
に移動します。
ダッシュボードの左側にあるグローバルナビゲーションで Team の設定 を選択します。
ユーザー タブを選択します。
新しいユーザーを招待 を選択します。
表示されるモーダルで、メールアドレスまたはユーザー名 フィールドにユーザーのメールアドレスを入力し、Team ロールを選択 ドロップダウンからユーザーに割り当てるロールを選択します。ユーザーが Team で持つことができるロールの詳細については、Team ロール を参照してください。
招待を送信 ボタンを選択します。
デフォルトでは、Team またはインスタンス管理者のみが Team にメンバーを招待できます。この振る舞いを変更するには、Team の設定 を参照してください。
メールでの招待を使用して手動でユーザーを招待するだけでなく、新しいユーザーの メールが組織のドメインと一致する 場合、新しいユーザーを Team に自動的に追加できます。
サインアップ時にメンバーを Team 組織に一致させる
組織内の新しいユーザーがサインアップ時に組織内の Teams を見つけられるようにします。新しいユーザーは、組織の検証済みメールアドレスドメインと一致する検証済みのメールアドレスドメインを持っている必要があります。検証済みの新しいユーザーは、W&B アカウントにサインアップするときに、組織に属する検証済みの Team のリストを表示できます。
組織管理者は、ドメインの要求を有効にする必要があります。ドメインキャプチャを有効にするには、ドメインキャプチャ に記載されている手順を参照してください。
Team メンバーのロールの割り当てまたは更新
Team メンバーの名前の横にあるアカウントタイプのアイコンを選択します。
ドロップダウンから、Team メンバーに持たせるアカウントタイプを選択します。
次の表に、Team のメンバーに割り当てることができるロールを示します。
ロール
定義
admin
Team 内で他のユーザーを追加および削除したり、ユーザーロールを変更したり、Team の設定を構成したりできるユーザー。
Member
Team の通常のユーザー。Team 管理者によってメールまたは組織レベルのユーザー名で招待されます。メンバーユーザーは、他のユーザーを Team に招待することはできません。
View-Only (エンタープライズ限定機能)
Team の表示専用ユーザー。Team 管理者によってメールまたは組織レベルのユーザー名で招待されます。表示専用ユーザーは、Team とそのコンテンツへの読み取りアクセスのみを持っています。
Service (エンタープライズ限定機能)
サービスワーカーまたはサービスアカウントは、run 自動化ツールで W&B を利用するのに役立つ APIキーです。Team のサービスアカウントから APIキーを使用する場合は、環境変数 WANDB_USERNAME
を設定して、run を適切なユーザーに正しく帰属させるようにしてください。
カスタムロール (エンタープライズ限定機能)
カスタムロールを使用すると、組織管理者は、上記の表示専用またはメンバーロールから継承し、追加の権限を追加して、きめ細かいアクセス制御を実現することで、新しいロールを作成できます。Team 管理者は、これらのカスタムロールをそれぞれの Team のユーザーに割り当てることができます。詳細については、この記事 を参照してください。
Dedicated cloud または Self-managed デプロイメントのエンタープライズライセンスのみが、Team のメンバーにカスタムロールを割り当てることができます。
Team からのユーザーの削除
Team のダッシュボードを使用して Team からユーザーを削除します。run を作成したメンバーがその Team にいなくなった場合でも、W&B は Team で作成された run を保持します。
https://wandb.ai/<team-name>
に移動します。
左側のナビゲーションバーで Team の設定 を選択します。
ユーザー タブを選択します。
削除するユーザーの名前の横にマウスを移動します。表示されたら、省略記号または 3 つのドットのアイコン (… ) を選択します。
ドロップダウンから、ユーザーを削除 を選択します。
2.2.2 - Manage access control for projects
可視性スコープと プロジェクト レベルのロールを使用して、 プロジェクト の アクセス を管理します。
W&B のプロジェクトのスコープを定義して、誰が W&B の run を表示、編集、送信できるかを制限します。
いくつかのコントロールを組み合わせて、W&B の Teams 内のプロジェクトに対するアクセスレベルを設定できます。可視性スコープ は、より高レベルなメカニズムです。これを使用して、どのユーザーグループがプロジェクト内の run を表示または送信できるかを制御します。Team または Restricted の可視性スコープを持つプロジェクトの場合、プロジェクトレベルのロール を使用して、各 ユーザー がプロジェクト内で持つアクセスレベルを制御できます。
プロジェクトのオーナー、 Team 管理者、または組織管理者は、プロジェクトの可視性を設定または編集できます。
可視性スコープ
選択できるプロジェクトの可視性スコープは 4 つあります。最も公開されているものから最もプライベートなものの順に示します。
スコープ
説明
Open
プロジェクトについて知っている人なら誰でも、それを表示し、 run または Report を送信できます。
Public
プロジェクトについて知っている人なら誰でも、それを表示できます。あなたの Team のみが、 run または Report を送信できます。
Team
親 Team のメンバーのみが、プロジェクトを表示し、 run または Report を送信できます。 Team 外部の人は、プロジェクトにアクセスできません。
Restricted
親 Team から招待されたメンバーのみが、プロジェクトを表示し、 run または Report を送信できます。
機密 データ に関連する ワークフロー で共同作業する場合は、プロジェクトのスコープを Restricted に設定します。 Team 内に制限付きプロジェクトを作成する場合、関連する 実験 、 Artifacts 、 Reports などで共同作業するために、 Team から特定のメンバーを招待または追加できます。
他のプロジェクトスコープとは異なり、 Team のすべてのメンバーが制限付きプロジェクトへの暗黙的なアクセス権を取得するわけではありません。同時に、 Team 管理者は必要に応じて制限付きプロジェクトに参加できます。
新規または既存のプロジェクトに可視性スコープを設定する
プロジェクトの可視性スコープは、プロジェクトの作成時、または後で編集するときに設定します。
プロジェクトのオーナーまたは Team 管理者のみが、その可視性スコープを設定または編集できます。
Team 管理者が Team のプライバシー設定内で 将来のすべての Team プロジェクトを非公開にする (公開共有は許可されません) を有効にすると、その Team の Open および Public プロジェクトの可視性スコープが無効になります。この場合、 Team は Team および Restricted スコープのみを使用できます。
新しいプロジェクトを作成するときに可視性スコープを設定する
SaaS Cloud、 専用クラウド 、またはセルフマネージドインスタンスで、W&B 組織に移動します。
左側のサイドバーの My projects セクションにある Create a new project ボタンをクリックします。または、 Team の Projects タブに移動し、右上隅にある Create new project ボタンをクリックします。
親 Team を選択し、プロジェクトの名前を入力したら、Project Visibility ドロップダウンから目的のスコープを選択します。
Restricted の可視性スコープを選択した場合は、次の手順を完了してください。
Invite team members フィールドに、1 人または複数の W&B の チームメンバー の名前を入力します。プロジェクトで共同作業するために不可欠なメンバーのみを追加してください。
制限付きプロジェクトのメンバーは、後で Users タブから追加または削除できます。
既存のプロジェクトの可視性スコープを編集する
W&B の プロジェクト に移動します。
左側の列で Overview タブを選択します。
右上隅にある Edit Project Details ボタンをクリックします。
Project Visibility ドロップダウンから、目的のスコープを選択します。
Restricted の可視性スコープを選択した場合は、次の手順を完了してください。
プロジェクトの Users タブに移動し、Add user ボタンをクリックして、特定の ユーザー を制限付きプロジェクトに招待します。
Team のメンバーをプロジェクトに必要な チームメンバー として招待しない限り、 Team のすべてのメンバーは、可視性スコープを Team から Restricted に変更すると、プロジェクトへのアクセスを失います。
可視性スコープを Restricted から Team に変更すると、 Team のすべてのメンバーがプロジェクトへのアクセス権を取得します。
制限付きプロジェクトの ユーザー リストから チームメンバー を削除すると、その チームメンバー はそのプロジェクトへのアクセスを失います。
制限付きスコープに関するその他の重要な注意事項
制限付きプロジェクトで Team レベルの サービス アカウント を使用する場合は、その サービス アカウント をプロジェクトに明示的に招待または追加する必要があります。そうしないと、 Team レベルの サービス アカウント はデフォルトで制限付きプロジェクトにアクセスできません。
制限付きプロジェクトから run を移動することはできませんが、制限されていないプロジェクトから制限付きプロジェクトに run を移動することはできます。
Team のプライバシー設定 将来のすべての Team プロジェクトを非公開にする (公開共有は許可されません) に関係なく、制限付きプロジェクトの可視性を Team スコープのみに変換できます。
制限付きプロジェクトのオーナーが親 Team の一部でなくなった場合、 Team 管理者はプロジェクトのシームレスな運用を確保するためにオーナーを変更する必要があります。
プロジェクトレベルのロール
Team 内の Team または Restricted スコープのプロジェクトの場合、 ユーザー に特定のロールを割り当てることができます。これは、その ユーザー の Team レベルのロールとは異なる場合があります。たとえば、 ユーザー が Team レベルで Member ロールを持っている場合、その Team 内の Team または Restricted スコープのプロジェクト内で、その ユーザー に View-Only 、Admin 、または使用可能なカスタムロールを割り当てることができます。
プロジェクトレベルのロールは、SaaS Cloud、 専用クラウド 、およびセルフマネージドインスタンスでプレビュー中です。
ユーザー にプロジェクトレベルのロールを割り当てる
W&B の プロジェクト に移動します。
左側の列で Overview タブを選択します。
プロジェクトの Users タブに移動します。
Project Role フィールドで、関係する ユーザー に現在割り当てられているロールをクリックします。これにより、他の使用可能なロールを一覧表示するドロップダウンが開きます。
ドロップダウンから別のロールを選択します。すぐに保存されます。
ユーザー のプロジェクトレベルのロールを Team レベルのロールとは異なるように変更すると、プロジェクトレベルのロールに * が含まれて、違いを示します。
プロジェクトレベルのロールに関するその他の重要な注意事項
デフォルトでは、Team または Restricted スコープのプロジェクト内のすべての ユーザー のプロジェクトレベルのロールは、それぞれの Team レベルのロールを 継承 します。
Team レベルで View-only ロールを持っている ユーザー のプロジェクトレベルのロールを 変更することはできません 。
特定のプロジェクト内の ユーザー のプロジェクトレベルのロールが Team レベルのロール と同じである 場合、 Team 管理者が Team レベルのロールを変更すると、関連するプロジェクトロールは Team レベルのロールを追跡するように自動的に変更されます。
特定のプロジェクト内の ユーザー のプロジェクトレベルのロールを、Team レベルのロール とは異なる ように変更した場合、 Team 管理者が Team レベルのロールを変更しても、関連するプロジェクトレベルのロールはそのままになります。
プロジェクトレベルのロールが Team レベルのロールと異なる場合に、 ユーザー を restricted プロジェクトから削除し、しばらくしてからその ユーザー をプロジェクトに再度追加すると、デフォルトの動作により Team レベルのロールを継承します。必要に応じて、プロジェクトレベルのロールを再度変更して、 Team レベルのロールと異なるようにする必要があります。
2.3 - Automate user and team management
SCIM API
SCIM API を使用して、ユーザーと、ユーザーが所属する Teams を効率的かつ反復可能な方法で管理します。SCIM API を使用して、カスタムロールを管理したり、W&B organization 内の Users にロールを割り当てることもできます。ロールエンドポイントは、公式の SCIM スキーマの一部ではありません。W&B は、カスタムロールの自動管理をサポートするために、ロールエンドポイントを追加します。
SCIM API は、特に次のような場合に役立ちます。
大規模なユーザーのプロビジョニングとプロビジョニング解除を管理する
SCIM をサポートする Identity Provider で Users を管理する
SCIM API には、大きく分けて User 、Group 、Roles の 3 つのカテゴリがあります。
User SCIM API
User SCIM API を使用すると、User の作成、非アクティブ化、詳細の取得、または W&B organization 内のすべての Users の一覧表示が可能です。この API は、定義済みまたはカスタムロールを organization 内の Users に割り当てることもサポートしています。
DELETE User
エンドポイントを使用して、W&B organization 内の User を非アクティブ化します。非アクティブ化された Users は、サインインできなくなります。ただし、非アクティブ化された Users は、organization の User リストに引き続き表示されます。
非アクティブ化された User を User リストから完全に削除するには、organization から User を削除する 必要があります。
必要に応じて、非アクティブ化された User を再度有効にすることができます。
Group SCIM API
Group SCIM API を使用すると、organization 内の Teams の作成や削除など、W&B Teams を管理できます。PATCH Group
を使用して、既存の Team に Users を追加または削除します。
W&B には、同じロールを持つ Users のグループ
という概念はありません。W&B の Team はグループによく似ており、異なるロールを持つ多様なペルソナが、関連する Projects のセットで共同作業を行うことができます。Teams は、異なるグループの Users で構成できます。Team の各 User に、Team 管理者、メンバー、閲覧者、またはカスタムロールを割り当てます。
W&B は、グループと W&B Teams の類似性から、Group SCIM API エンドポイントを W&B Teams にマッピングします。
Custom role API
Custom role SCIM API を使用すると、organization 内のカスタムロールの作成、一覧表示、または更新など、カスタムロールを管理できます。
カスタムロールを削除する場合は注意してください。
DELETE Role
エンドポイントを使用して、W&B organization 内のカスタムロールを削除します。カスタムロールが継承する定義済みのロールは、操作前にカスタムロールが割り当てられているすべての Users に割り当てられます。
PUT Role
エンドポイントを使用して、カスタムロールの継承されたロールを更新します。この操作は、カスタムロール内の既存の、つまり継承されていないカスタム権限には影響しません。
W&B Python SDK API
SCIM API で User と Team の管理を自動化できるのと同じように、W&B Python SDK API で利用できる メソッド の一部もその目的に使用できます。次の メソッド に注意してください。
Method name
Purpose
create_user(email, admin=False)
organization に User を追加し、オプションで organization 管理者にします。
user(userNameOrEmail)
organization 内の既存の User を返します。
user.teams()
User の Teams を返します。user(userNameOrEmail) メソッド を使用して User オブジェクトを取得できます。
create_team(teamName, adminUserName)
新しい Team を作成し、オプションで organization レベルの User を Team 管理者にします。
team(teamName)
organization 内の既存の Team を返します。
Team.invite(userNameOrEmail, admin=False)
Team に User を追加します。team(teamName) メソッド を使用して Team オブジェクトを取得できます。
Team.create_service_account(description)
Team にサービスアカウントを追加します。team(teamName) メソッド を使用して Team オブジェクトを取得できます。
Member.delete()
Team からメンバー User を削除します。team オブジェクトの members
属性を使用して、Team 内のメンバー オブジェクトのリストを取得できます。また、team(teamName) メソッド を使用して Team オブジェクトを取得できます。
2.4 - Manage users, groups, and roles with SCIM
System for Cross-domain Identity Management(SCIM)API を使用すると、インスタンスまたは organization の管理者は、W&B organization 内の user、グループ、およびカスタムロールを管理できます。SCIM グループは W&B の Teams にマッピングされます。
SCIM API は <host-url>/scim/
でアクセスでき、RC7643 プロトコル にあるフィールドのサブセットを使用して、/Users
および /Groups
エンドポイントをサポートします。さらに、公式の SCIM スキーマにはない /Roles
エンドポイントが含まれています。W&B は、W&B organization でのカスタムロールの自動管理をサポートするために、/Roles
エンドポイントを追加します。
複数のエンタープライズ SaaS Cloud organization の管理者である場合は、SCIM API リクエストの送信先となる organization を構成する必要があります。プロフィール画像をクリックし、User Settings をクリックします。設定の名前は Default API organization です。これは、Dedicated Cloud , Self-managed instances , および SaaS Cloud を含む、すべてのホスティングオプションで必要です。SaaS Cloud では、organization 管理者は、SCIM API リクエストが正しい organization に送信されるように、user 設定でデフォルトの organization を構成する必要があります。
選択したホスティングオプションによって、このページの例で使用される <host-url>
プレースホルダーの value が決定されます。
さらに、例では user ID(abc
や def
など)を使用します。実際のリクエストとレスポンスでは、user ID にハッシュ value が設定されます。
認証
organization またはインスタンスの管理者は、 APIキー を使用して基本認証で SCIM API にアクセスできます。HTTP リクエストの Authorization
ヘッダーを文字列 Basic
に設定し、その後にスペース、次に username:API-KEY
の形式で base-64 エンコードされた文字列を設定します。つまり、username と APIキー を :
文字で区切られた value に置き換え、その結果を base-64 エンコードします。たとえば、demo:p@55w0rd
として認証するには、ヘッダーを Authorization: Basic ZGVtbzpwQDU1dzByZA==
にする必要があります。
User リソース
SCIM の user リソースは W&B の Users にマッピングされます。
User を取得
{
"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"
}
Users をリスト表示
{
"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
}
User を作成
エンドポイント : <host-url>/scim/Users
メソッド : POST
説明 : 新しい user リソースを作成します。
サポートされているフィールド :
フィールド
タイプ
必須
emails
複数値の配列
はい(primary
メールが設定されていることを確認してください)
userName
文字列
はい
{
"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"
}
User を削除
エンドポイント : <host-url>/scim/Users/{id}
メソッド : DELETE
説明 : user の一意の ID を指定して、SaaS Cloud organization または Dedicated Cloud あるいは Self-managed インスタンスから user を完全に削除します。必要に応じて、User を作成 API を使用して、user を organization またはインスタンスに再度追加します。
リクエストの例 :
User を一時的に非アクティブ化するには、
PATCH
エンドポイントを使用する
User を非アクティブ化 API を参照してください。
User を非アクティブ化
フィールド
タイプ
必須
op
文字列
操作のタイプ。許可される value は replace
のみです。
value
オブジェクト
User を非アクティブ化することを示すオブジェクト {"active": false}
。
User の非アクティブ化および再アクティブ化の操作は、
SaaS Cloud ではサポートされていません。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"value" : {"active" : false }
}
]
}
レスポンスの例 :
これにより、User オブジェクトが返されます。
{
"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"
}
User を再アクティブ化
エンドポイント : <host-url>/scim/Users/{id}
メソッド : PATCH
説明 : user の一意の ID を指定して、Dedicated Cloud または Self-managed インスタンス内の非アクティブ化された user を再アクティブ化します。
サポートされているフィールド :
フィールド
タイプ
必須
op
文字列
操作のタイプ。許可される value は replace
のみです。
value
オブジェクト
User を再アクティブ化することを示すオブジェクト {"active": true}
。
User の非アクティブ化および再アクティブ化の操作は、
SaaS Cloud ではサポートされていません。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"value" : {"active" : true }
}
]
}
レスポンスの例 :
これにより、User オブジェクトが返されます。
{
"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"
}
User に organization レベルのロールを割り当てる
エンドポイント : <host-url>/scim/Users/{id}
メソッド : PATCH
説明 : user に organization レベルのロールを割り当てます。ロールは、こちら で説明されているように、admin
、viewer
、または member
のいずれかになります。SaaS Cloud の場合は、user 設定で SCIM API 用に正しい organization を構成していることを確認してください。
サポートされているフィールド :
フィールド
タイプ
必須
op
文字列
操作のタイプ。許可される value は replace
のみです。
path
文字列
ロールの割り当て操作が有効になるスコープ。許可される value は organizationRole
のみです。
value
文字列
user に割り当てる定義済みの organization レベルのロール。admin
、viewer
、または member
のいずれかになります。このフィールドでは、定義済みのロールの大文字と小文字は区別されません。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"path" : "organizationRole" ,
"value" : "admin" // user の organization スコープのロールを admin に設定します
}
]
}
レスポンスの例 :
これにより、User オブジェクトが返されます。
{
"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" : [ // user が所属するすべての Teams における user のロールを返します
{
"teamName" : "team1" ,
"roleName" : "admin"
}
],
"organizationRole" : "admin" // organization スコープにおける user のロールを返します
}
User に Team レベルのロールを割り当てる
エンドポイント : <host-url>/scim/Users/{id}
メソッド : PATCH
説明 : user に Team レベルのロールを割り当てます。ロールは、こちら で説明されているように、admin
、viewer
、member
、またはカスタムロールのいずれかになります。SaaS Cloud の場合は、user 設定で SCIM API 用に正しい organization を構成していることを確認してください。
サポートされているフィールド :
フィールド
タイプ
必須
op
文字列
操作のタイプ。許可される value は replace
のみです。
path
文字列
ロールの割り当て操作が有効になるスコープ。許可される value は teamRoles
のみです。
value
オブジェクト配列
オブジェクトが teamName
および roleName
属性で構成される 1 オブジェクト配列。teamName
は user がロールを保持する Team の名前で、roleName
は admin
、viewer
、member
、またはカスタムロールのいずれかになります。このフィールドでは、定義済みのロールの大文字と小文字は区別されず、カスタムロールの大文字と小文字は区別されます。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"path" : "teamRoles" ,
"value" : [
{
"roleName" : "admin" , // 定義済みのロールの場合、ロール名の大文字と小文字は区別されず、カスタムロールの場合は大文字と小文字が区別されます
"teamName" : "team1" // Team team1 における user のロールを admin に設定します
}
]
}
]
}
レスポンスの例 :
これにより、User オブジェクトが返されます。
{
"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" : [ // user が所属するすべての Teams における user のロールを返します
{
"teamName" : "team1" ,
"roleName" : "admin"
}
],
"organizationRole" : "admin" // organization スコープにおける user のロールを返します
}
Group リソース
SCIM のグループリソースは W&B の Teams にマッピングされます。つまり、W&B デプロイメントで SCIM グループを作成すると、W&B の Team が作成されます。他のグループエンドポイントにも同じことが当てはまります。
Team を取得
エンドポイント : <host-url>/scim/Groups/{id}
メソッド : GET
説明 : Team の一意の ID を指定して、Team 情報を取得します。
リクエストの例 :
{
"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"
]
}
Teams をリスト表示
エンドポイント : <host-url>/scim/Groups
メソッド : GET
説明 : Teams のリストを取得します。
リクエストの例 :
{
"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
}
Team を作成
エンドポイント : <host-url>/scim/Groups
メソッド : POST
説明 : 新しい Team リソースを作成します。
サポートされているフィールド :
フィールド
タイプ
必須
displayName
文字列
はい
members
複数値の配列
はい(value
サブフィールドは必須で、user ID にマッピングされます)
dev-user2
をメンバーとして、wandb-support
という Team を作成します。
{
"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"
]
}
Team を更新
エンドポイント : <host-url>/scim/Groups/{id}
メソッド : PATCH
説明 : 既存の Team のメンバーシップリストを更新します。
サポートされている操作 : メンバーの add
、メンバーの remove
リクエストの例 :
dev-user2
を wandb-devs
に追加します
{
"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"
]
}
Team を削除
Team の削除は、Teams にリンクされている追加データがあるため、現在 SCIM API ではサポートされていません。すべてを削除することを確認するには、アプリから Teams を削除します。
Role リソース
SCIM のロールリソースは W&B のカスタムロールにマッピングされます。前述のように、/Roles
エンドポイントは公式の SCIM スキーマの一部ではありません。W&B は、W&B organization でのカスタムロールの自動管理をサポートするために、/Roles
エンドポイントを追加します。
カスタムロールを取得
エンドポイント: <host-url>/scim/Roles/{id}
メソッド : GET
説明 : ロールの一意の ID を指定して、カスタムロールの情報を取得します。
リクエストの例 :
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // indicates the predefined role
"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 // inherited from member predefined role
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // custom permission added by admin
}
],
"schemas" : [
""
]
}
カスタムロールをリスト表示
エンドポイント: <host-url>/scim/Roles
メソッド : GET
説明 : W&B organization 内のすべてのカスタムロールの情報を取得します
リクエストの例 :
{
"Resources" : [
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // indicates the predefined role that the custom role inherits from
"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 // inherited from member predefined role
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // custom permission added by admin
}
],
"schemas" : [
""
]
},
{
"description" : "Another sample custom role for example" ,
"id" : "Um9sZToxMg==" ,
"inheritedFrom" : "viewer" , // indicates the predefined role that the custom role inherits from
"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 // inherited from viewer predefined role
},
...
...
{
"name" : "run:stop" ,
"isInherited" : false // custom permission added by admin
}
],
"schemas" : [
""
]
}
],
"itemsPerPage" : 9999 ,
"schemas" : [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"startIndex" : 1 ,
"totalResults" : 2
}
カスタムロールを作成
エンドポイント : <host-url>/scim/Roles
メソッド : POST
説明 : W&B organization に新しいカスタムロールを作成します。
サポートされているフィールド :
フィールド
タイプ
必須
name
文字列
カスタムロールの名前
description
文字列
カスタムロールの説明
permissions
オブジェクト配列
各オブジェクトに w&bobject:operation
の形式の value を持つ name
文字列フィールドが含まれる、権限オブジェクトの配列。たとえば、W&B の Runs に対する削除操作の権限オブジェクトには、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" , // indicates the predefined role
"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 // inherited from member predefined role
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // custom permission added by admin
}
],
"schemas" : [
""
]
}
カスタムロールを削除
エンドポイント : <host-url>/scim/Roles/{id}
メソッド : DELETE
説明 : W&B organization 内のカスタムロールを削除します。使用には注意してください 。カスタムロールが継承した定義済みのロールが、操作前にカスタムロールを割り当てられていたすべての Users に割り当てられるようになりました。
リクエストの例 :
カスタムロールの権限を更新
エンドポイント : <host-url>/scim/Roles/{id}
メソッド : PATCH
説明 : W&B organization のカスタムロールで、カスタム権限を追加または削除します。
サポートされているフィールド :
フィールド
タイプ
必須
operations
オブジェクト配列
操作オブジェクトの配列
op
文字列
操作オブジェクト内の操作のタイプ。add
または remove
のいずれかになります。
path
文字列
操作オブジェクト内の静的フィールド。許可される value は permissions
のみです。
value
オブジェクト配列
各オブジェクトに w&bobject:operation
の形式の value を持つ name
文字列フィールドが含まれる、権限オブジェクトの配列。たとえば、W&B の Runs に対する削除操作の権限オブジェクトには、name
として run:delete
が設定されます。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "add" , // indicates the type of operation, other possible value being `remove`
"path" : "permissions" ,
"value" : [
{
"name" : "project:delete"
}
]
}
]
}
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // indicates the predefined role
"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 // inherited from member predefined role
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // existing custom permission added by admin before the update
},
{
"name" : "project:delete" ,
"isInherited" : false // new custom permission added by admin as part of the update
}
],
"schemas" : [
""
]
}
カスタムロールのメタデータを更新
エンドポイント : <host-url>/scim/Roles/{id}
メソッド : PUT
説明 : W&B organization のカスタムロールの名前、説明、または継承されたロールを更新します。この操作は、カスタムロールの既存の(つまり、継承されていない)カスタム権限には影響しません。
サポートされているフィールド :
フィールド
タイプ
必須
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" , // changed the descripton per the request
"id" : "Um9sZTo3" ,
"inheritedFrom" : "viewer" , // indicates the predefined role which is changed per the request
"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 // inherited from viewer predefined role
},
... // Any permissions that are in member predefined role but not in viewer will not be inherited post the update
{
"name" : "project:update" ,
"isInherited" : false // custom permission added by admin
},
{
"name" : "project:delete" ,
"isInherited" : false // custom permission added by admin
}
],
"schemas" : [
""
]
}
2.5 - Advanced IAM configuration
基本的な環境変数 に加えて、環境変数を使用して、専用クラウド またはセルフマネージド インスタンスのIAMオプションを構成できます。
IAMのニーズに応じて、インスタンスに対して次のいずれかの環境変数を選択してください。
環境変数
説明
DISABLE_SSO_PROVISIONING
これを true
に設定すると、W&Bインスタンスでの ユーザー の自動プロビジョニングがオフになります。
SESSION_LENGTH
デフォルトの ユーザー セッションの有効期限を変更する場合は、この変数を目的の時間数に設定します。たとえば、SESSION_LENGTHを 24
に設定すると、セッションの有効期限が24時間に構成されます。デフォルト値は720時間です。
GORILLA_ENABLE_SSO_GROUP_CLAIMS
OIDCベースのSSOを使用している場合は、この変数を true
に設定すると、OIDCグループに基づいてインスタンス内のW&B team メンバーシップが自動化されます。 ユーザー OIDCトークンに groups
クレームを追加します。各エントリが ユーザー が所属するW&B teamの名前である文字列配列である必要があります。配列には、 ユーザー が所属するすべての team が含まれている必要があります。
GORILLA_LDAP_GROUP_SYNC
LDAPベースのSSOを使用している場合は、true
に設定すると、LDAPグループに基づいてインスタンス内のW&B team メンバーシップが自動化されます。
GORILLA_OIDC_CUSTOM_SCOPES
OIDCベースのSSOを使用している場合は、W&BインスタンスがIDプロバイダーに要求する必要がある追加のスコープ を指定できます。W&Bは、これらのカスタムスコープによってSSO機能を変更することはありません。
GORILLA_USE_IDENTIFIER_CLAIMS
OIDCベースのSSOを使用している場合は、この変数を true
に設定して、IDプロバイダーからの特定のOIDCクレームを使用して ユーザー の ユーザー 名とフルネームを強制します。設定する場合は、preferred_username
および name
OIDCクレームで、強制される ユーザー 名とフルネームを構成していることを確認してください。 ユーザー 名には、英数字と、特殊文字としてアンダースコアとハイフンのみを含めることができます。
GORILLA_DISABLE_PERSONAL_ENTITY
これを true
に設定すると、W&Bインスタンス内の個人の ユーザー project がオフになります。設定すると、 ユーザー は個人の entity に新しい個人 project を作成できなくなり、既存の個人 project への書き込みもオフになります。
GORILLA_DISABLE_ADMIN_TEAM_ACCESS
これを true
に設定すると、組織またはインスタンス管理者がW&B teamに自己参加または自己追加することを制限し、Data & AIペルソナのみが team 内の project にアクセスできるようにします。
W&Bは、GORILLA_DISABLE_ADMIN_TEAM_ACCESS
など、これらの 設定 の一部を有効にする前に、注意を払い、すべての影響を理解することをお勧めします。ご不明な点がございましたら、W&B teamにお問い合わせください。
3 - Data security
3.1 - Bring your own bucket (BYOB)
Bring your own bucket (BYOB) を使用すると、W&B の Artifacts やその他の関連する機密データを、お客様の クラウド または オンプレミス の インフラストラクチャー に保存できます。専用クラウド または SaaS Cloud の場合、お客様の バケット に保存する データ は、W&B が管理する インフラストラクチャー にコピーされません。
W&B SDK / CLI / UI とお客様の バケット 間の通信は、事前署名付き URL を使用して行われます。
W&B は、W&B Artifacts を削除するためにガベージコレクション プロセス を使用します。詳細については、Artifacts の削除 を参照してください。
バケット を構成する際にサブパスを指定して、W&B が バケット のルートにあるフォルダーにファイルを保存しないようにすることができます。これは、組織の バケット ガバナンス ポリシーへの準拠を向上させるのに役立ちます。
中央データベースに保存されるデータと バケット に保存されるデータ
BYOB 機能を使用する場合、特定の種類の データ は W&B 中央データベースに保存され、他の種類の データ はお客様の バケット に保存されます。
データベース
ユーザー 、 Teams、Artifacts、Experiments、および Projects の メタデータ
Reports
Experiment ログ
システム メトリクス
バケット
Experiment ファイルと メトリクス
Artifact ファイル
メディア ファイル
Run ファイル
設定オプション
ストレージ バケット を構成できる スコープ は、インスタンス レベル または Team レベル の 2 つです。
インスタンス レベル: 組織内で関連する 権限 を持つ ユーザー は、インスタンス レベルのストレージ バケット に保存されているファイルに アクセス できます。
Team レベル: W&B Team の メンバー は、Team レベルで構成された バケット に保存されているファイルに アクセス できます。Team レベルのストレージ バケット を使用すると、機密性の高い データ や厳格なコンプライアンス要件を持つ Teams に対して、より優れた データ アクセス制御と データ 分離が可能になります。
インスタンス レベルで バケット を構成することも、組織内の 1 つまたは複数の Teams に対して個別に構成することもできます。
たとえば、組織に Kappa という Team があるとします。組織 (および Team Kappa) は、デフォルトでインスタンス レベルのストレージ バケット を使用します。次に、Omega という Team を作成します。Team Omega を作成するときに、その Team の Team レベルのストレージ バケット を構成します。Team Omega によって生成されたファイルは、Team Kappa からは アクセス できません。ただし、Team Kappa によって作成されたファイルは、Team Omega から アクセス できます。Team Kappa の データを分離する場合は、Team レベルのストレージ バケット を構成する必要があります。
Team レベルのストレージ バケット は、特に異なる事業部門や部署が 1 つの インスタンス を共有して インフラストラクチャー と管理リソースを効率的に利用する場合、
自己管理 インスタンス にも同じメリットをもたらします。これは、個別の顧客エンゲージメントのために AI ワークフロー を管理する個別の プロジェクト Teams を持つ企業にも当てはまります。
可用性マトリックス
次の表は、さまざまな W&B サーバー デプロイメント タイプ における BYOB の可用性を示しています。X
は、その機能が特定の デプロイメント タイプ で利用できることを意味します。
W&B サーバー デプロイメント タイプ
インスタンス レベル
Team レベル
追加情報
専用クラウド
X
X
インスタンス および Team レベルの BYOB は、Amazon Web Services、Google Cloud Platform、および Microsoft Azure で利用できます。Team レベルの BYOB の場合、同じ クラウド または別の クラウド 内の クラウド ネイティブ ストレージ バケット、または クラウド または オンプレミス の インフラストラクチャー でホストされている MinIO などの S3 互換のセキュア ストレージに接続できます。
SaaS Cloud
適用外
X
Team レベルの BYOB は、Amazon Web Services と Google Cloud Platform でのみ利用できます。W&B は、Microsoft Azure のデフォルトのストレージ バケット と唯一のストレージ バケット を完全に管理します。
自己管理
X
X
インスタンス レベルの BYOB は、インスタンス がお客様によって完全に管理されているため、デフォルトです。自己管理 インスタンス が クラウド にある場合、Team レベルの BYOB 用に、同じ クラウド または別の クラウド 内の クラウド ネイティブ ストレージ バケット に接続できます。インスタンス または Team レベルの BYOB のいずれかに対して、MinIO などの S3 互換のセキュア ストレージを使用することもできます。
専用クラウド または 自己管理 インスタンス の インスタンス または Team レベルのストレージ バケット 、または SaaS Cloud アカウントの Team レベルのストレージ バケット を構成すると、これらの スコープ のストレージ バケット を変更または再構成することはできません。これには、別の バケット に データを移行したり、メイン プロダクト ストレージ内の関連する参照を再マップしたりすることも含まれます。W&B では、インスタンス または Team レベルの スコープ のいずれかを構成する前に、ストレージ バケット のレイアウトを慎重に計画することを推奨します。ご不明な点がございましたら、W&B Team までお問い合わせください。
Team レベルの BYOB 向けのクロス クラウド または S3 互換ストレージ
専用クラウド または 自己管理 インスタンス の Team レベルの BYOB 用に、別の クラウド 内の クラウド ネイティブ ストレージ バケット 、または MinIO などの S3 互換ストレージ バケット に接続できます。
クロス クラウド または S3 互換ストレージの使用を有効にするには、W&B インスタンス の GORILLA_SUPPORTED_FILE_STORES
環境 変数を使用して、次のいずれかの形式で、関連する アクセス キー を含むストレージ バケット を指定します。
専用クラウド または 自己管理 インスタンス で Team レベルの BYOB 用に S3 互換ストレージを構成する
次の形式でパスを指定します。
s3://<accessKey>:<secretAccessKey>@<url_endpoint>/<bucketName>?region=<region>?tls=true
region
パラメータ は必須です。ただし、W&B インスタンス が AWS にあり、W&B インスタンス ノード で構成された AWS_REGION
が S3 互換ストレージ用に構成された リージョン と一致する場合は除きます。
専用クラウド または 自己管理 インスタンス で Team レベルの 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>
Team レベルの BYOB 用の S3 互換ストレージへの接続は、
SaaS Cloud では利用できません。また、Team レベルの BYOB 用の AWS バケット への接続は、その インスタンス が GCP にあるため、
SaaS Cloud ではクロス クラウド です。そのクロス クラウド 接続は、
専用クラウド および
自己管理 インスタンス で以前に概説した アクセス キー と環境 変数 ベースのメカニズムを使用しません。
詳細については、W&B サポート (support@wandb.com ) までお問い合わせください。
W&B プラットフォーム と同じ クラウド 内の クラウド ストレージ
ユースケース に基づいて、Team または インスタンス レベルでストレージ バケット を構成します。ストレージ バケット のプロビジョニングまたは構成方法は、Azure の アクセス メカニズムを除き、構成されているレベルに関係なく同じです。
W&B では、必要な アクセス メカニズムと関連する IAM 権限 とともにストレージ バケット をプロビジョニングするために、W&B が管理する Terraform モジュール を使用することを推奨します。
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 Cloud または 専用クラウド を使用している場合は、<aws_principal_and_role_arn>
を対応する 値 に置き換えます。
SaaS Cloud : 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 Team と共有します。任意の デプロイメント タイプ の Team レベルの BYOB の場合は、Team の作成中に バケット を構成します 。
SaaS Cloud または 専用クラウド を使用している場合は、<aws_principal_and_role_arn>
を対応する 値 に置き換えます。
SaaS Cloud : arn:aws:iam::725579432336:role/WandbIntegration
専用クラウド : arn:aws:iam::830241207209:root
詳細については、AWS 自己管理 ホスティング ガイド を参照してください。
GCS バケット をプロビジョニングします。
次の手順に従って、GCP プロジェクト で GCS バケット をプロビジョニングします。
任意の名前で GCS バケット を作成します。オプションで、すべての W&B ファイルを保存するためのサブパスとして構成できるフォルダーを作成します。
ソフト削除を有効にします。
オブジェクト の バージョン管理 を有効にします。
暗号化 タイプ を Google-managed
に設定します。
gsutil
で CORS ポリシー を設定します。これは UI では実行できません。
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 Cloud または 専用クラウド を使用している場合は、W&B プラットフォーム にリンクされている GCP サービス アカウント に Storage Admin
ロール を付与します。
SaaS Cloud の場合、アカウント は wandb-integration@wandb-production.iam.gserviceaccount.com
です。
専用クラウド の場合、アカウント は deploy@wandb-production.iam.gserviceaccount.com
です。
バケット 名の記録を保持します。専用クラウド を使用している場合は、インスタンス レベルの BYOB の場合に備えて、 バケット 名を W&B Team と共有します。任意の デプロイメント タイプ の Team レベルの BYOB の場合は、Team の作成中に バケット を構成します 。
Azure Blob Storage をプロビジョニングします。
インスタンス レベルの BYOB の場合、この Terraform モジュール を使用していない場合は、次の手順に従って Azure サブスクリプション で Azure Blob Storage バケット をプロビジョニングします。
任意の名前で バケット を作成します。オプションで、すべての W&B ファイルを保存するためのサブパスとして構成できるフォルダーを作成します。
BLOB とコンテナー のソフト削除を有効にします。
バージョン管理 を有効にします。
バケット で CORS ポリシー を構成します。
UI から CORS ポリシー を設定するには、BLOB ストレージに移動し、[設定] -> [リソース共有 (CORS)]
までスクロールして、次のように設定します。
パラメータ
値
許可される オリジン
*
許可される メソッド
GET
、HEAD
、PUT
許可される ヘッダー
*
公開される ヘッダー
*
最大年齢
3600
ストレージ アカウント の アクセス キー を生成し、ストレージ アカウント 名とともに記録を保持します。専用クラウド を使用している場合は、安全な共有メカニズムを使用して、ストレージ アカウント 名と アクセス キー を W&B Team と共有します。
Team レベルの BYOB の場合、W&B では、必要な アクセス メカニズムと 権限 とともに Azure Blob Storage バケット をプロビジョニングするために、Terraform を使用することを推奨します。専用クラウド を使用する場合は、インスタンス の OIDC 発行者 URL を指定します。Team の作成中に バケット を構成する ために必要な詳細をメモしておきます。
ストレージ アカウント 名
ストレージ コンテナー 名
マネージド ID クライアント ID
Azure テナント ID
W&B で BYOB を構成する
W&B Team を作成するときに Team レベルでストレージ バケット を構成するには:
[Team 名] フィールドに Team の名前を入力します。
[ストレージ タイプ] オプションで [外部ストレージ] を選択します。
ドロップダウンから [新しい バケット ] を選択するか、既存の バケット を選択します。
複数の W&B Teams が同じ クラウド ストレージ バケット を使用できます。これを有効にするには、ドロップダウンから既存の クラウド ストレージ バケット を選択します。
[クラウド プロバイダー] ドロップダウンから、 クラウド プロバイダーを選択します。
[名前] フィールドにストレージ バケット の名前を入力します。専用クラウド または Azure 上の 自己管理 インスタンス がある場合は、[アカウント 名] フィールドと [コンテナー 名] フィールドに値を入力します。
(オプション) オプションの [パス] フィールドに バケット サブパスを入力します。W&B が バケット のルートにあるフォルダーにファイルを保存しないようにする場合は、これを行います。
(AWS バケット を使用している場合はオプション) [KMS キー ARN] フィールドに KMS 暗号化 キー の ARN を入力します。
(Azure バケット を使用している場合はオプション) [テナント ID] フィールドと [マネージド ID クライアント ID] フィールドに値を入力します。
(SaaS Cloud ではオプション) Team の作成時に Team メンバー を招待します。
[Team を作成] ボタンを押します。
バケット への アクセス に問題がある場合、または バケット の 設定 が無効な場合、ページの下部に エラー または 警告 が表示されます。
専用クラウド または 自己管理 インスタンス の インスタンス レベルの BYOB を構成するには、W&B サポート (support@wandb.com ) までお問い合わせください。
3.2 - Access BYOB using pre-signed URLs
W&B は、AI ワークロードまたは ユーザー のブラウザーからの blob ストレージへの アクセス を簡素化するために、事前署名付き URL を使用します。事前署名付き URL の基本情報については、AWS S3 の事前署名付き URL 、Google Cloud Storage の署名付き URL 、Azure Blob Storage の Shared Access Signature を参照してください。
必要な場合、ネットワーク内の AI ワークロードまたは ユーザー ブラウザー クライアントは、W&B Platform から事前署名付き URL を要求します。W&B Platform は、関連する blob ストレージに アクセス し、必要な権限を持つ事前署名付き URL を生成し、クライアントに返します。次に、クライアントは事前署名付き URL を使用して blob ストレージに アクセス し、 オブジェクト のアップロードまたは取得操作を行います。 オブジェクト のダウンロードの URL 有効期限は 1 時間、 オブジェクト のアップロードは 24 時間です。これは、一部の大きな オブジェクト をチャンク単位でアップロードするのに時間がかかる場合があるためです。
Team レベルの アクセス 制御
各事前署名付き URL は、W&B platform の team level access control に基づいて、特定の バケット に制限されています。 ユーザー が secure storage connector を使用して blob ストレージ バケット にマッピングされている team の一部であり、その ユーザー がその team の一部である場合、リクエスト に対して生成された事前署名付き URL には、他の team にマッピングされた blob ストレージ バケット に アクセス する権限はありません。
W&B は、 ユーザー が所属するはずの team のみに追加することをお勧めします。
ネットワーク制限
W&B は、 バケット で IAM ポリシー ベースの制限を使用することにより、事前署名付き URL を使用して blob ストレージに アクセス できるネットワークを制限することをお勧めします。
AWS の場合、VPC または IP アドレス ベースのネットワーク制限 を使用できます。これにより、W&B 固有の バケット には、AI ワークロードが実行されているネットワークからのみ、または ユーザー が W&B UI を使用して アーティファクト に アクセス する場合、 ユーザー マシンにマッピングされるゲートウェイ IP アドレスからのみ アクセス されるようになります。
監査 ログ
W&B は、blob ストレージ 固有の 監査 ログ に加えて、W&B audit logs を使用することもお勧めします。後者については、AWS S3 access logs 、Google Cloud Storage audit logs および Monitor Azure blob storage を参照してください。管理者およびセキュリティ team は、 監査 ログ を使用して、W&B 製品でどの ユーザー が何をしているかを追跡し、特定の ユーザー に対して一部の操作を制限する必要があると判断した場合に必要なアクションを実行できます。
事前署名付き URL は、W&B でサポートされている唯一の blob ストレージ アクセス メカニズムです。W&B は、リスク許容度に応じて、上記のセキュリティ制御のリストの一部または全部を構成することをお勧めします。
3.3 - Configure IP allowlisting for Dedicated Cloud
専用クラウド インスタンスへの アクセス を、許可された IP アドレス のリストのみに制限できます。これは、AI ワークロードから W&B API への アクセス と、 ユーザー のブラウザーから W&B アプリ UI への アクセス の両方に適用されます。 専用クラウド インスタンスに対して IP アドレス許可リストが設定されると、W&B は許可されていない場所からのリクエストをすべて拒否します。 専用クラウド インスタンスの IP アドレス許可リストを構成するには、W&B チームにお問い合わせください。
IP アドレス許可リストは、AWS、GCP、Azure の 専用クラウド インスタンスで利用できます。
IP アドレス許可リストは、セキュアプライベート接続 で使用できます。セキュアプライベート接続で IP アドレス許可リストを使用する場合、W&B は、AI ワークロードからのすべてのトラフィックと、可能な場合は ユーザー ブラウザーからのトラフィックの大部分にセキュアプライベート接続を使用し、特権のある場所からのインスタンス管理には IP アドレス許可リストを使用することをお勧めします。
W&B では、個々の「/32」IP アドレスではなく、企業またはビジネスの出力ゲートウェイに割り当てられた
CIDR ブロック を使用することを強くお勧めします。個々の IP アドレスの使用はスケーラブルではなく、クラウドごとに厳密な制限があります。
3.4 - Configure private connectivity to Dedicated Cloud
専用クラウド インスタンスには、クラウドプロバイダーのセキュアなプライベートネットワーク経由で接続できます。これは、AI ワークロードから W&B API へのアクセス、およびオプションで ユーザー のブラウザーから W&B アプリ UI へのアクセスに適用されます。プライベート接続を使用する場合、関連するリクエストとレスポンスは、パブリックネットワークまたはインターネットを経由しません。
セキュアなプライベート接続は、Dedicated Cloud の高度なセキュリティオプションとして近日提供予定です。
セキュアなプライベート接続は、AWS、GCP、Azure の Dedicated Cloud インスタンスで利用できます。
有効にすると、W&B はインスタンス用のプライベートエンドポイントサービスを作成し、接続するための関連する DNS URI を提供します。これにより、クラウドアカウントにプライベートエンドポイントを作成し、関連するトラフィックをプライベートエンドポイントサービスにルーティングできます。プライベートエンドポイントは、クラウド VPC または VNet 内で実行されている AI トレーニング ワークロードのセットアップが容易です。ユーザー のブラウザーから W&B アプリ UI へのトラフィックに同じメカニズムを使用するには、企業ネットワークからクラウドアカウントのプライベートエンドポイントへの適切な DNS ベースのルーティングを構成する必要があります。
この機能を使用したい場合は、W&B チームにお問い合わせください。
セキュアなプライベート接続は、IP 許可リスト で使用できます。IP 許可リストにセキュアなプライベート接続を使用する場合、W&B は、AI ワークロードからのすべてのトラフィック、および可能な場合は ユーザー のブラウザーからのトラフィックの大部分に対してセキュアなプライベート接続を保護し、特権のある場所からのインスタンス管理には IP 許可リストを使用することをお勧めします。
3.5 - Data encryption in Dedicated cloud
W&B は、各 専用クラウド で、W&B が管理するクラウドネイティブな キー を使用して、W&B が管理するデータベースと オブジェクト ストレージを暗号化します。これは、各 クラウド における顧客管理の暗号化キー (CMEK) 機能を使用することで実現しています。この場合、W&B は クラウド プロバイダーの「顧客」として機能し、W&B プラットフォーム をサービスとして提供します。W&B 管理の キー を使用するということは、W&B が各 クラウド で データを暗号化するために使用する キー を管理できることを意味し、すべてのお客様に高度に安全な プラットフォーム を提供するという約束を強化することになります。
W&B は、各顧客インスタンス内の データを暗号化するために「一意の キー 」を使用し、専用クラウド テナント間の分離をさらに強化します。この機能は、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 が管理するデータベースと オブジェクト ストレージを暗号化することを許可していません。これは、組織内の複数の Teams と担当者が、さまざまな理由で クラウド インフラストラクチャー にアクセスできる可能性があるためです。これらの Teams または担当者の中には、組織のテクノロジー スタックにおける重要なコンポーネントとしての W&B に関する知識がない場合があり、クラウドネイティブな キー を完全に削除したり、W&B の アクセス を取り消したりする可能性があります。このような行為は、組織の W&B インスタンス内のすべての データを破損させ、回復不能な状態にする可能性があります。
組織が独自のクラウドネイティブな キー を使用して、W&B が管理するデータベースと オブジェクト ストレージを暗号化し、AI ワークフロー での 専用クラウド の使用を承認する必要がある場合、W&B は例外ベースでそれをレビューできます。承認された場合、暗号化にクラウドネイティブな キー を使用することは、W&B 専用クラウド の「責任共有モデル」に準拠します。組織内の ユーザー が、専用クラウド インスタンスが稼働しているときに、キー を削除したり、W&B の アクセス を取り消したりした場合、W&B は結果として生じる データ の損失または破損について責任を負わず、そのような データの回復についても責任を負いません。
4 - Configure privacy settings
組織と Team の管理者は、それぞれ組織と Team のスコープで一連のプライバシー設定を構成できます。組織スコープで構成した場合、組織管理者はその設定を組織内のすべての Team に対して適用します。
W&B は、組織管理者が組織内のすべての Team 管理者と User に事前に伝えてから、プライバシー設定を適用することを推奨します。これは、ワークフローにおける予期しない変更を避けるためです。
Team のプライバシー設定を構成する
Team 管理者は、Team の Settings タブの Privacy
セクション内で、それぞれの Team のプライバシー設定を構成できます。各設定は、組織スコープで適用されていない限り構成可能です。
この Team をすべての非メンバーから隠す
今後のすべての Team の Projects をプライベートにする (パブリック共有は許可されません)
すべての Team メンバーが他のメンバーを招待できるようにする (管理者だけでなく)
プライベート Project の Reports について、Team の外部へのパブリック共有をオフにします。これにより、既存の Magic Link がオフになります。
組織の Email ドメインが一致する User がこの Team に参加できるようにする。
デフォルトで Code の保存を有効にする。
すべての Team にプライバシー設定を適用する
組織管理者は、アカウントまたは組織の ダッシュボード の Settings タブの Privacy
セクション内で、組織内のすべての Team にプライバシー設定を適用できます。組織管理者が設定を適用すると、Team 管理者はそれぞれの Team 内でそれを構成できなくなります。
Team の可視性制限を適用する
このオプションを有効にすると、すべての Team が非メンバーから隠されます
今後の Projects にプライバシーを適用する
このオプションを有効にすると、すべての Team の今後のすべての Projects がプライベートまたは 制限付き になるように適用されます
招待コントロールを適用する
このオプションを有効にすると、管理者以外のメンバーが Team にメンバーを招待できなくなります
Report の共有コントロールを適用する
このオプションを有効にすると、プライベート Project 内の Reports のパブリック共有が無効になり、既存の Magic Link が無効になります
Team のセルフ参加制限を適用する
デフォルトの Code 保存制限を適用する
このオプションを有効にすると、すべての Team でデフォルトで Code の保存が無効になります
5 - Monitoring and usage
5.1 - Track user activity with audit logs
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
アクションに関連付けられた Artifact ID (該当する場合)。
artifact_digest
アクションに関連付けられた Artifact ダイジェスト (該当する場合)。
artifact_qualified_name
アクションに関連付けられた Artifact の完全名 (該当する場合)。
artifact_sequence_asset
アクションに関連付けられた Artifact シーケンス ID (該当する場合)。
cli_version
アクションを開始した Python SDK のバージョン (該当する場合)。
entity_asset
アクションに関連付けられた Entity または Team ID (該当する場合)。
entity_name
Entity または Team 名 (該当する場合)。
project_asset
アクションに関連付けられた Project (該当する場合)。
project_name
アクションに関連付けられた Project の名前 (該当する場合)。
report_asset
アクションに関連付けられた Report ID (該当する場合)。
report_name
アクションに関連付けられた Report の名前 (該当する場合)。
response_code
アクションの HTTP レスポンスコード (該当する場合)。
timestamp
RFC3339 形式 でのイベントの時刻。たとえば、2023-01-23T12:34:56Z
は、2023 年 1 月 23 日の 12:34:56 UTC を表します。
user_asset
アクションが影響を与える User アセット (アクションを実行するユーザーではなく) (該当する場合)。
user_email
アクションが影響を与える User のメールアドレス (アクションを実行するユーザーのメールアドレスではなく) (該当する場合)。
個人情報 (PII)
メールアドレスや Projects、Teams、Reports の名前などの個人情報 (PII) は、API エンドポイントオプションでのみ利用できます。
監査ログの取得
組織またはインスタンス管理者は、エンドポイント audit_logs/
で Audit Logging API を使用して、W&B インスタンスの監査ログを取得できます。
管理者以外のユーザーが監査ログを取得しようとすると、HTTP 403
エラーが発生し、アクセスが拒否されたことを示します。
複数の Enterprise SaaS Cloud 組織の管理者である場合は、監査ログ API リクエストの送信先となる組織を構成する必要があります。プロファイル画像をクリックし、[User Settings] をクリックします。設定の名前は [Default API organization] です。
インスタンスの正しい API エンドポイントを決定します。
以下の手順では、<API-endpoint>
を API エンドポイントに置き換えます。
ベースエンドポイントから完全な API エンドポイントを作成し、オプションで URL パラメータを含めます。
anonymize
: true
に設定すると、PII が削除されます。デフォルトは false
です。監査ログの取得時に PII を除外 を参照してください。SaaS Cloud ではサポートされていません。
numDays
: ログは today - numdays
から最新のものまで取得されます。デフォルトは 0
で、today
のログのみが返されます。SaaS Cloud の場合、過去最大 7 日間の監査ログを取得できます。
startDate
: オプションの日付で、形式は YYYY-MM-DD
です。SaaS Cloud でのみサポートされています。
startDate
と numDays
は相互に作用します。
startDate
と numDays
の両方を設定した場合、ログは startDate
から startDate
+ numDays
まで返されます。
startDate
を省略して numDays
を含めた場合、ログは today
から numDays
まで返されます。
startDate
も numDays
も設定しない場合、ログは today
に対してのみ返されます。
Web ブラウザーまたは Postman 、HTTPie 、cURL などのツールを使用して、構築された完全修飾 API エンドポイントに対して HTTP GET
リクエストを実行します。
API レスポンスには、改行で区切られた JSON オブジェクトが含まれています。オブジェクトには、監査ログがインスタンスレベルのバケットに同期される場合と同様に、スキーマ で説明されているフィールドが含まれます。これらの場合、監査ログはバケットの /wandb-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 を含む監査ログの関連フィールドを返します。これは構成できません。
PII を除外するには、anonymize=true
URL パラメータを渡します。たとえば、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 が作成されました。
artifact:delete
Artifact が削除されました。
artifact:read
Artifact が読み取られました。
project:delete
Project が削除されました。
project:read
Project が読み取られました。
report:read
Report が読み取られました。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 に対して作成されました。
team:create
Team が作成されました。
team:delete
Team が削除されました。
team:invite_user
User が Team に招待されました。
team:uninvite
User またはサービスアカウントが Team から招待解除されました。
user:create_api_key
User の APIキー が作成されました。1
user:create
User が作成されました。1
user:deactivate
User が非アクティブ化されました。1
user:delete_api_key
User の APIキー が削除されました。1
user:initiate_login
User がログインを開始しました。1
user:login
User がログインしました。1
user:logout
User がログアウトしました。1
user:permanently_delete
User が完全に削除されました。1
user:reactivate
User が再アクティブ化されました。1
user:read
User プロファイルが読み取られました。1
user:update
User が更新されました。1
1 : SaaS Cloud では、次の監査ログは収集されません。
オープンまたはパブリック Projects。
report:read
アクション。
特定の組織に関連付けられていない User
アクション。
5.2 - Use Prometheus monitoring
W&B サーバー で Prometheus を使用します。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
テスト pod が起動します。これは、ネットワーク内のものにアクセスするためだけに exec できます。
kubectl run -it testpod --image= alpine bin/ash --restart= Never --rm
そこから、ネットワークへの内部 アクセス を維持するか、kubernetes nodeport サービスを使用して自分で公開するかを選択できます。
5.3 - Configure Slack alerts
W&B Server を Slack と連携させます。
Slack アプリケーションの作成
以下の手順に従って Slack アプリケーションを作成します。
https://api.slack.com/apps にアクセスし、Create an App を選択します。
App Name フィールドにアプリの名前を入力します。
アプリの開発に使用する Slack ワークスペースを選択します。使用する Slack ワークスペースが、アラートに使用するワークスペースと同じであることを確認してください。
Slack アプリケーションの設定
左側のサイドバーで、OAth & Permissions を選択します。
Scopes セクションで、ボットに incoming_webhook スコープを付与します。スコープは、開発ワークスペースでアクションを実行するための権限をアプリに付与します。
ボットの OAuth スコープの詳細については、Slack API ドキュメントのボットの OAuth スコープの理解に関するチュートリアルを参照してください。
リダイレクト URL が W&B インストールを指すように設定します。ホスト URL がローカル システム 設定で設定されている URL と同じ URL を使用します。インスタンスへの DNS マッピングが異なる場合は、複数の URL を指定できます。
Save URLs を選択します。
オプションで、Restrict API Token Usage で IP 範囲を指定し、W&B インスタンスの IP または IP 範囲を許可リストに登録できます。許可される IP アドレスを制限すると、Slack アプリケーションのセキュリティをさらに強化できます。
W&B への Slack アプリケーションの登録
デプロイメントに応じて、W&B インスタンスの System Settings または System Console ページに移動します。
表示されている System ページに応じて、以下のいずれかのオプションに従ってください。
Slack client ID と Slack secret を入力し、Save をクリックします。Settings の Basic Information に移動して、アプリケーションの client ID と secret を確認します。
W&B アプリで Slack インテグレーションを設定して、すべてが機能していることを確認します。
5.4 - View organization dashboard
W&B の組織利用状況の表示
Organization dashboard を使用して、組織の W&B の利用状況を全体的に把握できます。ダッシュボードはタブで構成されています。
Users : 各 ユーザー の詳細(名前、メールアドレス、Teams、役割、最終アクティビティなど)をリスト表示します。
Service accounts : サービスアカウントの詳細をリスト表示し、サービスアカウントを作成できます。
Activity : 各 ユーザー のアクティビティの詳細をリスト表示します。
Teams : 各 Team の詳細(ユーザー数、追跡時間など)をリスト表示し、管理者が Team に参加できるようにします。
Billing : 組織の料金を要約し、請求 Reports の実行とエクスポートを可能にし、ライセンスの詳細(有効期限など)を表示します。
Settings : プライバシーと認証に関連するカスタムロールと設定を構成できます。
ユーザー のステータスの表示
Users タブには、すべての ユーザー と、各 ユーザー に関する データ がリスト表示されます。「最終アクティブ」列には、 ユーザー が招待を承諾したかどうかと、 ユーザー の現在のステータスが表示されます。
Invite pending : 管理者が招待を送信しましたが、 ユーザー が招待を承諾していません。
Active : ユーザー が招待を承諾し、アカウントを作成しました。
- : ユーザー は以前はアクティブでしたが、過去 6 か月間アクティブではありません。
Deactivated : 管理者が ユーザー のアクセスを取り消しました。
アクティビティで ユーザー のリストを並べ替えるには、[最終アクティブ] 列の見出しをクリックします。
組織が W&B をどのように使用しているかの表示と共有
Users タブから、組織が W&B をどのように使用しているかの詳細を CSV 形式で表示します。
[新しい ユーザー を招待] ボタンの横にあるアクション ...
メニューをクリックします。
[CSV としてエクスポート] をクリックします。ダウンロードされる CSV ファイルには、組織の各 ユーザー の詳細( ユーザー 名、メール アドレス、最終アクティブ時間、役割など)がリスト表示されます。
ユーザー アクティビティの表示
Users タブの 最終アクティブ 列を使用して、個々の ユーザー の アクティビティの概要 を取得します。
最終アクティブ で ユーザー のリストを並べ替えるには、列名をクリックします。
ユーザー の最終アクティビティの詳細を表示するには、 ユーザー の 最終アクティブ フィールドにマウスを合わせます。ユーザー が追加された時期と、 ユーザー がアクティブであった合計日数を示すツールチップが表示されます。
ユーザー は、次のいずれかに該当する場合に アクティブ になります。
W&B にログインする。
W&B App で任意のページを表示する。
Runs を ログ する。
SDK を使用して experiment を追跡する。
何らかの方法で W&B Server とやり取りする。
経時的なアクティブ ユーザー の表示
Activity タブのプロットを使用して、経時的にアクティブな ユーザー 数を集計して表示します。
Activity タブをクリックします。
アクティブ ユーザー の合計 プロットは、一定期間にアクティブであった ユーザー 数を示します(デフォルトは 3 か月)。
経時的なアクティブ ユーザー プロットは、一定期間のアクティブ ユーザー の変動を示します(デフォルトは 6 か月)。ポイントにマウスを合わせると、その日付の ユーザー 数が表示されます。
プロットの期間を変更するには、ドロップダウンを使用します。選択できるオプションは次のとおりです。
過去 30 日間
過去 3 か月
過去 6 か月
過去 12 か月
全期間
6 - Configure SMTP
W&B サーバー では、インスタンスまたは Team に ユーザー を追加すると、メールによる招待が送信されます。これらのメールによる招待を送信するために、W&B はサードパーティのメールサーバーを使用します。組織によっては、企業ネットワークから送信されるトラフィックに関する厳格なポリシーがあり、その結果、これらのメールによる招待がエンド ユーザー に送信されない場合があります。W&B サーバー には、社内の 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 のデフォルトの送信者メール アドレス (最初は noreply@wandb.com
に設定されています)を構成するには、サーバー 上の GORILLA_EMAIL_FROM_ADDRESS
環境 変数 を目的の送信者メール アドレス に更新します。
7 - Configure environment variables
W&B サーバー のインストールを設定する方法
System Settings 管理 UI を使用してインスタンスレベルの 設定 を行うことに加えて、W&B は 環境変数 を使用してコードでこれらの 値 を 設定 する 方法 も提供します。また、IAM の 高度な 設定 も参照してください。
環境変数 のリファレンス
環境変数
説明
LICENSE
wandb/ローカルライセンス
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 ID プロバイダーの URL。例えば、https://cognito-idp.us-east-1.amazonaws.com/us-east-1_uiIFNdacd
です。
OIDC_CLIENT_ID
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 に 設定 すると、管理者以外の ユーザー が 新しい Teams を 作成 できるようになります。デフォルトでは false です。
GORILLA_DATA_RETENTION_PERIOD
削除された run の データ を保持する期間 (時間単位)。削除された run データ は 復元できません。入力 値 に h
を追加します。たとえば、"24h"
。
ENABLE_REGISTRY_UI
true に 設定 すると、新しい W&B Registry UI が有効になります。
GORILLA_DATA_RETENTION_PERIOD 環境変数 は 慎重に使用してください。環境変数 が 設定 されると、データ は 直ちに削除されます。また、このフラグを有効にする前に、データベース と ストレージ バケット の両方を バックアップ することをお勧めします。
高度な 信頼性 設定
Redis
外部 Redis サーバー の 設定 はオプションですが、 production システム では推奨されます。Redis は、サービスの信頼性を向上させ、特に 大規模な Projects での ロード時間 を短縮するために キャッシュ を有効にするのに役立ちます。高可用性 (HA) を備えた ElastiCache などの マネージド 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 - Release process for W&B Server
W&B サーバー のリリース プロセス
頻度とデプロイメントの種類
W&B Server のリリースは、Dedicated Cloud と Self-managed のデプロイメントに適用されます。サーバーのリリースには、次の3種類があります。
リリースの種類
説明
月次
月次リリースには、新機能、機能拡張、および中程度と低程度の重大度のバグ修正が含まれます。
パッチ
パッチリリースには、重大および高重大度のバグ修正が含まれます。パッチは、必要に応じてまれにリリースされます。
機能
機能リリースは、新製品の特定のリリース日を対象としています。これは、標準の月次リリースよりも前に発生することがあります。
すべてのリリースは、受け入れテスト段階が完了すると、すべての Dedicated Cloud インスタンスに直ちにデプロイされます。これにより、管理対象インスタンスは完全に更新され、関連する顧客は最新の機能と修正を利用できます。Self-managed インスタンスを使用している顧客は、自身のスケジュールで 更新プロセス を行う必要があります。その際、最新の Docker イメージ を使用できます。リリースサポートとサポート終了 を参照してください。
一部の高度な機能は、エンタープライズライセンスでのみ利用できます。したがって、最新の Docker イメージを入手しても、エンタープライズライセンスがない場合は、関連する高度な機能を利用できません。
一部の新機能はプライベートプレビューで開始されます。これは、デザインパートナーまたはアーリーアダプターのみが利用できることを意味します。インスタンスでプライベートプレビュー機能を使用するには、W&B チームがその機能を有効にする必要があります。
リリースノート
すべてのリリースのリリースノートは、GitHub の W&B Server Releases で入手できます。Slack を使用している顧客は、W&B Slack チャンネルで自動リリース通知を受信できます。これらの更新を有効にするには、W&B チームにお問い合わせください。
リリース更新とダウンタイム
サーバーのリリースでは、通常、Dedicated Cloud インスタンス、および適切なローリングアップデートプロセスを実装している Self-managed デプロイメントを使用している顧客に対して、インスタンスのダウンタイムは必要ありません。
ダウンタイムは、次のシナリオで発生する可能性があります。
新しい機能または機能拡張には、コンピューティング、ストレージ、ネットワークなどの基盤となるインフラストラクチャーの変更が必要です。W&B は、関連する事前通知を Dedicated Cloud の顧客に送信するように努めています。
セキュリティパッチによるインフラストラクチャーの変更、または特定のバージョンの サポート終了
を回避するための変更。緊急の変更の場合、Dedicated Cloud の顧客は事前通知を受け取らない場合があります。ここでの優先事項は、フリートを安全に保ち、完全にサポートすることです。
どちらの場合も、アップデートは例外なくすべての Dedicated Cloud インスタンスにロールアウトされます。Self-managed インスタンスを使用している顧客は、自身のスケジュールでこのような更新を管理する必要があります。リリースサポートとサポート終了 を参照してください。
リリースサポートとサポート終了ポリシー
W&B は、リリース日から6か月間、すべてのサーバーリリースをサポートします。Dedicated Cloud インスタンスは自動的に更新されます。Self-managed インスタンスを使用している顧客は、サポートポリシーに準拠するために、デプロイメントをタイムリーに更新する必要があります。W&B からのサポートが大幅に制限されるため、6か月以上前のバージョンを使用することは避けてください。
W&B は、Self-managed インスタンスを使用している顧客に対し、少なくとも四半期ごとに最新リリースでデプロイメントを更新することを強く推奨します。これにより、最新かつ最高の機能を使用しながら、リリースのサポート終了を十分に回避できます。