メインコンテンツまでスキップ

Metaflow

Overview

Metaflowは、MLワークフローを作成および実行するためにNetflixによって作成されたフレームワークです。

このインテグレーションにより、ユーザーはMetaflowのステップとフローにデコレータを適用して、パラメータとArtifactsをW&Bに自動的にログすることができます。

  • ステップにデコレートすると、そのステップ内の特定の型のログを有効または無効にできます。
  • フローにデコレートすると、フロー内のすべてのステップのログを有効または無効にできます。

クイックスタート

W&Bをインストールしてログインする

!pip install -Uqqq metaflow fastcore wandb

import wandb
wandb.login()

フローとステップをデコレートする

ステップをデコレートすると、そのステップ内の特定の型のログを有効または無効にできます。

この例では、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 -> データセットとしてアップロード
self.model_file = torch.load(...) # nn.Module -> モデルとしてアップロード
self.next(self.transform)

データはどこにありますか?プログラムでアクセスできますか?

キャプチャした情報には、元のPythonプロセス内でwandbクライアントライブラリを使用して、webアプリUIを介して、または公開APIを使用してプログラムでアクセスできます。パラメータはW&Bのconfigに保存され、Overviewタブで見つけることができます。datasetsmodels、およびその他のものはW&B Artifactsに保存され、Artifactsタブで見つけることができます。基本的なPythonタイプはW&Bのsummary辞書に保存され、Overviewタブで見つけることができます。APIを使用してこの情報を外部からプログラムで取得する方法については、公開APIガイドをご覧ください。

チートシートはこちらです:

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

wandb_logのキーワード引数 (kwargs)

kwargオプション
datasets
  • True: データセットであるインスタンス変数をログする
  • False
models
  • True: モデルであるインスタンス変数をログする
  • False
others
  • True: その他のシリアライズ可能なものをpickleとしてログする
  • False
settings
  • wandb.Settings(...): このステップまたはフローのために独自の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

これはアーティファクトのリネージを追跡しますか?

はい!ステップAの出力でありステップBの入力であるアーティファクトがある場合、自動的にリネージDAGを構築します。

この振る舞いの例については、このノートブックとそれに対応するW&B Artifactsページをご覧ください。

Was this page helpful?👍👎