1

Ich habe gerade angefangen, mich mit Parallelität in R. kennen zu lernenParallel * gelten in Azure Machine Learning Studio

Wie plane ich Microsoft Azure Machine Learning Studio für mein Projekt zu verwenden, habe ich begonnen, und So fand ich this, in dem es heißt, dass die Parallelität unter der Haube erfolgt, die den Vorteil aller verfügbaren Kerne nutzt, ohne den R-Code zu ändern. Der Artikel zeigt auch einige Leistungsbenchmarks, jedoch zeigen die meisten von ihnen den Leistungsvorteil bei mathematischen Operationen.

Das war soweit gut. Außerdem interessiert mich auch, ob es auch die *apply Funktionen unter der Haube parallelisiert oder nicht. Ich fand auch diese 2 Artikel, die beschreibt, wie *apply Funktionen im Allgemeinen parallelisieren:

  1. Quick guide to parallel R with snow: beschreibt die Erleichterung Parallelität snow Paket, par*apply Funktion Familie verwenden und clusterExport.
  2. A gentle introduction to parallel computing in R: mit parallel Paket, par*apply Funktionsfamilie und verbindliche Werte für die Umgebung.

Also meine Frage ist, wenn ich *apply Funktionen in Microsoft Azure Machine Learning Studio verwendet, wird diese unter der Haube von Standard parallelisiert werden, oder ich brauche Verwendung von Paketen wie parallel, snow usw. zu machen?

Antwort

4

Ich persönlich denke, wir hätten MRO ein bisschen anders vermarkten können, ohne eine so große Sache über Parallelität/Multithreading zu machen. Ah, gut.

R kommt mit einer Rblas.dll/.so, die die Routinen für lineare Algebra Berechnungen implementiert. Diese Routinen werden an verschiedenen Orten verwendet, aber ein häufiger Anwendungsfall ist die Anpassung von Regressionsmodellen. Mit MRO ersetzen wir den Standard Rblas durch einen, der Intel Math Kernel Library verwendet. Wenn Sie eine Funktion wie lm oder glm aufrufen, verwendet MRO mehrere Threads und optimierte CPU-Anweisungen, um das Modell anzupassen. Dadurch können Sie die Standardimplementierung erheblich beschleunigen.

MRO ist nicht der einzige Weg, um diese Art von Beschleunigung zu bekommen; Sie können auch andere BLAS-Implementierungen kompilieren/herunterladen, die ähnlich optimiert sind. Wir machen es nur zu einem einfachen Download in einem Schritt.

Beachten Sie, dass die MKL nur Code betrifft, der lineare Algebra beteiligt. Es ist kein universelles Beschleunigungswerkzeug; Jeder R-Code, der keine Matrixberechnungen durchführt, wird keine Leistungsverbesserung sehen. Insbesondere beschleunigt es keinen Code, der explizite Parallelität umfasst, z. B. Code, der das Parallelpaket, SNOW oder andere Cluster-Computing-Tools verwendet.

Auf der anderen Seite wird es nicht degradieren sie entweder. Sie können weiterhin Pakete wie parallel, SNOW usw. verwenden, um Rechencluster zu erstellen und Ihren Code auf mehrere Prozesse zu verteilen. MRO funktioniert in dieser Hinsicht genauso wie CRAN R. (Wenn Sie zum Beispiel einen Cluster von Knoten auf einem Computer erstellen, sollten Sie die Anzahl der MKL-Threads verringern. Andernfalls riskieren Sie Konflikte zwischen den Knoten für CPU-Kerne, wodurch die Leistung beeinträchtigt wird.)

Offenlegung: Ich arbeite für Microsoft.

Verwandte Themen