🚀 Prova Zilliz Cloud, la versione completamente gestita di Milvus, gratuitamente—sperimenta prestazioni 10 volte più veloci! Prova Ora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Presentazione di Milvus 2.3: una release fondamentale che offre il supporto per GPU, Arm64, CDC e molte altre caratteristiche molto attese.

Presentazione di Milvus 2.3: una release fondamentale che offre il supporto per GPU, Arm64, CDC e molte altre caratteristiche molto attese.

  • News
August 28, 2023
Owen Jiao, Fendy Feng

Notizie entusiasmanti! Dopo otto mesi di sforzi concertati, siamo entusiasti di annunciare il rilascio di Milvus 2.3, una versione miliare che introduce numerose funzionalità molto attese, tra cui il supporto per GPU, Arm64, upsert, acquisizione dei dati di modifica, indice ScaNN e tecnologia MMap. Milvus 2.3 introduce anche un miglioramento delle prestazioni delle query, un bilanciamento e una pianificazione del carico più robusti e una migliore osservabilità e operatività.

Scoprite insieme a me queste nuove funzionalità e miglioramenti e come potete trarre vantaggio da questa release.

Supporto per l'indice GPU che porta a una velocità da 3 a 10 volte superiore in QPS

L'indice GPU è una funzionalità molto attesa dalla comunità Milvus. Grazie a una grande collaborazione con gli ingegneri di Nvidia, Milvus 2.3 ha supportato l'indicizzazione su GPU con il robusto algoritmo RAFT aggiunto a Knowhere, il motore di indicizzazione di Milvus. Grazie al supporto delle GPU, Milvus 2.3 è più di tre volte più veloce in QPS rispetto alle versioni precedenti che utilizzano l'indice HNSW della CPU e quasi dieci volte più veloce per i set di dati specifici che richiedono calcoli pesanti.

Supporto Arm64 per soddisfare la crescente domanda degli utenti

Le CPU Arm stanno diventando sempre più popolari tra i cloud provider e gli sviluppatori. Per soddisfare questa crescente domanda, Milvus fornisce ora immagini Docker per l'architettura ARM64. Grazie a questo nuovo supporto per le CPU, gli utenti di MacOS possono creare le loro applicazioni con Milvus in modo più semplice.

Supporto Upsert per una migliore esperienza utente

Milvus 2.3 introduce un notevole miglioramento supportando l'operazione di upsert. Questa nuova funzionalità consente agli utenti di aggiornare o inserire dati senza problemi e di eseguire entrambe le operazioni in un'unica richiesta attraverso l'interfaccia Upsert. Questa funzione semplifica la gestione dei dati e porta efficienza al tavolo.

Nota:

  • La funzione di upsert non si applica agli ID ad incremento automatico.
  • Upsert è implementato come una combinazione di delete e insert, che può comportare una certa perdita di prestazioni. Si consiglia di utilizzare insert se si usa Milvus in scenari di scrittura intensiva.

Ricerca a distanza per risultati più precisi

Milvus 2.3 consente agli utenti di specificare la distanza tra il vettore in ingresso e i vettori memorizzati in Milvus durante un'interrogazione. Milvus restituisce quindi tutti i risultati corrispondenti all'interno dell'intervallo impostato. Di seguito è riportato un esempio di specificazione della distanza di ricerca utilizzando la funzione di ricerca per intervallo.

// add radius and range_filter to params in search_params
search_params = {"params": {"nprobe": 10, "radius": 10, "range_filter" : 20}, "metric_type": "L2"}
res = collection.search(
vectors, "float_vector", search_params, topK,
"int64 > 100", output_fields=["int64", "float"]
)

In questo esempio, l'utente richiede a Milvus di restituire vettori entro una distanza di 10-20 unità dal vettore di input.

Nota: Le diverse metriche di distanza variano nel modo in cui calcolano le distanze, con conseguenti intervalli di valori e strategie di ordinamento diversi. Pertanto, è essenziale comprendere le loro caratteristiche prima di utilizzare la funzione di ricerca per intervallo.

Indice ScaNN per una maggiore velocità di interrogazione

Milvus 2.3 supporta ora l'indice ScaNN, un indice open-source di prossimità approssimativa (ANN) sviluppato da Google. L'indice ScaNN ha dimostrato prestazioni superiori in vari benchmark, superando HNSW di circa il 20% e risultando circa sette volte più veloce di IVFFlat. Grazie al supporto dell'indice ScaNN, Milvus raggiunge una velocità di interrogazione molto più elevata rispetto alle versioni precedenti.

Indice in crescita per prestazioni stabili e migliori nelle interrogazioni

Milvus comprende due categorie di dati: dati indicizzati e dati in streaming. Milvus può utilizzare gli indici per cercare rapidamente i dati indicizzati, ma può solo cercare brutalmente i dati in streaming riga per riga, il che può avere un impatto sulle prestazioni. Milvus 2.3 introduce il Growing Index, che crea automaticamente indici in tempo reale per i dati in streaming per migliorare le prestazioni delle query.

Iteratore per il recupero dei dati in batch

In Milvus 2.3, Pymilvus ha introdotto un'interfaccia iteratore che consente agli utenti di recuperare più di 16.384 entità in una ricerca o in un intervallo di ricerca. Questa funzione è utile quando gli utenti devono esportare decine di migliaia o addirittura più vettori in lotti.

Supporto per MMap per una maggiore capacità

MMap è una chiamata di sistema UNIX utilizzata per mappare file e altri oggetti in memoria. Milvus 2.3 supporta MMap, che consente agli utenti di caricare i dati sui dischi locali e mapparli in memoria, aumentando così la capacità di una singola macchina.

I risultati dei nostri test indicano che, utilizzando la tecnologia MMap, Milvus può raddoppiare la sua capacità di dati limitando il degrado delle prestazioni al 20%. Questo approccio riduce significativamente i costi complessivi, rendendolo particolarmente vantaggioso per gli utenti con un budget limitato che non vogliono compromettere le prestazioni.

Supporto CDC per una maggiore disponibilità del sistema

Il Change Data Capture (CDC) è una funzione comunemente usata nei sistemi di database che cattura e replica le modifiche dei dati a una destinazione designata. Con la funzione CDC, Milvus 2.3 consente agli utenti di sincronizzare i dati tra i vari centri dati, di eseguire il backup dei dati incrementali e di migrare i dati senza soluzione di continuità, rendendo il sistema più disponibile.

Oltre alle funzioni sopra descritte, Milvus 2.3 introduce un'interfaccia di conteggio per calcolare con precisione il numero di righe di dati memorizzati in una raccolta in tempo reale, supporta la metrica Cosine per misurare la distanza vettoriale e ulteriori operazioni su array JSON. Per ulteriori caratteristiche e informazioni dettagliate, consultare le note di rilascio di Milvus 2.3.

Miglioramenti e correzioni di bug

Oltre alle nuove funzioni, Milvus 2.3 include molti miglioramenti e correzioni di bug per le versioni precedenti.

Migliori prestazioni per il filtraggio dei dati

Milvus esegue il filtraggio scalare prima della ricerca vettoriale nelle query ibride di dati scalari e vettoriali per ottenere risultati più precisi. Tuttavia, le prestazioni dell'indicizzazione possono diminuire se l'utente ha filtrato troppi dati dopo il filtraggio scalare. In Milvus 2.3 abbiamo ottimizzato la strategia di filtraggio di HNSW per risolvere questo problema e migliorare le prestazioni delle query.

Maggiore utilizzo della CPU multi-core

La ricerca approssimata di prossimità (RNA) è un'attività ad alta intensità di calcolo che richiede ingenti risorse di CPU. Nelle versioni precedenti, Milvus poteva utilizzare solo il 70% circa delle risorse CPU multi-core disponibili. Tuttavia, con l'ultima versione, Milvus ha superato questa limitazione e può utilizzare pienamente tutte le risorse CPU multi-core disponibili, migliorando le prestazioni delle query e riducendo lo spreco di risorse.

QueryNode rifatto

QueryNode è un componente cruciale di Milvus, responsabile della ricerca vettoriale. Tuttavia, nelle versioni precedenti, QueryNode presentava stati complessi, code di messaggi duplicate, una struttura di codice non organizzata e messaggi di errore non intuitivi.

In Milvus 2.3, abbiamo aggiornato QueryNode introducendo una struttura di codice stateless e rimuovendo la coda di messaggi per la cancellazione dei dati. Questi aggiornamenti si traducono in un minore spreco di risorse e in una ricerca vettoriale più veloce e stabile.

Code di messaggi migliorate basate su NATS

Abbiamo costruito Milvus su un'architettura basata sui log e nelle versioni precedenti abbiamo utilizzato Pulsar e Kafka come broker di log principali. Tuttavia, questa combinazione ha affrontato tre sfide fondamentali:

  • Era instabile in situazioni multi-topic.
  • Consuma risorse quando è inattiva e fatica a deduplicare i messaggi.
  • Pulsar e Kafka sono strettamente legati all'ecosistema Java, quindi la loro comunità raramente mantiene e aggiorna i loro SDK per Go.

Per risolvere questi problemi, abbiamo unito NATS e Bookeeper come nuovo log broker per Milvus, che si adatta meglio alle esigenze degli utenti.

Bilanciatore di carico ottimizzato

Milvus 2.3 ha adottato un algoritmo di bilanciamento del carico più flessibile, basato sui carichi reali del sistema. Questo algoritmo ottimizzato consente agli utenti di rilevare rapidamente i guasti dei nodi e i carichi sbilanciati e di regolare le pianificazioni di conseguenza. Secondo i risultati dei nostri test, Milvus 2.3 è in grado di rilevare guasti, carichi sbilanciati, stato anomalo dei nodi e altri eventi in pochi secondi e di effettuare prontamente le regolazioni.

Per ulteriori informazioni su Milvus 2.3, consultare le note di rilascio di Milvus 2.3.

Aggiornamenti degli strumenti

Con Milvus 2.3 abbiamo aggiornato anche Birdwatcher e Attu, due strumenti preziosi per il funzionamento e la manutenzione di Milvus.

Aggiornamento di Birdwatcher

Abbiamo aggiornato Birdwatcher, lo strumento di debug di Milvus, introducendo numerose funzionalità e miglioramenti, tra cui:

  • API RESTful per una perfetta integrazione con altri sistemi di diagnostica.
  • Supporto del comando PProf per facilitare l'integrazione con lo strumento Go pprof.
  • Funzionalità di analisi dell'uso dello storage.
  • Funzionalità efficienti di analisi dei log.
  • Supporto per la visualizzazione e la modifica delle configurazioni in etcd.

Aggiornamento di Attu

Abbiamo lanciato una nuova interfaccia per Attu, uno strumento di amministrazione di database vettoriali tutto in uno. La nuova interfaccia ha un design più lineare ed è più facile da capire.

Per maggiori dettagli, consultare le note di rilascio di Milvus 2.3.

Restiamo in contatto!

Se avete domande o feedback su Milvus, non esitate a contattarci tramite Twitter o LinkedIn. Siete anche invitati a unirvi al nostro canale Slack per chiacchierare direttamente con i nostri ingegneri e con la comunità, oppure a visitare il nostro orario d'ufficio del martedì!

Like the article? Spread the word

Continua a Leggere