David Novak and Pavel Zezula<br />M-Chord: A ScalableDistributedSimilaritySearchStructure<br />GRUPPO 13<br />Decorte Andr...
Utente f0rnisce un’immagine<br />Trovare immagini simili nel database<br />	basandosi su distanza quadratica tra le<br />f...
Dati ad alta dimensionalità<br />Funzioni distanza onerose computazionalmente (nell’ordine di O(D2))<br />Dati non gestibi...
Introduzione di spazi metrici anziché vettoriali<br />Sviluppo di strategie distribuite per dividere il carico di lavoro s...
Sviluppare una struttura per la ricerca distribuita che sia applicabile a spazi metrici basandosi su alcune soluzioni esis...
Uno spazio metrico M è una coppia (U, d)<br />U è il dominio degli oggetti <br />d è una funzione di distanza <br />Tutti ...
Metodo di indicizzazione per ricerca di similarità in spazi vettoriali<br />Partizione dei dati in n cluster, rappresentat...
iDistance<br />C2<br />P2<br />C0<br />P0<br />C1<br />P1<br />C<br />2*C<br />3*C<br />8<br />Gruppo 13   M-Chord<br />
Chord(http://pdos.csail.mit.edu/chord/)<br />Protocollo P2P per DistributedHashTable<br />Chord specifica come chiavidebba...
Chord<br />Le chiavi Ki sono disposte su un cerchio<br />A ogni nodo Ni viene assegnata la chiave<br />Ki dallo stesso dom...
N1<br /><ul><li> Finger table ha 	dimensioni minori 	rispetto al numero 	totale nodi
 Necessario mantenerla</li></ul>	aggiornata nel tempo<br /><ul><li> Non contiene info 	necessarie  per 	raggiungere 	valor...
 Tiene anche in conto </li></ul>	possibilità di failure del 	nodo<br />N8<br />+1<br />N51<br />+2<br />+4<br />N48<br />N...
12<br />Gruppo 13   M-Chord<br />Chord: esempio lookup<br />N1<br />K54<br />Cercando la chiave 54 è necessario visitare 2...
 Altrimenti accedi alla finger table e cerca il più 	grande 	predecessore della chiave 	richiesta, in modo da 	avvicinarsi...
Idee alla base di M-Chord:<br />Generalizzare iDistance a spazi metrici e adattare il suo dominio a quello di Chord<br />D...
Durante partizionamento, che sfrutta diagrammi di Voronoi, distanze dei punti da ogni pivot sono salvate per essere poi sf...
Selezione pivot<br />Criterio di selezione: aumentare il più possibile il filtraggio<br />Dominio dei dati<br />Necessaria...
Topologia della rete corrisponde a quella di Chord<br />Fase di inizializzazione (SampleSetS, numero pivot)<br />Un solo n...
Attivazione altri nodi<br />I nodi a cui non sono assegnate chiavi sono non attivi<br />Ogni nodo attivo può invocare una ...
Segue l’idea di range query di iDistance<br />Il nodo Nq che avvia la query procede nel seguente modo:<br />Determina per ...
Se nodo non responsabile dell’intero intervallo, inoltra richiesta a predecessore/successore<br />Ogni nodo crea risposta ...
iDistance può escludere un cluster i da ricerca se <br />		d(pi, q) –r > max-disti<br />Tale pruning non è applicabile in ...
Approccio di iDistance non adatto ad ambienti distribuiti (query di range a raggio crescente)<br />Proposta degli autori:<...
Nodo responsabile per mchord(q) cerca nel cluster Ci a cui appartiene q<br />Localizza la foglia del B+-Tree dove si trova...
Eseguo una query di Range (q, δk) su altri cluster (salto spazio già esplorato) e restituisco i k oggetti più vicini<br />...
2 dataset di esempio: <br />Immagini rappresentate da vettori di 45 dimensioni<br />Corpus di testi confrontati con editdi...
Buoni livelli di parallelismo intraquery (stessa query processata in parallelo) ed interquery (più query contemporanee)<br...
Upcoming SlideShare
Loading in...5
×

M-Chord - a scalable distributed similarity search

474

Published on

M-Chord is a scalable distributed similarity search based on Chord + iDistance adapted to metric spaces

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
474
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "M-Chord - a scalable distributed similarity search"

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

×