🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
  • Home
  • Blog
  • Краткое руководство по бенчмаркингу Milvus 2.1

Краткое руководство по бенчмаркингу Milvus 2.1

  • Engineering
August 16, 2022
Yanliang Qiao

Cover Обложка

Недавно мы обновили отчет о бенчмарке Milvus 2.1. Тесты с набором данных из 1 миллиона векторов показали, что QPS может быть значительно увеличен за счет объединения запросов с малым числом.

Ниже приведено несколько простых скриптов, которые помогут вам легко воспроизвести тесты.

Процедуры

  1. Разверните автономную систему Milvus или кластер. В данном случае IP-адрес сервера Milvus - 10.100.31.105.

  2. Разверните клиент. В данном случае мы используем Ubuntu 18.04 и Python 3.8.13 для развертывания. Выполните следующий код для установки PyMilvus 2.1.1.

pip install pymilvus==2.1.1
  1. Загрузите и скопируйте следующие файлы в ту же рабочую директорию, что и клиент. В данном случае рабочим каталогом является /go_ben.

    Примечание:

    • 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.

  1. Создайте коллекцию и вставьте в нее векторные данные.
root@milvus-pytest:/go_ben# python collection_prepare.py 10.100.31.105 
  1. Откройте /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
  1. Вызовите 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': ''} 
  1. Откройте файл go_log_file.log в текущем каталоге, чтобы проверить подробный журнал поиска. Ниже приведена информация о поиске, которую можно найти в журнале поиска.
    • reqs: количество запросов на поиск с момента возникновения параллелизма до текущего момента (текущий промежуток времени)

    • fails: количество неудачных запросов в процентах от запросов в текущем временном интервале

    • Avg: среднее время отклика запроса в текущем временном интервале (единица измерения: миллисекунды)

    • Min: минимальное время отклика запроса в текущем временном интервале (единица измерения: миллисекунды)

    • Max: максимальное время ответа на запрос в текущем временном интервале (единицы измерения: миллисекунды)

    • Median: медианное время ответа на запрос в текущем временном интервале (единицы измерения: миллисекунды)

    • req/s: количество запросов в секунду, т.е. QPS

    • failures/s: среднее количество неудачных запросов в секунду в текущем временном интервале.

Загрузка скриптов и исполняемых файлов

Что дальше

После официального выхода Milvus 2.1 мы подготовили серию блогов, в которых рассказываем о новых возможностях. Читайте подробнее в этой серии блогов:

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Продолжить чтение