本番環境 ML システム: デプロイテスト

ユニコーンの出現を予測するユニコーン モデルをデプロイする準備が整いました。 デプロイ時に、機械学習(ML)パイプラインを実行、更新、 提供できますモデルのデプロイだけが [デプロイ] ボタンをクリックします。残念ながら完全な ML システムは 次のテストが必要です。

  • 入力データを検証する。
  • 特徴量エンジニアリングを検証する。
  • 新しいモデル バージョンの品質を検証する。
  • サービング インフラストラクチャを検証する。
  • パイプライン コンポーネント間の統合のテスト。

多くのソフトウェア エンジニアはテスト駆動開発(TDD)を好みます。TDD では、ソフトウェア エンジニアは「実際の」レビューを書く前にテストを作成するソースコードです。 ただし、TDD は ML では難しい場合があります。 たとえば、モデルをトレーニングする前に、検証のためのテストを記述できない あります。その代わりに、モデル化過程で達成可能な損失をまず発見する必要がある 新しいモデル バージョンを開発し、達成可能な損失に対してテストする。

ユニコーン モデルについて

このセクションでは、ユニコーン モデルについて説明します。必知事項は次のとおりです。

ML を使用して、予測を行う分類モデルを構築しています。 ユニコーンの登場です。データセットにはユニコーンが 10,000 回出現し、 ユニコーンが 10,000 人見えなかった。データセットにはロケーションと 時刻、標高、温度、湿度、樹木被覆、環境 他にもいくつかの機能があります

再現可能なトレーニングでモデルの更新をテストする

ユニコーン モデルをさらに改善したい場合は、たとえば 特定の特徴に対して追加の特徴量エンジニアリングを より良い(または少なくとも同じ)結果を期待して、モデルを再トレーニングします。 残念ながら、モデルのトレーニングを再現するのは難しい場合があります。 再現性を向上させるには、次の推奨事項に従ってください。

  • 乱数ジェネレータを決定的にシードする。 詳しくは、データのランダム化 生成

  • モデル コンポーネントを一定の順序で初期化して、コンポーネントが 実行のたびに乱数ジェネレータから同じ乱数が生成されます。 ML ライブラリは通常、この要件を自動的に処理します。

  • モデルを複数回実行したときの平均値を求める。

  • 暫定的なイテレーションであっても、バージョン管理を使用して、 モデルやパイプラインを調査する際に、コードとパラメータを正確に特定できます。

これらのガイドラインに従ったとしても、他の非決定性の原因によって、 あります。

Machine Learning API の呼び出しをテストする

API 呼び出しの更新をどのようにテストしますか。モデルを再トレーニングすることもできますが これには時間がかかります。代わりに、ランダムな入力データを生成する単体テストを作成します。 勾配降下法を 1 ステップ実行しますこのステップが API を更新してもモデルを台なしにすることはないでしょう。

パイプライン コンポーネントの統合テストを作成する

ML パイプラインで 1 つのコンポーネントを変更すると、他のコンポーネントでエラーが発生する可能性がある 説明します。次のスクリプトを作成して、コンポーネントが連携することを確認します。 統合テスト。パイプライン全体をエンドツーエンドで実行する。

統合テストを継続的に実施するだけでなく、統合テストも実施する必要がある 新しいモデルや新しいソフトウェア バージョンを push するのに便利です。アプリケーションの パイプライン全体が複雑になり、継続的インテグレーションのテストが困難になります。統合を実行するには データのサブセットで、またはシンプルなモデルでトレーニングできます。詳細 モデルとデータによって異なります継続的に受信するには、 迅速にテストして、新しいバージョンのモデルやソフトウェアでテストを実行できます。 その間、低速なテストはバックグラウンドで継続的に実行されます。

サービング前にモデルの品質を検証する

新しいモデル バージョンを本番環境に push する前に、 品質の低下には 次の 2 種類があります

  • 急激な性能低下。新しいバージョンのバグによって、 低品質です。新しいバージョンの品質をチェックして検証する おすすめします。

  • 劣化が遅い。突然の低下に関するテストでは、 モデルの品質の低下代わりに、 検証用データセットに対するモデルの予測が、固定しきい値を満たすようにします。お使いの ライブデータから逸脱した場合に検証用データセットを モデルが同じ品質しきい値を満たしていることを確認します

サービス提供前にモデルとインフラストラクチャの互換性を検証する

モデルがサーバーよりも早く更新されると、モデルは 依存関係が異なるため、サーバーとソフトウェアの依存関係が サポートしています。モデルで使用される演算が サンドボックス化されたバージョンのサーバーでモデルをステージングしてサーバーをステージングします。