メインコンテンツへスキップ

概要

Metaflow は、ML ワークフローの作成と実行のために Netflix によって開発されたフレームワークです。 このインテグレーションにより、ユーザーは Metaflow の steps と flows にデコレータを適用して、パラメータや アーティファクト を W&B に自動的に ログ 記録できるようになります。
  • step をデコレートすると、その step 内の特定の型に対して ログ 記録のオン/オフを切り替えることができます。
  • flow をデコレートすると、その flow 内のすべての step に対して ログ 記録のオン/オフを切り替えることができます。

クイックスタート

サインアップして APIキー を作成する

APIキー は、お使いの環境を W&B に認証します。ユーザープロフィールから APIキー を生成できます。
For a more streamlined approach, create an API key by going directly to User Settings. Copy the newly created API key immediately and save it in a secure location such as a password manager.
  1. 右上隅にあるユーザープロフィールのアイコンをクリックします。
  2. User Settings を選択し、API Keys セクションまでスクロールします。

wandb ライブラリのインストールとログイン

wandb ライブラリをローカルにインストールしてログインするには:
wandb バージョン 0.19.8 以下の場合は、plum-dispatch の代わりに fastcore バージョン 1.8.0 以下 (fastcore<1.8.0) をインストールしてください。
  1. WANDB_API_KEY 環境変数 を作成した APIキー に設定します。
    export WANDB_API_KEY=<your_api_key>
    
  2. wandb ライブラリをインストールしてログインします。
    pip install -Uqqq metaflow "plum-dispatch<3.0.0" wandb
    
    wandb login
    

flows と steps をデコレートする

step をデコレートすると、その step 内の特定の型に対して ログ 記録のオン/オフを切り替えることができます。この例では、start 内のすべての Datasets と Models が ログ 記録されます。
from wandb.integration.metaflow import wandb_log

class WandbExampleFlow(FlowSpec):
    @wandb_log(datasets=True, models=True, settings=wandb.Settings(...))
    @step
    def start(self):
        self.raw_df = pd.read_csv(...).    # pd.DataFrame -> datasetとしてアップロード
        self.model_file = torch.load(...)  # nn.Module    -> modelとしてアップロード
        self.next(self.transform)

プログラムによる データ へのアクセス

取得した情報には 3 つの方法でアクセスできます。 ログ 記録中の元の Python プロセス内から wandb クライアントライブラリ を使用する方法、Web アプリ UI を使用する方法、または パブリック API を使用してプログラムでアクセスする方法です。Parameter は W&B の config に保存され、Overviewタブ で確認できます。datasetsmodels、および othersW&B Artifacts に保存され、Artifacts タブ で確認できます。Python の基本型は W&B の summary 辞書に保存され、Overview タブで確認できます。外部からプログラムでこの情報を取得するための API 使用方法の詳細は、パブリック API ガイド を参照してください。

クイックリファレンス

データクライアントライブラリUI
Parameter(...)wandb.Run.configOverviewタブ, Config
datasets, models, otherswandb.Run.use_artifact("{var_name}:latest")Artifacts タブ
Python 基本型 (dict, list, str など)wandb.Run.summaryOverviewタブ, Summary

wandb_log kwargs (キーワード引数)

kwargオプション
datasets
  • True: データセットであるインスタンス変数をログ記録する
  • False
models
  • True: モデルであるインスタンス変数をログ記録する
  • False
others
  • True: pickle としてシリアル化可能なその他のものをログ記録する
  • False
settings
  • wandb.Settings(…): この step または flow に対して独自の wandb 設定を指定する
  • None: wandb.Settings() を渡すのと同等

デフォルトでは以下のようになります:

  • settings.run_groupNone の場合、 {flow_name}/{run_id} に設定されます
  • settings.run_job_typeNone の場合、 {run_job_type}/{step_name} に設定されます

よくある質問

具体的に何を ログ 記録しますか?すべてのインスタンス変数とローカル変数を ログ 記録しますか?

wandb_log はインスタンス変数のみを ログ 記録します。ローカル変数は 決して ログ 記録されません。これは、不要な データの ログ 記録を避けるために役立ちます。

どのデータ型が ログ 記録されますか?

現在、以下の型をサポートしています:
ログ設定
デフォルト (常にオン)
  • dict, list, set, str, int, float, bool
datasets
  • pd.DataFrame
  • pathlib.Path
models
  • nn.Module
  • sklearn.base.BaseEstimator
others
  • pickle 可能 かつ JSON シリアル化可能なあらゆるもの

ログ 記録の 振る舞い をどのように 設定 できますか?

変数の種類振る舞いデータ型
インスタンス自動ログ記録self.accuracyfloat
インスタンスdatasets=True の場合にログ記録self.dfpd.DataFrame
インスタンスdatasets=False の場合はログ記録されないself.dfpd.DataFrame
ローカル決してログ記録されないaccuracyfloat
ローカル決してログ記録されないdfpd.DataFrame

Artifacts の リネージ (系統) は追跡されますか?

はい。ある アーティファクト が step A の出力であり、step B の入力である場合、自動的に リネージ DAG を構築します。 この 振る舞い の例については、こちらの ノートブック および対応する W&B Artifacts ページ を参照してください。