Verwenden von AWS für die parallele Verarbeitung mit R

8

Ich möchte einen Blick auf die Kaggle Dunnhumby-Herausforderung werfen, indem ich für jeden Kunden ein Modell erstelle. Ich möchte die Daten in zehn Gruppen aufteilen und Amazon Web-Services (AWS) verwenden, um Modelle mit R auf den zehn Gruppen parallel zu erstellen. Einige relevante Links, auf die ich gestoßen bin, sind:

Was ich nicht verstehe, ist:

  • Wie bekomme ich die Daten in die zehn Knoten?
  • Wie kann ich die R-Funktionen auf den Knoten senden und ausführen?

Ich wäre sehr dankbar, wenn Sie Vorschläge und Hinweise teilen könnten, um mich in die richtige Richtung zu lenken.

PS Ich verwende das kostenlose Nutzungskonto für AWS, aber es war sehr schwierig, R von der Quelle auf den Amazon Linux AMIs zu installieren (viele Fehler aufgrund fehlender Header, Bibliotheken und anderer Abhängigkeiten).

    
harshsinghal 30.08.2011, 09:37
quelle

2 Antworten

8

Sie können alles manuell in AWS erstellen. Sie müssen Ihren eigenen Amazon Computer Cluster mit mehreren Instanzen erstellen. Auf der Amazon-Website gibt es ein schönes Tutorial-Video: Ссылка

Aber es wird mehrere Stunden dauern, bis alles funktioniert:

  • Starten von 11 EC2-Instanzen (für jede Gruppe eine Instanz + eine Kopfinstanz)
  • R und MPI auf allen Maschinen (überprüfen Sie vorinstallierte Bilder)
  • MPI richtig konfigurieren (wahrscheinlich eine Sicherheitsebene hinzufügen)
  • im besten Fall ein Dateiserver, der auf allen Knoten gemountet wird (share data)
  • mit dieser Infrastruktur ist die beste Lösung die Verwendung des Snow- oder foreach-Pakets (mit Rmpi)

Das segue-Paket ist nett, aber Sie werden definitiv Datenkommunikationsprobleme bekommen!

Die einfachste Lösung ist cloudnumbers.com ( Ссылка ). Diese Plattform bietet Ihnen einfachen Zugriff auf Computercluster in der Cloud. Sie können 5 Stunden kostenlos mit einem kleinen Computer-Cluster in der Cloud testen! Überprüfen Sie die Folien von der useR-Konferenz: Ссылка

    
Markus Schmidberger 30.08.2011, 12:57
quelle
8

Ich bin mir nicht sicher, ob ich die Frage nach der zu verwendenden Methode beantworten kann, aber ich kann erklären, wie ich über die Frage nachdenken würde. Ich bin der Autor von Segue, also behalte diese Neigung im Hinterkopf:)

Einige Fragen, die ich beantworten würde VOR Ich habe angefangen, herauszufinden, wie AWS (oder ein anderes System) ausgeführt wird:

  1. Wie viele Kunden sind in den Trainingsdaten?
  2. Wie groß sind die Trainingsdaten (was werden Sie an AWS senden)?
  3. Was ist die erwartete durchschnittliche Laufzeit, um ein Modell an einen Kunden anzupassen ... alle Läufe?
  4. Wenn Sie Ihr Modell an einen Kunden anpassen, wie viele Daten werden generiert (was erhalten Sie von AWS)?

Wenn ich nur auf die Trainingsdaten schaue, sieht es nicht so groß aus (~ 280 MB). Das ist also nicht wirklich ein "Big Data" -Problem. Wenn Ihre Modelle viel Zeit benötigen, um sie zu erstellen, könnte es sich um ein "großes CPU" -Problem handeln, das Segue möglicherweise ein gutes Werkzeug ist, um Ihnen bei der Lösung zu helfen.

Als Antwort auf Ihre spezifische Frage, wie Sie die Daten in AWS erhalten, führt Segue das durch das Ausführen des emrlapply () -Befehls erstellte Listenobjekt aus, lädt das serialisierte Objekt in S3 hoch und verwendet dann den Elastic Map Reduce-Dienst für streamen Sie das Objekt durch Hadoop. Aber als Benutzer von Segue müssen Sie das nicht wissen. Sie müssen nur emrlapply () aufrufen und Ihre Listendaten (wahrscheinlich eine Liste, in der jedes Element eine Matrix oder einen Datenrahmen der Daten eines einzelnen Käufers ist) und eine Funktion (eine, die Sie schreiben, damit sie an das Modell passt) und Segue übergeben Sorge für den Rest. Bedenken Sie jedoch, dass Segue beim Aufruf von emrlapply () als Erstes serialisiert (manchmal langsam) und Ihre Daten in S3 hochlädt. Abhängig von der Größe der Daten und der Geschwindigkeit der Upload-Geschwindigkeit Ihrer Internetverbindung kann dies sehr langsam sein. Ich nehme Probleme mit Markus 'Behauptung, dass Sie "definitiv Datenkommunikationsprobleme bekommen". Das ist eindeutig FUD. Ich verwende Segue für stochastische Simulationen, die 300 MB / 1 GB mit einiger Regelmäßigkeit senden / empfangen. Aber ich tendiere dazu, diese Simulationen von einer AWS-Instanz auszuführen, also sende und empfange ich von einem AWS-Rack zum anderen, was alles viel schneller macht.

Wenn Sie eine Analyse auf AWS durchführen und Ihre Füße mit R in der Wolke nass werden wollen, empfehle ich Drew Conways AMI für wissenschaftliches Rechnen . Mit seinem AMI ersparen Sie sich viel zu installieren. Um Daten auf Ihren laufenden Computer hochzuladen, können Sie nach dem Einrichten Ihrer ssh-Zertifikate mit scp Dateien in Ihre Instanz hochladen.

Ich möchte RStudio auf meinen Amazon-Instanzen ausführen. Dazu müssen Sie den Passwort-Zugriff auf Ihre Instanz einrichten. Es gibt eine Menge Ressourcen um damit zu helfen.

    
JD Long 30.08.2011 22:18
quelle