ナビゲーションをスキップする

MLOps ブログ シリーズ パート 1: MLOps を使用した機械学習システムのテスト術

2022年6月14日 に投稿済み

Product Marketing Manager, Data and AI Marketing

機械学習システム開発のライフサイクルにおいて、テストは高品質な運用を保証するための重要な作業です。テストを使用して、ある機能がその通りに機能することを確認します。一度テストを作成すれば、システムに変更が加わるたびに自動的にテストを実行することができ、時間を追ってテストを改善することができます。開発サイクルのできるだけ早い段階で、テストの実施を処遇し、ミスの原因を特定することは、ダウンストリームの費用の上昇や時間のロスを防ぐために有効な手段です。

このブログでは、機械学習システムのテスト機械学習運用 (MLOps) の観点から見て、堅牢でスケーラブル、かつ安全な機械学習システムを構築するために使用できる優れた事例の実践とテスト フレームワークについて学んでいきます。テストを掘り下げる前に、MLOps とは何か、そして機械学習システムの開発におけるその価値について見ていきましょう。

 

機械学習と DevOps の融合である MLOps を定義、図解したグラフィック モデルで、プロセスがどのように機能するかの構成要素、ステージ、タスク、フローが示されています。

図 1:MLOps = DevOps + 機械学習。

 

ソフトウェア開発は複数の専門分野にまたがっており、機械学習を促進するために進化を続けています。MLOps は、機械学習と DevOps を連携させ、機械学習とソフトウェア開発を融合させるためのプロセスです。MLOps は、運用における機械学習モデルの構築、デプロイ、保守を確実かつ効率的に行うことを目的としています。DevOps により、機械学習の運用が推進されます。それが実際にどのように機能するのかを見てみましょう。以下は、機械学習が DevOps によってどのように実現され、堅牢でスケーラブルかつ安全な機械学習ソリューションをオーケストレーションするのかを表した、MLOps ワークフローの図です。

 

MLOps のワークフローの、機械学習パイプライン、デプロイ、監視の 3 つの主要なステージを描いたグラフィックです。

図 2:MLOps ワークフロー。

 

MLOps のワークフローはモジュール式で柔軟性があり、あらゆるビジネスや産業における概念実証の構築や機械学習ソリューションの運用化に利用することができます。このワークフローは、3 つのモジュール: 構築、デプロイ、監視に分かれています。"構築" は、機械学習パイプラインを使用して機械学習モデルを開発するために使用されます。"デプロイ" モジュールは、開発、テスト、運用環境でのモデルのデプロイに使用されます。"監視" モジュールは、機械学習システムを監視、分析、管理して、ビジネス価値を最大化するために使用されます。テストは主に、"構築" および "デプロイ" モジュールの 2 つのモジュールで実施されます。"構築" モジュールでは、トレーニング用のデータを取り込み、取り込んだデータを使用してモデルをトレーニングし、モデル テスト ステップでそのテストが行われます。

1. モデルのテスト: このステップでは、名前付きテスト データ (データ インジェスト ステップで分割およびバージョン管理されたデータ) のデータ ポイントのセットに対して、トレーニング済みモデルのパフォーマンスが評価されます。トレーニング済みモデルの推論は、ユース ケースに基づいて選択されたメトリックに従って評価されます。このステップの出力は、トレーニング済みモデルのパフォーマンスに関するレポートです。"デプロイ" モジュールでは、トレーニング済みモデルを開発、テスト、運用環境にそれぞれデプロイします。まず、アプリケーションのテスト (開発およびテスト環境で行う) から始めます。

2. アプリケーションのテスト: 機械学習モデルを運用環境にデプロイする前に、モデルの堅牢性、スケーラビリティ、安全性をテストすることは極めて重要です。そのため、"アプリケーション テスト" フェーズでは、テスト (ステージング) 環境と呼ばれる運用環境に近い環境で、すべてのトレーニング済みモデルやアプリケーションを厳密にテストします。このフェーズでは、A/B テスト、統合テスト、ユーザー受入テスト (UAT)、シャドー テスト、ロード テストなどのテストを実施することがあります。

以下は、機械学習システムのテストに必要な階層を反映した、テストのためのフレームワークです。

 

機械学習のニーズの階層を示すピラミッド図形。下から順に、堅牢性に該当するタスク、スケーラビリティに該当するタスク、最後にセキュリティに該当するタスクとなっています。

図 3:機械学習システムのテストに対するニーズの階層。

 

機械学習システムについて考える 1 つの方法は、マズローの欲求階層を考えることです。ピラミッドの下位レベルは「生存」を反映しており、人間の真の潜在能力は、基本的な生存欲求と感情的欲求が満たされた後に解き放たれます。同様に、堅牢性、スケーラビリティ、安全性を検査するテストにより、システムが基本的なレベルで機能するだけでなく、その真の可能性を発揮することが保証されます。なお、機能テストや非機能テストには、スモーク テスト (迅速正常性診断) やパフォーマンス テスト (ストレス) など、さまざまな形態がありますが、これらはすべてシステム テストに分類することができます。

これから 3 回にわたって、堅牢性から始まり、スケーラビリティ、そして最後に安全性と、3 つの大まかなテストのレベルについてそれぞれ解説していきます。

詳細とハンズオンの実装については、「エンジニアリング MLOps」をご覧ください。また、オンデマンド Web セミナー「MLOps のベスト プラクティスで価値実現までの時間を短縮する」では、MLOps を使って Microsoft Azure Machine Learning でモデルを構築してデプロイする方法について学ぶことができます。 また、Azure Machine Learning での MLOps ワークストリームを簡素化するソリューション アクセラレータ (MLOps v2) については、先日発表したブログでご確認ください。


画像のソース: エンジニアリング MLOps ブック