Serviceangebot

Jolin.io ist das Beratungsunternehmen, das die Julia-Technologie in die Daten- und Analysepipeline Ihres Unternehmens einbindet - mit Schwerpunkt auf maschinellem Lernen, Big Data und Echtzeit-Pipelines.

Erstellung eines Julia Proof-of-Concept

Julia ist schnell in der Einrichtung und im Prototyping - eine hervorragende Basis für die Entwicklung eines Proof-of-Concept (PoC).

In nur 2 Wochen kann eine erste Lösung entwickelt werden, einschließlich eines minimalen Dashboard für Visualisierungs- und Berichtszwecke.

2 Wochen
1. Woche
2 Tage Daten Setup
3 Tage erster Prototyp
2. Woche
1 Tag Verbesserung
1 Tag Abschluss
2 Tage Dashboard
Präsentation & Ausblick

Anhand des Prototyps können Sie die konkrete Leistungsfähigkeit, die Entwicklungsgeschwindigkeit und die Einfachheit des Codes beurteilen und sich von den Vorteilen von Julia überzeugen.

Vom PoC zur Produktion

Da die Sprache Julia standardmäßig schnell ist, gibt es einen hohen Wiederverwendungsfaktor, wenn man von PoC zur Produktion übergeht. Es ist nicht nötig, Teile in C oder Java neu zu schreiben, um die Leistungsziele zu erreichen, wie es bei der Verwendung von R oder Python der Fall sein kann.

Wenn Sie den Prototyp in die Produktion überführen möchten, unterstützen wir Sie mit allem, was Sie brauchen.

Wir unterstützen Sie mit
Entwicklung
  • Code-Versionierung
  • Code-Paketierung
  • Containerisierung, Docker
  • Ausführliche Test-Suite
  • Ausführliche Dokumentation
  • CI kontinuierliche Integration
  • CD kontinuierliche Bereitstellung
Betrieb
  • Parametrisierung
  • Ressourcenüberwachung
  • Alarmierung
  • Betriebsdokumentation
  • Hochverfügbarkeit
  • Pläne zur Wiederherstellung bei Betriebsausfall
Konnektivität
  • Echtzeit-Anforderungen
  • Datenbankverbindungen
  • Dashboard
  • Caching
DSGVO
  • Zustimmung der Nutzer
  • Verschlüsselung
  • Anonymisierung / Pseudonymisierung
  • Recht auf Vergessenwerden
  • Datenversionierung
  • Datenverfolgung
Wissenschaft
  • Experimentmanagement
  • sichere & flexible Rechenumgebungen
  • Transparenz der Rechenkosten
Maschinelles Lernen
  • Modell-Versionierung
  • Modell-Paketierung
  • Modell-Bereitstellung
  • automatisiertes Neulernen der Modellparameter
  • Modell-Evaluierungs-Pipeline
  • Leistungsüberwachung
  • Alarmierung

Hilfe bei der Migration nach Julia

Wahrscheinlich haben Sie bereits ein Data Science Team mit 2 - 20 Entwicklern und Wissenschaftlern. Meistens werden solche Projekte in Python oder R durchgeführt, oder sie verwenden eine proprietäre Software wie Matlab oder SAS. Wenn Sie höhere Leistungsanforderungen haben, verwendet Ihr Team wohlmöglich bevorzugt direkt Fortran, C++ oder Java.

Wir unterstützen Sie mit

Portierung leistungsrelevanter Teile nach Julia

Die Wartung eines Julia-Teils ist viel einfacher als die Wartung von C++ oder Fortran.

Sie können einen einzelnen Teil Ihres Systems nahtlos portieren, um die Leistung zu verbessern. Überbrückung zwischen Julia und der Ausgangssprache erfolgt über die exzellente Fremdsprachenschnittstelle von Julia (C, Fortran, Python, R, Matlab, …).

Erstellung neuer Komponenten in Julia

Testen Sie Julia für Ihre neue Komponente. Julia ist genauso einfach zu bedienen wie Python oder R oder sogar noch einfacher.

Die Erstellung von Wrappern für C, Python & R ist unkompliziert. Siehe auch unseren Abschnitt über PoC.

Umstellung ganzer Projekte auf Julia

Die Migration eines ganzen Projekts muss detailliert geplant werden.

Wir unterstützen Sie bei allen Schritten

  • Bedarfsermittlung
  • Machbarkeitsbewertung
  • Abhängigkeitsanalyse
  • Zeit- & Ressourcenplanung
  • Schulung
  • Entwicklung
  • Bereitstellung
  • Betrieb

Python, R, …

Sie benutzen Python oder R?

Julia können Sie überall dort einsetzen können, wo Sie auch Python oder R verwenden würden. Ob ein konkretes Paket ein Spiegelbild in Julia hat, muss geprüft werden, doch die Chancen sind sehr hoch, dass sogar deutlich performantere Alternativen existieren. Viele der Julia-Pakete sind die besten ihrer Klasse.

PythonRJulia
interaktive Kommandozeile
Virtualisierung
Fehlersuche und Profiling
Dashboards
Statistik Bibliotheken
maschinelles Lernen
mathematische Optimierung
Differentialgleichungen
Spark · Big Data · Streaming
Allzweckprogrammiersprache🔲
Metaprogrammierung🔲
schnell🔲🔲
speichereffizient🔲🔲
Bibliotheken sind hauptsächlich in … geschriebenPython
Cython
C++
R
C++
Julia

R war die erste Skriptsprache für Statistik und Data Science. Wegen ihrer Interaktivität und der sehr guten Unterstützung für statistische Werkzeuge ist sie auch heute noch weit verbreitet.

Python wurde von einigen Teams übernommen, vor allem wegen der besseren Allzweckprogrammierungstools. Die statistische Unterstützung von Python ist auch heute noch nicht so gut wie die von R. Für maschinelles Lernen ist das Python-Ökosystem jedoch eines der besten.

Julia ist die jüngste Sprache in dieser Reihe, die sich von den anderen beiden durch die Kombination von Allzweckprogrammierung und Metaprogrammierung mit C-ähnlicher Leistung unterscheided.

Matlab, SAS, …

Sie verwenden eine proprietäre Softwarelösung für Ihre Datenanalysen?

Es gibt viele gute Gründe, warum für Sie speziell ein Wechsel zu Julia von großem Vorteil ist.


0€ Lizenzgebühren
100% open
source


volle Flexibilität & Hackbarkeit




Zugang zu den neuesten Algorithmen


Allzweckprogrammiersprache


beste Performanz auch für benutzerdefinierte Methoden


einfaches Onboarding von neuen Mitarbeitern




Wissensaustausch & Unterstützung durch die Julia Community

Wir wissen, wie groß die Umstellung von proprietärer Software auf Open Source sein kann. Daher unterstützen wir Sie durchgängig von der Planung über die Entwicklung bis hin zu Schulungen.

Es ist zum Beispiel auch möglich, erst klein anzufangen und ein Musterteil nach Julia zu portieren bzw. neu hinzuzufügen.

Fortran, C++, Java, …

Sie legen bereits Wert auf Performanz und keine high-level Sprache erfüllte Ihre Anforderungen?

Viele Unternehmen mit hohen Anforderungen an Verarbeitungsgeschwindigkeit und Speicherplatz verwenden nicht Python, R oder Matlab, sondern bevorzugen nach wie vor Low-Level-Sprachen wie C++ oder Fortran. Einfach weil sie schnell sind.

Julia ist die richtige Sprache für Sie.


Julia ist
so schnell wie
C, Rust oder
Fortran.


Direkter Aufruf von C und Fortran aus Julia.
Dokumentation


Binden Sie Julia problemlos in Ihren C, C++ oder Fortran-Code ein.
Dokumentation


Julia ist wirklich
high-level.

Julia ist das neue Fortran, und wurde speziell für die angewandte Mathematik entwickelt.

Ob Sie fortschrittliche Finanzprognosen oder kritische Unsicherheitsschätzungen berechnen, ob Sie ein großes Stromnetz modellieren oder komplexe Moleküle falten: Mit Julia sind solche wissenschaftlichen Berechnungen zugleich performant und einfach zu bedienen.

Big Data, Echtzeit & High Performance Computing

Ihr Unternehmen verfügt bereits über große Datenmengen, und die Tendenz ist steigend?

Heute sind Datenpipelines nicht nur rechenintensiv, sondern sollten auch in Größe und Geschwindigkeit skalierbar sein, um stets mit den Standards Ihres Unternehmens Schritt zu halten.

Julia ermöglicht es Ihnen, skalierbare Datentransformationen zu erstellen, ohne dass Sie dabei Leistung für Anpassbarkeit oder Benutzerfreundlichkeit opfern müssen.

Wir unterstützen Sie mit
Hochleistungsrechnen
  • Einrichtung von Hochleistungs-Rechen-Clustern
  • Entwicklung & Konfiguration von Julia Prozessen
  • Bereitstellung, Orchestrierung & Betrieb
Streaming
  • Einrichtung von Kafka
  • Entwicklung von Julia Kafka Prozessen
  • Bereitstellung, Orchestrierung & Betrieb der Kafka-Prozesse
Data Lakes & Big Data
  • Einrichtung eines Data Lake
  • zentralisierte Datenspeicherung
  • Julia-Batch-Aufträge
  • Orchestrierung der Batch-Aufträge
Small Data
  • Erstellung von Julia-Datenpipelines
  • sehr leicht und effizient
  • Möglichkeit, später zu skalieren
überall
  • maschinelles Lernen
  • DSGVO
  • Sicherheit
  • Cloud-Einsatz
  • Infrastruktur als Code
  • Überwachung & Alarmierung
  • Dashboard-integrierung

Big Data

Traditionelle Datenbanken sind an einen einzigen Rechner gebunden und für wirklich große Datenmengen schwer zu skalieren.

Open-Source-Lösungen, die Speicher und Berechnungen auf mehrere Rechner verteilen, sind heute noch eher selten. Viele der vorhandenen verteilten Frameworks können in der Einrichtung und Wartung recht komplex sein.

Julia wurde bereits von Anfang an mit Blick auf verteilte Berechnungen entwickelt, was die Arbeit mit Julia erheblich vereinfacht. Man kann das bestehende Small-Data-Ökosystem wiederverwenden und hat, wie in Julia üblich, eine erstklassige Unterstützung für effiziente individuelle Funktionen.

Darüber hinaus gibt es bereits eine große Anzahl spezialisierter Werkzeuge für verteilte Berechnungen:

  • Kernkomponenten für verteilte Berechnungen
  • funktioniert sofort mit Hochleistungsclustern wie Slurm
  • verteilte Arrays
  • verteilte Tabellen
  • Implementation des Actor Modells
  • verteilte gerichtete azyklische Graphen (DAGs)
  • verteilte GPUs

Echtzeit

Während die Batch-Verarbeitung oft die günstigste Lösung für durchsatzoptimierte Datenpipelines ist, werden Latenzanforderungen am besten mit Streaming-Architekturen gelöst.

Die Leistung von Julia ist so gut, dass Sie kritische Komponenten mit sehr niedrigen Latenzen erstellen können.

Dies ist extrem nützlich, wenn Sie angewandte Mathematik in irgendeiner Form nutzen, sei es für Optimierung, Simulation oder einfach nur für aktuelle Algorithmen des maschinellen Lernens. Ein gutes Beispiel ist die Steuerung von Robotern:

Ein Bereich, in dem wir erhebliche Vorteile durch den Einsatz von Julia sehen, ist die Entwicklung von Online-Steuerungen (d.h. Steuerungen, die in Echtzeit auf dem Roboter laufen, typischerweise mit Steuerungsraten von 100-1000 Hz). Moderne Steuerungen für Laufroboter erfordern in der Regel viel kompliziertere Berechnungen als eine einfache lineare Rückkopplungssteuerung, und die meisten humanoiden Roboter werden durch die Lösung mathematischer Optimierungsprobleme bei diesen hohen Raten gesteuert. Selbst das Aufstellen dieser Optimierungsprobleme kann komplex sein, so dass es äußerst nützlich ist, bei der Entwicklung neuer Robotersteuerungen eine Sprache wie Julia zu verwenden, die hervorragende Unterstützung für mathematische Programmierung, nützliche Optimierungsbibliotheken wie JuMP.jl und hochleistungsfähigen Code kombiniert.

Quelle: MIT Robotics, englisches Original, übersetzt mit DeepL

Julia kommt mit einem Garbage Collector, der zu Laufzeitpausen im Bereich von Millisekunden führen kann. In den meisten Streaming-Anwendungen sind Millisekunden überhaupt nicht von Bedeutung, aber falls Ihre Echtzeitanforderungen so streng sind, bietet Julia Möglichkeiten, Ihren Code garbage-collector-frei zu machen.

Die Vorabzuweisung von Ressourcen ist die gängigste Methode, um mit diesem Szenario umzugehen. Darüber hinaus bietet Julia die Möglichkeit, benutzerdefinierte Datenstrukturen zu erstellen, die für den Garbage Collector unsichtbar sind (sogenannt “stack-allocated”).

Angesichts der Einschränkung, Jitter durch dynamische Zuweisung und Online-JIT[Just-In-Time]-Kompilierung zu vermeiden, finden wir, dass Julia produktiver als Java ist. Erstens bietet Julia unveränderliche, im Stack zugewiesene Benutzerdatentypen […] Zweitens ist die JIT-Kompilierung ebenfalls besser als in Java.

Quelle: MIT Robotics, englisches Original, übersetzt mit DeepL

Neben diesen Anwendungen mit sehr geringer Latenz können Sie Julia auch mit Apache Kafka oder RabbitMQ verwenden.

Small Data

Small Data ist überall. Sowohl Big Data- als auch Echtzeit-Frameworks verwenden Small Data-Bibliotheken für ihre lokalen Berechnungen. Und dann gibt es natürlich noch all die Datenpipelines, die (noch) nicht skaliert werden müssen.

Daher ist es entscheidend, mit kleinen Daten effizient und produktionsreif arbeiten zu können.

Dataframes

Das gängigste Werkzeug für solche Pipelines sind sogenannte Dataframes — eine Tabellen Struktur innerhalb der Programmiersprache.

Vergleich DataframesPython
pandas
R
tibble
Scala
Spark
Julia
DataFrames.jl
select, filter, groupby, sort, join, …
import export CSV, Parquet, …
sorgfältiger Umgang mit fehlenden Daten🔲🔲*
allgemeine Unterstützung für komplexe/benutzerdefinierte Typen
korrekte Typendarstellung für komplexe/benutzerdefinierte Typen🔲
optimale Leistung für komplexe/benutzerdefinierte Typen🔲🔲🔲**

* Gilt nur für Scala und R. Spark nutzt null um fehlende Daten zu repräsentieren.


** Die Leistung von Spark für benutzerdefinierte Typen gilt nur für Scala (nicht für Python oder R).

Nimmt man Apache Spark als Ausgangspunkt für eine produktionsreife, industrietaugliche Dataframe-Implementierung, so sieht man, dass insbesondere Python-Pandas einige erhebliche Nachteile hat. Die Leistung von Spark für benutzerdefinierte Typen gilt jedoch nur für Scala, nicht für Python oder R.

Julia’s Dataframe wurde mit dem Fokus auf volle Flexibilität und Performanz entwickelt. Dies geht Hand in Hand mit sorgfältigem Type-Handling und resultiert in einem wirklich produktionsreifen Dataframe.

n-dimensionale Arrays

Das zweitwichtigste Werkzeug ist das n-dimensionale Array. Dabei handelt es sich um eine Datenstruktur mit wahlweise einer, zwei oder mehreren Dimensionen, die jedoch überall die gleiche Art von Daten enthält. Zum Vergleich: Ein Datenframe kann für jede Spalte einen anderen Datentyp haben.

Vergleich n-dimensionale ArraysPython
numpy
R
array
Julia
Array
elementweise Operationen
Broadcasting🔲
sorgfältiger Umgang mit fehlenden Daten🔲
allgemeine Unterstützung für komplexe/benutzerdefinierte Typen
korrekte Typendarstellung für komplexe/benutzerdefinierte Typen🔲
optimale Leistung für komplexe/benutzerdefinierte Typen🔲🔲

Da Scala Spark keine generische n-dimensionale Array bietet, haben wir Scala für diesen Vergleich ausgelassen.

Ähnlich wie bei Dataframes hat auch die Python/R-Version für Arrays entscheidende Nachteile, die bei der Entscheidung für ein produktionsreifes Datenpipeline-Tool berücksichtigt werden sollten.

Julia’s Array wurde mit dem Fokus auf volle Flexibilität und Leistungsfähigkeit entwickelt. Dies geht Hand in Hand mit einer sorgfältigen Handhabung von Datentypen, was zu einer produktionsreifen n-dimensionalen Array-Implementierung führt.

Individuelle Schulungen & Beratung

Wenn Sie Fragen oder Anforderungen haben, die hier nicht abgedeckt sind, kontaktieren Sie uns bitte.

Julia ist eine sehr flexible und vielversprechende Technologie. Lassen Sie uns zusammenarbeiten und den Wert Ihrer Datenverarbeitung steigern.

E-Mail hello@jolin.io oder Telefon +49 152 2406 7803

Für die Organisation von Workshops und Einzelschulungen können Sie uns ebenfalls direkt kontaktieren.

Workshops · Schulungen | Einführungslevel · Fortgeschritten
Programmiersprachen für die Datenverarbeitung
  • Julia
  • Python
  • R
  • Scala
  • Matlab
Herausforderungen und Lösungen für die Skalierung
  • Verarbeitung sehr großer Datenmengen (Big Data)
  • Echtzeitverarbeitung
Infrastruktur
  • Cloud-Lösungen
  • interne Computer-Cluster
  • Einrichtung
  • Wartung
  • Infrastruktur als Code
Produktrealisierung
  • Versionierung & Paketierung & Registrierung
  • Parametrisierung & Wiederverwendbarkeit
  • automatisierter Rollout & Testen
  • Überwachung & Alarmierung
  • automatisierte Ausführung von Datenverarbeitungsabläufen
  • Automatisiertes Training & (Neu-)Bewertung von Modellen des maschinellen Lernens
  • Visualisierung und Präsentation der Ergebnisse
Spezielle Softwarepakete
  • Dataframes
  • Graphen
  • mathematische Optimierung
  • maschinelles Lernen
  • Differentialgleichungssysteme
Visualisierung von Daten
  • Dashboards
  • interaktive Datenvisualisierungen
  • maßgeschneiderte Lösungen
Offen für einen Austausch?
Email hello@jolin.io oder Telefon/Whatsapp/Signal
+49 152 2406 7803