第18章 機械学習パイプラインのオーケストレーション 機械学習パイプラインをオーケストレーションする
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
第1章では、MLパイプラインについて紹介し、再現性と再現性のあるMLモデルを作成するためになぜパイプラインが必要なのかを説明した。その後の章では、データの取り込み、データの検証、モデルのトレーニング、モデルの評価、そしてモデルのデプロイに至るまで、MLパイプラインの個々の側面について深く掘り下げた。今こそループを閉じ、個々のコンポーネントを本番パイプラインに組み立てる方法に焦点を当てる時だ。
前の章で説明したMLパイプラインのすべてのコンポーネントは、協調して実行される必要がある。あるコンポーネントへの入力は、あるコンポーネントが実行される前に計算されなければならない。これらのステップのオーケストレーションは、Apache BeamやKubeflow Pipelines、あるいはGoogle CloudのVertex Pipelinesのようなオーケストレーションツールで実行される。
この章では、MLコンポーネントのオーケストレーションに焦点を当て、様々なオーケストレーションツールと、プロジェクトに最適なツールの選び方を紹介する。
パイプライン・オーケストレーション入門
パイプライン・オーケストレーションは、データ取り込み、前処理、モデル学習、モデル評価といったパイプライン・コンポーネント間の「接着剤」である。様々なオーケストレーションオプションの詳細に入る前に、そもそもなぜパイプラインオーケストレーションが必要なのかを復習し、有向無サイクルグラフの概念を紹介しよう。
なぜパイプライン・オーケストレーションなのか?
パイプライン・オーケストレーションは、パイプライン・コンポーネントを接続し、それらが特定の順序で実行されることを保証する。例えば、オーケストレーションツールは、データ前処理がモデル学習ステップの前に実行されることを保証する。同時に、コンポーネントの実行状態を追跡し、必要に応じて状態をキャッシュする。これにより、長時間実行されるコンポーネント(例えばデータ前処理)は、パイプラインに障害が発生しても再実行する必要がない。オーケストレーションは、失敗したコンポーネントだけが再実行されるようにする。
Apache BeamやKubeflow Pipelinesのようなオーケストレーションツールは、すべてのパイプライン成果物を追跡するメタデータストアと連携してMLパイプラインを管理する。パイプラインオーケストレーションツールは、前の章で説明したコンポーネントを実行する。これらのオーケストレーションツールがなければ、あるコンポーネントがいつ終了したかをチェックし、次のコンポーネントを開始し、パイプラインの実行をスケジュールする、といったコードを書く必要がある。幸運なことに、オーケストレーションツールがそれを引き受けてくれる。
有向非周期グラフ
Apache Beam、Kubeflow Pipelines、Google Cloud Vertex(これは裏でKubeflow Pipelinesを使用している)のようなパイプラインツールは、タスクの依存関係のグラフ表現を通してタスクの流れを管理する。
図18-1が示すように、パイプラインのステップはディレクトリ化されている。これは、パイプラインがタスクAから始まりタスクEで終わることを意味し、タスクの依存関係によって実行パスが明確に定義されていることを保証している。有向グラフは、すべての依存関係が完全に計算されないまま開始されるタスクがあるという状況を回避する。モデルをトレーニングする前にトレーニングデータを前処理しなければならないことが分かっているので、有向グラフで表現することで、前処理ステップが完了する前にトレーニングタスクが実行されることを防ぐことができる。 ...