PemanasanCompatible with Milvus 2.6.4+
Pemanasan melengkapi Penyimpanan Berjenjang dengan melakukan pramuat bidang atau indeks yang dipilih ke dalam cache sebelum segmen dapat di-query. Anda dapat mengonfigurasi pemanasan di tingkat kluster, koleksi, atau masing-masing bidang/indeks, sehingga memungkinkan kontrol yang lebih baik atas latensi kueri pertama dan penggunaan sumber daya.
Mengapa melakukan pemanasan
Lazy Load di Penyimpanan Berjenjang meningkatkan efisiensi dengan hanya memuat metadata pada awalnya. Namun, hal ini dapat menyebabkan latensi pada kueri pertama untuk data yang dingin, karena potongan atau indeks yang diperlukan harus diambil dari penyimpanan jarak jauh.
Warm Up memecahkan masalah ini dengan menyimpan data penting secara proaktif di cache selama inisialisasi segmen.
Ini sangat bermanfaat ketika:
Indeks skalar tertentu sering digunakan dalam kondisi filter.
Indeks vektor sangat penting untuk kinerja pencarian dan harus segera disiapkan.
Latensi cold-start setelah QueryNode dimulai ulang atau pemuatan segmen baru tidak dapat diterima.
Sebaliknya, Pemanasan tidak disarankan untuk bidang atau indeks yang jarang ditanyakan. Menonaktifkan Pemanasan akan mempersingkat waktu pemuatan segmen dan menghemat ruang cache-ideal untuk bidang vektor besar atau bidang skalar yang tidak kritis.
Tingkat konfigurasi
Tingkat |
Cakupan |
Metode konfigurasi |
Prioritas |
|---|---|---|---|
Bidang/Indeks |
Bidang atau indeks tunggal |
Metode SDK:
|
Tertinggi |
Koleksi |
Semua bidang/indeks dalam koleksi |
Metode SDK:
|
Sedang |
Cluster |
Semua koleksi dalam klaster |
|
Terendah (default) |
Mengesampingkan perilaku:
Jika sebuah bidang memiliki pengaturan pemanasannya sendiri, pengaturan tersebut diutamakan daripada pengaturan tingkat koleksi dan tingkat klaster.
Jika tidak ada pengaturan tingkat bidang atau tingkat indeks, pengaturan tingkat koleksi yang berlaku.
Jika tidak ada pengaturan tingkat bidang atau tingkat indeks atau tingkat koleksi, maka tingkat klaster yang berlaku.
Saat menggunakan operasi perubahan, nilai perubahan terbaru yang berlaku.
Mengonfigurasi pemanasan di tingkat klaster
Pemanasan tingkat klaster dikonfigurasi di file konfigurasi Milvus milvus.yaml dan berlaku untuk semua koleksi di dalam klaster. Ini berfungsi sebagai default dasar.
Setiap jenis target mendukung dua pengaturan:
Pengaturan Pemanasan |
Deskripsi |
Skenario umum |
|---|---|---|
|
Memuat sebelum segmen dapat di-query. Waktu muat sedikit meningkat, tetapi kueri pertama tidak menimbulkan latensi. |
Gunakan untuk data yang sangat penting bagi kinerja yang harus segera tersedia, seperti indeks skalar frekuensi tinggi atau indeks vektor kunci yang digunakan dalam pencarian. |
|
Lewati pemuatan awal. Segmen dapat di-query lebih cepat, tetapi query pertama dapat memicu pemuatan sesuai permintaan. |
Gunakan untuk data yang jarang diakses atau data besar seperti bidang vektor mentah atau bidang skalar yang tidak penting. |
Contoh 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 |
Pengaturan Pemanasan |
Deskripsi |
Kasus penggunaan yang disarankan |
|---|---|---|---|
|
|
Mengontrol apakah data bidang skalar dimuat sebelumnya. |
Gunakan |
|
|
Mengontrol apakah indeks skalar dimuat sebelumnya. |
Gunakan |
|
|
Mengontrol apakah data bidang vektor dimuat sebelumnya. |
Umumnya |
|
|
Mengontrol apakah indeks vektor dimuat sebelumnya. |
Gunakan |
Mengonfigurasi pemanasan pada tingkat koleksiCompatible with Milvus 2.6.11+
Pemanasan tingkat koleksi memungkinkan Anda untuk mengganti default kluster untuk koleksi tertentu. Hal ini berguna ketika sebuah koleksi memiliki pola akses yang berbeda dari baseline seluruh cluster.
Mengatur pemanasan saat membuat koleksi
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"
}
)
Mengubah pengaturan pemanasan pada koleksi yang sudah ada
Anda harus mengubah properti koleksi sebelum memanggil load(). Mengubah koleksi yang sudah dimuat akan menghasilkan kesalahan. Perubahan pada pengaturan pemanasan akan berlaku pada saat Anda memuat koleksi berikutnya.
client.alter_collection_properties(
collection_name="my_collection",
properties={
"warmup.vectorIndex": "disable",
"warmup.scalarField": "sync"
}
)
Referensi properti:
Properti |
Pengaturan Pemanasan |
Deskripsi |
|---|---|---|
|
|
Pengaturan pemanasan untuk semua bidang skalar dalam koleksi. |
|
|
Pengaturan pemanasan untuk semua indeks skalar dalam koleksi. |
|
|
Pengaturan pemanasan untuk semua bidang vektor dalam koleksi. |
|
|
Pengaturan pemanasan untuk semua indeks vektor dalam koleksi. |
Mengonfigurasi pemanasan pada tingkat bidangCompatible with Milvus 2.6.11+
Pemanasan tingkat bidang memberikan perincian terbaik, memungkinkan Anda untuk mengontrol perilaku pemanasan untuk masing-masing bidang. Hal ini berguna ketika bidang tertentu memiliki pola akses yang unik.
Pemanasan tingkat bidang hanya berlaku untuk data mentah bidang, bukan untuk indeks pada bidang tersebut. Untuk mengonfigurasi pemanasan untuk indeks, gunakan konfigurasi tingkat indeks.
Mengatur pemanasan saat membuat bidang
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
)
Mengubah pengaturan pemanasan pada bidang yang sudah ada
Anda harus mengubah pengaturan bidang sebelum memanggil load(). Mengubah bidang pada koleksi yang dimuat akan menghasilkan kesalahan. Perubahan pada pengaturan pemanasan akan berlaku pada saat Anda memuat koleksi berikutnya.
client.alter_collection_field(
collection_name="my_collection",
field_name="category",
field_params={"warmup": "sync"}
)
Mengonfigurasi pemanasan pada tingkat indeksCompatible with Milvus 2.6.11+
Pemanasan tingkat indeks memungkinkan Anda mengontrol pemuatan awal untuk indeks individual, tidak tergantung pada pengaturan pemanasan bidang yang mendasarinya.
Mengatur pemanasan saat membuat indeks
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
)
Mengubah pengaturan pemanasan pada indeks yang sudah ada
Anda harus mengubah pengaturan indeks sebelum memanggil load(). Mengubah indeks pada koleksi yang sudah dimuat akan menghasilkan kesalahan. Perubahan pada pengaturan pemanasan akan berlaku pada saat Anda memuat koleksi berikutnya.
client.alter_index_properties(
collection_name="my_collection",
index_name="embedding",
properties={"warmup": "sync"}
)
Referensi perilaku pemanasan
Tabel berikut ini meringkas perilaku pemanasan pada berbagai tahap siklus hidup segmen.
Pengaturan Pemanasan |
Fase Pemuatan |
Fase Pencarian/Permintaan |
Fase Pelepasan |
|---|---|---|---|
|
Data dimuat ke penyimpanan lokal. Tujuan (disk atau memori) tergantung pada pengaturan mmap. |
Query langsung masuk ke cache lokal. |
Data cache lokal dihapus. |
|
Data tidak dimuat ke penyimpanan lokal. |
Data diambil sesuai permintaan dari penyimpanan objek, lalu ditembolok secara lokal berdasarkan pengaturan mmap. |
Data yang ditembolok lokal dihapus. |
Interaksi dengan mmap:
Pengaturan Pemanasan |
Mmap Diaktifkan |
Lokasi Data |
|---|---|---|
|
|
Disk lokal ( |
|
|
Memori lokal |
|
|
Diambil ke disk lokal pada akses pertama |
|
|
Diambil ke memori lokal pada akses pertama |
Struktur direktori cache lokal (bila mmap diaktifkan):
Tipe Data |
Jalur Direktori |
|---|---|
Data bidang skalar/Vektor |
|
Berkas indeks skalar/Vektor |
|
Praktik terbaik
Pemanasan hanya memengaruhi beban awal. Jika data yang di-cache kemudian digusur, kueri berikutnya akan memuat ulang sesuai permintaan.
Hindari penggunaan
syncsecara berlebihan. Memuat terlalu banyak field akan meningkatkan waktu muat dan tekanan cache.Mulailah secara konservatif - aktifkan Pemanasan hanya untuk bidang dan indeks yang sering diakses.
Pantau latensi kueri dan metrik cache, lalu perluas pramuat sesuai kebutuhan.
Untuk beban kerja campuran, terapkan
syncuntuk koleksi yang sensitif terhadap kinerja dandisableuntuk koleksi yang berorientasi pada kapasitas.