From 5148fc150b2eb5c2709526e3a6bb07afadef4a9e Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Wed, 4 Dec 2019 11:42:34 +0800
Subject: [PATCH 1/2] docs: add gaolizhou as a contributor (#679)
* docs: update README.md [skip ci]
* docs: create .all-contributorsrc [skip ci]
---
.all-contributorsrc | 24 ++++++++++++++++++++++++
README.md | 13 +++++++++++++
2 files changed, 37 insertions(+)
create mode 100644 .all-contributorsrc
diff --git a/.all-contributorsrc b/.all-contributorsrc
new file mode 100644
index 0000000000..9a1cd217b6
--- /dev/null
+++ b/.all-contributorsrc
@@ -0,0 +1,24 @@
+{
+ "files": [
+ "README.md"
+ ],
+ "imageSize": 100,
+ "commit": false,
+ "contributors": [
+ {
+ "login": "gaolizhou",
+ "name": "gaolizhou",
+ "avatar_url": "https://avatars2.githubusercontent.com/u/2884044?v=4",
+ "profile": "https://github.com/gaolizhou",
+ "contributions": [
+ "code"
+ ]
+ }
+ ],
+ "contributorsPerLine": 7,
+ "projectName": "milvus",
+ "projectOwner": "milvus-io",
+ "repoType": "github",
+ "repoHost": "https://github.com",
+ "skipCi": true
+}
diff --git a/README.md b/README.md
index f975f0437e..214acac775 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
+[](#contributors-)

[](https://join.slack.com/t/milvusio/shared_invite/enQtNzY1OTQ0NDI3NjMzLWNmYmM1NmNjOTQ5MGI5NDhhYmRhMGU5M2NhNzhhMDMzY2MzNDdlYjM5ODQ5MmE3ODFlYzU3YjJkNmVlNDQ2ZTk)
@@ -56,6 +57,18 @@ To connect with other users and contributors, welcome to join our [Slack channel
## Contributors
Below is a list of Milvus contributors. We greatly appreciate your contributions!
+
+
+
+
+
+
+
+
- [akihoni](https://github.com/akihoni) provided the CN version of README, and found a broken link in the doc.
- [goodhamgupta](https://github.com/goodhamgupta) fixed a filename typo in the bootcamp doc.
From beed46f79c6436350ca6bf9d279553309653b933 Mon Sep 17 00:00:00 2001
From: del-zhenwu <56623710+del-zhenwu@users.noreply.github.com>
Date: Wed, 4 Dec 2019 14:18:20 +0800
Subject: [PATCH 2/2] Upgrade pyyaml and update tests (#681)
---
tests/milvus_ann_acc/client.py | 6 +-
tests/milvus_ann_acc/requirements.txt | 6 +-
tests/milvus_ann_acc/runner.py | 6 +-
tests/milvus_ann_acc/suite.yaml | 14 +-
tests/milvus_ann_acc/suite_cpu.yaml | 19 ++
tests/milvus_ann_acc/suite_debug.yaml | 13 +-
tests/milvus_ann_acc/suite_gpu.yaml | 19 ++
tests/milvus_benchmark/client.py | 127 ++++++++-----
.../milvus_benchmark/conf/server_config.yaml | 60 +++---
tests/milvus_benchmark/docker_runner.py | 34 +++-
tests/milvus_benchmark/local_runner.py | 119 ++++++++++--
tests/milvus_benchmark/requirements.txt | 11 +-
tests/milvus_benchmark/runner.py | 52 +++--
.../suites/accuracy_random50m.yaml | 57 ++++++
.../suites/accuracy_sift10m.yaml | 75 ++++++++
.../suites/accuracy_sift1b.yaml | 73 ++++++++
.../suites/accuracy_sift500m.yaml | 21 +++
.../suites/accuracy_sift50m.yaml | 76 ++++++++
tests/milvus_benchmark/suites/insert.yaml | 32 ++++
.../suites/old_performance_sift50m.yaml | 80 ++++++++
.../suites/performance_random1m.yaml | 35 ++++
.../suites/performance_random50m.yaml | 177 ++++++++++++++++++
.../suites/performance_sift10m.yaml | 83 ++++++++
.../suites/performance_sift1b.yaml | 123 ++++++++++++
.../suites/performance_sift1m.yaml | 23 +++
.../suites/performance_sift500m.yaml | 50 +++++
.../suites/performance_sift50m.yaml | 82 ++++++++
tests/milvus_benchmark/suites/suites.yaml | 161 ++++++++++++++++
.../suites/suites_accuracy.yaml | 51 +++++
.../suites/suites_performance.yaml | 57 ++++++
.../suites/suites_stability.yaml | 31 +++
tests/milvus_benchmark/utils.py | 14 +-
32 files changed, 1649 insertions(+), 138 deletions(-)
create mode 100644 tests/milvus_ann_acc/suite_cpu.yaml
create mode 100644 tests/milvus_ann_acc/suite_gpu.yaml
create mode 100644 tests/milvus_benchmark/suites/accuracy_random50m.yaml
create mode 100644 tests/milvus_benchmark/suites/accuracy_sift10m.yaml
create mode 100644 tests/milvus_benchmark/suites/accuracy_sift1b.yaml
create mode 100644 tests/milvus_benchmark/suites/accuracy_sift500m.yaml
create mode 100644 tests/milvus_benchmark/suites/accuracy_sift50m.yaml
create mode 100644 tests/milvus_benchmark/suites/insert.yaml
create mode 100644 tests/milvus_benchmark/suites/old_performance_sift50m.yaml
create mode 100644 tests/milvus_benchmark/suites/performance_random1m.yaml
create mode 100644 tests/milvus_benchmark/suites/performance_random50m.yaml
create mode 100644 tests/milvus_benchmark/suites/performance_sift10m.yaml
create mode 100644 tests/milvus_benchmark/suites/performance_sift1b.yaml
create mode 100644 tests/milvus_benchmark/suites/performance_sift1m.yaml
create mode 100644 tests/milvus_benchmark/suites/performance_sift500m.yaml
create mode 100644 tests/milvus_benchmark/suites/performance_sift50m.yaml
create mode 100644 tests/milvus_benchmark/suites/suites.yaml
create mode 100644 tests/milvus_benchmark/suites/suites_accuracy.yaml
create mode 100644 tests/milvus_benchmark/suites/suites_performance.yaml
create mode 100644 tests/milvus_benchmark/suites/suites_stability.yaml
diff --git a/tests/milvus_ann_acc/client.py b/tests/milvus_ann_acc/client.py
index 6fec829612..4ec3cb151a 100644
--- a/tests/milvus_ann_acc/client.py
+++ b/tests/milvus_ann_acc/client.py
@@ -88,8 +88,10 @@ class MilvusClient(object):
index_type = IndexType.IVF_SQ8
elif index_type == "ivf_sq8h":
index_type = IndexType.IVF_SQ8H
- elif index_type == "mix_nsg":
- index_type = IndexType.MIX_NSG
+ elif index_type == "nsg":
+ index_type = IndexType.NSG
+ elif index_type == "ivf_pq":
+ index_type = IndexType.IVF_PQ
index_params = {
"index_type": index_type,
"nlist": nlist,
diff --git a/tests/milvus_ann_acc/requirements.txt b/tests/milvus_ann_acc/requirements.txt
index 1f2b337423..ee6a8a11ff 100644
--- a/tests/milvus_ann_acc/requirements.txt
+++ b/tests/milvus_ann_acc/requirements.txt
@@ -1,9 +1,9 @@
numpy==1.16.3
-pymilvus>=0.2.0
+pymilvus-test>=0.2.0
scikit-learn==0.19.1
h5py==2.7.1
influxdb==5.2.2
-pyyaml==3.12
+pyyaml>=5.1
tableprint==0.8.0
ansicolors==1.1.8
-scipy==1.3.1
\ No newline at end of file
+scipy==1.3.1
diff --git a/tests/milvus_ann_acc/runner.py b/tests/milvus_ann_acc/runner.py
index 88a5d24016..ac5fc0a6dc 100644
--- a/tests/milvus_ann_acc/runner.py
+++ b/tests/milvus_ann_acc/runner.py
@@ -55,9 +55,9 @@ def recall_calc(result_ids, true_ids, top_k, recall_k):
sum_intersect_num = 0
recall = 0.0
for index, result_item in enumerate(result_ids):
- if len(set(true_ids[index][:top_k])) != len(set(result_item)):
- logger.warning("Error happened: query result length is wrong")
- continue
+ # if len(set(true_ids[index][:top_k])) != len(set(result_item)):
+ # logger.warning("Error happened: query result length is wrong")
+ # continue
tmp = set(true_ids[index][:recall_k]).intersection(set(result_item))
sum_intersect_num = sum_intersect_num + len(tmp)
recall = round(sum_intersect_num / (len(result_ids) * recall_k), 4)
diff --git a/tests/milvus_ann_acc/suite.yaml b/tests/milvus_ann_acc/suite.yaml
index 1137ccfa64..7e772649a6 100644
--- a/tests/milvus_ann_acc/suite.yaml
+++ b/tests/milvus_ann_acc/suite.yaml
@@ -1,29 +1,29 @@
datasets:
- sift-128-euclidean:
- index_file_sizes: [50, 1024]
+ index_file_sizes: [1024]
index_types: ['ivf_flat', 'ivf_sq8', 'ivf_sq8h']
# index_types: ['ivf_sq8']
nlists: [16384]
search_param:
- nprobes: [1, 32, 128, 256]
+ nprobes: [1, 8, 16, 32, 64, 128, 256, 512]
top_ks: [10]
nqs: [10000]
- glove-25-angular:
- index_file_sizes: [50, 1024]
+ index_file_sizes: [1024]
index_types: ['ivf_flat', 'ivf_sq8', 'ivf_sq8h']
# index_types: ['ivf_sq8']
nlists: [16384]
search_param:
- nprobes: [1, 32, 128, 256]
+ nprobes: [1, 8, 16, 32, 64, 128, 256, 512]
top_ks: [10]
nqs: [10000]
- glove-200-angular:
- index_file_sizes: [50, 1024]
+ index_file_sizes: [1024]
index_types: ['ivf_flat', 'ivf_sq8', 'ivf_sq8h']
# index_types: ['ivf_sq8']
nlists: [16384]
search_param:
- nprobes: [1, 32, 128, 256]
+ nprobes: [1, 8, 16, 32, 64, 128, 256, 512]
top_ks: [10]
nqs: [10000]
-hdf5_path: /test/milvus/ann_hdf5/
\ No newline at end of file
+hdf5_path: /test/milvus/ann_hdf5/
diff --git a/tests/milvus_ann_acc/suite_cpu.yaml b/tests/milvus_ann_acc/suite_cpu.yaml
new file mode 100644
index 0000000000..44caaeb91c
--- /dev/null
+++ b/tests/milvus_ann_acc/suite_cpu.yaml
@@ -0,0 +1,19 @@
+datasets:
+ - sift-128-euclidean:
+ index_file_sizes: [1024]
+ index_types: ['ivf_flat', 'ivf_sq8']
+ nlists: [16384]
+ search_param:
+ nprobes: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
+ top_ks: [10]
+ nqs: [10000]
+ - glove-200-angular:
+ index_file_sizes: [1024]
+ index_types: ['ivf_flat', 'ivf_sq8']
+ # index_types: ['ivf_sq8']
+ nlists: [16384]
+ search_param:
+ nprobes: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
+ top_ks: [10]
+ nqs: [10000]
+hdf5_path: /test/milvus/ann_hdf5/
diff --git a/tests/milvus_ann_acc/suite_debug.yaml b/tests/milvus_ann_acc/suite_debug.yaml
index ca463a9c40..44caaeb91c 100644
--- a/tests/milvus_ann_acc/suite_debug.yaml
+++ b/tests/milvus_ann_acc/suite_debug.yaml
@@ -1,10 +1,19 @@
datasets:
- sift-128-euclidean:
index_file_sizes: [1024]
- index_types: ['ivf_flat']
+ index_types: ['ivf_flat', 'ivf_sq8']
nlists: [16384]
search_param:
- nprobes: [1, 256]
+ nprobes: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
+ top_ks: [10]
+ nqs: [10000]
+ - glove-200-angular:
+ index_file_sizes: [1024]
+ index_types: ['ivf_flat', 'ivf_sq8']
+ # index_types: ['ivf_sq8']
+ nlists: [16384]
+ search_param:
+ nprobes: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
top_ks: [10]
nqs: [10000]
hdf5_path: /test/milvus/ann_hdf5/
diff --git a/tests/milvus_ann_acc/suite_gpu.yaml b/tests/milvus_ann_acc/suite_gpu.yaml
new file mode 100644
index 0000000000..e83433ffb9
--- /dev/null
+++ b/tests/milvus_ann_acc/suite_gpu.yaml
@@ -0,0 +1,19 @@
+datasets:
+ - sift-128-euclidean:
+ index_file_sizes: [1024]
+ index_types: ['ivf_flat', 'ivf_sq8', 'ivf_sq8h', 'ivf_pq']
+ nlists: [16384]
+ search_param:
+ nprobes: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
+ top_ks: [10]
+ nqs: [10000]
+ - glove-200-angular:
+ index_file_sizes: [1024]
+ index_types: ['ivf_flat', 'ivf_sq8']
+ # index_types: ['ivf_sq8']
+ nlists: [16384]
+ search_param:
+ nprobes: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
+ top_ks: [10]
+ nqs: [10000]
+hdf5_path: /test/milvus/ann_hdf5/
diff --git a/tests/milvus_benchmark/client.py b/tests/milvus_benchmark/client.py
index 4744c10854..608d760813 100644
--- a/tests/milvus_benchmark/client.py
+++ b/tests/milvus_benchmark/client.py
@@ -10,6 +10,7 @@ from milvus import Milvus, IndexType, MetricType
logger = logging.getLogger("milvus_benchmark.client")
SERVER_HOST_DEFAULT = "127.0.0.1"
+# SERVER_HOST_DEFAULT = "192.168.1.130"
SERVER_PORT_DEFAULT = 19530
@@ -80,16 +81,18 @@ class MilvusClient(object):
index_type = IndexType.IVFLAT
elif index_type == "ivf_sq8":
index_type = IndexType.IVF_SQ8
- elif index_type == "mix_nsg":
- index_type = IndexType.MIX_NSG
+ elif index_type == "nsg":
+ index_type = IndexType.NSG
elif index_type == "ivf_sq8h":
index_type = IndexType.IVF_SQ8H
+ elif index_type == "ivf_pq":
+ index_type = IndexType.IVF_PQ
index_params = {
"index_type": index_type,
"nlist": nlist,
}
logger.info("Building index start, table_name: %s, index_params: %s" % (self._table_name, json.dumps(index_params)))
- status = self._milvus.create_index(self._table_name, index=index_params, timeout=6*3600)
+ status = self._milvus.create_index(self._table_name, index=index_params)
self.check_status(status)
def describe_index(self):
@@ -125,8 +128,13 @@ class MilvusClient(object):
def describe(self):
return self._milvus.describe_table(self._table_name)
+ def show_tables(self):
+ return self._milvus.show_tables()
+
def exists_table(self):
- return self._milvus.has_table(self._table_name)
+ status, res = self._milvus.has_table(self._table_name)
+ self.check_status(status)
+ return res
@time_wrapper
def preload_table(self):
@@ -154,34 +162,60 @@ def fit_concurrent(table_name, process_num, vectors):
if __name__ == "__main__":
+ import numpy
+ import sklearn.preprocessing
- # table_name = "sift_2m_20_128_l2"
- table_name = "test_tset1"
- m = MilvusClient(table_name)
- # m.create_table(table_name, 128, 50, "l2")
+ # table_name = "tset_test"
+ # # table_name = "test_tset1"
+ # m = MilvusClient(table_name)
+ # m.delete()
+ # time.sleep(2)
+ # m.create_table(table_name, 128, 20, "ip")
- print(m.describe())
+ # print(m.describe())
# print(m.count())
# print(m.describe_index())
- insert_vectors = [[random.random() for _ in range(128)] for _ in range(10000)]
- for i in range(5):
- m.insert(insert_vectors)
- print(m.create_index("ivf_sq8h", 16384))
- X = [insert_vectors[0]]
- top_k = 10
- nprobe = 10
- print(m.query(X, top_k, nprobe))
-
- # # # print(m.drop_index())
- # # print(m.describe_index())
# # sys.exit()
- # # # insert_vectors = [[random.random() for _ in range(128)] for _ in range(100000)]
- # # # for i in range(100):
- # # # m.insert(insert_vectors)
- # # # time.sleep(5)
- # # # print(m.describe_index())
- # # # print(m.drop_index())
- # # m.create_index("ivf_sq8h", 16384)
+ # tmp = [[random.random() for _ in range(128)] for _ in range(20000)]
+ # tmp1 = sklearn.preprocessing.normalize(tmp, axis=1, norm='l2')
+ # print(tmp1[0][0])
+ # tmp = [[random.random() for _ in range(128)] for _ in range(20000)]
+ # tmp /= numpy.linalg.norm(tmp)
+ # print(tmp[0][0])
+
+ # sum_1 = 0
+ # sum_2 = 0
+ # for item in tmp:
+ # for i in item:
+ # sum_2 = sum_2 + i * i
+ # break
+ # for item in tmp1:
+ # for i in item:
+ # sum_1 = sum_1 + i * i
+ # break
+ # print(sum_1, sum_2)
+ # insert_vectors = tmp.tolist()
+ # # print(insert_vectors)
+ # for i in range(2):
+ # m.insert(insert_vectors)
+
+ # time.sleep(5)
+ # print(m.create_index("ivf_flat", 16384))
+ # X = [insert_vectors[0], insert_vectors[1], insert_vectors[2]]
+ # top_k = 5
+ # nprobe = 1
+ # print(m.query(X, top_k, nprobe))
+
+ # # print(m.drop_index())
+ # print(m.describe_index())
+ # sys.exit()
+ # # insert_vectors = [[random.random() for _ in range(128)] for _ in range(100000)]
+ # # for i in range(100):
+ # # m.insert(insert_vectors)
+ # # time.sleep(5)
+ # # print(m.describe_index())
+ # # print(m.drop_index())
+ # m.create_index("ivf_sq8h", 16384)
# print(m.count())
# print(m.describe_index())
@@ -193,12 +227,12 @@ if __name__ == "__main__":
# print(m.describe_index())
import numpy as np
- def mmap_fvecs(fname):
- x = np.memmap(fname, dtype='int32', mode='r')
- d = x[0]
- return x.view('float32').reshape(-1, d + 1)[:, 1:]
+ # def mmap_fvecs(fname):
+ # x = np.memmap(fname, dtype='int32', mode='r')
+ # d = x[0]
+ # return x.view('float32').reshape(-1, d + 1)[:, 1:]
- print(mmap_fvecs("/poc/deep1b/deep1B_queries.fvecs"))
+ # print(mmap_fvecs("/poc/deep1b/deep1B_queries.fvecs"))
# SIFT_SRC_QUERY_DATA_DIR = '/poc/yuncong/ann_1000m'
# file_name = SIFT_SRC_QUERY_DATA_DIR+'/'+'query.npy'
# data = numpy.load(file_name)
@@ -229,16 +263,21 @@ if __name__ == "__main__":
# return x.view('float32').reshape(-1, d + 1)[:, 1:]
# data = mmap_fvecs("/poc/deep1b/deep1B_queries.fvecs")
- # print(data[0], len(data[0]), len(data))
+ # data = sklearn.preprocessing.normalize(data, axis=1, norm='l2')
+ # np.save("/test/milvus/deep1b/query.npy", data)
- # total_size = 10000
- # # total_size = 1000000000
- # file_size = 1000
- # # file_size = 100000
- # file_num = total_size // file_size
- # for i in range(file_num):
- # fname = "/test/milvus/raw_data/deep1b/binary_96_%05d" % i
- # print(fname, i*file_size, (i+1)*file_size)
- # single_data = data[i*file_size : (i+1)*file_size]
- # single_data = sklearn.preprocessing.normalize(single_data, axis=1, norm='l2')
- # np.save(fname, single_data)
+ total_size = 100000000
+ # total_size = 1000000000
+ file_size = 100000
+ # file_size = 100000
+ dimension = 4096
+ file_num = total_size // file_size
+ for i in range(file_num):
+ print(i)
+ # fname = "/test/milvus/raw_data/deep1b/binary_96_%05d" % i
+ fname = "/test/milvus/raw_data/random/binary_%dd_%05d" % (dimension, i)
+ # print(fname, i*file_size, (i+1)*file_size)
+ # single_data = data[i*file_size : (i+1)*file_size]
+ single_data = [[random.random() for _ in range(dimension)] for _ in range(file_size)]
+ single_data = sklearn.preprocessing.normalize(single_data, axis=1, norm='l2')
+ np.save(fname, single_data)
diff --git a/tests/milvus_benchmark/conf/server_config.yaml b/tests/milvus_benchmark/conf/server_config.yaml
index a5d2081b8a..592fe1e9aa 100644
--- a/tests/milvus_benchmark/conf/server_config.yaml
+++ b/tests/milvus_benchmark/conf/server_config.yaml
@@ -1,28 +1,34 @@
-cache_config:
- cache_insert_data: false
- cpu_cache_capacity: 16
- gpu_cache_capacity: 6
- cpu_cache_threshold: 0.85
-db_config:
- backend_url: sqlite://:@:/
- build_index_gpu: 0
- insert_buffer_size: 4
- preload_table: null
- primary_path: /opt/milvus
- secondary_path: null
-engine_config:
- use_blas_threshold: 20
-metric_config:
- collector: prometheus
- enable_monitor: true
- prometheus_config:
- port: 8080
-resource_config:
- resource_pool:
- - cpu
- - gpu0
server_config:
- address: 0.0.0.0
- deploy_mode: single
- port: 19530
- time_zone: UTC+8
+ address: 0.0.0.0
+ port: 19530
+ deploy_mode: single
+ time_zone: UTC+8
+
+db_config:
+ primary_path: /var/lib/milvus
+ secondary_path:
+ backend_url: sqlite://:@:/
+ insert_buffer_size: 4
+ preload_table:
+
+metric_config:
+ enable_monitor: true
+ collector: prometheus
+ prometheus_config:
+ port: 8080
+
+cache_config:
+ cpu_cache_capacity: 16
+ cache_insert_data: false
+
+engine_config:
+ use_blas_threshold: 1100
+ gpu_search_threshold: 1000
+gpu_resource_config:
+ enable: true
+ cache_capacity: 4
+ search_resources:
+ - gpu0
+ build_index_resources:
+ - gpu0
+
diff --git a/tests/milvus_benchmark/docker_runner.py b/tests/milvus_benchmark/docker_runner.py
index 008c9866b4..7bedbf497c 100644
--- a/tests/milvus_benchmark/docker_runner.py
+++ b/tests/milvus_benchmark/docker_runner.py
@@ -28,6 +28,9 @@ class DockerRunner(Runner):
container = None
if op_type == "insert":
+ if not run_params:
+ logger.debug("No run params")
+ continue
for index, param in enumerate(run_params):
logger.info("Definition param: %s" % str(param))
table_name = param["table_name"]
@@ -46,11 +49,13 @@ class DockerRunner(Runner):
milvus.delete()
time.sleep(10)
milvus.create_table(table_name, dimension, index_file_size, metric_type)
+ # debug
+ # milvus.create_index("ivf_sq8", 16384)
res = self.do_insert(milvus, table_name, data_type, dimension, table_size, param["ni_per"])
logger.info(res)
# wait for file merge
- time.sleep(6 * (table_size / 500000))
+ time.sleep(table_size * dimension / 5000000)
# Clear up
utils.remove_container(container)
@@ -80,9 +85,11 @@ class DockerRunner(Runner):
for nlist in nlists:
result = milvus.describe_index()
logger.info(result)
- milvus.create_index(index_type, nlist)
+ # milvus.drop_index()
+ # milvus.create_index(index_type, nlist)
result = milvus.describe_index()
logger.info(result)
+ logger.info(milvus.count())
# preload index
milvus.preload_table()
logger.info("Start warm up query")
@@ -92,7 +99,7 @@ class DockerRunner(Runner):
for nprobe in nprobes:
logger.info("index_type: %s, nlist: %s, metric_type: %s, nprobe: %s" % (index_type, nlist, metric_type, nprobe))
res = self.do_query(milvus, table_name, top_ks, nqs, nprobe, run_count)
- headers = ["Nprobe/Top-k"]
+ headers = ["Nq/Top-k"]
headers.extend([str(top_k) for top_k in top_ks])
utils.print_table(headers, nqs, res)
utils.remove_container(container)
@@ -172,7 +179,18 @@ class DockerRunner(Runner):
avg_acc = self.compute_accuracy(base_name, id_prefix)
logger.info("Query: <%s> accuracy: %s" % (id_prefix, avg_acc))
else:
- result_ids = self.do_query_ids(milvus, table_name, top_k, nq, nprobe)
+ result_ids, result_distances = self.do_query_ids(milvus, table_name, top_k, nq, nprobe)
+ debug_file_ids = "0.5.3_result_ids"
+ debug_file_distances = "0.5.3_result_distances"
+ with open(debug_file_ids, "w+") as fd:
+ total = 0
+ for index, item in enumerate(result_ids):
+ true_item = true_ids_all[:nq, :top_k].tolist()[index]
+ tmp = set(item).intersection(set(true_item))
+ total = total + len(tmp)
+ fd.write("query: N-%d, intersection: %d, total: %d\n" % (index, len(tmp), total))
+ fd.write("%s\n" % str(item))
+ fd.write("%s\n" % str(true_item))
acc_value = self.get_recall_value(true_ids_all[:nq, :top_k].tolist(), result_ids)
logger.info("Query: <%s> accuracy: %s" % (id_prefix, acc_value))
# # print accuracy table
@@ -195,6 +213,7 @@ class DockerRunner(Runner):
for index, param in enumerate(run_params):
logger.info("Definition param: %s" % str(param))
table_name = param["dataset"]
+ index_type = param["index_type"]
volume_name = param["db_path_prefix"]
(data_type, table_size, index_file_size, dimension, metric_type) = parser.table_parser(table_name)
@@ -223,7 +242,9 @@ class DockerRunner(Runner):
start_time = time.time()
insert_vectors = [[random.random() for _ in range(dimension)] for _ in range(10000)]
+ i = 0
while time.time() < start_time + during_time:
+ i = i + 1
processes = []
# do query
# for i in range(query_process_num):
@@ -243,7 +264,7 @@ class DockerRunner(Runner):
nqs = random.sample([x for x in range(1, 1000)], 3)
nprobe = random.choice([x for x in range(1, 500)])
res = self.do_query(milvus, table_name, top_ks, nqs, nprobe, run_count)
- if int(time.time() - start_time) % 120 == 0:
+ if i % 10 == 0:
status, res = milvus_instance.insert(insert_vectors, ids=[x for x in range(len(insert_vectors))])
if not status.OK():
logger.error(status)
@@ -251,9 +272,10 @@ class DockerRunner(Runner):
# if not status.OK():
# logger.error(status)
# index_type = random.choice(["flat", "ivf_flat", "ivf_sq8"])
+ milvus_instance.create_index(index_type, 16384)
result = milvus.describe_index()
logger.info(result)
- milvus_instance.create_index("ivf_sq8", 16384)
+ # milvus_instance.create_index("ivf_sq8", 16384)
utils.remove_container(container)
else:
diff --git a/tests/milvus_benchmark/local_runner.py b/tests/milvus_benchmark/local_runner.py
index 1067f500bc..22390e5470 100644
--- a/tests/milvus_benchmark/local_runner.py
+++ b/tests/milvus_benchmark/local_runner.py
@@ -29,7 +29,6 @@ class LocalRunner(Runner):
if op_type == "insert":
for index, param in enumerate(run_params):
table_name = param["table_name"]
- # random_1m_100_512
(data_type, table_size, index_file_size, dimension, metric_type) = parser.table_parser(table_name)
milvus = MilvusClient(table_name, ip=self.ip, port=self.port)
# Check has table or not
@@ -47,25 +46,110 @@ class LocalRunner(Runner):
(data_type, table_size, index_file_size, dimension, metric_type) = parser.table_parser(table_name)
milvus = MilvusClient(table_name, ip=self.ip, port=self.port)
+ logger.info(milvus.describe())
+ logger.info(milvus.describe_index())
# parse index info
index_types = param["index.index_types"]
nlists = param["index.nlists"]
# parse top-k, nq, nprobe
top_ks, nqs, nprobes = parser.search_params_parser(param)
+ # milvus.drop_index()
for index_type in index_types:
for nlist in nlists:
- milvus.create_index(index_type, nlist)
+ # milvus.create_index(index_type, nlist)
# preload index
+ logger.info("Start preloading table")
milvus.preload_table()
+ logger.info("End preloading table")
# Run query test
+ logger.info("Start warm up query")
+ res = self.do_query(milvus, table_name, [1], [1], 1, 1)
+ logger.info("End warm up query")
for nprobe in nprobes:
logger.info("index_type: %s, nlist: %s, metric_type: %s, nprobe: %s" % (index_type, nlist, metric_type, nprobe))
res = self.do_query(milvus, table_name, top_ks, nqs, nprobe, run_count)
- headers = [param["dataset"]]
+ headers = ["nq/topk"]
headers.extend([str(top_k) for top_k in top_ks])
utils.print_table(headers, nqs, res)
+ elif run_type == "accuracy":
+ for op_type, op_value in definition.items():
+ if op_type != "query":
+ logger.warning("invalid operation: %s in accuracy test, only support query operation" % op_type)
+ break
+ run_count = op_value["run_count"]
+ run_params = op_value["params"]
+ for index, param in enumerate(run_params):
+ logger.info("Definition param: %s" % str(param))
+ table_name = param["dataset"]
+ sift_acc = False
+ if "sift_acc" in param:
+ sift_acc = param["sift_acc"]
+ (data_type, table_size, index_file_size, dimension, metric_type) = parser.table_parser(table_name)
+
+ milvus = MilvusClient(table_name, ip=self.ip, port=self.port)
+ logger.debug(milvus.show_tables())
+ # Check has table or not
+ if not milvus.exists_table():
+ logger.warning("Table %s not existed, continue exec next params ..." % table_name)
+ continue
+
+ # parse index info
+ index_types = param["index.index_types"]
+ nlists = param["index.nlists"]
+ # parse top-k, nq, nprobe
+ top_ks, nqs, nprobes = parser.search_params_parser(param)
+
+ if sift_acc is True:
+ # preload groundtruth data
+ true_ids_all = self.get_groundtruth_ids(table_size)
+
+ acc_dict = {}
+ for index_type in index_types:
+ for nlist in nlists:
+ result = milvus.describe_index()
+ logger.info(result)
+ # milvus.drop_index()
+ milvus.create_index(index_type, nlist)
+ # preload index
+ milvus.preload_table()
+ # Run query test
+ for nprobe in nprobes:
+ logger.info("index_type: %s, nlist: %s, metric_type: %s, nprobe: %s" % (index_type, nlist, metric_type, nprobe))
+ for top_k in top_ks:
+ for nq in nqs:
+ result_ids = []
+ id_prefix = "%s_index_%s_nlist_%s_metric_type_%s_nprobe_%s_top_k_%s_nq_%s" % \
+ (table_name, index_type, nlist, metric_type, nprobe, top_k, nq)
+ if sift_acc is False:
+ self.do_query_acc(milvus, table_name, top_k, nq, nprobe, id_prefix)
+ if index_type != "flat":
+ # Compute accuracy
+ base_name = "%s_index_flat_nlist_%s_metric_type_%s_nprobe_%s_top_k_%s_nq_%s" % \
+ (table_name, nlist, metric_type, nprobe, top_k, nq)
+ avg_acc = self.compute_accuracy(base_name, id_prefix)
+ logger.info("Query: <%s> accuracy: %s" % (id_prefix, avg_acc))
+ else:
+ result_ids, result_distances = self.do_query_ids(milvus, table_name, top_k, nq, nprobe)
+ debug_file_ids = "0.5.3_result_ids"
+ debug_file_distances = "0.5.3_result_distances"
+ with open(debug_file_ids, "w+") as fd:
+ total = 0
+ for index, item in enumerate(result_ids):
+ true_item = true_ids_all[:nq, :top_k].tolist()[index]
+ tmp = set(item).intersection(set(true_item))
+ total = total + len(tmp)
+ fd.write("query: N-%d, intersection: %d, total: %d\n" % (index, len(tmp), total))
+ fd.write("%s\n" % str(item))
+ fd.write("%s\n" % str(true_item))
+ acc_value = self.get_recall_value(true_ids_all[:nq, :top_k].tolist(), result_ids)
+ logger.info("Query: <%s> accuracy: %s" % (id_prefix, acc_value))
+ # # print accuracy table
+ # headers = [table_name]
+ # headers.extend([str(top_k) for top_k in top_ks])
+ # utils.print_table(headers, nqs, res)
+
elif run_type == "stability":
for op_type, op_value in definition.items():
if op_type != "query":
@@ -73,11 +157,12 @@ class LocalRunner(Runner):
break
run_count = op_value["run_count"]
run_params = op_value["params"]
- nq = 10000
+ nq = 100000
for index, param in enumerate(run_params):
logger.info("Definition param: %s" % str(param))
table_name = param["dataset"]
+ index_type = param["index_type"]
(data_type, table_size, index_file_size, dimension, metric_type) = parser.table_parser(table_name)
# set default test time
@@ -90,7 +175,10 @@ class LocalRunner(Runner):
query_process_num = 10
else:
query_process_num = int(param["query_process_num"])
- milvus = MilvusClient(table_name)
+ milvus = MilvusClient(table_name, ip=self.ip, port=self.port)
+ logger.debug(milvus.show_tables())
+ logger.debug(milvus.describe_index())
+ logger.debug(milvus.count())
# Check has table or not
if not milvus.exists_table():
logger.warning("Table %s not existed, continue exec next params ..." % table_name)
@@ -98,8 +186,9 @@ class LocalRunner(Runner):
start_time = time.time()
insert_vectors = [[random.random() for _ in range(dimension)] for _ in range(nq)]
+ i = 0
while time.time() < start_time + during_time:
- processes = []
+ # processes = []
# # do query
# for i in range(query_process_num):
# milvus_instance = MilvusClient(table_name)
@@ -113,20 +202,14 @@ class LocalRunner(Runner):
# time.sleep(0.1)
# for p in processes:
# p.join()
- milvus_instance = MilvusClient(table_name)
+ i = i + 1
+ milvus_instance = MilvusClient(table_name, ip=self.ip, port=self.port)
top_ks = random.sample([x for x in range(1, 100)], 4)
- nqs = random.sample([x for x in range(1, 1000)], 3)
- nprobe = random.choice([x for x in range(1, 500)])
- res = self.do_query(milvus, table_name, top_ks, nqs, nprobe, run_count)
+ nqs = random.sample([x for x in range(1, 200)], 3)
+ nprobe = random.choice([x for x in range(1, 100)])
+ res = self.do_query(milvus_instance, table_name, top_ks, nqs, nprobe, run_count)
# milvus_instance = MilvusClient(table_name)
status, res = milvus_instance.insert(insert_vectors, ids=[x for x in range(len(insert_vectors))])
if not status.OK():
logger.error(status.message)
- if (time.time() - start_time) % 300 == 0:
- status = milvus_instance.drop_index()
- if not status.OK():
- logger.error(status.message)
- index_type = random.choice(["flat", "ivf_flat", "ivf_sq8"])
- status = milvus_instance.create_index(index_type, 16384)
- if not status.OK():
- logger.error(status.message)
+ # status = milvus_instance.create_index(index_type, 16384)
diff --git a/tests/milvus_benchmark/requirements.txt b/tests/milvus_benchmark/requirements.txt
index 328cff1eb4..ee6a8a11ff 100644
--- a/tests/milvus_benchmark/requirements.txt
+++ b/tests/milvus_benchmark/requirements.txt
@@ -1,6 +1,9 @@
numpy==1.16.3
-pymilvus>=0.1.18
-pyyaml==5.1
-docker==4.0.2
+pymilvus-test>=0.2.0
+scikit-learn==0.19.1
+h5py==2.7.1
+influxdb==5.2.2
+pyyaml>=5.1
tableprint==0.8.0
-ansicolors==1.1.8
\ No newline at end of file
+ansicolors==1.1.8
+scipy==1.3.1
diff --git a/tests/milvus_benchmark/runner.py b/tests/milvus_benchmark/runner.py
index d3ad345da9..76851fa69c 100644
--- a/tests/milvus_benchmark/runner.py
+++ b/tests/milvus_benchmark/runner.py
@@ -18,15 +18,18 @@ SIFT_VECTORS_PER_FILE = 100000
MAX_NQ = 10001
FILE_PREFIX = "binary_"
-RANDOM_SRC_BINARY_DATA_DIR = '/tmp/random/binary_data'
-SIFT_SRC_DATA_DIR = '/tmp/sift1b/query'
-SIFT_SRC_BINARY_DATA_DIR = '/tmp/sift1b/binary_data'
-SIFT_SRC_GROUNDTRUTH_DATA_DIR = '/tmp/sift1b/groundtruth'
+# FOLDER_NAME = 'ann_1000m/source_data'
+SRC_BINARY_DATA_DIR = '/poc/yuncong/yunfeng/random_data'
+SRC_BINARY_DATA_DIR_high = '/test/milvus/raw_data/random'
+SIFT_SRC_DATA_DIR = '/poc/yuncong/ann_1000m/'
+SIFT_SRC_BINARY_DATA_DIR = SIFT_SRC_DATA_DIR + 'source_data'
+SIFT_SRC_GROUNDTRUTH_DATA_DIR = SIFT_SRC_DATA_DIR + 'gnd'
WARM_TOP_K = 1
WARM_NQ = 1
DEFAULT_DIM = 512
+
GROUNDTRUTH_MAP = {
"1000000": "idx_1M.ivecs",
"2000000": "idx_2M.ivecs",
@@ -45,7 +48,10 @@ def gen_file_name(idx, table_dimension, data_type):
s = "%05d" % idx
fname = FILE_PREFIX + str(table_dimension) + "d_" + s + ".npy"
if data_type == "random":
- fname = RANDOM_SRC_BINARY_DATA_DIR+'/'+fname
+ if table_dimension == 512:
+ fname = SRC_BINARY_DATA_DIR+'/'+fname
+ elif table_dimension >= 4096:
+ fname = SRC_BINARY_DATA_DIR_high+'/'+fname
elif data_type == "sift":
fname = SIFT_SRC_BINARY_DATA_DIR+'/'+fname
return fname
@@ -87,7 +93,12 @@ class Runner(object):
qps = 0.0
ni_time = 0.0
if data_type == "random":
- vectors_per_file = VECTORS_PER_FILE
+ if dimension == 512:
+ vectors_per_file = VECTORS_PER_FILE
+ elif dimension == 4096:
+ vectors_per_file = 100000
+ elif dimension == 16384:
+ vectors_per_file = 10000
elif data_type == "sift":
vectors_per_file = SIFT_VECTORS_PER_FILE
if size % vectors_per_file or ni > vectors_per_file:
@@ -101,15 +112,16 @@ class Runner(object):
loops = vectors_per_file // ni
for j in range(loops):
vectors = data[j*ni:(j+1)*ni].tolist()
- ni_start_time = time.time()
- # start insert vectors
- start_id = i * vectors_per_file + j * ni
- end_id = start_id + len(vectors)
- logger.info("Start id: %s, end id: %s" % (start_id, end_id))
- ids = [k for k in range(start_id, end_id)]
- status, ids = milvus.insert(vectors, ids=ids)
- ni_end_time = time.time()
- total_time = total_time + ni_end_time - ni_start_time
+ if vectors:
+ ni_start_time = time.time()
+ # start insert vectors
+ start_id = i * vectors_per_file + j * ni
+ end_id = start_id + len(vectors)
+ logger.info("Start id: %s, end id: %s" % (start_id, end_id))
+ ids = [k for k in range(start_id, end_id)]
+ status, ids = milvus.insert(vectors, ids=ids)
+ ni_end_time = time.time()
+ total_time = total_time + ni_end_time - ni_start_time
qps = round(size / total_time, 2)
ni_time = round(total_time / (loops * file_num), 2)
@@ -125,10 +137,10 @@ class Runner(object):
bi_res = []
for index, nq in enumerate(nqs):
tmp_res = []
+ vectors = base_query_vectors[0:nq]
for top_k in top_ks:
avg_query_time = 0.0
total_query_time = 0.0
- vectors = base_query_vectors[0:nq]
logger.info("Start query, query params: top-k: {}, nq: {}, actually length of vectors: {}".format(top_k, nq, len(vectors)))
for i in range(run_count):
logger.info("Start run query, run %d of %s" % (i+1, run_count))
@@ -153,12 +165,16 @@ class Runner(object):
msg = "Query failed with message: %s" % status.message
raise Exception(msg)
result_ids = []
+ result_distances = []
for result in query_res:
tmp = []
+ tmp_distance = []
for item in result:
tmp.append(item.id)
+ tmp_distance.append(item.distance)
result_ids.append(tmp)
- return result_ids
+ result_distances.append(tmp_distance)
+ return result_ids, result_distances
def do_query_acc(self, milvus, table_name, top_k, nq, nprobe, id_store_name):
(data_type, table_size, index_file_size, dimension, metric_type) = parser.table_parser(table_name)
@@ -216,4 +232,4 @@ class Runner(object):
a = np.fromfile(fname, dtype='int32')
d = a[0]
true_ids = a.reshape(-1, d + 1)[:, 1:].copy()
- return true_ids
+ return true_ids
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/accuracy_random50m.yaml b/tests/milvus_benchmark/suites/accuracy_random50m.yaml
new file mode 100644
index 0000000000..d84c9e301c
--- /dev/null
+++ b/tests/milvus_benchmark/suites/accuracy_random50m.yaml
@@ -0,0 +1,57 @@
+
+accuracy:
+ # interface: search_vectors
+ query:
+ [
+ {
+ "dataset": "random_50m_1024_512_ip",
+ "index.index_types": ["flat", "ivf_flat"],
+ "index.nlists": [16384],
+ "index.metric_types": ["ip"],
+ "nprobes": [8, 64, 128, 512, 2048],
+ "top_ks": [64],
+ "nqs": [1000],
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 100,
+ "server.cpu_cache_capacity": 120,
+ "server.gpu_cache_capacity": 6,
+ "server.enable_gpu": True,
+ "server.resources": ["gpu0", "gpu1"],
+ "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip_ivf",
+ "sift_acc": false
+ },
+ {
+ "dataset": "random_50m_1024_512_ip",
+ "index.index_types": ["flat", "ivf_sq8"],
+ "index.nlists": [16384],
+ "index.metric_types": ["ip"],
+ "nprobes": [8, 64, 128, 512, 2048],
+ "top_ks": [64],
+ "nqs": [1000],
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 100,
+ "server.cpu_cache_capacity": 120,
+ "server.gpu_cache_capacity": 6,
+ "server.enable_gpu": True,
+ "server.resources": ["gpu0", "gpu1"],
+ "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip_sq8",
+ "sift_acc": false
+ },
+ {
+ "dataset": "random_50m_1024_512_ip",
+ "index.index_types": ["flat", "ivf_sq8h"],
+ "index.nlists": [16384],
+ "index.metric_types": ["ip"],
+ "nprobes": [8, 64, 128, 512, 2048],
+ "top_ks": [64],
+ "nqs": [1000],
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 100,
+ "server.cpu_cache_capacity": 120,
+ "server.gpu_cache_capacity": 6,
+ "server.enable_gpu": True,
+ "server.resources": ["gpu0", "gpu1"],
+ "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip",
+ "sift_acc": false
+ },
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/accuracy_sift10m.yaml b/tests/milvus_benchmark/suites/accuracy_sift10m.yaml
new file mode 100644
index 0000000000..35074868f1
--- /dev/null
+++ b/tests/milvus_benchmark/suites/accuracy_sift10m.yaml
@@ -0,0 +1,75 @@
+accuracy:
+
+ # interface: search_vectors
+ query:
+ # dataset: table name you have already created
+ # key starts with "server." need to reconfig and restart server, including use_blas_threshold/cpu_cache_capacity ..
+ [
+ # {
+ # "dataset": "sift_10m_1024_128_l2",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "index.metric_types": ["l2"],
+ # "nprobes": [1, 8, 16, 32, 64, 128, 256],
+ # "top_ks": [64],
+ # "nqs": [1000],
+ # "server.cpu_cache_capacity": 50,
+ # "server.use_gpu_threshold": 1001,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["cpu", "gpu0"],
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_50m_1024_128_l2_sq8h",
+ # "sift_acc": true
+ # },
+ # {
+ # "dataset": "sift_10m_1024_128_l2",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "index.metric_types": ["l2"],
+ # "nprobes": [1, 8, 16, 32, 64, 128, 256],
+ # "top_ks": [64],
+ # "nqs": [1000],
+ # "server.cpu_cache_capacity": 50,
+ # "server.resources": ["cpu", "gpu0"],
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_50m_1024_128_l2_sq8",
+ # "sift_acc": true
+ # },
+ {
+ "dataset": "sift_10m_1024_128_l2",
+ "index.index_types": ["ivf_pq"],
+ "index.nlists": [16384],
+ "index.metric_types": ["l2"],
+ "nprobes": [1, 8, 16, 32, 64, 128, 256],
+ "top_ks": [64],
+ "nqs": [1000],
+ "server.cpu_cache_capacity": 50,
+ "server.resources": ["cpu", "gpu0"],
+ "db_path_prefix": "/test/milvus/db_data_cpu/sift_50m_1024_128_l2_sq8",
+ "sift_acc": true
+ },
+ # {
+ # "dataset": "sift_10m_1024_128_l2",
+ # "index.index_types": ["ivf_flat"],
+ # "index.nlists": [16384],
+ # "index.metric_types": ["l2"],
+ # "nprobes": [1, 8, 16, 32, 64, 128, 256],
+ # "top_ks": [64],
+ # "nqs": [1000],
+ # "server.cpu_cache_capacity": 100,
+ # "server.resources": ["cpu", "gpu0"],
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_50m_1024_128_l2_ivf",
+ # "sift_acc": true
+ # },
+ # {
+ # "dataset": "sift_10m_1024_128_l2",
+ # "index.index_types": ["nsg"],
+ # "index.nlists": [16384],
+ # "index.metric_types": ["l2"],
+ # "nprobes": [1],
+ # "top_ks": [64],
+ # "nqs": [1000],
+ # # "server.cpu_cache_capacity": 100,
+ # # "server.resources": ["cpu", "gpu0"],
+ # "db_path_prefix": "/test/milvus/db_data_gpu/sift_10m_1024_128_l2_nsg",
+ # "sift_acc": true
+ # },
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/accuracy_sift1b.yaml b/tests/milvus_benchmark/suites/accuracy_sift1b.yaml
new file mode 100644
index 0000000000..7ad6e85da3
--- /dev/null
+++ b/tests/milvus_benchmark/suites/accuracy_sift1b.yaml
@@ -0,0 +1,73 @@
+
+accuracy:
+ # interface: search_vectors
+ query:
+ [
+ # {
+ # "dataset": "sift_1b_2048_128_l2",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "index.metric_types": ["l2"],
+ # # "nprobes": [1, 8, 32, 64, 128],
+ # "nprobes": [1, 8, 32, 64, 128, 256],
+ # "top_ks": [64],
+ # "nqs": [1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 1001,
+ # "server.cpu_cache_capacity": 150,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data_gpu/sift_1b_2048_128_l2",
+ # "sift_acc": true
+ # },
+ {
+ "dataset": "sift_1b_2048_128_l2",
+ "index.index_types": ["ivf_pq"],
+ "index.nlists": [16384],
+ "index.metric_types": ["l2"],
+ "nprobes": [1, 2, 4, 8, 16, 32, 64, 128, 256, 512],
+ "top_ks": [64],
+ "nqs": [1000],
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 10001,
+ "server.cpu_cache_capacity": 150,
+ "server.gpu_cache_capacity": 6,
+ "server.resources": ["gpu0", "gpu1"],
+ "db_path_prefix": "/test/milvus/db_data/sift_1b_2048_128_l2_pq",
+ "sift_acc": true
+ },
+
+ # {
+ # "dataset": "sift_1b_2048_128_l2",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "index.metric_types": ["l2"],
+ # "nprobes": [1, 8, 32, 64, 128],
+ # "top_ks": [64],
+ # "nqs": [1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 150,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/sift_1b_2048_128_l2",
+ # "sift_acc": true
+ # },
+ # {
+ # "dataset": "sift_1b_2048_128_l2",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "index.metric_types": ["l2"],
+ # "nprobes": [1, 8, 32, 64, 128],
+ # "top_ks": [64],
+ # "nqs": [1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 150,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["cpu", "gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/sift_1b_2048_128_l2",
+ # "sift_acc": true
+ # },
+
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/accuracy_sift500m.yaml b/tests/milvus_benchmark/suites/accuracy_sift500m.yaml
new file mode 100644
index 0000000000..5977fbbc89
--- /dev/null
+++ b/tests/milvus_benchmark/suites/accuracy_sift500m.yaml
@@ -0,0 +1,21 @@
+accuracy:
+
+ # interface: search_vectors
+ query:
+ # dataset: table name you have already created
+ # key starts with "server." need to reconfig and restart server, including use_blas_threshold/cpu_cache_capacity ..
+ [
+ {
+ "dataset": "sift_500m_1024_128_l2",
+ "index.index_types": ["ivf_sq8h"],
+ "index.nlists": [16384],
+ "index.metric_types": ["l2"],
+ "nprobes": [1, 8, 16, 32, 64, 128, 256],
+ "top_ks": [64],
+ "nqs": [1000],
+ "server.cpu_cache_capacity": 200,
+ "server.resources": ["cpu", "gpu0"],
+ "db_path_prefix": "/test/milvus/db_data/sift_500m_1024_128_l2",
+ "sift_acc": true
+ },
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/accuracy_sift50m.yaml b/tests/milvus_benchmark/suites/accuracy_sift50m.yaml
new file mode 100644
index 0000000000..1f4dadbb00
--- /dev/null
+++ b/tests/milvus_benchmark/suites/accuracy_sift50m.yaml
@@ -0,0 +1,76 @@
+accuracy:
+
+ # interface: search_vectors
+ query:
+ # dataset: table name you have already created
+ # key starts with "server." need to reconfig and restart server, including use_blas_threshold/cpu_cache_capacity ..
+ [
+ # {
+ # "dataset": "sift_50m_1024_128_l2",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "index.metric_types": ["l2"],
+ # "nprobes": [1, 8, 16, 32, 64, 128, 256],
+ # "top_ks": [64],
+ # "nqs": [1000],
+ # "server.cpu_cache_capacity": 50,
+ # "server.use_gpu_threshold": 1001,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["cpu", "gpu0"],
+ # "db_path_prefix": "/test/milvus/db_data/sift_50m_1024_128_l2_sq8h",
+ # "sift_acc": true
+ # },
+ {
+ "dataset": "sift_50m_1024_128_l2",
+ "index.index_types": ["ivf_sq8"],
+ "index.nlists": [16384],
+ "index.metric_types": ["l2"],
+ "nprobes": [1, 8, 16, 32, 64, 128, 256],
+ "top_ks": [64],
+ "nqs": [1000],
+ "server.cpu_cache_capacity": 50,
+ "server.resources": ["cpu", "gpu0"],
+ "db_path_prefix": "/test/milvus/db_data/sift_50m_1024_128_l2_sq8",
+ "sift_acc": true
+ },
+ # {
+ # "dataset": "sift_50m_1024_128_l2",
+ # "index.index_types": ["ivf_flat"],
+ # "index.nlists": [16384],
+ # "index.metric_types": ["l2"],
+ # "nprobes": [1, 8, 16, 32, 64, 128, 256],
+ # "top_ks": [64],
+ # "nqs": [1000],
+ # "server.cpu_cache_capacity": 100,
+ # "server.resources": ["cpu", "gpu0"],
+ # "db_path_prefix": "/test/milvus/db_data/sift_50m_1024_128_l2_ivf",
+ # "sift_acc": true
+ # },
+ # {
+ # "dataset": "sift_50m_1024_128_l2",
+ # "index.index_types": ["ivf_flat"],
+ # "index.nlists": [16384],
+ # "index.metric_types": ["l2"],
+ # "nprobes": [1, 8, 16, 32, 64, 128, 256],
+ # "top_ks": [64],
+ # "nqs": [1000],
+ # "server.cpu_cache_capacity": 100,
+ # "server.resources": ["cpu", "gpu0"],
+ # "db_path_prefix": "/test/milvus/db_data_gpu/sift_50m_1024_128_l2_ivf",
+ # "sift_acc": true
+ # },
+ # {
+ # "dataset": "sift_50m_1024_128_l2",
+ # "index.index_types": ["nsg"],
+ # "index.nlists": [16384],
+ # "index.metric_types": ["l2"],
+ # "nprobes": [1],
+ # "top_ks": [64],
+ # "nqs": [1000],
+ # "server.cpu_cache_capacity": 100,
+ # "server.resources": ["gpu0"],
+ # "db_path_prefix": "/test/milvus/db_data_gpu/sift_50m_1024_128_l2_nsg",
+ # "sift_acc": true
+ # },
+
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/insert.yaml b/tests/milvus_benchmark/suites/insert.yaml
new file mode 100644
index 0000000000..767ad481c5
--- /dev/null
+++ b/tests/milvus_benchmark/suites/insert.yaml
@@ -0,0 +1,32 @@
+performance:
+
+ # interface: add_vectors
+ insert:
+ # index_type: flat/ivf_flat/ivf_sq8/mix_nsg
+ [
+ # debug
+ # data_type / data_size / index_file_size / dimension
+ # data_type: random / ann_sift
+ # data_size: 10m / 1b
+ # {
+ # "table_name": "random_1m_1024_4096_ip",
+ # "ni_per": 10000,
+ # "server.cpu_cache_capacity": 16,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_1m_1024_4096_ip"
+ # },
+ # {
+ # "table_name": "random_1m_1024_16384_ip",
+ # "ni_per": 10000,
+ # "server.cpu_cache_capacity": 16,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_1m_1024_16384_ip"
+ # },
+ {
+ "table_name": "random_50m_1024_512_ip",
+ "ni_per": 100000,
+ # "server.cpu_cache_capacity": 16,
+ # "server.resources": ["gpu0", "gpu1"],
+ "db_path_prefix": "/test/milvus/db_data_cpu/random_50m_1024_512_ip_ivf"
+ },
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/old_performance_sift50m.yaml b/tests/milvus_benchmark/suites/old_performance_sift50m.yaml
new file mode 100644
index 0000000000..8e4d35dcac
--- /dev/null
+++ b/tests/milvus_benchmark/suites/old_performance_sift50m.yaml
@@ -0,0 +1,80 @@
+performance:
+
+ # interface: search_vectors
+ query:
+ # dataset: table name you have already created
+ # key starts with "server." need to reconfig and restart server, including use_blas_threshold/cpu_cache_capacity ..
+ [
+ # {
+ # "dataset": "sift_50m_1024_128_l2",
+ # "index.index_types": ["mix_nsg"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_50m_1024_128_l2_nsg"
+ # },
+ # {
+ # "dataset": "sift_50m_1024_128_l2",
+ # "index.index_types": ["ivf_flat"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_50m_1024_128_l2_ivf"
+ # },
+ # {
+ # "dataset": "sift_50m_1024_128_l2",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.gpu_cache_capacity": 3,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_50m_1024_128_l2_sq8"
+ # },
+ # {
+ # "dataset": "sift_50m_1024_128_l2",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_50m_1024_128_l2_sq8"
+ # },
+ {
+ "dataset": "sift_50m_1024_128_l2",
+ "index.index_types": ["ivf_sq8"],
+ "index.nlists": [16384],
+ "nprobes": [8, 32],
+ "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ "nqs": [1, 10, 100, 200, 500, 1000],
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 100,
+ "server.cpu_cache_capacity": 50,
+ "server.gpu_cache_capacity": 6,
+ "server.resources": ["gpu0", "gpu1"],
+ "db_path_prefix": "/test/milvus/db_data/sift_50m_1024_128_l2_sq8"
+ },
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/performance_random1m.yaml b/tests/milvus_benchmark/suites/performance_random1m.yaml
new file mode 100644
index 0000000000..606f721567
--- /dev/null
+++ b/tests/milvus_benchmark/suites/performance_random1m.yaml
@@ -0,0 +1,35 @@
+performance:
+
+ # interface: search_vectors
+ query:
+ # dataset: table name you have already created
+ # key starts with "server." need to reconfig and restart server, including use_blas_threshold/cpu_cache_capacity ..
+ [
+ # {
+ # "dataset": "random_1m_1024_4096_ip",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 1100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.resources": ["cpu", "gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_1m_1024_4096_ip_sq8h"
+ # },
+ {
+ "dataset": "random_2m_1024_512_ip",
+ "index.index_types": ["mix_nsg"],
+ "index.nlists": [16384],
+ "nprobes": [8],
+ "top_ks": [1],
+ "nqs": [1],
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 1100,
+ "server.cpu_cache_capacity": 50,
+ "server.resources": ["gpu0", "gpu1"],
+ "server.enable_gpu": True,
+ "db_path_prefix": "/test/milvus/db_data/random_1m_1024_4096_ip_sq8"
+ },
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/performance_random50m.yaml b/tests/milvus_benchmark/suites/performance_random50m.yaml
new file mode 100644
index 0000000000..20cb78c099
--- /dev/null
+++ b/tests/milvus_benchmark/suites/performance_random50m.yaml
@@ -0,0 +1,177 @@
+performance:
+
+ # interface: search_vectors
+ query:
+ # dataset: table name you have already created
+ # key starts with "server." need to reconfig and restart server, including use_blas_threshold/cpu_cache_capacity ..
+ [
+ # {
+ # "dataset": "random_50m_2048_512_ip",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.resources": ["cpu", "gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_2048_512_ip_sq8h"
+ # },
+ # {
+ # "dataset": "random_50m_2048_512_ip",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 1000,
+ # "server.cpu_cache_capacity": 50,
+ # "server.resources": ["cpu", "gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_2048_512_ip_sq8h"
+ # },
+ # {
+ # "dataset": "random_50m_2048_512_ip",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 10000,
+ # "server.cpu_cache_capacity": 50,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_2048_512_ip_sq8h"
+ # },
+ # {
+ # "dataset": "random_50m_2048_512_ip",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_2048_512_ip_sq8"
+ # },
+ {
+ "dataset": "random_50m_2048_512_ip",
+ "index.index_types": ["ivf_sq8"],
+ "index.nlists": [16384],
+ "nprobes": [8],
+ "top_ks": [64],
+ "nqs": [1, 10, 100],
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 100,
+ "server.cpu_cache_capacity": 50,
+ "server.enable_gpu": True,
+ "server.resources": ["gpu0", "gpu1"],
+ "db_path_prefix": "/test/milvus/db_data_cpu/random_50m_2048_512_ip_sq8"
+ },
+
+ # {
+ # "dataset": "random_50m_1024_512_ip",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 110,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip"
+ # },
+ # {
+ # "dataset": "random_50m_1024_512_ip",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 1000,
+ # "server.cpu_cache_capacity": 110,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip"
+ # },
+ # {
+ # "dataset": "random_50m_1024_512_ip",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 10000,
+ # "server.cpu_cache_capacity": 110,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip"
+ # },
+ # {
+ # "dataset": "random_50m_1024_512_ip",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.cpu_cache_capacity": 110,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data_gpu/random_50m_1024_512_ip_sq8"
+ # },
+ # {
+ # "dataset": "random_50m_1024_512_ip",
+ # "index.index_types": ["ivf_pq"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 110,
+ # "server.gpu_cache_capacity": 6,
+ # "server.index_build_device": "gpu0",
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip_pq"
+ # },
+ # {
+ # "dataset": "random_50m_1024_512_ip",
+ # "index.index_types": ["ivf_flat"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 110,
+ # "server.gpu_cache_capacity": 6,
+ # "server.index_build_device": "gpu0",
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip_ivf"
+ # },
+ # {
+ # "dataset": "random_50m_1024_512_ip",
+ # "index.index_types": ["nsg"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 110,
+ # "server.gpu_cache_capacity": 6,
+ # "server.index_build_device": "gpu0",
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip_nsg"
+ # }
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/performance_sift10m.yaml b/tests/milvus_benchmark/suites/performance_sift10m.yaml
new file mode 100644
index 0000000000..e98d54bc3a
--- /dev/null
+++ b/tests/milvus_benchmark/suites/performance_sift10m.yaml
@@ -0,0 +1,83 @@
+performance:
+
+ # interface: search_vectors
+ query:
+ # dataset: table name you have already created
+ # key starts with "server." need to reconfig and restart server, including use_blas_threshold/cpu_cache_capacity ..
+ [
+ # {
+ # "dataset": "sift_10m_1024_128_l2",
+ # "index.index_types": ["ivf_flat"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0"],
+ # "server.enable_gpu": False,
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_10m_1024_128_l2_ivf"
+ # },
+ # {
+ # "dataset": "sift_10m_1024_128_l2",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0"],
+ # "server.enable_gpu": False,
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_10m_1024_128_l2_sq8"
+ # },
+ # {
+ # "dataset": "sift_10m_1024_128_l2",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0"],
+ # "server.enable_gpu": False,
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_10m_1024_128_l2_sq8h"
+ # },
+ {
+ "dataset": "sift_10m_1024_128_l2",
+ "index.index_types": ["ivf_pq"],
+ "index.nlists": [16384],
+ "nprobes": [8, 32],
+ "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ "nqs": [1, 10, 100, 500, 800, 1000],
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 100,
+ "server.cpu_cache_capacity": 50,
+ "server.gpu_cache_capacity": 6,
+ "server.resources": ["gpu0"],
+ "server.enable_gpu": False,
+ "db_path_prefix": "/test/milvus/db_data_cpu/sift_10m_1024_128_l2_pq"
+ },
+ # {
+ # "dataset": "sift_10m_1024_128_l2",
+ # "index.index_types": ["nsg"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0"],
+ # "server.enable_gpu": False,
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_10m_1024_128_l2_nsg"
+ # },
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/performance_sift1b.yaml b/tests/milvus_benchmark/suites/performance_sift1b.yaml
new file mode 100644
index 0000000000..505bf726af
--- /dev/null
+++ b/tests/milvus_benchmark/suites/performance_sift1b.yaml
@@ -0,0 +1,123 @@
+performance:
+
+ # interface: search_vectors
+ query:
+ # dataset: table name you have already created
+ # key starts with "server." need to reconfig and restart server, including use_blas_threshold/cpu_cache_capacity ..
+ [
+ # {
+ # "dataset": "sift_1b_2048_128_l2",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 10000,
+ # "server.cpu_cache_capacity": 150,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/sift_1b_2048_128_l2_sq8h"
+ # },
+ # {
+ # "dataset": "sift_1b_2048_128_l2",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 150,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/sift_1b_2048_128_l2_sq8h"
+ # },
+ # {
+ # "dataset": "sift_1b_2048_128_l2",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 150,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["cpu", "gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/sift_1b_2048_128_l2_sq8h"
+ # },
+ # {
+ # "dataset": "sift_1b_2048_128_l2",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 1000,
+ # "server.cpu_cache_capacity": 150,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/sift_1b_2048_128_l2_sq8h"
+ # },
+ # {
+ # "dataset": "sift_1b_2048_128_l2",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 10000,
+ # "server.cpu_cache_capacity": 150,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": False,
+ # "db_path_prefix": "/test/milvus/db_data_gpu/sift_1b_2048_128_l2_sq8h"
+ # },
+ {
+ "dataset": "sift_1b_2048_128_l2",
+ "index.index_types": ["ivf_pq"],
+ "index.nlists": [16384],
+ "nprobes": [8, 32],
+ "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ "nqs": [1, 10, 100, 200, 500, 1000],
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 10000,
+ "server.cpu_cache_capacity": 150,
+ "server.gpu_cache_capacity": 6,
+ "server.resources": ["gpu0", "gpu1"],
+ "server.enable_gpu": False,
+ "db_path_prefix": "/test/milvus/db_data_gpu/sift_1b_2048_128_l2_pq"
+ },
+ # {
+ # "dataset": "sift_1b_2048_128_l2",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 150,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": False,
+ # "db_path_prefix": "/test/milvus/db_data_gpu/sift_1b_2048_128_l2_sq8"
+ # },
+ # {
+ # "dataset": "sift_1b_2048_128_l2",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 150,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["cpu", "gpu0"],
+ # "db_path_prefix": "/test/milvus/db_data/sift_1b_2048_128_l2"
+ # },
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/performance_sift1m.yaml b/tests/milvus_benchmark/suites/performance_sift1m.yaml
new file mode 100644
index 0000000000..5c434b7d3f
--- /dev/null
+++ b/tests/milvus_benchmark/suites/performance_sift1m.yaml
@@ -0,0 +1,23 @@
+performance:
+
+ # interface: search_vectors
+ query:
+ # dataset: table name you have already created
+ # key starts with "server." need to reconfig and restart server, including use_blas_threshold/cpu_cache_capacity ..
+ [
+ {
+ "dataset": "sift_1m_1024_128_l2",
+ "index.index_types": ["mix_nsg"],
+ "index.nlists": [16384],
+ "nprobes": [8, 32],
+ "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ "nqs": [1, 10, 100, 200, 500, 1000],
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 100,
+ "server.cpu_cache_capacity": 50,
+ "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ "server.enable_gpu": True,
+ "db_path_prefix": "/test/milvus/db_data/sift_1m_1024_128_l2_nsg"
+ },
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/performance_sift500m.yaml b/tests/milvus_benchmark/suites/performance_sift500m.yaml
new file mode 100644
index 0000000000..99ab7a3204
--- /dev/null
+++ b/tests/milvus_benchmark/suites/performance_sift500m.yaml
@@ -0,0 +1,50 @@
+performance:
+
+ # interface: search_vectors
+ query:
+ # dataset: table name you have already created
+ # key starts with "server." need to reconfig and restart server, including use_blas_threshold/cpu_cache_capacity ..
+ [
+ # {
+ # "dataset": "sift_500m_1024_128_l2",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 150,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/sift_500m_1024_128_l2_sq8"
+ # },
+ # {
+ # "dataset": "sift_500m_1024_128_l2",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 150,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/sift_500m_1024_128_l2_sq8"
+ # },
+ {
+ "dataset": "sift_500m_1024_128_l2",
+ "index.index_types": ["ivf_sq8h"],
+ "index.nlists": [16384],
+ "nprobes": [8, 32],
+ "top_ks": [1, 100, 200, 1000],
+ "nqs": [1, 10, 100, 500, 1000],
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 100,
+ "server.cpu_cache_capacity": 150,
+ "server.gpu_cache_capacity": 6,
+ "server.resources": ["gpu0", "gpu1"],
+ "db_path_prefix": "/test/milvus/db_data/sift_500m_1024_128_l2"
+ },
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/performance_sift50m.yaml b/tests/milvus_benchmark/suites/performance_sift50m.yaml
new file mode 100644
index 0000000000..85fece5b56
--- /dev/null
+++ b/tests/milvus_benchmark/suites/performance_sift50m.yaml
@@ -0,0 +1,82 @@
+performance:
+
+ # interface: search_vectors
+ query:
+ # dataset: table name you have already created
+ # key starts with "server." need to reconfig and restart server, including use_blas_threshold/cpu_cache_capacity ..
+ [
+ {
+ "dataset": "sift_50m_1024_128_l2",
+ "index.index_types": ["nsg"],
+ "index.nlists": [16384],
+ "nprobes": [8],
+ "top_ks": [64],
+ "nqs": [1, 10, 100],
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 100,
+ "server.cpu_cache_capacity": 50,
+ "server.gpu_cache_capacity": 6,
+ "server.resources": ["gpu0", "gpu1"],
+ "server.enable_gpu": True,
+ "db_path_prefix": "/test/milvus/db_data_cpu/sift_50m_1024_128_l2_nsg"
+ },
+ # {
+ # "dataset": "sift_50m_1024_128_l2",
+ # "index.index_types": ["ivf_flat"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_50m_1024_128_l2_ivf"
+ # },
+ # {
+ # "dataset": "sift_50m_1024_128_l2",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.gpu_cache_capacity": 3,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data_gpu/sift_50m_1024_128_l2_sq8h"
+ # },
+ # {
+ # "dataset": "sift_50m_1024_128_l2",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_50m_1024_128_l2_sq8"
+ # },
+ # {
+ # "dataset": "sift_50m_1024_128_l2",
+ # "index.index_types": ["ivf_pq"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 200, 500, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.gpu_cache_capacity": 6,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data_cpu/sift_50m_1024_128_l2_pq"
+ # },
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/suites.yaml b/tests/milvus_benchmark/suites/suites.yaml
new file mode 100644
index 0000000000..475020aa8e
--- /dev/null
+++ b/tests/milvus_benchmark/suites/suites.yaml
@@ -0,0 +1,161 @@
+performance:
+
+ # interface: search_vectors
+ query:
+ # dataset: table name you have already created
+ # key starts with "server." need to reconfig and restart server, including use_blas_threshold/cpu_cache_capacity ..
+ [
+ # {
+ # "dataset": "random_50m_2048_512_ip",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.resources": ["cpu", "gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_2048_512_ip_sq8h"
+ # },
+ # {
+ # "dataset": "random_50m_2048_512_ip",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 1000,
+ # "server.cpu_cache_capacity": 50,
+ # "server.resources": ["cpu", "gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_2048_512_ip_sq8h"
+ # },
+ # {
+ # "dataset": "random_50m_2048_512_ip",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 10000,
+ # "server.cpu_cache_capacity": 50,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_2048_512_ip_sq8h"
+ # },
+ # {
+ # "dataset": "random_50m_2048_512_ip",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_2048_512_ip_sq8"
+ # },
+ # {
+ # "dataset": "random_50m_2048_512_ip",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 50,
+ # "server.enable_gpu": True,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data_cpu/random_50m_2048_512_ip_sq8"
+ # },
+
+ # {
+ # "dataset": "random_50m_1024_512_ip",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 110,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip"
+ # },
+ # {
+ # "dataset": "random_50m_1024_512_ip",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 1000,
+ # "server.cpu_cache_capacity": 110,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip"
+ # },
+ # {
+ # "dataset": "random_50m_1024_512_ip",
+ # "index.index_types": ["ivf_sq8h"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 10000,
+ # "server.cpu_cache_capacity": 110,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip"
+ # },
+ # {
+ # "dataset": "random_50m_1024_512_ip",
+ # "index.index_types": ["ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [8, 32],
+ # "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ # "nqs": [1, 10, 100, 500, 800, 1000],
+ # "server.use_blas_threshold": 1100,
+ # "server.cpu_cache_capacity": 110,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data_gpu/random_50m_1024_512_ip_sq8"
+ # },
+ {
+ "dataset": "random_50m_1024_512_ip",
+ "index.index_types": ["ivf_pq"],
+ "index.nlists": [16384],
+ "nprobes": [8, 32],
+ "top_ks": [1, 4, 16, 64, 128, 256, 512, 1000],
+ "nqs": [1, 10, 100, 500, 800, 1000],
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 100,
+ "server.cpu_cache_capacity": 110,
+ "server.gpu_cache_capacity": 6,
+ "server.index_build_device": "gpu0",
+ "server.resources": ["gpu0", "gpu1"],
+ "server.enable_gpu": True,
+ "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip_pq"
+ },
+ # {
+ # "dataset": "random_50m_1024_512_ip",
+ # "index.index_types": ["ivf_flat"],
+ # "index.nlists": [16384],
+ # "nprobes": [8],
+ # "top_ks": [8],
+ # "nqs": [500],
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.cpu_cache_capacity": 110,
+ # "server.gpu_cache_capacity": 6,
+ # "server.index_build_device": "gpu0",
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": True,
+ # "db_path_prefix": "/test/milvus/db_data/random_50m_1024_512_ip_ivf"
+ # }
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/suites_accuracy.yaml b/tests/milvus_benchmark/suites/suites_accuracy.yaml
new file mode 100644
index 0000000000..3dd91d2c02
--- /dev/null
+++ b/tests/milvus_benchmark/suites/suites_accuracy.yaml
@@ -0,0 +1,51 @@
+
+accuracy:
+ # interface: search_vectors
+ query:
+ [
+ # {
+ # "dataset": "random_20m_1024_512_ip",
+ # # index info
+ # "index.index_types": ["flat", "ivf_sq8"],
+ # "index.nlists": [16384],
+ # "index.metric_types": ["ip"],
+ # "nprobes": [1, 16, 64],
+ # "top_ks": [64],
+ # "nqs": [100],
+ # "server.cpu_cache_capacity": 100,
+ # "server.resources": ["gpu0"],
+ # "db_path_prefix": "/test/milvus/db_data/random_20m_1024_512_ip",
+ # },
+ # {
+ # "dataset": "sift_1m_1024_128_l2",
+ # "index.index_types": ["flat", "ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [1, 32, 128, 256, 512],
+ # "nqs": 10,
+ # "top_ks": 10,
+ # "server.use_blas_threshold": 1100,
+ # "server.cpu_cache_capacity": 16,
+ # },
+ # {
+ # "dataset": "sift_10m_1024_128_l2",
+ # "index.index_types": ["flat", "ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [1, 32, 128, 256, 512],
+ # "nqs": 10,
+ # "top_ks": 10,
+ # "server.use_blas_threshold": 1100,
+ # "server.cpu_cache_capacity": 32,
+ # },
+ # {
+ # "dataset": "sift_50m_1024_128_l2",
+ # "index.index_types": ["flat", "ivf_sq8"],
+ # "index.nlists": [16384],
+ # "nprobes": [1, 32, 128, 256, 512],
+ # "nqs": 10,
+ # "top_ks": 10,
+ # "server.use_blas_threshold": 1100,
+ # "server.cpu_cache_capacity": 64,
+ # }
+
+
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/suites_performance.yaml b/tests/milvus_benchmark/suites/suites_performance.yaml
new file mode 100644
index 0000000000..50100f4646
--- /dev/null
+++ b/tests/milvus_benchmark/suites/suites_performance.yaml
@@ -0,0 +1,57 @@
+performance:
+
+ # interface: add_vectors
+ insert:
+ # index_type: flat/ivf_flat/ivf_sq8/mix_nsg
+ [
+ # debug
+ # data_type / data_size / index_file_size / dimension
+ # data_type: random / ann_sift
+ # data_size: 10m / 1b
+ # {
+ # "table_name": "random_50m_1024_512_ip",
+ # "ni_per": 100000,
+ # "server.cpu_cache_capacity": 16,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data"
+ # },
+ # {
+ # "table_name": "random_2m_1024_512_ip",
+ # "ni_per": 100000,
+ # "processes": 5, # multiprocessing
+ # "server.cpu_cache_capacity": 16,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "db_path_prefix": "/test/milvus/db_data/random_5m_1024_512_ip"
+ # },
+ # {
+ # "table_name": "sift_1m_50_128_l2",
+ # "ni_per": 100000,
+ # "processes": 5, # multiprocessing
+ # # "server.cpu_cache_capacity": 16,
+ # "db_path_prefix": "/test/milvus/db_data"
+ # },
+ # {
+ # "table_name": "sift_1m_256_128_l2",
+ # "ni_per": 100000,
+ # "processes": 5, # multiprocessing
+ # # "server.cpu_cache_capacity": 16,
+ # "db_path_prefix": "/test/milvus/db_data"
+ # }
+ # {
+ # "table_name": "sift_50m_1024_128_l2",
+ # "ni_per": 100000,
+ # "processes": 5, # multiprocessing
+ # # "server.cpu_cache_capacity": 16,
+ # },
+ # {
+ # "table_name": "sift_100m_1024_128_l2",
+ # "ni_per": 100000,
+ # "processes": 5, # multiprocessing
+ # },
+ # {
+ # "table_name": "sift_1b_2048_128_l2",
+ # "ni_per": 100000,
+ # "processes": 5, # multiprocessing
+ # "server.cpu_cache_capacity": 16,
+ # }
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/suites/suites_stability.yaml b/tests/milvus_benchmark/suites/suites_stability.yaml
new file mode 100644
index 0000000000..427f48d924
--- /dev/null
+++ b/tests/milvus_benchmark/suites/suites_stability.yaml
@@ -0,0 +1,31 @@
+
+stability:
+ # interface: search_vectors / add_vectors mix operation
+ query:
+ [
+ # {
+ # "dataset": "random_50m_1024_512_ip",
+ # "index_type": "ivf_sq8",
+ # "query_process_num": 10,
+ # "during_time": 960,
+ # "server.cpu_cache_capacity": 100,
+ # "server.use_blas_threshold": 1100,
+ # "server.use_gpu_threshold": 100,
+ # "server.resources": ["gpu0", "gpu1"],
+ # "server.enable_gpu": false,
+ # "db_path_prefix": "/test/milvus/db_data_gpu/random_50m_1024_512_ip_sq8_stability"
+ # },
+
+ {
+ "dataset": "random_50m_1024_512_ip",
+ "index_type": "ivf_sq8",
+ "query_process_num": 10,
+ "during_time": 960,
+ "server.cpu_cache_capacity": 100,
+ "server.use_blas_threshold": 1100,
+ "server.use_gpu_threshold": 100,
+ "server.resources": ["gpu0", "gpu1"],
+ "server.enable_gpu": false,
+ "db_path_prefix": "/test/milvus/db_data_gpu/random_50m_1024_512_ip_sq8_stability"
+ },
+ ]
\ No newline at end of file
diff --git a/tests/milvus_benchmark/utils.py b/tests/milvus_benchmark/utils.py
index f6522578ad..ddcd215237 100644
--- a/tests/milvus_benchmark/utils.py
+++ b/tests/milvus_benchmark/utils.py
@@ -45,12 +45,18 @@ def modify_config(k, v, type=None, file_path="conf/server_config.yaml", db_slave
if config_dict:
if k.find("use_blas_threshold") != -1:
config_dict['engine_config']['use_blas_threshold'] = int(v)
+ elif k.find("use_gpu_threshold") != -1:
+ config_dict['engine_config']['gpu_search_threshold'] = int(v)
elif k.find("cpu_cache_capacity") != -1:
config_dict['cache_config']['cpu_cache_capacity'] = int(v)
+ elif k.find("enable_gpu") != -1:
+ config_dict['gpu_resource_config']['enable'] = v
elif k.find("gpu_cache_capacity") != -1:
- config_dict['cache_config']['gpu_cache_capacity'] = int(v)
- elif k.find("resource_pool") != -1:
- config_dict['resource_config']['resource_pool'] = v
+ config_dict['gpu_resource_config']['cache_capacity'] = int(v)
+ elif k.find("index_build_device") != -1:
+ config_dict['gpu_resource_config']['build_index_resources'] = v
+ elif k.find("search_resources") != -1:
+ config_dict['resource_config']['resources'] = v
if db_slave:
config_dict['db_config']['db_slave_path'] = MULTI_DB_SLAVE_PATH
@@ -123,7 +129,7 @@ def run_server(image, mem_limit=None, timeout=30, test_type="local", volume_name
volumes=volumes,
runtime="nvidia",
ports={'19530/tcp': 19530, '8080/tcp': 8080},
- environment=["OMP_NUM_THREADS=48"],
+ # environment=["OMP_NUM_THREADS=48"],
# cpuset_cpus=cpu_limit,
# mem_limit=mem_limit,
# environment=[""],