Как использовать сопоставление памяти и другие методы для уменьшения использования памятиPython

Программы на Python
Ответить
Anonymous
 Как использовать сопоставление памяти и другие методы для уменьшения использования памяти

Сообщение Anonymous »

У меня есть образец набора данных из 2 миллионов векторов с 512 измерениями, каждый вектор представляет собой число с плавающей запятой32. У меня есть поле идентификатора int64.
Итак, размер необработанных векторов составляет 2M * 512 * 4 = 4 ГБ.
Коллекция отображено в памяти. У меня есть три коллекции с индексами FLAT, IVF_FLAT и HNSW для одного векторного поля в каждой коллекции.
Простая загрузка коллекции требует 4 ГБ памяти, несмотря на то, что она отображается в памяти.
Запрос после загрузки занимает до 5–6 ГБ памяти, несмотря на отображение в памяти.
Освобождение коллекции очищает память, поэтому очевидно, что данные находятся в диск.
Я установил для queryNode.mmap.mmapEnabled значение true в файле Values.yaml.

Код: Выделить всё

index_type, params = 'FLAT', {}
# index_type, params = 'IVF_FLAT', {'nlist': 2000}
# index_type, params = 'HNSW', {'M': 32, 'efConstruction': 200}

# Define a collection schema
eid_field = FieldSchema(name="eid", dtype=DataType.INT64, is_primary=True, description="embedding id")
embedding_field = FieldSchema(name="content_embedding", dtype=DataType.FLOAT_VECTOR, dim=512, description="content embedding")

# Set enable_dynamic_field to True if you need to use dynamic fields.
schema = CollectionSchema(fields=[eid_field, embedding_field], auto_id=False, enable_dynamic_field=True, description=f"{index_type} collection")

# Define index parameters
index_params = client.prepare_index_params()

index_params.add_index(
field_name="eid",
index_type="STL_SORT"
)

index_params.add_index(
field_name="content_embedding",
index_type=index_type,
metric_type="L2",
params=params
)

collection_name = f"benchmarking_{index_type}"
params_str = '_'.join([f"{k}_{v}" for k,v in sorted(params.items())])
if len(params_str)>0:
collection_name += f"_{params_str}"
if not client.has_collection(collection_name=collection_name):
client.create_collection(
collection_name=collection_name,
dimension=512,  # The vectors we will use in this demo has 512 dimensions
schema=schema,  # The collection schema we defined above
index_params=index_params,
properties={'mmap.enabled': True}
)
См.: https://milvus.io/docs/mmap.md


Подробнее здесь: https://stackoverflow.com/questions/791 ... mory-usage
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»