MLOps (Machine Learning Operations の略) は、モデルを構築して本番環境に移行するエンジニアの特定のニーズに対応することを目的とした一連のプラクティスとツールです。組織によっては、各実験の後にデータセットをバージョン管理し、トレーニングの各エポックの後にモデルをチェックポイントする、いくつかの自社開発ツールから始めるところもあります。一方、多くの組織は、実験の追跡、コラボレーション機能、モデル提供機能、さらにはデータ処理とモデルトレーニングのためのパイプライン機能を備えた正式なツールを採用することを選択しています。
組織にとって最適な選択を行うには、業界をリードする MLOps ツールで利用できるすべての機能を理解する必要があります。自社開発のルートを選択する場合は、放棄する機能について理解する必要があります。自社開発のアプローチは、迅速に行動する必要があり、新しいツールを評価する時間がない可能性のある小規模チームに適しています。サードパーティのツールを実装することを選択した場合は、組織のエンジニアリング ワークフローに最適なツールを選択する必要があります。今日のトップ ツールはアプローチと機能が大きく異なるため、これは難しい場合があります。選択に関係なく、大量のデータを処理し、トレーニング セットをパフォーマンスの高い方法で提供できるデータ インフラストラクチャが必要になります。モデルのチェックポイント作成と大規模なデータセットのバージョン管理にはスケーラブルな容量が必要であり、高価な GPU を使用している場合は、投資を最大限に活用するためにパフォーマンスの高いインフラストラクチャが必要になります。
この記事では、アーキテクトが選択するアプローチやツールに関係なく考慮すべき機能リストを紹介します。この機能リストは、今日のトップ MLOps ベンダー 3 社との調査と実験から得たものです。
機能とインフラストラクチャの要件について詳しく説明する前に、MLOps の重要性について理解を深めましょう。そのためには、モデルの作成と従来のアプリケーション開発を比較すると役立ちます。
アプリケーションに新しい機能を追加する新しいマイクロサービスの実装など、従来のアプリケーション開発は、仕様の確認から始まります。まず、新しいデータ構造または既存のデータ構造の変更が設計されます。コーディングが始まったら、データの設計は変更しないでください。次にサービスが実装されますが、このプロセスではコーディングが主なアクティビティです。ユニット テストとエンドツーエンド テストもコーディングされます。これらのテストは、コードに欠陥がなく、仕様を正しく実装していることを証明します。アプリケーション全体をデプロイする前に、CI/CD パイプラインによって自動的に実行できます。
モデルの作成とトレーニングは異なります。最初のステップは、生データと必要な予測を理解することです。ML エンジニアは、ニューラル ネットワークを実装したりアルゴリズムを設定したりするためにコードを記述する必要がありますが、コーディングは主要なアクティビティではありません。主なアクティビティは、繰り返しの実験です。実験中は、データの設計、モデルの設計、および使用されるパラメーターがすべて変更されます。すべての実験の後に、モデルがトレーニングされたときにどのように実行されたかを示すメトリックが作成されます。また、検証セットとテスト セットに対するモデルのパフォーマンスを判断するためのメトリックも生成されます。これらのメトリックは、モデルの品質を証明するために使用されます。すべての実験の後にモデルを保存し、データセットを変更するたびにも保存する必要があります。モデルをアプリケーションに組み込む準備ができたら、パッケージ化してデプロイする必要があります。
要約すると、機械学習における MLOps は、従来のソフトウェア開発における DevOps と同じです。どちらも、エンジニアリング チーム (Dev または ML) と IT 運用 (Ops) チーム間のコラボレーションを改善することを目的とした一連のプラクティスと原則です。目標は、自動化を使用して、計画と開発から展開と運用までの開発ライフサイクルを合理化することです。これらのアプローチの主な利点の 1 つは、継続的な改善です。
MLOps についてもう少し詳しく見て、考慮すべき具体的な機能を見てみましょう。
実験の追跡とコラボレーションは、MLOps に最も関連のある機能ですが、今日の最新の MLOps ツールはさらに多くの機能を備えています。たとえば、実験用のランタイム環境を提供できるツールもあります。また、アプリケーションに統合する準備ができたら、モデルをパッケージ化してデプロイできるツールもあります。
以下は、現在の MLOps ツールに含まれる機能のスーパーセットです。このリストには、サポートやデータ統合など、考慮すべきその他の事項も含まれています。
主要プレーヤーからのサポート- MLOps の技術と機能は常に進化しています。継続的な開発と改善を保証する、主要プレーヤー (それぞれ Google、Databricks、McKinsey and Company が Kubeflow、MLflow、MLRun をサポート) によってサポートされているツールが必要です。具体的な例として、現在人気のあるツールの多くは、大規模言語モデル (LLM) 以前に作成されたため、生成 AI をサポートするために新しい機能が追加されているものが多くあります。
最新のデータレイク統合- 実験では、大量の構造化データと非構造化データが生成されます。最新のデータレイク (またはデータ レイクハウス) と完全に統合された MLOps ツールは、非構造化データをデータレイク (これは直接的には MinIO) に保存し、構造化データはデータ ウェアハウスに格納します。残念ながら、多くの MLOps ツールは、最新のデータレイクを生み出したオープン テーブル形式より前から存在していたため、ほとんどのツールでは構造化データ用に別のソリューションを用意しています。これは通常、データ インフラストラクチャでサポートする必要があるオープン ソースのリレーショナル データベースです。非構造化データ (データセットとモデル チェックポイント) に関しては、2014 年から存在しているため、業界のすべての主要ツールで MinIO が使用されています。
実験の追跡- おそらく、MLOps ツールの最も重要な機能は、各実験のデータセット、モデル、ハイパーパラメータ、およびメトリックを追跡することです。実験の追跡は、再現性も促進する必要があります。5 回の実験前に望ましい結果が得られ、その後の実験でモデルのパフォーマンスが低下した場合、MLOps ツールを使用して、望ましい結果を生み出すために使用された正確なハイパーパラメータとデータセット機能を取得できる必要があります。
コラボレーションの促進— MLOps ツールの重要なコンポーネントは、各実験の結果を表示するために使用されるポータルまたは UI です。このポータルは、チーム メンバー全員がアクセスできるようにして、お互いの実験を確認し、推奨事項を作成できるようにする必要があります。一部の MLOps ツールには、実験の結果を比較するカスタム グラフを作成できる高度なグラフィカル機能があります。
モデルのパッケージ化- この機能は、モデルをパッケージ化して、他のプログラミング環境 (通常はマイクロサービス) からアクセスできるようにします。これは便利な機能です。トレーニングされたモデルは、シリアル化されたオブジェクトにすぎません。多くの組織では、すでにこれを理解しているかもしれません。
モデルサービング- モデルがサービスとしてパッケージ化されると、この機能により、モデルを含むサービスを組織の正式な環境に自動的に展開できるようになります。
モデル レジストリ- モデル レジストリは、現在 MLOps ツールによって管理されているすべてのモデルのビューを提供します。結局のところ、運用グレードのモデルの作成はすべての MLOps の目標です。このビューには、運用環境にデプロイされたモデルと、運用環境にデプロイされなかったモデルが表示されます。運用環境にデプロイされたモデルには、デプロイされたアプリケーションまたはサービスのバージョンも判断できるようにタグ付けする必要があります。
サーバーレス関数- 一部のツールでは、関数またはモジュールをコンテナ化されたサービスとしてデプロイし、クラスターで実験を実行できるように、コードに注釈を付けることができる機能を提供しています。この機能を使用する場合は、エンジニア全員がこの技術に慣れていることを確認してください。学習曲線が少しある場合があります。DevOps のバックグラウンドを持つエンジニアは簡単にできますが、以前に機械学習を学んだがコーディング経験がほとんどないエンジニアは苦労するでしょう。
データパイプライン機能- 一部のMLOpsツールは完全なエンドツーエンド機能を提供することを目的とし、生データの取得、処理、クリーンデータの保存のためのデータパイプラインの構築に特化した機能を備えています。パイプラインは通常、次のように指定されます。
トレーニング パイプラインの機能- これはデータ パイプラインに似ていますが、トレーニング パイプラインはデータ パイプラインが終了したところから開始します。トレーニング パイプラインを使用すると、データ アクセス コードを呼び出し、データをトレーニング ロジックに送信し、データ成果物とモデルに注釈を付けて自動的に保存することができます。データ パイプラインと同様に、この機能はサーバーレス関数と組み合わせて使用して、DAG を作成し、実験をスケジュールすることができます。分散トレーニング ツールを既に使用している場合は、この機能は必要ないかもしれません。トレーニング パイプラインから分散トレーニングを開始することも可能ですが、複雑すぎる可能性があります。
従来のアプリケーション開発と機械学習の違いを見てみると、機械学習で成功するには、何らかの形の MLOps と、パフォーマンスとスケーラブルな容量を備えたデータ インフラストラクチャが必要であることは明らかです。
プロジェクトをすぐに開始する必要があり、正式なMLOpsツールを評価する時間がない場合、自家製ソリューションで十分です。このアプローチを採用する場合、データインフラストラクチャに必要なのはMinIOだけです。MinIOはS3と互換性があるため、別のツールから始めてS3インターフェイスを使用してデータセットにアクセスした場合、コードはそのまま機能します。始めたばかりの場合は、
複数の AI/ML チームで異なるタイプのモデルを作成している大規模な組織では、サードパーティの MLOps ツールを導入するのが最善の方法です。最も多くの機能を備えた MLOps ツールが必ずしも最適なツールであるとは限りません。上記の機能を確認し、必要な機能、既存の CI/CD パイプラインの一部として現在使用している機能、そして最後に不要な機能を書き留めておくと、最適なツールを見つけるのに役立ちます。MLOps ツールは、大量のペタバイトのオブジェクト ストレージを貪欲に消費します。多くのツールは、各実験でデータセットを自動的にバージョン管理し、各エポックの後にモデルを自動的にチェックポイントします。ここでも、容量が問題にならないため、MinIO が役立ちます。自社開発のソリューションと同様に、MinIO のエンタープライズ エディションの使用を検討してください。バケット用に構成されるとキャッシュ機能が自動的に機能するため、MLOps ツールがキャッシュの使用を要求しなくても、MinIO はトレーニング セットなどの頻繁にアクセスされるオブジェクトを自動的にキャッシュします。
現在市場に出回っている MLOps ツールの多くは、モデル トレーニング中に生成された構造化データ (通常はメトリックとハイパーパラメータ) を保存するために、オープン ソースのリレーショナル データベースを使用しています。残念ながら、これは組織でサポートする必要がある新しいデータベースになります。さらに、組織がモダン データレイク (またはデータ レイクハウス) に移行している場合、追加のリレーショナル データベースは必要ありません。主要な MLOps ベンダーが検討すべきなのは、OTF ベースのデータ ウェアハウスを使用して構造化データを保存することです。
主要なMLOpsベンダーはすべて、非構造化データの保存にMinIOを使用しています。残念ながら、これは通常、MLOpsツールの全体的な大規模なインストールの一部としてインストールされる個別の小さなインスタンスとして展開されます。さらに、通常はMinIOの古いバージョンであり、常に最新の状態を維持するという当社の理念に反しています。
この記事では、MLOps の機能と、これらの機能をサポートするために必要なデータ インフラストラクチャの両方を調査して、MLOps のアーキテクト ガイドを紹介しました。大まかに言うと、組織は自社開発のソリューションを構築することも、サードパーティ ソリューションを導入することもできます。どちらの方向を選択する場合でも、現在業界で利用できるすべての機能を理解することが重要です。自社開発のソリューションを使用すると、プロジェクトを迅速に開始できますが、すぐにソリューションが手に負えなくなる可能性があります。また、特定のニーズと、MLOps が既存の CI/CD パイプラインでどのように機能するかを理解することも重要です。多くの MLOps ツールは機能が豊富で、決して使用しない可能性のある機能や、CI/CD パイプラインの一部として既に持っている機能が含まれています。
MLOps を正常に実装するには、それをサポートできるデータ インフラストラクチャが必要です。この記事では、自社開発のソリューションを選択した人向けにシンプルなソリューションを紹介し、サードパーティ ツールに期待できることと、それらに必要なリソースについて説明しました。
最後に、Modern Datalake との統合を強化する MLOps ツールのさらなる開発に関する要望をリストアップしました。
モダンデータレイクを使用してAI/MLワークロードをサポートする方法の詳細については、以下をご覧ください。
ご質問がございましたら、お気軽にお問い合わせください。