機械学習に DevOps プラクティスを適用することのビジネス価値を確認する

完了

このユニットでは、機械学習運用 (MLOps) の重要性について説明します。 MLOps は、DevOps (開発と運用) のメカニズムを応用して、機械学習のライフサイクルをより効率的に管理するものです。 また、AI チームのすべての関係者間でよりアジャイルで生産的なコラボレーションが可能になります。 このようなコラボレーションには、データ サイエンティスト、AI エンジニア、アプリ開発者、その他の IT チームが関与します。

チームの MLOps 実装を支援する製品は多数あります。 Microsoft は、Azure Machine Learning、Azure DevOps、GitHub を提供しています。

MLOps のプロセスとツールは、これらのチームの共同作業を支援し、共有の監査可能なドキュメントを通じて可視性を提供します。 MLOps テクノロジは、データ、コード、モデル、その他のツールなど、すべてのリソースの変更を保存して追跡する機能を提供します。 さらに、自動化、繰り返し可能なワークフロー、再利用可能な資産により、ライフサイクルの効率を高め、ライフサイクルを加速化できます。 このようなすべてのプラクティスにより、AI プロジェクトはよりアジャイルで効率的になります。

モデルの再現性

最初の反復トレーニングと後の再トレーニングでは、複雑なプロセスを管理しやくするための対策がいくつかあります。 その 1 つはモデルの再現性を維持することです。つまり、どのチーム メンバーでも同じデータセットに対して簡単に実行でき、同じまたは似た結果が得られるということです。 再現性を実現するには、プロセスを文書化し、リソースを共有します。

まず、チームが共有し、再利用できるように、環境、コード、データセット、モデルなどの資産の管理を一元化すると便利です。

  • モデル レジストリ: チームは、モデルのさまざまなバージョンを試すため、モデル レジストリは、各バージョンを保存する中央の場所を提供します。 レジストリがあれば、ソリューションが運用環境に移行された後でも、うまく機能しないものがあれば、以前のバージョンに簡単に戻すことができます。 モデル レジストリは、各モデルの履歴の監査証跡としても機能します。
  • コード管理: 技術的な意思決定者は、チームがコード管理に使用するテクノロジやプロセスを決定する必要があります。 通常、これには、コードの保存、バージョン管理、共有、再利用が可能な GitHub などのコード リポジトリが含まれます。 コードの使用とバージョン管理のためのツールも含まれています。
  • データ セットの管理: トレーニング データセットも一元的に保存することをおすすめします。 こうすることで、チームは再利用したり、同僚と共有したりすることができ、データ ドリフトを管理するために、長期間にわたってデータセットの変化を監視することもできます。

A screenshot of a graph showing MLOps practices: data scientists and IT work together on model reproducibility, validation, deployment, and retraining.

  • 共有環境: 個人間で共有できるモデル環境を作成します。 これにより、モデル作成プロセスでステップ間の引き継ぎが簡素化されるだけでなく、チームが特定のステップで共同作業することもできます。

次に、機械学習パイプラインを使ってタスクを自動化することをお勧めします。 パイプラインとは、独立して実行できる完全なコンピューティング タスクのワークフローです。 機械学習では、パイプラインを使ってデータの準備、トレーニング構成、トレーニング プロセス、またはモデルの検証を自動化できます。 パイプラインにより、データ サイエンティストが機械学習ライフサイクルの一部を反復する必要があるたびにコストと時間を節約できます。

モデルの検証

モデルをデプロイする前に、パフォーマンス メトリックを検証することが重要です。 "ベスト" モデルを示すために使用されるメトリックがいくつかあります。 データ サイエンティストが重要なメトリックを把握し、デプロイの前に評価することが重要です。 損失関数や混同行列などのモデル メトリックを評価するツールがあります。

通常、メトリックにより、モデルが予測した内容と想定する予測内容 (真の値またはグラウンド トゥルース) を比較します。 全体として、焦点は真陽性と真陰性を最大化すること、つまりモデルが真の値の予測に成功することです。 擬陽性と擬陰性、つまり予測の誤りや予測の見逃しを避けることも同様に重要です。

ビジネス ユース ケースに照らしてパフォーマンス メトリックを検証することが重要です。 たとえば、患者の健康状態を予測するモデルを設計したとします。 生か死かという状況に対処する医療提供者の場合、診断ミスを非常に高い精度で判断することよりも、擬陽性の診断を優先する可能性が高くなります。

モデルが既存のモデルよりも新しいバージョンの場合、重要なメトリックについて、パフォーマンスが以前のバージョンよりも向上しているかどうかを確認する必要があります。

A screenshot of a graph showing a confusion matrix with predicted and true labels. Alignment of true and predicted values indicates high accuracy.

モデル デプロイ

モデルを運用環境にデプロイするにはいくつかの選択肢があります。 データ サイエンティストと AI エンジニアは協力して、それぞれのケースに最適な選択肢を見つける必要があります。

  • クラウド: 選択肢の 1 つはクラウドを使ってモデルをデプロイすることです。多くの場合、アプリケーション プログラミング インターフェイス (API) を利用します。 Kubernetes や Azure Container Instances のように、このプロセスを自動化し、簡略化するスケーラブルなツールがあります。
  • オンプレミス: モデルを組織独自のサーバーに直接配置することもできます。
  • エッジ: カメラ、ドローン、機械などのエッジ デバイスにモデルを配置することもできます。 この選択肢は IoT シナリオで役立つ可能性があります。

モデルをどこにデプロイするかに関係なく、ワークフローは類似しています。 まず、モデルをモデル レジストリに登録します。 次に、資産、用途、コンピューティング先を指定して、モデルをデプロイするための準備を行います。 最後に、モデルを目的の場所にデプロイして、テストを行い、ライフサイクルを通してモデル固有のメトリックを継続的に監視します。

モデルの再トレーニング

これで開発プロセスは終了しますが、これはメンテナンス サイクルの始まりにすぎません。 パフォーマンス問題を修正したり、より新しいトレーニング データを活用したりするために、モデルを監視し、定期的に再トレーニングする必要があります。 成功に向けて準備するには、継続的に微調整し、モデルの精度を確保するための再トレーニング ループ、つまり体系的で反復可能なプロセスを作成する必要があります。

このプロセスは非常に複雑に思えるかもしれません。 事前構築済みモデルを使うことで、このプロセスを大幅に簡略化できることに留意してください。 Azure Machine Learning のような MLOps ツールでは、必ずしもカスタム モデルを設定する必要はありません。事前構築済みモデルをそのまま使うこともできます。 この意味で、Azure AI サービスは、データ サイエンスの専門知識をあまり必要とせず、短時間で結果が得られるので、優れた代替手段です。

次のユニットでは、Azure AI サービスの機会について説明します。