Spark LDA verbraucht zu viel Speicher

9

Ich versuche, Funken mllib lda zu verwenden, um meinen Dokumentenkorpus zusammenzufassen.

Meine Problemeinstellung ist wie unten.

  • über 100.000 Dokumente
  • etwa 400.000 einzelne Wörter
  • 100 Cluster

Ich habe 16 Server (jeder hat 20 Kerne und 128 GB Speicher).

Wenn ich LDA mit OnlineLDAOptimizer ausführe, gibt es einen Speichermangel, was darauf hindeutet, dass ich spark.driver.maxResultSize like erhöhen muss Die Gesamtgröße der serialisierten Ergebnisse von 11 Aufgaben (1302 MB) ist größer als spark.driver.maxResultSize

Ich habe spark.driver.maxResultSize auf 120GB (und auch spark.driver.memory auf 120GB) erhöht und LDA erneut ausgeführt, aber keinen Mangel. Es heißt immer noch Die Gesamtgröße der serialisierten Ergebnisse von 11 Aufgaben (120,1 GB) ist größer als spark.driver.maxResultSize

Ich habe einen anderen Datensatz mit ungefähr 100.000 eindeutigen Wörtern ausprobiert und es hat funktioniert.

Also, wie kann ich den Speicherverbrauch schätzen, wenn ich Spark mllib LDA verwende? Ich konnte keine Spezifikation in der offiziellen Dokumentation finden.

Hinweis Ich habe sparse vector zum Konstruieren von docuemnt RDD[(Long, Vector)] verwendet, das an LDA.run() übergeben wurde, weiß aber nicht, ob spark lda im internen Format korrekt mit dem Format spärlich umgehen kann.

(edited) Ich habe die Scala-Version von LDA verwendet. Nicht Python-Version.

Dies könnte ein verwandtes Problem sein, aber es wurde keine klare Antwort gegeben. Spark LDA Probleme - Vorhersage und OOM Fragen

(bearbeitet)

Dies ist ein Ausschnitt meines Codes (gist). Ссылка

%Vor%

Tatsächlich verwende ich LDA für die Dimensionsreduktion von Transaktionsdaten. Meine Daten haben das Format (u, p, r) Dabei ist u Benutzer-ID, p ist Produktname, r ist die Anzahl Benutzer u interagiert mit p . Benutzer entspricht Dokument und Produkt zu Wort in diesem Fall. Da die Benutzer-ID und der Produktname eine beliebige Zeichenfolge sind, habe ich sie vor dem Übergeben an LDA in eindeutige sequenzielle Ganzzahlen konvertiert.

Danke.

    
Shiqiao Du 14.03.2016, 03:59
quelle

0 Antworten