メインコンテンツまでスキップ

カスタム モデル サービング エンドポイントのロード テストを構成する

この記事では、ロード テスト ノートブックの例を示し、セットアップ要件、認証、クラスタリング構成、およびエンドポイントのパフォーマンスを最適化するためのロード テストを実行するための詳細な手順について説明します。

この記事の情報とサンプルファイルを使用すると、 DatabricksでMosaic AIモデルサービングエンドポイントのロード テストを構成する方法を開始できます。

ロード テストと関連する概念の詳細については、サービス エンドポイントのロード テストを参照してください。

必要条件

次のファイルとサンプル ノートブックのコピーをダウンロードして、Databricks ワークスペースにインポートします。

  • input.json

    • このファイルは、すべての並列接続によってエンドポイントに送信されるペイロードを指定します。 ペイロードのサイズに適したエンドポイントをテストする場合は、入力ペイロードがエンドポイントの使用方法を表していることを確認してください。詳細については、「 ペイロードのテスト 」を参照してください。
  • fast-load-test.py

    • このスクリプトは、 Locust ロード テスト ノートブックによって使用され、認証トークンを検証し、入力を読み取ります。JSON ファイルの内容。

Locust load test ノートブック

Open notebook in new tab

上記のファイルとサンプルノートブックは、次のクラスタリング設定を使用してテストされています。

  • シングルノードクラスター
  • 15.4 LTS ML ランタイム
  • CPU 最適化インスタンスを選択します。Databricks では、少なくとも 32 個のコアを持つインスタンスをお勧めします。コア数が多いインスタンスでは、1 秒あたりのクエリ数またはリクエスト数 (RPS) が高くなる可能性があります。

Locust

Locust は、本番運用グレードのエンドポイントの評価に一般的に使用される負荷テスト用のオープンソースフレームワークです。 ローカストフレームワークを使用すると、クライアント接続の数やクライアント接続の生成速度など、さまざまなパラメーターを変更しながら、テスト全体でエンドポイントのパフォーマンスを測定できます。 Locust は、アプローチを標準化および自動化するため、すべてのサンプル コードで使用されます。

Locust は、テストの実行を CPU リソースに依存しています。ペイロードにもよりますが、これにより CPU コアあたり毎秒約 4000 件のリクエストが促進されます。 Locust ロード テスト ノートブックでは、Locust がドライバーの CPU コアの数を自動検出し、それらを十分に活用できるように、--processes -1 フラグが設定されています。

ローカストの出力に注意してください。Locust が CPU によってボトルネックになっている場合は、出力メッセージが表示されます。

環境を設定する

このセクションのガイダンスは、 Locust負荷テスト ノートブックの外部で完了することを目的としています。

エンドポイントの構成

Locust load test ノートブックは、モデルが CPU モデルサービング エンドポイントで実行されていることを前提としています。このノートブックの計算では、Serving UI を使用して配信エンドポイントを作成したときに、次の設定を設定したことを前提としています。カスタム モデルサービング エンドポイントの作成を参照してください。

  • "Small" (エンドポイントの同時実行数 4) の CPU エンドポイントから開始します。エンドポイントを作成するときは、最小同時実行数と最大同時実行数の両方が 4 であることを確認してください
  • ルート最適化が有効になっている
  • Scale to Zero は無効です

サービスプリンシパルのセットアップ

ルート最適化エンドポイントと対話するには、Locust テストでエンドポイントをクエリする権限を持つ OAuth トークンを生成できる必要があります。次の手順に従って、認証を準備します。

  1. Databricks サービスプリンシパルの作成

  2. モデルサービングエンドポイントのWebページに移動し、[権限]をクリックして、サービスプリンシパルに[クエリ可能]レベルの権限を付与します。

  3. 次の 2 つのキーで名前が付けられた databricks シークレットスコープを作成します

    1. Databricks サービスプリンシパルの ID。たとえば、 service_principal_client_id のようになります。
    2. Databricks サービスプリンシパルのクライアントシークレット。たとえば、 service_principal_client_secret.
  4. サービスプリンシパルのクライアントIDとクライアントシークレットを Databricks シークレットに入れます。

ノートブックのセットアップ

次のセクションでは、 Locust 負荷テスト ノートブックの設定方法と、 要件でダウンロードしたサポートファイルについて説明します。

変数の構成

Locust Load Test ノートブックのコピーで、次のパラメーターを構成します。

パラメーター

説明

endpoint_name

Databricksモデルサービングエンドポイントの名前。

locust_run_time

個々のロード テストを実行する時間。多くのロード テストが実行されるため、5 分から 10 分の期間が適切です。

csv_output_prefix

Locust load testsは CSV 情報とメトリクスのファイルを出力します。 この文字列は、CSV ファイルの先頭に付加されるプレフィックスを定義します。

secret_scope_name

サービスプリンシパル 情報を含む Databricks シークレットスコープの名前。

ペイロードの指定

ペイロードを input.json ファイルに Locust 負荷テスト ノートブックと共に指定します。

ロード テストの結果の有効性を確保するには、Locust クライアントによって送信されるペイロードを考慮することが重要です。本番運用で送信する予定のペイロードのタイプを正確に表すペイロードを選択します。 たとえば、モデルがクレジット カード取引の不正検出モデルであり、リクエストごとに 1 つのトランザクションのようにリアルタイムで評価される場合は、ペイロードが一般的な 1 つのトランザクションのみを表すようにします。

ペイロードをテストする

Databricksペイロードをテストするには、 モデルサービングエンドポイントの クエリ ウィンドウに完全なinput.jsonデータをコピーして貼り付け、モデルが目的の出力で応答していることを確認します。

エンドポイントの クエリ ボックスを開くには:

  1. Databricks ワークスペースの Serving UI に移動します。
  2. ロード テストに使用するエンドポイントを選択します。
  3. 右上隅にある 使用 ボタンの横にあるドロップダウン メニューを選択します。
  4. クエリ を選択します。

レイテンシの特定のパーセンタイルを達成するために必要なモデルサービングエンドポイントの同時実行は、並列接続の数に比例してスケーリングされます。 つまり、小さなエンドポイントでテストし、最終テストを実行する前に最終的に必要なサイズのエンドポイントを計算できます。

ロード テストを実行する

エンドポイント、ノートブック、およびペイロードを設定したら、ノートブックの実行をステップ実行を開始できます。
ノートブックは、エンドポイントに対して非常に短い 30 秒のロード テストを実行し、エンドポイントがオンラインで応答していることを確認します。

Locust ロード テスト ノートブックでは、クライアント側のコンカレンシーの量が異なる一連のロード テストを実行できます。一連のロード テストが完了すると、ノートブックには、要求の失敗や例外の内容を出力し、クライアントの同時実行に対する待機時間のパーセンタイルのプロットを作成するセルがあります。

結果の表が表示されるので、選択する必要があります。レイテンシ要件に最も適した行を選択し、アプリケーションに必要なRPSを入力します。ノートブックは、このユーザー指定の情報を受け取り、RPS と待機時間の目標を達成するためのエンドポイントのサイズ設定方法に関する推奨事項で応答します。

モデルサービングエンドポイントの設定をノートブックの推奨事項と一致するように更新した後、ノートブックの最終負荷テストを実行して、エンドポイントがレイテンシ要件とRPS要件の両方を満たしていることを確認できます。