データのトラッキングは、これまでにも一部サポートはされていましたが、ファイルパスとバージョンの記録に限られていました。
mlflow.log_input()によって、より直感的な形で機械学習に使用したデータをトラッキングできるようになります。これは嬉しい。
今回は機械学習は行わず、あくまでデータセットのトラッキングのみを試します。
%pip install mlflow==2.4
dbutils.library.restartPython()
import mlflow
# Deltaからデータセットをロード
dataset = mlflow.data.load_delta(table_name="takaakiyayoi_catalog.covid.covid_cases")
with mlflow.start_run():
# MLflowランにデータセットを記録
mlflow.log_input(dataset, context="training")
# <モデルトレーニングのコード>
ロギングはされますが、GUIには表示されません。間も無くのアップデートで表示されるようになるでしょう。
今回は、プログラムからアクセスします。
# データセット情報を含むランの取得
run = mlflow.get_run(mlflow.last_active_run().info.run_id)
dataset_info = run.inputs.dataset_inputs[0].dataset
print(f"Dataset name: {dataset_info.name}")
print(f"Dataset digest: {dataset_info.digest}")
print(f"Dataset profile: {dataset_info.profile}")
print(f"Dataset schema: {dataset_info.schema}")
データセット情報が記録されています。Dataset name
には@v0
とバージョン番号も表示されています。
Dataset name: takaakiyayoi_catalog.covid.covid_cases@v0
Dataset digest: 617ade4c
Dataset profile: {"approx_count": 23171}
Dataset schema: {"mlflow_colspec": [{"type": "string", "name": "Prefecture"}, {"type": "long", "name": "Cases"}, {"type": "datetime", "name": "date_timestamp"}, {"type": "integer", "name": "pref_no"}, {"type": "string", "name": "Area"}]}
これを使用して、データセットにアクセスすることもできます。
# ソースDeltaテーブルのデータセットのロード
dataset_source = mlflow.data.get_source(dataset_info)
source_df = dataset_source.load()
display(source_df)