準備
Virtual Private Cloud (VPC) 環境でのテストの実施をお勧めします。
VPC の詳細については、「VPC とは」をご参照ください。
インターネット経由でストレステストを実行する方法の詳細については、「パブリックアクセスホワイトリストを設定する」をご参照ください。
gist-960-euclidean データセットをダウンロードします。


パッケージを解凍し、gist_base.fvecs ファイルを使用します。
Python 3 と関連ライブラリをインストールします。
h5py
json
numpy
sklearn
alibabacloud_ha3engine_vectorデータの生成
prepare_data.pyを実行します。このスクリプトは、.hdf5、.fvecs、.bvecs、および .ivecs 形式のベクトルデータをサポートしています。この例では、.hdf5を使用します。
python3 prepare_data.py -i ./gist-960-euclidean.hdf5 スクリプトディレクトリの
data/サブディレクトリを表示します。gist-960-euclidean.hdf5.dataが生成されます。データ行数を確認します。
wc -l data/gist-960-euclidean.hdf5.data
1000000 gist-960-euclidean.hdf5.dataOpenSearch Vector Search Edition インスタンスを購入する
詳細については、「OpenSearch Vector Search Edition インスタンスを購入する」をご参照ください。
テーブルを作成する
参照:
クエリを生成する
prepare_query.pyスクリプトを実行して、生データからランダムにクエリを生成します。
python3 prepare_query.py -i gist-960-euclidean.hdf5 -c 10000 -t gistdata/サブディレクトリに生成されたquery.dataファイルを取得します。
wrk を使用したストレステスト
wrk は、オープンソースの HTTP リクエストストレステストツールです。
https://github.com/wg/wrk から wrk をダウンロードします。
git clone https://github.com/wg/wrk.gitストレステスト用に
search.luaを実行します。スクリプトを wrk/scripts/ ディレクトリにコピーします。
cp search.lua wrk/scripts/署名を計算し、
requestメソッドのheader["Authorization"]を変更します。
-- 実行中、wrk はランダムにクエリを選択して特定のリクエストを構築します
request = function ()
local query = query_table[count]
count = (count + 1)%query_count
local headers = {}
headers["Authorization"] = "Basic xxxx" -- 署名情報
headers["Content-Type"] = "application/json"
return wrk.format("POST", nil, headers, query)
endストレステストを実行します。
-c: 同時接続数。-t: リクエストを送信するためのスレッド数。-d: ストレステストの指定期間。-s: 指定されたスクリプト。--latency: 詳細なストレステスト結果を表示します。
./wrk -c24 -d100s -t8 -s scripts/search.lua http://ha-cn-xxxxxx.ha.aliyuncs.com/vector-service/query --latencyメトリックを表示する
取得率や応答時間などのメトリックを表示します。
詳細については、「RAM ユーザーにインスタンス監視メトリックの表示を承認する」をご参照ください。
スクリプトのダウンロードリンク
パフォーマンステストデータ
以下は、第 8 世代マシンを使用した Vector Search Edition の ANN_GIST1M 960 次元データセットでの結果です。
製品 | OpenSearch (gist に含まれる 1000 個のクエリを使用したストレステスト。groundtruth に従って ef を調整) | |
テストデータセット ANN_GIST1M 960 次元 (http://corpus-texmex.irisa.fr/) | ||
製品バージョン | OpenSearch-Vector Search Edition 2024.11 vector_service_1.4.0_test_202411081507 | OpenSearch-Vector Search Edition 2024.11 vector_service_1.3.0_202410081048 |
マシンスペック | 16 コア 64G ecs.g8i.4xlarge 第 8 世代マシン | |
テストツール | wrk (https://github.com/wg/wrk) ストレステストパラメーター: スレッド: 10 接続: 30 | wrk (https://github.com/wg/wrk) ストレステストパラメーター: スレッド: 10 接続: 40 |
パラメーター | m: 100 ef_construction: 500 | |
ベクトルアルゴリズム | HNSW | QGRAPH (HNSW+量子化) |
top10 recall@95 | クエリパラメーター: ef=60 | クエリパラメーター: ef=40: recall@94 ef=80: recall@95 |
QPS: 4486.06 レイテンシ (平均): 6.7 ミリ秒 CPU 負荷: 95.8% | recall 94 ef=40 QPS: 4957.48 レイテンシ (平均): 7.6 ミリ秒 CPU 負荷: 93% recall 95 ef=80 QPS: 3700.74 レイテンシ (平均): 8.19 ミリ秒 CPU 負荷: 92% | |
top10 recall@99 | クエリパラメーター: ef=170 | 最大リコールは 95.8 で、99 には到達できません |
QPS: 2868.77 レイテンシ (平均): 10.44 ミリ秒 CPU 負荷: 94% | ||
top10 recall@99.5 | クエリパラメーター: ef=300 スレッド: 10 接続: 20 | |
QPS: 2050.66 レイテンシ (平均): 9.73 ミリ秒 CPU 負荷: 95% | ||