model registryとは? トレーニング済みモデルのカタログ化を解説
model registryとは、トレーニング済みモデルをバージョン、メタデータ、ライフサイクルステージとともに保存する中央カタログであり、どのモデルが本番環境にあるのかをチームが正確に把握できるようにします。
パイプラインがモデルをトレーニングした後、それはどこへ行くのでしょうか? model registryがその答えです。これはトレーニング済みモデルのための記録システムであり、container registryがイメージに対して果たす役割とよく似ています。バージョン、誰がトレーニングしたか、どのようなスコアだったか、そして各モデルがどのステージ - staging または本番 - にあるかを追跡します。
model registryとは何か
model registryは、トレーニング済みモデルバージョンのカタログです。各エントリには、モデルのartifact(またはそのポインタ)、そのメトリクス、それを生み出したデータとコード、そしてライフサイクルステージが保存されます。MLflow、SageMaker、Vertex AIはいずれもregistryを備えています。
ライフサイクルステージ
registryは通常、None、Staging、Production、Archivedといったステージをサポートします。モデルをStagingからProductionへ昇格させることは、意図的で監査可能なアクションであり - buildをdeploy環境を通じて昇格させることのML版に相当します。
CIとdeployの間の受け渡し
registryは、トレーニングパイプラインがdeployパイプラインへ受け渡しを行う場所です。トレーニングjobが新しいバージョンを登録し、別のdeploy jobがProductionステージのモデルをpullして提供します。この分離により、再トレーニングなしに以前のモデルバージョンへrollbackできます。
CIからモデルを登録する
評価が合格した後、CIのjobがモデルとそのメトリクスをregistryに記録し、最良のバージョンが常に見つけられる状態にします。
import mlflow
with mlflow.start_run():
mlflow.log_metric("accuracy", 0.94)
mlflow.sklearn.log_model(model, "model",
registered_model_name="churn-classifier")Latchkeyに関する注記
モデルのartifactをpushしたりpullしたりすると、大きなファイルが移動します。Latchkeyでは、deploy実行間でpullした本番モデルをキャッシュし、registryやオブジェクトストアの一時的なタイムアウトにauto-retryをかけることで、CIからdeployへの受け渡しを高速かつ信頼性の高いものに保ちます。
重要なポイント
- model registryは、メトリクス、来歴、ライフサイクルステージを備えた、トレーニング済みモデルバージョンの中央カタログです。
- モデルをStagingからProductionへ昇格させることは、buildを環境間で昇格させるのと同じく、監査可能なアクションです。
- registryはトレーニングとdeployを分離し、再トレーニングなしに以前のモデルへのrollbackを可能にします。