2017-10-17 13 views
1

Theoretische Frage hier. Ich verstehe, dass Funken + EMR ein guter Weg ist, wenn man mit Datensätzen arbeitet, die nicht in den Speicher einer einzelnen Maschine passen.Deep Learning auf massiven Datensätzen

Allerdings würde ich auch Tensorflow anstelle von Funken ml Lib-Algorithmen verwenden, um tiefes Lernen auf diesen großen Datensätzen durchzuführen.

Aus meiner Forschung sehe ich, dass ich möglicherweise eine Kombination von pyspark, elephas und EMR verwenden könnte, um dies zu erreichen. Alternativ gibt es BigDL und Sparkdl.

Gehe ich in die falsche Richtung? Was ist Best Practice für Deep Learning auf Daten, die nicht in den Speicher passen? Soll ich stattdessen Online-Lernen oder Batch-Training verwenden? This post scheint zu sagen, dass "die meisten High-Performance-Deep-Learning-Implementierungen sind nur Single-Node"

Jede Hilfe, um mich in die richtige Richtung zu zeigen würde sehr geschätzt werden.

+0

Ist [Amazon MXNet] (https://aws.amazon.com/mxnet/) etwas, das für das interessant sein könnte, was Sie erreichen möchten? –

Antwort

0

Wie Sie erwähnen "Anpassen von großen Datenmengen im Speicher", verstehe ich, dass Sie versuchen, alle Daten in den Speicher gleichzeitig zu laden und das Training zu beginnen. Daher gebe ich die Antwort aufgrund dieser Annahme.

Allgemeine Mentalität ist, dass, wenn Sie die Daten nicht an Ihre Ressourcen anpassen können, Daten in kleinere Stücke teilen und iterativ trainieren.

1- Laden Sie die Daten nacheinander, anstatt zu versuchen, alle auf einmal zu laden. Wenn Sie einen Ausführungsworkflow erstellen wie "Daten laden -> Trainieren -> Daten freigeben (dies kann automatisch von Garbage Collectors durchgeführt werden) -> Neustart", können Sie nachvollziehen, wie viel Ressourcen zum Trainieren einzelner Daten benötigt werden.

2- Verwenden Sie Mini-Batches. Sobald Sie die Ressourceninformationen aus # 1 erhalten, können Sie eine einfache Berechnung zur Schätzung der Minibatchgröße durchführen. Wenn beispielsweise das Training einzelner Daten 1,5 GB RAM und Ihre GPU 8 GB RAM erfordert, können Sie theoretisch Mini-Batches der Größe 5 gleichzeitig trainieren.

3- Wenn die Ressourcen nicht ausreichen, um auch nur eine einzelne Charge zu trainieren, denken Sie in diesem Fall vielleicht darüber nach, die PC-Kapazität zu erhöhen oder die Modellkapazität/Layer/Funktionen zu verringern. Alternativ können Sie sich für Cloud Computing-Lösungen entscheiden.

Verwandte Themen