全般
wandb.init
はトレーニングプロセスに何をするのでしょうか?
トレーニングスクリプトからwandb.init()
が呼び出されると、APIコールが行われ、サーバー上に run オブジェクトが作成されます。新しいプロセスが開始され、メトリクスをストリームし収集します。これにより、主要なプロセスからすべてのスレッドとロジックが分離されます。スクリプトは通常通りに動作し、ローカルファイルに書き込みを行いますが、別のプロセスがシステムメトリクスとともにそれらをサーバーにストリームします。wandb off
をトレーニングディレクトリで実行するか、WANDB_MODE
環境変数をoffline
に設定することで、いつでもストリーミングをオフにすることができます。
あなたのツールはトレーニングデータを追跡または保存しますか?
wandb.config.update(...)
にSHAまたは他の一意識別子を渡すことで、トレーニングrunとデータセットを関連付けることができます。W&Bはwandb.save
でローカルファイル名を指定しない限り、データを保存しません。
平滑化アルゴリズムの式は何ですか?
TensorBoardと同じ指数移動平均の式を使用しています。説明はこちらで見つけることができます。
スクリプト内でランダムなrun名を取得するには?
wandb.run.save()
を呼び出し、wandb.run.name
で名前を取得します。
.log()
と.summary
の違いは何ですか?
summaryはテーブルに表示される値で、logは後でプロットするためのすべての値を保存します。
例えば、精度が変わるたびにwandb.log
を呼び出したくなるでしょう。通常は、ただ.logを使用します。wandb.log()
はデフォルトでsummary値も更新しますが、そのメトリクスのsummaryを手動で設定している場合は別です。
散布図と並列座標プロットもsummary値を使用しますが、線プロットは.logによって設定されたすべての値をプロットします。
summaryとlogの両方を持つ理由は、一部のユーザーがsummaryを手動で設定し、最適な精度を反映させるためです。
W&BはTensorBoardとどう違うのですか?
私たちはTensorBoardの開発者をリスペクトしており、TensorBoardインテグレーションも提供しています。私たちの共同創設者がW&Bを開発し始めたのは、OpenAIのフラストレーションを感じたTensorBoardユーザーのためにツールを構築したいと思ったからです。以下は私たちが改善に注力したポイントです:
- モデルの再現: W&Bは実験、探索、そして後でモデルの再現に優れています。メトリクスだけでなく、ハイパーパラメータやコードのバージョンもキャプチャし、モデルのチェックポイントを保存することでプロジェクトを再現可能にします。
- 自動的な組織化: プロジェクトを協力者に引き渡したり、休暇を取るときでも、W&Bを使えば試したすべてのモデルが簡単に確認でき、古い実験を再実行して時間を無駄にすることがありません。
- 迅速で柔軟なインテグレーション: W&Bをプロジェクトに追加するのに5分もかかりません。無料のオープンソースPythonパッケージをインストールし、コードに数行追加するだけで、モデルを実行するたびに素晴らしいログされたメトリクスと記録を持つことができます。
- 持続的で集中化されたダッシュボード: ローカルマシン、ラボのクラスター、クラウドのスポットインスタンスなど、どこでモデルをトレーニングしても、集中化されたダッシュボードを提供します。異なるマシンからTensorBoardファイルをコピーして整理する時間を節約できます。
- 強力なテーブル: 異なるモデルの結果を検索、フィルタ、ソート、グループ化します。数千のモデルバージョンを見渡して、異なるタスクに最適なモデルを見つけるのが簡単です。TensorBoardは大規模なプロジェクトに対応していません。
- 協力のためのツール: W&Bを使って複雑な機械学習プロジェクトを整理します。リンクを共有するのが簡単で、プライベートチームを使って結果を共有のプロジェクトに送ることもできます。また、markdownを使用してインタラクティブな可視化を追加し、レポートで学びを共有することもサポートしています。これは仕事の記録を保持し、監督者に学びを共有し、研究室に結果を提示する素晴らしい方法です。
無料アカウントで始めよう
wandbはログをどのようにストリームしディスクに書き込むのですか?
W&Bはメモリ内キューを使用しますが、ディスクにイベントを書き込みます。これはフォールトトレランスと、WANDB_MODE=offline
モードでの後からのデータ同期のために非同期で行われます。
ターミナルにはローカルrunディレクトリへのパスが表示されます。このディレクトリには、上記のデータストアである .wandb
ファイルが含まれます。画像をログしている場合、そのディレクトリ内の media/images
に保存され、クラウドストレージにアップロードされる前に書き込まれます。
複数のチャートを異なる選択されたrunで取得する方法は?
wandbレポートを使って以下の手順で行います:
- 複数のパネルグリッドを用意する。
- 各パネルグリッドのrunセットをフィルタリングするフィルタを追加する。これにより、それぞれのパネルに表示したいrunを選択できます。
- パネルグリッドに必要なチャートを作成する。
APIへのアクセスはどのように制御されますか?
簡単にするために、W&BはAPIアクセス時の認証にAPIキーを使用します。APIキーは設定で確認できます。APIキーは安全に保管し、バージョン管理にチェックインしないようにしてください。個人のAPIキーに加えて、チームにサービスアカウントユーザーを追加することもできます。
W&BはマルチテナントのためのSSOをサポートしていますか?
はい、W&BはAuth0を介してマルチテナント向けのシングルサインオン(SSO)の設定をサポートしています。W&Bは、OktaやAzureADなどの任意のOIDC準拠のIDプロバイダーとのSSOインテグレーションをサポートしています。OIDCプロバイダーがある場合、以下の手順に従ってください:
- IDプロバイダーで
シングルページアプリケーション(SPA)
を作成する。 grant_type
をimplicit
フローに設定する。- コールバックURIを
https://wandb.auth0.com/login/callback
に設定する。
W&Bに必要なもの
上記の設定が完了したら、カスタマーサクセスマネージャー(CSM)に連絡し、必要なクライアントID
と発行者URL
を教えてください。
これに基づいてAuth0接続を設定し、SSOを有効にします。
サービスアカウントとは何ですか、それはなぜ有用なのですか?
サービスアカウント(エンタープライズ専用機能)は、特定のユーザーに紐付かないAPIキーで、チームへの書き込み権限を持つものです。他には、定期的な再トレーニング、ナイトリービルドなど、自動化されたジョブを追跡するのに有用です。必要に応じて、これらの機械起動されたrunにユーザー名を関連付けるための環境変数WANDB_USERNAME
を使用できます。
詳細はチームサービスアカウント振る舞いを参照してください。
APIキーはチーム設定ページ/teams/<your-team-name>
で確認でき、新しいチームメンバーを招待する際に取得できます。サービスを選択し、「作成」をクリックしてサービスアカウントを追加します。
アクセスを回転または取り消すにはどうすればよいですか?
個人用キーとサービスアカウントキーの両方を回転または取り消すことができます。新しいAPIキーやサービスアカウントユーザーを作成し、スクリプトを新しいキーを使用するように再構成します。その後、すべてのプロセスを再構成したら、古いAPIキーをプロファイルやチームから削除できます。
同じマシンでアカウントを切り替えるにはどうすればよいですか?
同じマシンで2つのW&Bアカウントを使用する場合、異なるAPIキーを切り替える良い方法が必要です。両方のAPIキーをマシンのファイルに保存し、リポジトリに次のようなコードを追加します。これはシークレットキーをソース管理システムにチェックインするのを避けるためです。
if os.path.exists("~/keys.json"):
os.environ["WANDB_API_KEY"] = json.loads("~/keys.json")["work_account"]
ダークモードはありますか?
はい。ダークモードを有効にするには:
- アカウント設定に移動します:https://wandb.ai/settings
- ベータ機能セクションまでスクロールします。
- ナイトモードオプションをトグルします。
コードをテストする際にwandbを無効にできますか?
wandb.init(mode="disabled")
を使用するか、WANDB_MODE=disabled
を設定すると、wandbはNOOPのように振る舞うようになり、コードのテストに最適です。
注意: wandb.init(mode=“disabled”)
を設定しても、wandb
がWANDB_CACHE_DIR
に artifacts を保存するのを防ぐことはできません。