M-Chord - a scalable distributed similarity search
1. David Novak and Pavel Zezula M-Chord: A ScalableDistributedSimilaritySearchStructure GRUPPO 13 Decorte Andrea Giammarino Giuseppe
2. Utente f0rnisce un’immagine Trovare immagini simili nel database basandosi su distanza quadratica tra le features Esempio Difficoltà nel lavorare con dati di questo genere? 2 Gruppo 13 M-Chord
3. Dati ad alta dimensionalità Funzioni distanza onerose computazionalmente (nell’ordine di O(D2)) Dati non gestibili efficientemente con spazi vettoriali Query multidimensionali di similarità Servono nuove strategie! Scenario 3 Gruppo 13 M-Chord
4. Introduzione di spazi metrici anziché vettoriali Sviluppo di strategie distribuite per dividere il carico di lavoro su nodi interconnessi tra loro Al momento della pubblicazione, numerosi studi su applicazioni di ricerca distribuita, ma la maggior parte di loro si concentrano su spazi vettoriali Gli unici riguardanti spazi metrici sono GHT* (nativamente metrica, basata sui GeneralizedHyperplaneTree) e MCAN, che estende il protocollo CAN (ContentAddressable Network) Idee e soluzioni esistenti 4 Gruppo 13 M-Chord
5. Sviluppare una struttura per la ricerca distribuita che sia applicabile a spazi metrici basandosi su alcune soluzioni esistenti: iDistance Protocollo Chord Esse verranno integrate ed estese nella struttura di M-Chord Proposta degli autori 5 Gruppo 13 M-Chord
6. Uno spazio metrico M è una coppia (U, d) U è il dominio degli oggetti d è una funzione di distanza Tutti gli oggetti di U soddisfano le seguenti proprietà: Spazio metrico 6 Gruppo 13 M-Chord
7. Metodo di indicizzazione per ricerca di similarità in spazi vettoriali Partizione dei dati in n cluster, rappresentati da un pivot pi A ogni oggetto x viene assegnata chiave unidimensionale che tiene conto della distanza dal pivot c è una costante per separare i cluster Valori sono memorizzati in un B+-tree sulla base della chiave iDist(x) iDistance 7 Gruppo 13 M-Chord
9. Chord(http://pdos.csail.mit.edu/chord/) Protocollo P2P per DistributedHashTable Chord specifica come chiavidebbanoessereassegnateainodi, come sipossalocalizzarenodoresponsabile per unachiave e come essorecuperivalorediunachiavespecifica Basato su scambio di messaggi Dinamico, consistenthashing Dominio mappato uniformemente nell’intervallo [0,2m) 9 Gruppo 13 M-Chord
10. Chord Le chiavi Ki sono disposte su un cerchio A ogni nodo Ni viene assegnata la chiave Ki dallo stesso dominio Nodo Ni responsabile per tutte le chiavi dell’intervallo (Ki-1, Ki](mod 2m) Ogni nodo mantiene successore, predecessore e finger table, che garantisce un routing di complessità O(log n) 10 Gruppo 13 M-Chord
11.
12.
13. Tiene anche in conto possibilità di failure del nodo N8 +1 N51 +2 +4 N48 N14 +32 +8 +16 N42 N21 N38 N32 11 Gruppo 13 M-Chord Chord: finger table
14.
15. Altrimenti accedi alla finger table e cerca il più grande predecessore della chiave richiesta, in modo da avvicinarsi il più possibile al nodo che contiene la chiaveN8 N56 lookup(54) N51 N14 N48 N21 N42 N38 N32
16. Idee alla base di M-Chord: Generalizzare iDistance a spazi metrici e adattare il suo dominio a quello di Chord Dividere il dominio in intervalli da distribuire sui diversi nodi Sviluppare gli algoritmi Range e kNN Introdurre meccanismi di pruning M-Chord 13 Gruppo 13 M-Chord
17. Durante partizionamento, che sfrutta diagrammi di Voronoi, distanze dei punti da ogni pivot sono salvate per essere poi sfruttate nel pruning delle query di Range Data una query Range(q, r), per diseguaglianza triangolare oggetto x può essere escluso senza valutare d(q, x) se M-Chord:Pruning x r q Pi d(x,Pi) - d(q,Pi) >r? 14 Gruppo 13 M-Chord
18. Selezione pivot Criterio di selezione: aumentare il più possibile il filtraggio Dominio dei dati Necessaria una funzione di trasformazione h per normalizzare il dominio fornito da iDistance sull’intervallo [0, 2m) ed ottenere una distribuzione uniforme M-Chord:Pivot e dominio 15 Gruppo 13 M-Chord
19. Topologia della rete corrisponde a quella di Chord Fase di inizializzazione (SampleSetS, numero pivot) Un solo nodo attivo che copre tutto (chiave 2m-1) Selezione dei pivot su S Si applica formula diiDistancesu S per avere distribuzione dei dati e si ricava funzione di trasformazione h in modo da poter calcolare mchord(x) M-Chord: Funzionamento 16 Gruppo 13 M-Chord
20. Attivazione altri nodi I nodi a cui non sono assegnate chiavi sono non attivi Ogni nodo attivo può invocare una richiesta di splitsecondo criteri personalizzati (carico…) Procedura di split Si determina la nuova chiave Ki da assegnare al nodo Si spostano i dati al nuovo nodo e si segue il meccanismo standard di join di Chord Si cerca di seguire le forme dei cluster se intervallo copre più di un cluster M-Chord: Funzionamento 17 Gruppo 13 M-Chord
21. Segue l’idea di range query di iDistance Il nodo Nq che avvia la query procede nel seguente modo: Determina per ogni cluster Ci l’intervallo di chiaviIi Per ogni i invia una richiesta di IntervalSearch(Ii, q, r) al nodo Ni responsabile per il punto centrale dell’intervallo Ii M-Chord: Rangesearch 18 Gruppo 13 M-Chord
22. Se nodo non responsabile dell’intero intervallo, inoltra richiesta a predecessore/successore Ogni nodo crea risposta locale che include gli x | d(q,x)≤ r Invio risposta segnalando eventualmente che è necessario attendere quella di altri nodi Qui si sfruttano distanze calcolate in precedenza e formula di filtraggio di iDistance M-Chord: IntervalSearch (Ii, q, r) NI3 I3 I1 NI1 Nq wait NI2 I2 19 Gruppo 13 M-Chord
23. iDistance può escludere un cluster i da ricerca se d(pi, q) –r > max-disti Tale pruning non è applicabile in ambienti distribuiti (max-distinon conosciuto da tutti i nodi) 20 Gruppo 13 M-Chord M-Chord: Rangesearch max-disti Pi r q
24. Approccio di iDistance non adatto ad ambienti distribuiti (query di range a raggio crescente) Proposta degli autori: Utilizzo un’euristica a basso costo per trovare k oggetti vicino q; δk è un’approssimazione (upper bound) della distanzadel k-esimo oggetto M-Chord: kNNsearch 21 Gruppo 13 M-Chord
25. Nodo responsabile per mchord(q) cerca nel cluster Ci a cui appartiene q Localizza la foglia del B+-Tree dove si trova q Esplora a sinistra e destra le foglie e aggiunge i primi k oggetti al ResultSet, inizializzando δk Continua a esaminare x finché le chiavi mchord(x) appartengono a Se d(q,x) < δk aggiungo x a RS al posto del k-esimo oggetto e aggiorno δk Continuo ricerca finché non ho esplorato tutto Ii o tutto cluster Ci M-Chord: kNNsearch fase 1 22 Gruppo 13 M-Chord q K=2 δk = distanza K-esimo oggetto - δk + δk mchord(q)
26. Eseguo una query di Range (q, δk) su altri cluster (salto spazio già esplorato) e restituisco i k oggetti più vicini Si presume la presenza di almeno k oggetti in Ci, altrimenti strategia ottimistica 23 Gruppo 13 M-Chord M-Chord: kNNsearch fase 2
27. 2 dataset di esempio: Immagini rappresentate da vettori di 45 dimensioni Corpus di testi confrontati con editdistance Buona scalabilità all’aumentare delle dimensioni della query e del dataset Cresce tuttavia numero messaggi scambiati Possibilità di influire sulle prestazioni agendo su politiche di split dei nodi Prestazioni 24 Gruppo 13 M-Chord
28. Buoni livelli di parallelismo intraquery (stessa query processata in parallelo) ed interquery (più query contemporanee) 25 Gruppo 13 M-Chord Prestazioni
30. Limiti: Previsto solo inserimento nuovi oggetti, no eliminazione/aggiornamento Nessun supporto per disconnessione nodi Pruning di iDistance da adattare a ambiente distribuito Ulteriori studi: Prestazioni su spazi vettoriali a bassa dimensionalità Replicazione Sviluppi futuri 27 Gruppo 13 M-Chord
31. GRUPPO 13 Decorte Andrea Giammarino Giuseppe Grazie per l’attenzione