継続的トレーニングとは?自動化されたモデル再学習を解説
継続的トレーニング(CT)は、新鮮なデータやdriftのようなトリガーに応じてモデルを自動的に再学習し、時間とともに精度を保つMLOpsのプラクティスです。
ソフトウェアは、コードを変更するまでは正しいままです。一方、モデルは世界が足元で変化するにつれて、独りでに劣化します。継続的トレーニングは、モデルを自動的に再学習することでこれに応えます - scheduleに従って、または監視が劣化を検出したときに - 人間が毎回のrunを開始しなくても追いつけるようにします。
継続的トレーニングとは何か
継続的トレーニングは、MLOpsのpipelineの一部としてのモデルの自動再学習です。CI/CDをCTループで拡張します。新しいデータが到着し、pipelineがモデルを再学習して評価し、新しいモデルが優れていれば登録されpromoteされます - すべて手動の介入なしにです。
何が再学習をトリガーするか
再学習は、schedule(夜間に再学習)、新しいデータ量(N件の新規レコードの後に再学習)、または監視(driftやメトリクスの低下が検出されたら再学習)によってトリガーできます。トリガーの選択は、データと世界がどれほど速く変化するかによります。
ガードレール
自動的な再学習は、ゲートがなければリスクがあります。CTのpipelineは、各候補をholdoutセットに対して評価し、現在のモデルを上回った場合にのみpromoteする必要があります。これにより、不正なデータのbatchが良いモデルを静かに劣ったものに置き換えるのを防ぎます。
CI/CDでの継続的トレーニング
CTのpipelineは、新鮮なデータを取得し、再学習し、評価し、ゲートの背後でpromoteする、scheduleまたはトリガーされたworkflowです。
on:
schedule: [{ cron: "0 3 * * 1" }] # weekly retrain
jobs:
retrain:
runs-on: gpu-large
steps:
- run: dvc pull
- run: python train.py
- run: python evaluate.py --gate beats-productionLatchkeyノート
再学習のrunは重く、繰り返し発生します。Latchkeyでは、scheduleされたCTのjobがオンデマンドでGPUや大きなrunnerを使い、各runがギガバイトを再ダウンロードしないようにdatasetとベースモデルをcacheし、auto-retryが長い再学習が一時的なデータ取得で止まるのを防ぎます。
重要なポイント
- 継続的トレーニングは、新鮮なデータやdriftのようなトリガーでモデルを自動的に再学習する。
- 評価に基づいてpromotionをゲートし、不正なbatchが良いモデルを静かに置き換えないようにする必要がある。
- CTは、GPUのrunnerとcacheを用いてCI/CDに自然に収まる、scheduleまたはトリガーされたpipelineとして実行される。