実験トラッキングとは?MLのrunの記録を解説
実験トラッキングとは、実験を比較可能、検索可能、再現可能にするために、各ML学習runの入力と結果を記録するプラクティスです。
機械学習は経験的です。数十の構成を試し、最良のものを残します。システムがなければ、それらのrunはスクロールバックと忘れられたファイル名の中に消えていきます。実験トラッキングは各run - そのパラメータ、コード、データ、メトリクス - を捕捉し、それらを比較して再現できるようにします。
実験トラッキングとは何か
実験トラッキングは、各学習runの詳細を中央のstoreに記録します。使用したhyperparameter、コードのバージョン、datasetのバージョン、得られたメトリクス、そしてしばしばモデルやプロットなどのartifactです。各runは、一時的な結果ではなくクエリ可能なレコードになります。
なぜ重要か
トラッキングは実験を比較可能(「どのlearning rateが最良のF1を出したか?」)、再現可能(何が結果を生んだかを正確に把握できる)、協調的(チーム全体がrunの履歴を見られる)にします。これは、model registryと継続的トレーニングが構築される基盤です。
ツール
MLflow、Weights and Biases、Neptuneが一般的なtrackerです。学習コードから呼び出すloggingのAPIと、runを閲覧、フィルタ、比較するUIを提供し、さらに最良のrunをpromoteするためのmodel registryとの統合を提供します。
CIでの実験トラッキング
学習がCIで実行されるとき、各runをcommitとdatasetのバージョンでタグ付けしてtrackerに記録し、すべての自動化されたrunが記録され比較可能になるようにします。
import mlflow
mlflow.set_tag("git_sha", "${GITHUB_SHA}")
mlflow.log_params(params)
mlflow.log_metric("f1", score)Latchkeyノート
トラッキングされたCIのrunは、artifactとメトリクスをトラッキングサーバーにアップロードします。Latchkeyでは、学習データと依存関係をcacheすることで各トラッキングされたrunが高速に保たれ、auto-retryがrunがartifactをtrackerにアップロードする際の一時的な不具合をカバーします。
重要なポイント
- 実験トラッキングは、各学習runのパラメータ、コード、データ、メトリクスを記録する。
- 実験を比較可能、再現可能にし、チーム全体から見えるようにする。
- CIの学習runをcommitとデータバージョンでタグ付けしてtrackerに記録すると、自動化されたrunが記録され比較可能になる。