Word2vek är en allmänt använd algoritm för att extrahera lågdimensionella vektor representationer av ord. Toppmoderna algoritmer inklusive de av Mikolov et al. [5, 6] har parallelliserats för multi-core CPU-arkitekturer, men är baserade på vektor-vektor verksamhet med "Hogwild" uppdateringar som är minnesbandbredd intensiv och inte effektivt använder beräkningsresurser. I detta dokument föreslår vi "HogBatch" genom att förbättra återanvändningen av olika datastrukturer i algoritmen genom användning av minibatching och negativ sample sharing, vilket gör att vi kan uttrycka problemet med hjälp av matris multiplicera operationer. Vi utforskar också olika tekniker för att distribuera word2vek beräkning över noder i en beräkna kluster, och visar god stark skalbarhet upp till 32 noder. Den nya algoritmen är särskilt lämplig för moderna multi-core/many-core arkitekturer, särskilt Intels senaste Knights Landing processorer, och gör det möjligt för oss att skala upp beräkningen nästan linjärt över kärnor och noder, och bearbeta hundratals miljoner ord per sekund, vilket är den snabbaste word2vek implementering till det bästa av vår kunskap. Vi hänvisar läsaren till [5, 6] för en introduktion till word2vec och dess optimeringsproblem. Det ursprungliga genomförandet av word2vec av Mikolov et al. 1 använder Hogwild [7] för att parallellisera SGD. Hogwild är en parallell SGD-algoritm som försöker ignorera konflikter mellan modelluppdateringar på olika trådar och tillåter uppdateringar att fortsätta även i närvaro av konflikter. Psuedokoden för ord 2vec Hogwild SGD visas i Algoritm 1. Algoritmen tar i en matris M V ×D i som innehåller ordet representationer för varje indataord, och en matris M V ×D ut för ordet representationer av varje utdataord. Varje ord representeras som en rad D flyttalstal, motsvarande en rad av de två matriserna. Dessa matriser uppdateras under träningen. Vi tar in ett målord, och en uppsättning N indata sammanhangsord runt målet som beskrivs i toppen av figur 1 Algoritm 1 läser och uppdaterar poster som motsvarar indatakontext och positiva / negativa ord vid varje iteration av slingan på linje 6. Detta innebär att det finns ett potentiellt beroende mellan successiva iterationer - de kan hända att röra samma ord representationer, och varje iteration måste potentiellt vänta på uppdateringen från föregående iteration att slutföra. Hogwild ignorerar sådana
Det arbete som utförts av Ji et al. REF visar stark skalbarhet på CPU-noder genom att använda ett system baserat på minibatting och delade negativa prover.
Parallelizing Word2Vec in Multi-Core and Many-Core Architectures
{'venue': 'ArXiv', 'journal': 'ArXiv', 'mag_field_of_study': ['Computer Science', 'Mathematics']}