AufwärmenCompatible with Milvus 2.6.4+
Warm Up ergänzt Tiered Storage durch das Vorladen ausgewählter Felder oder Indizes in den Cache, bevor ein Segment abfragbar wird. Sie können Warmup auf Cluster-, Sammlungs- oder Einzelfeld-/Indexebene konfigurieren und so die Latenzzeit bei der ersten Abfrage und die Ressourcennutzung genau steuern.
Warum Aufwärmen
Lazy Load in Tiered Storage verbessert die Effizienz, indem zunächst nur Metadaten geladen werden. Dies kann jedoch bei der ersten Abfrage von kalten Daten zu Latenzzeiten führen, da die erforderlichen Chunks oder Indizes aus dem entfernten Speicher abgerufen werden müssen.
Warm Up löst dieses Problem durch proaktives Zwischenspeichern kritischer Daten während der Segmentinitialisierung.
Dies ist besonders vorteilhaft, wenn:
Bestimmte skalare Indizes werden häufig in Filterbedingungen verwendet.
Vektorindizes sind für die Suchleistung unerlässlich und müssen sofort zur Verfügung stehen.
Die Kaltstart-Latenzzeit nach einem QueryNode-Neustart oder dem Laden eines neuen Segments ist inakzeptabel.
Im Gegensatz dazu wird Warm Up für Felder oder Indizes, die nur selten abgefragt werden, nicht empfohlen. Die Deaktivierung von Warm Up verkürzt die Segmentladezeit und spart Cache-Speicherplatz - ideal für große Vektorfelder oder unkritische skalare Felder.
Konfigurationsstufen
Ebene |
Umfang |
Konfigurationsmethode |
Priorität |
|---|---|---|---|
Feld/Index |
Einzelnes Feld oder Index |
SDK-Methoden:
|
Höchste |
Sammlung |
Alle Felder/Indizes in einer Sammlung |
SDK-Methoden:
|
Mittel |
Cluster |
Alle Sammlungen im Cluster |
|
Niedrigste (Standard) |
Verhalten außer Kraft setzen:
Wenn ein Feld seine eigene Aufwärmeinstellung hat, hat diese Einstellung Vorrang vor den Einstellungen auf Sammlungs- und Clusterebene.
Wenn keine Einstellung auf Feld- oder Indexebene vorhanden ist, gilt die Einstellung auf Sammlungsebene.
Wenn weder Einstellungen auf Feld- oder Indexebene noch auf Sammlungsebene vorhanden sind, gilt die Einstellung auf Clusterebene.
Bei der Verwendung von Alter-Operationen wird der letzte Alter-Wert wirksam.
Konfigurieren von Warmup auf Clusterebene
Warmup auf Clusterebene wird in der Milvus-Konfigurationsdatei milvus.yaml konfiguriert und gilt für alle Sammlungen im Cluster. Dies dient als Grundeinstellung.
Jeder Zieltyp unterstützt zwei Einstellungen:
Aufwärmen Einstellung |
Beschreibung |
Typisches Szenario |
|---|---|---|
|
Vorladen, bevor das Segment abfragbar wird. Die Ladezeit erhöht sich leicht, aber die erste Abfrage verursacht keine Latenz. |
Verwenden Sie diese Option für leistungskritische Daten, die sofort verfügbar sein müssen, z. B. skalare Indizes mit hoher Frequenz oder Schlüsselvektorindizes für die Suche. |
|
Vorladen überspringen. Das Segment wird schneller abfragbar, aber die erste Abfrage kann ein bedarfsgesteuertes Laden auslösen. |
Geeignet für seltene Zugriffe oder große Daten wie rohe Vektorfelder oder unkritische skalare Felder. |
Beispiel 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
Parameter |
Warmup Einstellung |
Beschreibung |
Empfohlener Anwendungsfall |
|---|---|---|---|
|
|
Steuert, ob skalare Felddaten vorgeladen werden. |
Verwenden Sie |
|
|
Steuert, ob skalare Indizes vorgeladen werden. |
Verwenden Sie |
|
|
Legt fest, ob Vektorfelddaten vorgeladen werden. |
Im Allgemeinen |
|
|
Steuert, ob Vektorindizes vorgeladen werden. |
Verwenden Sie |
Aufwärmen auf Sammlungsebene konfigurierenCompatible with Milvus 2.6.11+
Mit Warmup auf Sammlungsebene können Sie die Cluster-Standardeinstellungen für eine bestimmte Sammlung außer Kraft setzen. Dies ist nützlich, wenn eine Sammlung andere Zugriffsmuster aufweist als die clusterweite Basislinie.
Einstellen der Aufwärmphase bei der Erstellung einer Sammlung
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"
}
)
Ändern der Aufwärmeinstellungen für eine vorhandene Sammlung
Sie müssen die Auflistungseigenschaften ändern, bevor Sie load() aufrufen. Das Ändern einer geladenen Sammlung gibt einen Fehler zurück. Änderungen an den Aufwärmeinstellungen werden beim nächsten Laden der Sammlung wirksam.
client.alter_collection_properties(
collection_name="my_collection",
properties={
"warmup.vectorIndex": "disable",
"warmup.scalarField": "sync"
}
)
Referenz der Eigenschaft:
Eigenschaft |
Aufwärmeinstellung |
Beschreibung |
|---|---|---|
|
|
Aufwärmeinstellung für alle skalaren Felder in der Sammlung. |
|
|
Warmup-Einstellung für alle skalaren Indizes in der Sammlung. |
|
|
Warmup-Einstellung für alle Vektorfelder in der Sammlung. |
|
|
Warmup-Einstellung für alle Vektorindizes in der Sammlung. |
Aufwärmen auf Feldebene konfigurierenCompatible with Milvus 2.6.11+
Die Aufwärmung auf Feldebene bietet die feinste Granularität und ermöglicht es Ihnen, das Aufwärmverhalten für einzelne Felder zu steuern. Dies ist nützlich, wenn bestimmte Felder eindeutige Zugriffsmuster haben.
Warmup auf Feldebene gilt nur für Feldrohdaten, nicht für Indizes zu diesem Feld. Um Warmup für einen Index zu konfigurieren, verwenden Sie die Konfiguration auf Indexebene.
Warmup beim Erstellen eines Felds einstellen
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
)
Ändern der Aufwärmeinstellungen für ein vorhandenes Feld
Sie müssen die Feldeinstellungen ändern, bevor Sie load() aufrufen. Das Ändern eines Felds in einer geladenen Sammlung führt zu einem Fehler. Änderungen an den Aufwärmeinstellungen werden beim nächsten Laden der Sammlung wirksam.
client.alter_collection_field(
collection_name="my_collection",
field_name="category",
field_params={"warmup": "sync"}
)
Konfigurieren der Aufwärmphase auf IndexebeneCompatible with Milvus 2.6.11+
Mit Warmup auf Indexebene können Sie das Vorladen für einzelne Indizes steuern, unabhängig von der Warmup-Einstellung des zugrunde liegenden Feldes.
Warmup beim Erstellen eines Index einstellen
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
)
Ändern der Warmup-Einstellungen für einen bestehenden Index
Sie müssen die Indexeinstellungen ändern, bevor Sie load() aufrufen. Das Ändern eines Indexes für eine geladene Sammlung gibt einen Fehler zurück. Änderungen an den Warmup-Einstellungen werden beim nächsten Laden der Sammlung wirksam.
client.alter_index_properties(
collection_name="my_collection",
index_name="embedding",
properties={"warmup": "sync"}
)
Referenz zum Aufwärmverhalten
In der folgenden Tabelle ist das Aufwärmverhalten in den verschiedenen Phasen des Segmentlebenszyklus zusammengefasst.
Aufwärmeinstellung |
Ladephase |
Such-/Abfragephase |
Freigabephase |
|---|---|---|---|
|
Die Daten werden in den lokalen Speicher geladen. Das Ziel (Festplatte oder Speicher) hängt von der mmap-Einstellung ab. |
Die Abfrage trifft direkt auf den lokalen Cache. |
Lokale Cachedaten werden gelöscht. |
|
Die Daten werden nicht in den lokalen Speicher geladen. |
Die Daten werden bei Bedarf aus dem Objektspeicher geholt und dann lokal auf der Grundlage der mmap-Einstellung zwischengespeichert. |
Die lokal zwischengespeicherten Daten werden geleert. |
Interaktion mit mmap:
Warmup-Einstellung |
Mmap Aktiviert |
Speicherort der Daten |
|---|---|---|
|
|
Lokale Festplatte ( |
|
|
Lokaler Speicher |
|
|
Wird beim ersten Zugriff auf die lokale Festplatte geholt |
|
|
Beim ersten Zugriff in den lokalen Speicher geholt |
Lokale Cache-Verzeichnisstruktur (wenn mmap aktiviert ist):
Datentyp |
Verzeichnis Pfad |
|---|---|
Skalar/Vektor-Felddaten |
|
Skalar-/Vektor-Indexdateien |
|
Bewährte Praktiken
Warm Up betrifft nur das erste Laden. Wenn zwischengespeicherte Daten später entfernt werden, werden sie bei der nächsten Abfrage erneut geladen.
Vermeiden Sie die übermäßige Verwendung von
sync. Das Vorladen zu vieler Felder erhöht die Ladezeit und den Druck auf den Cache.Beginnen Sie konservativ - aktivieren Sie Warm Up nur für Felder und Indizes, auf die häufig zugegriffen wird.
Überwachen Sie die Abfragelatenz und die Cache-Metriken und erweitern Sie das Preloading dann nach Bedarf.
Wenden Sie bei gemischten Arbeitslasten
syncauf leistungsempfindliche Sammlungen unddisableauf kapazitätsorientierte Sammlungen an.