ベクトル検索エンドポイントの負荷テストを構成する
このページでは、負荷テスト用のノートブックの例を提供し、セットアップ要件、認証、クラスター構成、および負荷テストを実行して一連検索エンドポイントのパフォーマンスを最適化するための段階的な手順を説明します。
ロード テストと関連する概念の詳細については、サービス エンドポイントのロード テストを参照してください。
要件
次のファイルとサンプルノートブックのコピーをダウンロードして、Databricks ワークスペースにインポートします。
- 入力JSON 。 このファイルは、すべての並列接続によってエンドポイントに送信されるペイロードを指定します。 ペイロードのサイズに敏感なエンドポイントをテストする場合は、入力ペイロードがエンドポイントの予想される使用方法を反映していることを確認します。「ペイロードのテスト」を参照してください。
- fast_vs_load_test_async_load.py 。このスクリプトは、サンプルノートブックによって認証トークンを検証し、
input.json
ファイルの内容を読み込むために使用されます。
Locust 負荷テストノートブック
最高のパフォーマンスを得るには、ノートブックを実行するために使用するクラスター上のワーカーに対して、多数のコアと大容量のメモリを選択します。
Locust
Locust は、本番運用グレードのエンドポイントを評価するために一般的に使用される負荷テスト用のオープンソース フレームワークです。 その Locust フレームワークを使用すると、テスト全体を通じてエンドポイントのパフォーマンスを測定しながら、クライアント接続の数やクライアント接続の生成速度など、さまざまな引数を変更できます。 Locust はアプローチを標準化し自動化するため、すべてのサンプル コードに使用されます。
Locust はテストを実行するために CPU リソースに依存します。ペイロードに応じて、CPU コアごとに 1 秒あたり約 4000 件のリクエストが可能になります。サンプルノートブックでは、 --processes -1
フラグが設定されており、Locust がドライバー上の CPU コアの数を自動検出し、それらを完全に使用できるようになっています。
Locust が CPU によってボトルネックになっている場合は、出力メッセージが表示されます。
サービスプリンシパルを設定する
これをサンプルノートブックの外部で実行します。
ルート最適化エンドポイントと対話するには、Locust テストでエンドポイントをクエリする権限を持つ OAuth トークンを生成できる必要があります。認証を設定するには、次のステップに従ってください。
-
地下鉄検索エンドポイント Web ページに移動します。 [権限] をクリックし、サービスプリンシパル Can クエリ レベルの権限を与えます。
-
2 つのキーを使用して名前を付けたdatabricks シークレットスコープを作成します。
- Databricksサービスプリンシパルの ID。 例:
service_principal_client_id
。 - Databricksサービスプリンシパルのクライアント シークレット。 たとえば
service_principal_client_secret
。
- Databricksサービスプリンシパルの ID。 例:
-
サービスプリンパルシのクライアント ID とクライアント シークレットをDatabricksシークレットに入力します。
ノートブックを設定する
次のセクションでは、サンプル ノートブックとダウンロードしたサポート ファイルを設定する方法について説明します。
変数を設定する
サンプルのノートブックのコピーで、以下を構成します。
パラメーター | 説明 |
---|---|
| 地下鉄検索エンドポイントの名前。 |
| それぞれの負荷テストを実行する時間。多くの負荷テストが実行されるため、5 ~ 10 分の期間が適切なデフォルトです。 |
| Locust 負荷テストでは、情報とメトリクスのCSVファイルを出力します。 この文字列は、CSV ファイルの先頭に追加されるプレフィックスを定義します。 |
| サービスプリンシパル情報を含むDatabricksシークレットスコープの名前。 |
ペイロードを指定する
サンプルノートブックの横にあるinput.json
ファイルにペイロードを指定します。
負荷テスト結果の妥当性を確認するには、Locust クライアントによって送信されるペイロードを考慮することが重要です。本番運用で送信する予定のペイロードの種類を正確に表すペイロードを選択します。 たとえば、モデルが、リクエストごとに 1 つのトランザクションなど、クレジットカードのトランザクションをリアルタイムで評価する不正検出モデルである場合は、ペイロードが 1 つの一般的なトランザクションのみを表していることを確認します。
ペイロードをテストする
input.json
データ全体をコピーして、グラフ検索 エンド ポイントのクエリ ウィンドウに貼り付け、モデルが目的の出力で応答していることを確認し、ペイロードをテストします。
エンドポイントの クエリ ボックスを開くには:
- Databricks ワークスペースの左側のサイドバーから、 [Serving] を選択します。
- 負荷テストに使用するエンドポイントを選択します。
- 右上隅の [使用] ドロップダウン メニューから [クエリ] を選択します。
特定のパーセンタイルのレイテンシーを達成するために必要なエンドポイントの同時実行性は、同時接続の数に比例して増加します。 つまり、最終テストを実行する前に、小さなエンドポイントでテストし、必要なエンドポイントのサイズを計算できます。
負荷テストを実行する
エンドポイント、ノートブック、およびペイロードが構成されたら、ノートブックの実行をステップ実行し始めることができます。
ノートブックはエンドポイントに対して 30 秒間の負荷テストを実行し、エンドポイントがオンラインで応答していることを確認します。
サンプルノートブックでは、クライアント側の同時実行性をさまざまな量で使用して、一連の負荷テストを実行できます。一連の負荷テストを完了すると、ノートブックの結果に、要求の失敗や例外の内容が表示され、クライアントの同時実行性に対する待機時間のパーセンタイルのプロットも表示されます。
ノートブックには結果の表が表示されるので、レイテンシ要件に最も適した行を選択し、アプリケーションの希望する RPS を入力する必要があります。提供された情報に基づいて、ノートブックは RPS とレイテンシの目標を満たすエンドポイントのサイズ設定を推奨します。
ノートブックの推奨事項に合わせてエンドポイント構成を更新した後、ノートブックの最終負荷テストを実行して、エンドポイントがレイテンシと RPS の両方の要件を満たしていることを確認できます。