CalentamientoCompatible with Milvus 2.6.4+
Elcalentamiento complementa el almacenamiento por niveles precargando campos o índices seleccionados en la caché antes de que un segmento pueda consultarse. Puede configurar el calentamiento a nivel de clúster, colección o campo/índice individual, lo que permite un control detallado sobre la latencia de la primera consulta y el uso de recursos.
Por qué el calentamiento
La carga lenta en el almacenamiento por niveles mejora la eficiencia al cargar inicialmente sólo los metadatos. Sin embargo, esto puede causar latencia en la primera consulta a datos fríos, ya que los trozos o índices necesarios deben obtenerse del almacenamiento remoto.
Warm Up resuelve este problema almacenando proactivamente en caché los datos críticos durante la inicialización del segmento.
Es especialmente beneficioso cuando:
Determinados índices escalares se utilizan con frecuencia en condiciones de filtro.
Los índices vectoriales son esenciales para el rendimiento de la búsqueda y deben estar listos inmediatamente.
La latencia de arranque en frío tras el reinicio del QueryNode o la carga de un nuevo segmento es inaceptable.
Por el contrario, no se recomienda Warm Up para campos o índices que se consultan con poca frecuencia. Desactivar Warm Up acorta el tiempo de carga del segmento y conserva espacio en la caché, lo que resulta ideal para campos vectoriales grandes o campos escalares no críticos.
Niveles de configuración
Nivel |
Alcance |
Método de configuración |
Prioridad |
|---|---|---|---|
Campo/índice |
Campo o índice único |
Métodos SDK:
|
Más alto |
Colección |
Todos los campos/índices de una colección |
Métodos SDK:
|
Media |
Cluster |
Todas las colecciones del clúster |
|
Más bajo (por defecto) |
Comportamiento de anulación:
Si un campo tiene su propia configuración de calentamiento, esa configuración tiene prioridad sobre las configuraciones a nivel de colección y a nivel de clúster.
Si no existe ninguna configuración a nivel de campo o índice, se aplica la configuración a nivel de colección.
Si no existen configuraciones a nivel de campo o índice ni a nivel de colección, se aplica la configuración a nivel de cluster.
Cuando se utilizan operaciones alter, se aplica el valor alter más reciente.
Configurar el calentamiento a nivel de cluster
El calentamiento a nivel de cluster se configura en el archivo de configuración de Milvus milvus.yaml y se aplica a todas las colecciones del cluster. Esto sirve como línea de base por defecto.
Cada tipo de destino admite dos ajustes:
Calentamiento Configuración |
Descripción |
Escenario típico |
|---|---|---|
|
Precarga antes de que el segmento pueda consultarse. El tiempo de carga aumenta ligeramente, pero la primera consulta no incurre en latencia. |
Utilizar para datos de rendimiento crítico que deben estar disponibles inmediatamente, como índices escalares de alta frecuencia o índices vectoriales clave utilizados en la búsqueda. |
|
Omitir la carga previa. El segmento se puede consultar más rápidamente, pero la primera consulta puede activar la carga bajo demanda. |
Utilícelo para datos de acceso poco frecuente o de gran tamaño, como campos vectoriales sin procesar o campos escalares no críticos. |
Ejemplo YAML:
queryNode:
segcore:
tieredStorage:
warmup:
# options: sync, disable.
# Specifies the timing for warming up the Tiered Storage cache.
# - `sync`: data will be loaded into the cache before a segment is considered loaded.
# - `disable`: data will not be proactively loaded into the cache, and loaded only if needed by search/query tasks.
# Defaults to `sync`, except for vector field which defaults to `disable`.
scalarField: sync
scalarIndex: sync
vectorField: disable # cache warmup for vector field raw data is by default disabled.
vectorIndex: sync
Parámetro |
Warmup Ajuste |
Descripción |
Caso de uso recomendado |
|---|---|---|---|
|
|
Controla si se precargan los datos de los campos escalares. |
Utilice |
|
|
Controla si se precargan los índices escalares. |
Utilice |
|
|
Controla si se precargan los datos de campos vectoriales. |
Generalmente |
|
|
Controla si se precargan los índices de vectores. |
Utilice |
Configurar el calentamiento a nivel de colecciónCompatible with Milvus 2.6.11+
El calentamiento a nivel de colección le permite anular los valores predeterminados del clúster para una colección específica. Esto es útil cuando una colección tiene diferentes patrones de acceso que la línea de base de todo el clúster.
Configurar el calentamiento al crear una colección
from pymilvus import MilvusClient
client = MilvusClient(uri="http://localhost:19530")
client.create_collection(
collection_name="my_collection",
schema=schema,
properties={
"warmup.scalarField": "sync",
"warmup.scalarIndex": "sync",
"warmup.vectorField": "disable",
"warmup.vectorIndex": "sync"
}
)
Modificar los ajustes de calentamiento en una colección existente
Debe modificar las propiedades de la colección antes de llamar a load(). Alterar una colección cargada devuelve un error. Los cambios en la configuración del calentamiento surtirán efecto la próxima vez que cargue la colección.
client.alter_collection_properties(
collection_name="my_collection",
properties={
"warmup.vectorIndex": "disable",
"warmup.scalarField": "sync"
}
)
Referencia de la propiedad:
Propiedad |
Ajuste de calentamiento |
Descripción |
|---|---|---|
|
|
Ajuste de calentamiento para todos los campos escalares de la colección. |
|
|
Ajuste de calentamiento para todos los índices escalares de la colección. |
|
|
Calentamiento de todos los campos vectoriales de la colección. |
|
|
Calentamiento de todos los índices vectoriales de la colección. |
Configurar el calentamiento a nivel de campoCompatible with Milvus 2.6.11+
El calentamiento a nivel de campo proporciona la granularidad más fina, permitiéndole controlar el comportamiento del calentamiento para campos individuales. Esto es útil cuando campos específicos tienen patrones de acceso únicos.
El calentamiento a nivel de campo se aplica sólo a los datos brutos del campo, no a los índices de ese campo. Para configurar el calentamiento de un índice, utilice la configuración a nivel de índice.
Configurar el calentamiento al crear un campo
from pymilvus import MilvusClient, DataType
schema = MilvusClient.create_schema()
schema.add_field(
field_name="id",
datatype=DataType.INT64,
is_primary=True
)
schema.add_field(
field_name="category",
datatype=DataType.VARCHAR,
max_length=128,
warmup="sync" # Preload this field at load time
)
schema.add_field(
field_name="embedding",
datatype=DataType.FLOAT_VECTOR,
dim=768,
warmup="disable" # Do not preload vector raw data
)
Modificar el calentamiento de un campo existente
Debe modificar la configuración del campo antes de llamar a load(). Alterar un campo en una colección cargada devuelve un error. Los cambios en la configuración del calentamiento surtirán efecto la próxima vez que cargue la colección.
client.alter_collection_field(
collection_name="my_collection",
field_name="category",
field_params={"warmup": "sync"}
)
Configurar el calentamiento a nivel de índiceCompatible with Milvus 2.6.11+
El calentamiento a nivel de índice permite controlar la precarga de índices individuales, independientemente de la configuración de calentamiento del campo subyacente.
Configurar el calentamiento al crear un índice
from pymilvus import MilvusClient
client = MilvusClient(uri="http://localhost:19530")
index_params = client.prepare_index_params()
index_params.add_index(
field_name="embedding",
index_type="HNSW",
metric_type="COSINE",
params={
"M": 16,
"efConstruction": 256,
"warmup": "sync" # Preload this index at load time
}
)
index_params.add_index(
field_name="category",
index_type="AUTOINDEX",
params={"warmup": "disable"} # Do not preload this index
)
client.create_index(
collection_name="my_collection",
index_params=index_params
)
Modificar la configuración del calentamiento en un índice existente
Debe modificar la configuración del índice antes de llamar a load(). Alterar un índice en una colección cargada devuelve un error. Los cambios en la configuración de calentamiento surtirán efecto la próxima vez que cargue la colección.
client.alter_index_properties(
collection_name="my_collection",
index_name="embedding",
properties={"warmup": "sync"}
)
Referencia del comportamiento de calentamiento
La siguiente tabla resume el comportamiento del calentamiento en las diferentes etapas del ciclo de vida del segmento.
Configuración de calentamiento |
Fase de carga |
Fase de búsqueda/consulta |
Fase de liberación |
|---|---|---|---|
|
Los datos se cargan en el almacenamiento local. El destino (disco o memoria) depende de la configuración mmap. |
La consulta llega directamente a la caché local. |
Se borran los datos de la caché local. |
|
Los datos no se cargan en el almacenamiento local. |
Los datos se obtienen bajo demanda del almacenamiento de objetos y, a continuación, se almacenan localmente en caché en función de la configuración de mmap. |
Se borran los datos de la caché local. |
Interacción con mmap:
Configuración de calentamiento |
Mmap Activado |
Ubicación de los datos |
|---|---|---|
|
|
Disco local ( |
|
|
Memoria local |
|
|
Obtenido en el disco local en el primer acceso |
|
|
Obtenido en la memoria local en el primer acceso |
Estructura de directorio de caché local (cuando mmap está activado):
Tipo de datos |
Ruta de directorio |
|---|---|
Datos de campo escalares/vectoriales |
|
Archivos de índice escalar/vectorial |
|
Buenas prácticas
El calentamiento sólo afecta a la carga inicial. Si los datos almacenados en caché son desalojados posteriormente, la siguiente consulta los recargará bajo demanda.
Evite el uso excesivo de
sync. Precargar demasiados campos aumenta el tiempo de carga y la presión sobre la caché.Empiece de forma conservadora: active Warm Up sólo para los campos e índices a los que se accede con frecuencia.
Supervise la latencia de la consulta y las métricas de la caché y, a continuación, amplíe la precarga según sea necesario.
Para cargas de trabajo mixtas, aplique
synca las colecciones sensibles al rendimiento ydisablea las orientadas a la capacidad.