KODIS-TechnologieStack

Unser technisches Know-How, insbesondere im Bereich Tech und Data Science, publizieren wir auf unserem eigenen Kanal auf der Plattform Medium. Über den folgenden Link gelangen Sie direkt zu dem Kanal: 

Medium

Grundlagen und Basistechnologien

Ob mit oder ohne KI-Verfahren – Die anwendungsnahe Entwicklung und Erprobung intelligenter Services auf Basis umfassender Datenanalysen benötigen leistungsfähige Basistechnologien:

Wir betreiben in unserem eigenen Rechenzentrum Kubernetes-Cluster und können so auf direkte Erfahrungen im Cloud-Bereich zurückgreifen und Demonstratoren und Prototypen selbständig testen. Kubernetes erlaubt das automatisierte Verteilen, Skalieren und Testen von Anwendungen in Docker-Containern.

Die von uns bevorzugt eingesetzte Programmiersprache für Datenanalysen und Prototypenentwicklung ist Python. Sie erlaubt es uns schnell und effektiv in Projekten voranzukommen und auf einen großen Pool von Bibliotheken im Bereich »Data-Science« und »KI« zurückzugreifen.

Als moderne Programmiersprache mit Integrationsmöglichkeiten in Python und beispielsweise vorhandenen C-basierten Projekten im Maschineneinsatz wenden wir Rust an. Sie kommt für uns dann zum Einsatz, wenn wir mit Python-basierten Algorithmen an Performancegrenzen kommen oder wir im Bereich der Embedded-Hardware unterwegs sind.

JavaScript ermöglicht uns die Entwicklung interaktiver Webanwendungen und bietet zahlreiche Frameworks und Bibliotheken an. Mit Node.js setzen wir JavaScript für serverseitige Anwendungen ein.

Die interaktive Entwicklungsumgebung JupyterLab kommt vor allem bei der Proof-of-Concept-Entwicklung und ersten Datenanalysen mit Python zur Anwendung. JupyterLab unterstützt das strukturierte wissenschaftliche Arbeiten und Dokumentieren. 

Datenverarbeitung in Echtzeit und Batchverarbeitung

Die Auswertung und Vorbereitung von Sensordaten sowie das Trainieren von KI-Modellen erfordern eine darauf abgestimmte Infrastruktur. In Projekten, bei denen die Datenauswertung in Echtzeit notwendig ist, wie beispielsweise die Live-Anzeige und Prognosen von Parkplatzinformationen oder Gebäudeinformationen, sowie das kontinuierliche Trainieren und Bereitstellen der KI-Modelle kommen daher folgende Technologien zum Tragen:

RisingWave ist eine SQL-zentrierte und -verteilte Stream-Processing- Datenbank. Dank der Integration von Datentransformationen sowie der Unterstützung für Konnektoren erlaubt uns RisingWave eine einfache und effiziente Implementierung von Datenverarbeitungpipelines.

Als Gegensatz zu Stream Processing können wir mit Apache Airflow in Python Datenpipelines und automatisierte Workflows wie das Trainieren der KI-Modelle sowie deren Speicherung und Bereitstellung der Ergebnisse in unserer Infrastruktur erstellen und überwachen.

NATS.io stellt eine Lösung für eine Event-basierte Kommunikation zwischen Microservices bereit. Dazu gehören einerseits die Speicherung von Daten nach einem Streaming-Prinzip als auch die Kommunikation mit Remote-Procedure-Calls und Load-Balancing.

Apache Flink erlaubt eine Datenanalyse und Aggregation in Echtzeit von kleinen bis zu Big-Data Systemen. Im Einsatz bei unseren Datenauswertungen können wir unsere Algorithmen skalieren und die integrierten Backup- und Snapshot-Funktionen für wiederholende Versuche verwenden.

Apache Kafka ist eine Streaming-Plattform für eine verteilte Datenspeicherung und Datenanalysen. Verschiedene Services können auf die gleiche verteilte Datenbasis in Echtzeit zugreifen und so können unterschiedliche Experimente parallel durchgeführt und evaluiert werden. 

Erprobung intelligenter Services und KI

Auf Basis der Echtzeit-Dateninfrastruktur und der dabei erzeugten Datensammlungen können intelligente Services konzeptioniert und in Proof-of-Concepts validiert und erprobt werden. Dazu greifen wir auf folgende Technologien zurück:

Unsere bevorzugten KI-Frameworks im Praxiseinsatz sind TensorFlow/PyTorch.

Für die Entwicklung KI-basierter Services und das Trainieren von Modellen und Algorithmen im Bereich Deep-Learning setzen wir auf Server mit leistungsfähigen Grafikkarten und passendem Kubernetes-Cluster in unserem eigenen Rechenzentrum. 

Beispiele für die Verwendung der Technologien

Hier finden Sie Projekte, in denen diese Technologien zum Einsatz kommen:

 

Hier finden Sie Beispielprojekte mit Datenauswertung in Echtzeit:

 

Hier finden Sie weitere Beispielprojekte: