ユニコーンの出現を予測するユニコーン モデルをデプロイする準備が整いました。 デプロイ時に、機械学習(ML)パイプラインを実行、更新、 提供できますモデルのデプロイだけが [デプロイ] ボタンをクリックします。残念ながら完全な ML システムは 次のテストが必要です。
- 入力データを検証する。
- 特徴量エンジニアリングを検証する。
- 新しいモデル バージョンの品質を検証する。
- サービング インフラストラクチャを検証する。
- パイプライン コンポーネント間の統合のテスト。
多くのソフトウェア エンジニアはテスト駆動開発(TDD)を好みます。TDD では、ソフトウェア エンジニアは「実際の」レビューを書く前にテストを作成するソースコードです。 ただし、TDD は ML では難しい場合があります。 たとえば、モデルをトレーニングする前に、検証のためのテストを記述できない あります。その代わりに、モデル化過程で達成可能な損失をまず発見する必要がある 新しいモデル バージョンを開発し、達成可能な損失に対してテストする。
ユニコーン モデルについて
このセクションでは、ユニコーン モデルについて説明します。必知事項は次のとおりです。
ML を使用して、予測を行う分類モデルを構築しています。 ユニコーンの登場です。データセットにはユニコーンが 10,000 回出現し、 ユニコーンが 10,000 人見えなかった。データセットにはロケーションと 時刻、標高、温度、湿度、樹木被覆、環境 他にもいくつかの機能があります
再現可能なトレーニングでモデルの更新をテストする
ユニコーン モデルをさらに改善したい場合は、たとえば 特定の特徴に対して追加の特徴量エンジニアリングを より良い(または少なくとも同じ)結果を期待して、モデルを再トレーニングします。 残念ながら、モデルのトレーニングを再現するのは難しい場合があります。 再現性を向上させるには、次の推奨事項に従ってください。
乱数ジェネレータを決定的にシードする。 詳しくは、データのランダム化 生成
モデル コンポーネントを一定の順序で初期化して、コンポーネントが 実行のたびに乱数ジェネレータから同じ乱数が生成されます。 ML ライブラリは通常、この要件を自動的に処理します。
モデルを複数回実行したときの平均値を求める。
暫定的なイテレーションであっても、バージョン管理を使用して、 モデルやパイプラインを調査する際に、コードとパラメータを正確に特定できます。
これらのガイドラインに従ったとしても、他の非決定性の原因によって、 あります。
Machine Learning API の呼び出しをテストする
API 呼び出しの更新をどのようにテストしますか。モデルを再トレーニングすることもできますが これには時間がかかります。代わりに、ランダムな入力データを生成する単体テストを作成します。 勾配降下法を 1 ステップ実行しますこのステップが API を更新してもモデルを台なしにすることはないでしょう。
パイプライン コンポーネントの統合テストを作成する
ML パイプラインで 1 つのコンポーネントを変更すると、他のコンポーネントでエラーが発生する可能性がある 説明します。次のスクリプトを作成して、コンポーネントが連携することを確認します。 統合テスト。パイプライン全体をエンドツーエンドで実行する。
統合テストを継続的に実施するだけでなく、統合テストも実施する必要がある 新しいモデルや新しいソフトウェア バージョンを push するのに便利です。アプリケーションの パイプライン全体が複雑になり、継続的インテグレーションのテストが困難になります。統合を実行するには データのサブセットで、またはシンプルなモデルでトレーニングできます。詳細 モデルとデータによって異なります継続的に受信するには、 迅速にテストして、新しいバージョンのモデルやソフトウェアでテストを実行できます。 その間、低速なテストはバックグラウンドで継続的に実行されます。
サービング前にモデルの品質を検証する
新しいモデル バージョンを本番環境に push する前に、 品質の低下には 次の 2 種類があります
急激な性能低下。新しいバージョンのバグによって、 低品質です。新しいバージョンの品質をチェックして検証する おすすめします。
劣化が遅い。突然の低下に関するテストでは、 モデルの品質の低下代わりに、 検証用データセットに対するモデルの予測が、固定しきい値を満たすようにします。お使いの ライブデータから逸脱した場合に検証用データセットを モデルが同じ品質しきい値を満たしていることを確認します
サービス提供前にモデルとインフラストラクチャの互換性を検証する
モデルがサーバーよりも早く更新されると、モデルは 依存関係が異なるため、サーバーとソフトウェアの依存関係が サポートしています。モデルで使用される演算が サンドボックス化されたバージョンのサーバーでモデルをステージングしてサーバーをステージングします。