Краткое руководство по бенчмаркингу Milvus 2.1
Обложка
Недавно мы обновили отчет о бенчмарке Milvus 2.1. Тесты с набором данных из 1 миллиона векторов показали, что QPS может быть значительно увеличен за счет объединения запросов с малым числом.
Ниже приведено несколько простых скриптов, которые помогут вам легко воспроизвести тесты.
Процедуры
Разверните автономную систему Milvus или кластер. В данном случае IP-адрес сервера Milvus - 10.100.31.105.
Разверните клиент. В данном случае мы используем Ubuntu 18.04 и Python 3.8.13 для развертывания. Выполните следующий код для установки PyMilvus 2.1.1.
pip install pymilvus==2.1.1
Загрузите и скопируйте следующие файлы в ту же рабочую директорию, что и клиент. В данном случае рабочим каталогом является
/go_ben
.benchmark
(для Ubuntu) илиbenchmark-mac
(для macOS)
Примечание:
benchmark
иbenchmark-mac
- это исполняемые файлы, разработанные и скомпилированные с помощью Go SDK 2.1.1. Они используются только для проведения параллельного поиска.Для пользователей Ubuntu загрузите
benchmark
; для пользователей macOS загрузитеbenchmark-mac
.Для доступа к
benchmark
илиbenchmark-mac
требуются права исполнителя.Пользователи Mac должны доверять файлу
benchmark-mac
, настроив Security & Privacy в System Preferences.Настройки одновременного поиска можно найти и изменить в исходном коде
go_benchmark.py
.
- Создайте коллекцию и вставьте в нее векторные данные.
root@milvus-pytest:/go_ben# python collection_prepare.py 10.100.31.105
- Откройте
/tmp/collection_prepare.log
, чтобы проверить результат работы.
...
08/11/2022 17:33:34 PM - INFO - Build index costs 263.626
08/11/2022 17:33:54 PM - INFO - Collection prepared completed
- Вызовите
benchmark
(илиbenchmark-mac
на macOS) для выполнения параллельного поиска.
root@milvus-pytest:/go_ben# python go_benchmark.py 10.100.31.105 ./benchmark
[write_json_file] Remove file(search_vector_file.json).
[write_json_file] Write json file:search_vector_file.json done.
Params of go_benchmark: ['./benchmark', 'locust', '-u', '10.100.31.105:19530', '-q', 'search_vector_file.json', '-s', '{\n "collection_name": "random_1m",\n "partition_names": [],\n "fieldName": "embedding",\n "index_type": "HNSW",\n "metric_type": "L2",\n "params": {\n "sp_value": 64,\n "dim": 128\n },\n "limit": 1,\n "expr": null,\n "output_fields": [],\n "timeout": 600\n}', '-p', '10', '-f', 'json', '-t', '60', '-i', '20', '-l', 'go_log_file.log']
[2022-08-11 11:37:39.811][ INFO] - Name # reqs # fails | Avg Min Max Median | req/s failures/s (benchmark_run.go:212:sample)
[2022-08-11 11:37:39.811][ INFO] - go search 9665 0(0.00%) | 20.679 6.499 81.761 12.810 | 483.25 0.00 (benchmark_run.go:213:sample)
[2022-08-11 11:37:59.811][ INFO] - Name # reqs # fails | Avg Min Max Median | req/s failures/s (benchmark_run.go:212:sample)
[2022-08-11 11:37:59.811][ INFO] - go search 19448 0(0.00%) | 20.443 6.549 78.121 13.401 | 489.22 0.00 (benchmark_run.go:213:sample)
[2022-08-11 11:38:19.811][ INFO] - Name # reqs # fails | Avg Min Max Median | req/s failures/s (benchmark_run.go:212:sample)
[2022-08-11 11:38:19.811][ INFO] - go search 29170 0(0.00%) | 20.568 6.398 76.887 12.828 | 486.15 0.00 (benchmark_run.go:213:sample)
[2022-08-11 11:38:19.811][ DEBUG] - go search run finished, parallel: 10(benchmark_run.go:95:benchmark)
[2022-08-11 11:38:19.811][ INFO] - Name # reqs # fails | Avg Min Max Median | req/s failures/s (benchmark_run.go:159:samplingLoop)
[2022-08-11 11:38:19.811][ INFO] - go search 29180 0(0.00%) | 20.560 6.398 81.761 13.014 | 486.25 0.00 (benchmark_run.go:160:samplingLoop)
Result of go_benchmark: {'response': True, 'err_code': 0, 'err_message': ''}
- Откройте файл
go_log_file.log
в текущем каталоге, чтобы проверить подробный журнал поиска. Ниже приведена информация о поиске, которую можно найти в журнале поиска.reqs: количество запросов на поиск с момента возникновения параллелизма до текущего момента (текущий промежуток времени)
fails: количество неудачных запросов в процентах от запросов в текущем временном интервале
Avg: среднее время отклика запроса в текущем временном интервале (единица измерения: миллисекунды)
Min: минимальное время отклика запроса в текущем временном интервале (единица измерения: миллисекунды)
Max: максимальное время ответа на запрос в текущем временном интервале (единицы измерения: миллисекунды)
Median: медианное время ответа на запрос в текущем временном интервале (единицы измерения: миллисекунды)
req/s: количество запросов в секунду, т.е. QPS
failures/s: среднее количество неудачных запросов в секунду в текущем временном интервале.
Загрузка скриптов и исполняемых файлов
benchmark для Ubuntu
benchmark-mac для macOS
Что дальше
После официального выхода Milvus 2.1 мы подготовили серию блогов, в которых рассказываем о новых возможностях. Читайте подробнее в этой серии блогов:
- Как использовать строковые данные для расширения возможностей приложений поиска по сходству
- Использование Embedded Milvus для мгновенной установки и запуска Milvus с Python
- Увеличение пропускной способности базы данных Vector с помощью реплик в памяти
- Понимание уровня согласованности в векторной базе данных Milvus
- Как база данных Milvus Vector обеспечивает безопасность данных?
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word