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

Metaflow

概要

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

この連携により、ユーザーは Metaflow のステップとフローにデコレータを適用して、パラメータやアーティファクトをW&Bに自動的にログすることができます。

  • ステップにデコレータを適用することで、そのステップ内の特定のタイプのログの有効化または無効化が可能です。
  • フローにデコレータを適用することで、フロー内のすべてのステップのログの有効化または無効化が可能です。

クイックスタート

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

!pip install -Uqqq metaflow fastcore wandb

import wandb
wandb.login()

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

ステップをデコレートすることで、そのステップ内の特定のタイプに対してログの有効化または無効化ができます。

この例では、start内のすべてのデータセットとモデルがログに記録されます。

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)
## データはどこにありますか?プログラムでアクセスできますか?

私たちがキャプチャした情報には、以下の3つの方法でアクセスできます:ログに使用されているオリジナルのPythonプロセス内のwandbクライアントライブラリWebアプリのUI、またはパブリックAPIを使ってプログラムで。 ParameterはW&Bのconfigに保存され、概要タブで見つけることができます。datasetsmodelsothersW&Bアーティファクトに保存され、アーティファクトタブで見つけることができます。基本的なPythonの型はW&Bのsummary辞書に保存され、概要タブで見つけることができます。プログラムでこの情報を取得する方法については、パブリックAPIのガイドを参照してください。

以下はチートシートです:

データクライアントライブラリUI
Parameter(...)wandb.config概要タブ, コンフィグ
datasets, models, otherswandb.use_artifact("{var_name}:latest")アーティファクトタブ
基本的なPythonの型(dictliststrなど)wandb.summary概要タブ, サマリー

wandb_log kwargs

kwargオプション
datasets
  • True: データセットのインスタンス変数をログに記録します
  • False
models
  • True: モデルのインスタンス変数をログに記録します
  • False
others
  • True: ピクルとしてシリアライズ可能な他のものをログに記録します
  • 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 |

|

ロギング振る舞いの例

| 変数の種類 | 振る舞い | 例 | データタイプ |

| ----------------- | ----------------------------- | ---------------- | ------------- |

| インスタンス | 自動ロギング | self.accuracy | float |

| インスタンス | datasets=Trueの場合にロギング | self.df | pd.DataFrame |

| インスタンス | datasets=Falseの場合にはロギングされない | self.df | pd.DataFrame |

| ローカル | ロギングされません | accuracy | float |

| ローカル | ロギングされません | df | pd.DataFrame |

アーティファクトの履歴をトラックしますか?

はい!ステップAの出力であり、ステップBへの入力であるアーティファクトがある場合、自動的に履歴のDAGを作成します。

この振る舞いの例として、このノートブックと対応するW&Bアーティファクトページをご覧ください。

Was this page helpful?👍👎