RéchauffementCompatible with Milvus 2.6.4+
Leréchauffement complète le stockage hiérarchisé en préchargeant des champs ou des index sélectionnés dans le cache avant qu'un segment ne devienne interrogeable. Vous pouvez configurer le warmup au niveau du cluster, de la collection ou d'un champ/index individuel, ce qui permet un contrôle fin de la latence de la première requête et de l'utilisation des ressources.
Pourquoi réchauffer
Lazy Load dans Tiered Storage améliore l'efficacité en chargeant uniquement les métadonnées au départ. Cependant, cela peut entraîner un temps de latence lors de la première requête de données froides, car les blocs ou les index requis doivent être récupérés à partir d'un stockage distant.
Warm Up résout ce problème en mettant proactivement en cache les données critiques lors de l'initialisation du segment.
Il est particulièrement utile dans les cas suivants
Certains index scalaires sont fréquemment utilisés dans les conditions de filtrage.
Les index vectoriels sont essentiels pour les performances de recherche et doivent être prêts immédiatement.
La latence de démarrage à froid après le redémarrage du QueryNode ou le chargement d'un nouveau segment est inacceptable.
En revanche, le réchauffement n' est pas recommandé pour les champs ou les index qui sont rarement interrogés. La désactivation de la fonction Warm Up réduit le temps de chargement des segments et préserve l'espace du cache, ce qui est idéal pour les grands champs vectoriels ou les champs scalaires non critiques.
Niveaux de configuration
Niveau de configuration |
Champ d'application |
Méthode de configuration |
Priorité |
|---|---|---|---|
Champ/Index |
Champ ou index unique |
Méthodes SDK :
|
La plus élevée |
Collection |
Tous les champs/index d'une collection |
Méthodes SDK :
|
Moyenne |
Groupe |
Toutes les collections dans le cluster |
|
Le plus bas (par défaut) |
Comportement prioritaire :
Si un champ possède son propre paramètre de réchauffement, ce paramètre a la priorité sur les paramètres au niveau de la collection et du cluster.
S'il n'existe aucun paramètre au niveau du champ ou de l'index, c'est le paramètre au niveau de la collection qui s'applique.
S'il n'existe aucun paramètre au niveau du champ ou de l'index, ni au niveau de la collection, c'est le paramètre au niveau du cluster qui s'applique.
Lors de l'utilisation d'opérations de modification, c'est la valeur de modification la plus récente qui prend effet.
Configurer le réchauffement au niveau du cluster
Le réchauffement au niveau du cluster est configuré dans le fichier de configuration Milvus milvus.yaml et s'applique à toutes les collections du cluster. Il s'agit de la valeur de base par défaut.
Chaque type de cible prend en charge deux paramètres :
Réchauffement Paramètre |
Paramètre Description |
Scénario type |
|---|---|---|
|
Préchargement avant que le segment ne devienne interrogeable. Le temps de chargement augmente légèrement, mais la première requête n'entraîne aucune latence. |
À utiliser pour les données critiques en termes de performances qui doivent être immédiatement disponibles, telles que les index scalaires à haute fréquence ou les index vectoriels clés utilisés dans la recherche. |
|
Sauter le préchargement. Le segment devient interrogeable plus rapidement, mais la première requête peut déclencher un chargement à la demande. |
À utiliser pour les données volumineuses ou rarement consultées, telles que les champs vectoriels bruts ou les champs scalaires non critiques. |
Exemple 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
Paramètre |
Paramètre d'échauffement |
Description du paramètre |
Cas d'utilisation recommandé |
|---|---|---|---|
|
|
Contrôle si les données des champs scalaires sont préchargées. |
N'utilisez |
|
|
Contrôle si les index scalaires sont préchargés. |
Utilisez |
|
|
Contrôle si les données des champs vectoriels sont préchargées. |
Généralement |
|
|
Contrôle si les index de vecteurs sont préchargés. |
Utilisez |
Configuration du préchauffage au niveau de la collectionCompatible with Milvus 2.6.11+
Le préchauffage au niveau de la collection vous permet de remplacer les valeurs par défaut du cluster pour une collection spécifique. Cette fonction est utile lorsqu'une collection présente des schémas d'accès différents de ceux de la base de référence du cluster.
Configurer le préchauffage lors de la création d'une collection
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"
}
)
Modifier les paramètres de réchauffement d'une collection existante
Vous devez modifier les propriétés de la collection avant d'appeler load(). La modification d'une collection chargée entraîne une erreur. Les modifications apportées aux paramètres de réchauffement prennent effet lors du prochain chargement de la collection.
client.alter_collection_properties(
collection_name="my_collection",
properties={
"warmup.vectorIndex": "disable",
"warmup.scalarField": "sync"
}
)
Référence de la propriété:
Propriété |
Paramètre d'échauffement |
Description |
|---|---|---|
|
|
Paramètre de réchauffement pour tous les champs scalaires de la collection. |
|
|
Paramètre d'échauffement pour tous les index scalaires de la collection. |
|
|
Paramètre d'échauffement pour tous les champs vectoriels de la collection. |
|
|
Paramètre de réchauffement pour tous les index vectoriels de la collection. |
Configurer le réchauffement au niveau des champsCompatible with Milvus 2.6.11+
Le réchauffement au niveau du champ offre la granularité la plus fine, vous permettant de contrôler le comportement du réchauffement pour des champs individuels. Ceci est utile lorsque des champs spécifiques ont des schémas d'accès uniques.
Le réchauffement au niveau du champ s'applique uniquement aux données brutes du champ, et non aux index de ce champ. Pour configurer le réchauffement d'un index, utilisez la configuration au niveau de l'index.
Configurer le réchauffement lors de la création d'un champ
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
)
Modifier les paramètres de réchauffement d'une rubrique existante
Vous devez modifier les paramètres d'une rubrique avant d'appeler load(). La modification d'un champ dans une collection chargée entraîne une erreur. Les modifications apportées aux paramètres de réchauffement prennent effet lors du prochain chargement de la collection.
client.alter_collection_field(
collection_name="my_collection",
field_name="category",
field_params={"warmup": "sync"}
)
Configurer le réchauffement au niveau de l'indexCompatible with Milvus 2.6.11+
Le préchauffage au niveau de l'index vous permet de contrôler le préchargement pour des index individuels, indépendamment du paramètre de préchauffage du champ sous-jacent.
Configurer le préchauffage lors de la création d'un index
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
)
Modifier les paramètres de réchauffement d'un index existant
Vous devez modifier les paramètres de l'index avant d'appeler load(). La modification d'un index sur une collection chargée entraîne une erreur. Les modifications apportées aux paramètres de réchauffement prennent effet lors du prochain chargement de la collection.
client.alter_index_properties(
collection_name="my_collection",
index_name="embedding",
properties={"warmup": "sync"}
)
Référence du comportement du warmup
Le tableau suivant résume le comportement de réchauffement à différentes étapes du cycle de vie du segment.
Paramètre de réchauffement |
Phase de chargement |
Phase de recherche/interrogation |
Phase de libération |
|---|---|---|---|
|
Les données sont chargées dans le stockage local. La destination (disque ou mémoire) dépend du paramètre mmap. |
La requête frappe directement le cache local. |
Les données du cache local sont effacées. |
|
Les données ne sont pas chargées dans la mémoire locale. |
Les données sont extraites à la demande du stockage d'objets, puis mises en cache localement en fonction du paramètre mmap. |
Les données mises en cache localement sont effacées. |
Interaction avec mmap :
Paramètres d'échauffement |
Mmap activé |
Emplacement des données |
|---|---|---|
|
|
Disque local ( |
|
|
Mémoire locale |
|
|
Enregistré sur le disque local lors du premier accès |
|
|
Récupéré dans la mémoire locale lors du premier accès |
Structure du répertoire du cache local (lorsque mmap est activé) :
Type de données |
Chemin d'accès au répertoire |
|---|---|
Données de champ scalaire/vectoriel |
|
Fichiers d'index scalaire/vectoriel |
|
Meilleures pratiques
L'échauffement n'affecte que le chargement initial. Si les données mises en cache sont expulsées ultérieurement, la requête suivante les rechargera à la demande.
Évitez d'abuser de
sync. Le préchargement d'un trop grand nombre de champs augmente le temps de chargement et la pression sur le cache.Commencez de manière prudente : activez Warm Up uniquement pour les champs et les index auxquels on accède fréquemment.
Surveillez la latence des requêtes et les mesures du cache, puis augmentez le préchargement si nécessaire.
Pour les charges de travail mixtes, appliquez
syncaux collections sensibles aux performances etdisableaux collections orientées vers la capacité.