Milvus 2.1 벤치마킹을 위한 빠른 가이드
Cover
최근 Milvus 2.1의 벤치마크 보고서를 업데이트했습니다. 백만 개의 벡터 데이터 세트를 사용한 테스트에서 작은 크기의 쿼리를 병합하면 QPS를 크게 향상시킬 수 있다는 것이 입증되었습니다.
다음은 테스트를 쉽게 재현할 수 있는 몇 가지 간단한 스크립트입니다.
절차
Milvus 독립형 또는 클러스터를 배포합니다. 이 경우 Milvus 서버의 IP 주소는 10.100.31.105입니다.
클라이언트를 배포합니다. 이 경우 배포에 Ubuntu 18.04와 Python 3.8.13을 사용합니다. 다음 코드를 실행하여 PyMilvus 2.1.1을 설치합니다.
pip install pymilvus==2.1.1
다음 파일을 다운로드하여 클라이언트와 동일한 작업 디렉토리에 복사합니다. 이 경우 작업 디렉터리는
/go_ben
입니다.benchmark
(우분투의 경우) 또는benchmark-mac
(macOS의 경우)
참고:
benchmark
과benchmark-mac
은 Go SDK 2.1.1을 사용하여 개발 및 컴파일된 실행 파일입니다. 이 파일들은 동시 검색을 수행하는 데만 사용됩니다.우분투 사용자의 경우
benchmark
, macOS 사용자의 경우benchmark-mac
을 다운로드하세요.benchmark
또는benchmark-mac
에 액세스하려면 실행 권한이 필요합니다.Mac 사용자는 시스템 환경설정에서 보안 및 개인정보 보호를 구성하여
benchmark-mac
파일을 신뢰해야 합니다.동시 검색에 대한 설정은
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
(또는 macOS의 경우benchmark-mac
)를 호출하여 동시 검색을 수행합니다.
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: 현재 시간 범위에서 요청의 백분율로 표시된 실패한 요청 수입니다.
평균: 현재 시간 범위의 평균 요청 응답 시간(단위: 밀리초)
최소: 현재 시간 범위의 최소 요청 응답 시간(단위: 밀리초)
최대: 현재 시간 범위의 최대 요청 응답 시간(단위: 밀리초)
중앙값: 현재 시간 범위의 요청 응답 시간 중앙값(단위: 밀리초)
req/s: 초당 요청 수(예: QPS)
failures/s: 현재 시간 범위에서 초당 평균 실패한 요청 수입니다.
스크립트 및 실행 파일 다운로드
다음 단계
Milvus 2.1의 공식 출시와 함께 새로운 기능을 소개하는 블로그 시리즈를 준비했습니다. 이 블로그 시리즈에서 자세히 읽어보세요:
- 절차
- 스크립트 및 실행 파일 다운로드
- 다음 단계
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word