ERP-Technologie

Die Interpretersprache von R als Business-Intelligence-Werkzeug

Eignung, Skalierbarkeit und Optimierung
Lesedauer:  6 Minuten
koot top 0 1

Die wachsende Datengetriebenheit von Unternehmen führt zu einer das Angebot weit übersteigenden Nachfrage nach Data Scientists, welche durch Quereinsteiger abgedeckt werden muss. Gleichzeitig besitzt R eine stark wachsende Bedeutung für Business Analytics. Der vorliegende Beitrag untersucht die Eignung von R-Interpretercode als Business-Analytics-Werkzeug anhand eines Benchmarks auf Basis der Stichprobenvarianz. Darüber hinaus wird ein Überblick über existierende fortgeschrittene Optimierungsverfahren wie GPU-Computing und DBMS-Sandboxing gegeben. Die Datengetriebenheit von Unternehmen aller Branchen und Größenklassen hat in den vergangenen Jahren zugenommen und wird dies zukünftig auch weiterhin tun. Wenngleich die erfolgreichen Unternehmen der Internet-Ökonomie die sichtbarsten Beispiele dafür darstellen, wie Unternehmen sich durch datenbasierte Entscheidungen fortlaufend optimieren können, nimmt die Notwendigkeit, das eigene Geschäft auf Basis von internen und externen Daten besser zu verstehen, für alle Unternehmen zu.

Entsprechend wächst auch die Nachfrage nach Data Scientists, die in der Lage sind, aufgrund von statistischen, ökonomischen und technischen Kompetenzen die benötigten Datenanalysen durchzuführen. Somit wird ein erheblicher Teil des wachsenden Bedarfs nach Business Analytics in Unternehmen durch Quereinsteiger erbracht werden müssen. Dies scheint auf den ersten Blick kein besonderes Problem darzustellen, da R durch seine Pakete nicht nur umfangreiche statistische Methodenunterstützung, sondern auch eine einfach erlernbare Interpretersprache umfasst.

Dass R für Business Analytics eine stark wachsende Bedeutung besitzt, lässt sich einerseits am Kreis der Anwenderunternehmen und zum anderen durch die inzwischen sehr weitgehende Integration von R in Business-Analytics- und Datenbank-Produkte durch namhafte Anbieter wie SAP, Oracle, IBM und Microsoft ablesen.

koot1
Bild 1: Funktion für die Meßreihe Var_loop_R.
koot2
Bild 2: Funktion für die Meßreihe Var_vec_R.
koot3
Bild 3: Funktion für die Messreihe Var_vec_C.

Im Rahmen der Analyse wurde anhand von Benckmark-Messungen untersucht, wie sich die Interpretersprache von R für den Einsatz als Business-Analytics-Werkzeug eignet.
 

Methodik

Die Benchmarkmessungen wurden auf einem Intel Core i7-4790 (3,6 MHz, vier Kerne, Hyperthreading) mit 32 GB RAM durchgeführt. Als Softwareausstattung kamen R 3.2.0, RStudio 0.98.1103, und Lubuntu 14.04.02 (AMD64) auf einem persistenten Live-USB-System zum Einsatz. Für die Kompilierung der C-Funktionen wurde der in der Distribution mitgelieferte gcc-Compiler (gcc 4.8.2) eingesetzt.

Um den betriebssystemseitigen Overhead möglichst gering zu halten, wurden LXDE sowie X11 deaktiviert und die Messungen am Terminal durchgeführt. Zur Messung der Ausführungszeiten kam die Funktion microbenchmark aus dem gleichnamigen R-Paket zum Einsatz.

Die Datensätze bestehen aus zufälligen Integerzahlen von 18 bis 99, die mittels der R-Funktion sample erzeugt wurden. Für die Messungen wurden Datensätze mit unterschiedlichen Umfängen generiert. Diese reichten für den hier dargestellten Benchmark von 100 bis 900 Millionen Integerzahlen. Die Datensätze wurden nach ihrer Erstellung gesichert, damit alle Implementierungsvarianten auf identischen Datensätzen dem Benchmark unterzogen werden konnten. Die Datensätze werden jeweils einzeln in R als Vektor geladen, um die Messungen nicht durch eine etwaige Nutzung des Swap zu verfälschen.

Als Benchmark wird die Stichprobenvarianz herangezogen (in R mit Hilfe der Funktion var realisiert). Diese wird in R-Interpretercode unter Einsatz von Schleifen nachgebildet (Var_loop_R, Bild 1), dann unter Einsatz der Vektoroperationen (Var_vec_R, Bild 2) und jeweils mit Hilfe von compiler cmpfun in Bytecode übersetzt (Var_loop_R_bc und Var_vec_R_bc), der durch den R-Interpreter effizienter als der ursprünglich Quellcode ausgeführt wird. Zum Vergleich wird noch compilierter C-Code (Var_vec_C, Bild 3) und die in R integrierte Funktion var (Var) herangezogen.
 

Ergebnisse

Die Messergebnisse sind tabellarisch in Tabelle 1 dargestellt. Es handelt sich um die mit Hilfe von microbenchmark in 100 Durchläufen ermittelten durchschnittlichen Ausführungszeiten (in Sekunden).

Bild 4 wurde mit Hilfe von ggplot anhand einer logarithmischen Skala erstellt, um die größenordnungsmäßig deutlich abweichenden Messergebnisse der einzelnen Implementierungen in einem Diagramm darstellen zu können.

koot tab1
Tabelle 1: Messergebnisse.

Die beträchtlichen Performanceunterschiede zwischen den einzelnen Implementierungen treten hierbei deutlich zu Tage.
 

Optimierungsansätze für R

Die dynamische Entwicklung von R und seinen Paketen hat eine Reihe von Optimierungsansätzen hervorgebracht. Diese basieren typischerweise auf der Parallelisierung von Berechnungen mit Hilfe von Multithreading und GPU-Berechnungen, Mapping-Techniken zum Umgang mit der begrenzten Hauptspeichergröße und die Integration in DBMS zur Beschleunigung von Datenoperationen. Die nachfolgend kurz vorgestellten Ansätze stellen nur einen Ausschnitt der sehr dynamischen Entwicklungstätigkeit in diesem Bereich dar.

Einen wichtigen Ansatz zur Parallelisierung von Auswertungen stellen die Pakete parallel, foreach, snow und doParallel bereit [1]. Hiermit wird es mit Hilfe eines Worker-Konzepts möglich, Berechnungen auf mehrere Threads oder Tasks zu aufzuteilen, welche mit Hilfe mehrere Prozessorkerne oder auch auf Rechner-Cluster verteilt durchgeführt werden können, wohingegen R standardmäßig lediglich in einem Einzelthread rechnet.

Während das genannte Paket-Ensemble für vielfältige Klassen parallelisierbarer Berechnungen eingesetzt werden kann, existieren daneben auch problemklassenspezifische Parallelisierungsansätze, wie das Paket amap, welches Verfahren der multivariaten Datenanalyse wie z. B. die Hauptkomponentenanalyse parallelisiert [1].

Für die Nutzung der Vielzahl paralleler Rechenkerne moderner Grafikprozessoren (GPUs) existieren eine ganze Reihe von Paketen, z. B. gputools [1], OpenCL [1] und rpud [5], die sich der standardisierten Programmierschnittstellen CUDA (nur für nVidia) und OpenCL (herstellerübergreifend) bedienen. Da aktuelle GPU-Generationen von nVidia und AMD die ursprünglich gravierenden Nachteile älterer Designs überwunden haben (bspw. mussten IEEE-754-Gleitkommazahlen und zugehörige Operationen aufwändig softwareseitig emuliert werden), eignen sich inzwischen vielfältige, massiv parallelisierbare Datenanalyseprobleme für die GPU-basierte Berechnung. Allerdings zeigen sich auch hier die prinzipbedingten Schwächen des dezentralen Entwicklungsmodells von R: So wurde das Paket rpud [1] inzwischen wegen ausbleibender Fehlerkorrekturen vom CRAN entfernt.

R besitzt die grundlegende Einschränkung, dass zu analysierende Datensätze komplett im Hauptspeicher gehalten werden müssen, was insbesondere bei Big-Data-Analysen zum Problem wird. Beispielhaft ermöglicht das Paket ff [1] die Analyse von Datensätzen, die nicht in den Hauptspeicher passen würden, indem der Datensatz in einer persistenten Datei gehalten wird und lediglich die zur Analyse angeforderten Bereiche in den Hauptspeicher geholt werden.

Schließlich bieten namhafte DBMS für den Unternehmenseinsatz die Möglichkeit R-Befehle in einer Sandbox auszuführen und ermöglichen so einen effizienteren Zugriff auf die gespeicherten Daten. 
 

Diskussion

Die in Tabelle 1 und Bild 4 gezeigten Messergebnisse machen deutlich, dass nicht optimierter R-Interpretercode die Berechnung der Varianz gegenüber der in R integrierten Funktion var um mehr als den Faktor 200 verlangsamt. Die einfachen Optimierungen mittels Bytecode und Vektoroperationen können den Performancenachteil in Kombination ungefähr auf Faktor 14 abmildern. Nach den Erfahrungen der Autoren können die Größenordnungen der Performanceunterschiede für gängige statistische Funktionen, die in den Business Analytics zum Einsatz kommen, verallgemeinert werden. Die nachfolgend dargestellten weitergehenden Optimierungsansätze bergen das Potenzial, die Performance in etwa auf das Niveau der R-eigenen Implementierung (und bisweilen auch darüber hinaus) zu steigern.

koot4
Bild 4: Grafische Visualisierung der Messergebnisse.

Somit ist es offensichtlich, dass R-Interpretercode nur für Teilaufgaben einer Datenanalyse eingesetzt werden sollte, für die R und zugehörigen Pakete keine geeigneten Funktionen bereitstellen. Für aufwändige Berechnungen und große Datensätze ist nicht-optimierter R-Interpretercode auch auf leistungsfähiger Hardware ungeeignet. 

Entsprechend darf sich die Qualfizierung von Quereinsteigern in das Berufsfeld Data Science nicht in der Vermittlung der Interpretersprache erschöpfen, sondern muss auch die gängigen Optimierungsansätze für R umfassen.“

Im Zusammenhang mit der Optimierung von Business-Analytics-Auswertungen in R stellen die schnelle Release-Abfolge von R-Versionen (allein im Jahr 2015 listet das CRAN fünf Releases [1]), die unkoordinierte und gelegentlich unstetige Entwicklung von Paketen, deren Pflege bisweilen auch eingestellt wird (siehe oben das Beispiel rpud) beträchtliche Herausforderungen für die Reliabilität von Analysen dar. 

Kommerzielle R-Distributionen schaffen hier zwar ein gewisses Maß an Verlässlichkeit. Auf sorgfältige Tests beim Wechsel des eingesetzten R-Releases sollte aber dennoch kein Unternehmensanwender verzichten.     

 

 

 

 


Literatur

[1] https://cran.r-project.org/ (Abruf am 28.01.2016).


Das könnte Sie auch interessieren

Vibe Coding: Wenn die Fachabteilung selbst entwickelt

Vibe Coding: Wenn die Fachabteilung selbst entwickelt

Wie KI-Tools auch ohne Programmierkenntnisse ERP-Erweiterungen in Reichweite bringen
Stellen Sie sich folgendes Szenario vor: Der Change Request ist vor acht Wochen eingereicht worden. Die IT-Abteilung hat Rückfragen, das Projekt steht in der Prioritätenliste irgendwo hinter der Server-Migration und der Vertriebsleiter tippt weiterhin täglich dieselben Zahlen in eine Excel-Tabelle, die er eigentlich direkt aus dem ERP-System haben könnte. Diese Situation ist in mittelständischen Unternehmen kein Einzelfall, sie ist die Regel. Stellen Sie sich folgendes Szenario vor: Der Change Request ist vor acht Wochen eingereicht worden. Die IT-Abteilung hat Rückfragen, das Projekt steht in der Prioritätenliste irgendwo hinter der Server-Migration und der Vertriebsleiter tippt weiterhin täglich dieselben Zahlen in eine Excel-Tabelle, die er eigentlich direkt aus dem ERP-System haben könnte. Diese Situation ist in mittelständischen Unternehmen kein Einzelfall, sie ist die Regel. ERP-Systeme bilden das Rückgrat operativer Geschäftsprozesse. Ihre Anpassung gilt ...
Auf welche Technologien ERP-Anwender bei ihrem neuen ERP-System achten sollten

Auf welche Technologien ERP-Anwender bei ihrem neuen ERP-System achten sollten

Ergebnisse einer aktuellen Studie
Die Auswahl eines neuen ERP-Systems darf sich heute nicht mehr auf Prozessabdeckung, Bedienoberfläche und Bereitstellungsmodell beschränken. Der aktuelle ERP-Trendradar der Universität Potsdam beschreibt vielmehr, welche Technologien in den kommenden Jahren für die Weiterentwicklung von ERP-Systemen strategisch entscheidend werden und wo zugleich die größten Lücken zwischen Anwenderbedarf und Anbieterreife liegen. Gerade für Anwender ist diese Perspektive relevant. Denn ein neues ERP-System muss nicht nur die heutigen Abläufe stabil unterstützen, sondern auch die technologischen Anforderungen der nächsten Jahre tragen. Der Trendradar versteht sich ausdrücklich als Entscheidungsinstrument für ERP-Verantwortliche, Produktmanager und Forschende, um technologische Entwicklungen zu priorisieren und zukunftsfähige Strategien abzuleiten.
Die Zukunft der ERP-Systeme

Die Zukunft der ERP-Systeme

Strategisch statt operativ: ERP etabliert sich als Top-Management-Thema
ERP ist längst Chefsache. Wer es weiterhin als reines IT-Thema einordnet, unterschätzt seinen strategischen Hebel. Vorausschauende Unternehmen verankern ERP-Kompetenz in ihrer Governance und nutzen sie als Wettbewerbsvorteil. Moderne ERP-Systeme entwickeln sich zu intelligenten, offenen Architekturen –getrieben von Cloud, KI und Automatisierung. Das verlangt von der Unternehmensführung ein tiefes Verständnis von ERP.
Warum gute ERP-Daten jetzt Geld wert sind

Warum gute ERP-Daten jetzt Geld wert sind

KI macht Tempo, aber nur mit sauberen Regeln und Verantwortung
In den nächsten Jahren werden ERP-Systeme in vielen Unternehmen wie ein organisatorisches Betriebssystem funktionieren. Sie werden Arbeit verteilen, Prioritäten setzen, Risiken markieren, Entscheidungen vorbereiten und Interaktionen bündeln. Der Bildschirm bleibt, aber die Arbeit verschiebt sich. Weniger Klickstrecken, mehr Ausnahmen. Weniger Dateneingabe, mehr Steuerung. Umso wichtiger sind deshalb Operational Excellence und ausgefeiltes BPM.
Marktüberblick: Interne ERP-Low-Code Plattformen

Marktüberblick: Interne ERP-Low-Code Plattformen

8 integrierte ERP Low-Code Plattformen im Vergleich
Unternehmen stehen im Zuge der fortschreitenden Digitalisierung vor der Herausforderung, ihre Prozesse flexibel weiterzuentwickeln und zugleich eine stabile Systemlandschaft zu bewahren. Klassische ERP-Systeme bieten nur begrenzte Möglichkeiten, da Anpassungen häufig tiefgreifende Programmierungen erfordern. Dies führt zu hohen Kosten und langen Entwicklungszyklen. Gleichzeitig werden einfachere Möglichkeiten zur Prozessgestaltung gesucht.
RPA-basierte Testprozesse als Effizienztreiber

RPA-basierte Testprozesse als Effizienztreiber

Wie Dana mit intelligenter SAP-SIT-Automation Millionen spart
Künstliche Intelligenz gilt als Treiber der digitalen Transformation –doch im Mittelstand entscheidet nicht der Algorithmus, sondern das ERP über Tempo und Wirkung. Gut gepflegte ERP-Systeme liefern die verknüpften, kontextualisierten Daten, die KI erst produktiv machen. Sie bilden die Basis für Prozessoptimierung, Automatisierung und neue Geschäftsmodelle. Wer nachhaltige Innovation realisieren will, muss beim ERP ansetzen.