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