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.

Python R Julia
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 ... geschrieben Python
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 die beiden anderen durch die Kombination von Allzweckprogrammierung und Metaprogrammierung mit C-├Ąhnlicher Leistung ├╝bertrifft.

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 Dataframes Python
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 Arrays Python
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 kurzen Austausch?
Email hello@jolin.io oder Telefon/Whatsapp/Signal
+49 152 2406 7803