トレーニングパイプラインとは?エンドツーエンドのモデルbuildを解説
トレーニングパイプラインは、データを登録済みでデプロイ可能なモデルに変える自動化されたエンドツーエンドのシーケンスです。準備、学習、評価、登録を行います。
トレーニングパイプラインは、「学習スクリプトを実行する」の本番グレード版です。datasetから検証・登録済みのモデルに至るために必要なすべてのステップを連結し、その経路を自動化することで、モデルをオンデマンドまたはscheduleに従って確実に再構築できるようにします。
トレーニングパイプラインとは何か
トレーニングパイプラインは、モデルを生成する順序付けられた一連のステージです。典型的なステージは、データ準備、feature生成、学習、holdoutに対する評価、そして合格した場合のモデルの登録です。各ステージには定義された入力と出力があり、全体が再現可能になります。
なぜpipelineにするか
学習をpipelineで包むと、再現性、自動化、ゲートが得られます。同じ入力は常に同じモデルを生成し、pipelineはmergeごとまたはscheduleに従って実行でき、評価がゲートとして機能して基準を満たしたモデルだけが登録されます。
pipeline対feature pipeline
feature pipelineはモデルが消費するfeatureを生成し、トレーニングパイプラインはそれらのfeatureを消費してモデルを構築します。両者を分離すると、featureを多くのモデルで再利用でき、各pipelineが独自のscheduleで実行できます。
CI/CDでのトレーニングパイプライン
CIのworkflowとして表現されたpipelineは、データを取得し、学習し、ゲートの背後で評価し、結果を登録します。
jobs:
train:
runs-on: gpu-large
steps:
- run: dvc pull
- run: python prepare.py
- run: python train.py
- run: python evaluate.py --gate
- run: python register.pyLatchkeyノート
完全なトレーニングパイプラインは、高価なハードウェア上で長時間実行される可能性があります。Latchkeyでは、学習ステージをGPUや大きなrunnerにルーティングし、各pipelineがそれらを再ダウンロードしないようにdatasetとベースモデルをrun間でcacheし、一時的なデータ取得をauto-retryすることで、1時間に及ぶrunが単一の不具合で止まらないようにします。
重要なポイント
- トレーニングパイプラインは、データから登録済みでデプロイ可能なモデルまでの経路を自動化する。
- 再現性、自動化、そして良いモデルだけが登録されるようにするメトリクスのゲートを提供する。
- feature pipelineとは異なり、GPUや大きなrunner上のCI/CDのworkflowとしてよく機能する。