qdrant / vector-db-benchmark

Framework for benchmarking vector search engines
https://qdrant.tech/benchmarks/
Apache License 2.0
265 stars 75 forks source link

Benchmark error on aarch64 #189

Open eric-yq opened 2 weeks ago

eric-yq commented 2 weeks ago

Hi, I am performing benchmark on aarch64 instance,

Instance: AWS EC2 Graviton(aarch64) OS: Amazon Linux 2023 Python: 3.11 Benchmark command:

python3 -m run --engines qdrant-sq-rps-m-64-ef-512 --datasets dbpedia-openai-1M-1536-angular

and got the errors, can you help check and guide me how to fix it ? BTW, same benchmark command performed perfect on Intel instance.

/root/vector-db-benchmark/engine/clients/qdrant/configure.py:72: DeprecationWarning: `recreate_collection` method is deprecated and will be removed in the future. Use `collection_exists` to check collection existence and `create_collection` instead.
  self.client.recreate_collection(
Running experiment: qdrant-sq-rps-m-64-ef-512 - dbpedia-openai-1M-1536-angular
/root/vector-db-benchmark/datasets/dbpedia-openai-1M-1536-angular/dbpedia_openai_1M already exists
Experiment stage: Configure
Experiment stage: Upload
975000it [05:37, 2891.19it/s] 
Traceback (most recent call last):
  File "/root/vector-db-benchmark/run.py", line 59, in run
    client.run_experiment(
  File "/root/vector-db-benchmark/engine/base_client/client.py", line 108, in run_experiment
    upload_stats = self.uploader.upload(
                   ^^^^^^^^^^^^^^^^^^^^^
  File "/root/vector-db-benchmark/engine/base_client/upload.py", line 67, in upload
    post_upload_stats = self.post_upload(distance)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/vector-db-benchmark/engine/clients/qdrant/upload.py", line 61, in post_upload
    cls.client.update_collection(
  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/qdrant_client/qdrant_client.py", line 1982, in update_collection
    return self._client.update_collection(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/qdrant_client/qdrant_remote.py", line 2480, in update_collection
    return self.grpc_collections.Update(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/grpc/_interceptor.py", line 277, in __call__
    response, ignored_call = self._with_call(
                             ^^^^^^^^^^^^^^^^
  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/grpc/_interceptor.py", line 332, in _with_call
    return call.result(), call
           ^^^^^^^^^^^^^
  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/grpc/_channel.py", line 440, in result
    raise self
  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/grpc/_interceptor.py", line 315, in continuation
    response, call = self._thunk(new_method).with_call(
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/grpc/_channel.py", line 1198, in with_call
    return _end_unary_response_blocking(state, call, True, None)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/grpc/_channel.py", line 1006, in _end_unary_response_blocking
    raise _InactiveRpcError(state)  # pytype: disable=not-instantiable
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
        status = StatusCode.DEADLINE_EXCEEDED
        details = "Deadline Exceeded"
        debug_error_string = "UNKNOWN:Error received from peer  {created_time:"2024-08-27T10:22:00.737299799+00:00", grpc_status:4, grpc_message:"Deadline Exceeded"}"
>
Traceback (most recent call last):

  File "<frozen runpy>", line 198, in _run_module_as_main

  File "<frozen runpy>", line 88, in _run_code

  File "/root/vector-db-benchmark/run.py", line 91, in <module>
    app()

  File "/root/vector-db-benchmark/run.py", line 86, in run
    raise e

  File "/root/vector-db-benchmark/run.py", line 59, in run
    client.run_experiment(

  File "/root/vector-db-benchmark/engine/base_client/client.py", line 108, in run_experiment
    upload_stats = self.uploader.upload(
                   ^^^^^^^^^^^^^^^^^^^^^

  File "/root/vector-db-benchmark/engine/base_client/upload.py", line 67, in upload
    post_upload_stats = self.post_upload(distance)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/root/vector-db-benchmark/engine/clients/qdrant/upload.py", line 61, in post_upload
    cls.client.update_collection(

  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/qdrant_client/qdrant_client.py", line 1982, in update_collection
    return self._client.update_collection(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/qdrant_client/qdrant_remote.py", line 2480, in update_collection
    return self.grpc_collections.Update(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/grpc/_interceptor.py", line 277, in __call__
    response, ignored_call = self._with_call(
                             ^^^^^^^^^^^^^^^^

  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/grpc/_interceptor.py", line 332, in _with_call
    return call.result(), call
           ^^^^^^^^^^^^^

  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/grpc/_channel.py", line 440, in result
    raise self

  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/grpc/_interceptor.py", line 315, in continuation
    response, call = self._thunk(new_method).with_call(
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/grpc/_channel.py", line 1198, in with_call
    return _end_unary_response_blocking(state, call, True, None)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/root/miniconda3/envs/qdrant/lib/python3.11/site-packages/grpc/_channel.py", line 1006, in _end_unary_response_blocking
    raise _InactiveRpcError(state)  # pytype: disable=not-instantiable
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
        status = StatusCode.DEADLINE_EXCEEDED
        details = "Deadline Exceeded"
        debug_error_string = "UNKNOWN:Error received from peer  {created_time:"2024-08-27T10:22:00.737299799+00:00", grpc_status:4, grpc_message:"Deadline Exceeded"}"
>

Upload time: 342.881655387
Experiment qdrant-sq-rps-m-64-ef-512 - dbpedia-openai-1M-1536-angular interrupted
eric-yq commented 2 weeks ago

sloved by following workaround:

sed -i.bak "66a\            timeout=600" vector-db-benchmark/engine/clients/qdrant/upload.py