close-icon
Erhalte direkt unseren nächsten Artikel über MLOps
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Software Entwicklung vs. Machine Learning Engineering

Bei beidem geht es um große Codebases, Machine Learning Engineers befassen sich jedoch zusätzlich mit Modellierungen und Big Data.

datarevenue-icon
by
DataRevenue
Markus Schmitt

Der Sprung zwischen einem ersten Skript bis hin zur fertigen Produktionssoftware ist oft erstaunlich groß. Nur vereinzelt wird ein Prototyp auch direkt zur Produktionssoftware weiterentwickelt; in den meisten Fällen werden die ersten Prototypen verworfen und für das fertige Produkt noch einmal von Neuem begonnen.

Das liegt vor allem daran, dass zu eine professionellen Software mehr gehört als sauberer Code. Auch Tests, Dokumentation und eine logisch aufgebaute Architektur sind essentielle Bestandteile einer produktionsreifen Software. All das muss von Anfang an mitgedacht und integriert werden, und kann nicht erst im Nachhinein ergänzt werden.

Machine Learning Teams sehen sich mit ähnlichen Problemen konfrontiert - es gibt einen großen Unterschied zwischen einem Proof of Concept Skript und einer fertigen Lösung in Produktionsumgebung.

Wir erklären dir die Unterschiede zwischen Prototyping und Produktion - sowohl im Software-Engineering als auch im Machine Learning Engineering.

Prototype vs. Produktionssoftware 

Direkt zu Beginn ein kurzer Überblick über die wichtigsten Unterschiede zwischen Skripten/Prototypen und Produktionssoftware. Skripte auf der einen Seite:

  • Werden von einem einzigen Entwickler geschrieben;
  • Funktionieren nur in einer bestimmten Umgebung;
  • Funktionieren für begrenzte Zeit;
  • Arbeiten mit eingeschränkten Daten;
  • Lassen sich auf einem einzelnen Rechner ausführen;
  • Werden nur von dem Entwickler aktualisiert, der sie erstellt hat.

Produktionssoftware auf der anderen Seite:

  • Wird von einem Team aus Entwicklern, Testern und Produktmanagern umgesetzt;
  • Ist auf verschiedene Anwendungsfälle anpassbar und konfigurierbar;
  • Ist zukunftssicher;
  • Berücksichtigt auch Spezialfälle, große Datensätze und unvorhergesehenen Input;
  • Funktioniert mit verschiedener Hard- und Software;
  • Enthält Versionskontrollen und ermöglicht Kollaboration.

Wenn ein Entwickler also davon spricht, dass die Arbeit zu 90% abgeschlossen ist, obwohl lediglich der Prototyp funktioniert, ist in Wirklichkeit noch einiges zu tun. 

Ähnlich verhält es sich beim Machine Learning. Ein Proof of Concept ML Modell zu entwickeln ähnelt in vielen Punkten dem Schreiben eines Skripts.

Production Machine Learning Engineering vs. Proof of Concept Modellentwicklung

Auch beim Machine Learning Engineering gibt es zwei verschiedene Phasen, vergleichbar mit den Unterschieden zwischen einem Prototyp und einer Produktionssoftware. Data Scientists entwickeln normalerweise ein erstes Modell auf Basis von Testdaten. Dabei bleibt alles recht klein und überschaubar, sodass sich schnell Fortschritte machen lassen. Sobald sie mit ihrem Modell eine hohe Genauigkeit erreichen, erklären sie das wichtigste Problem für gelöst.

In der Praxis kann man jedoch mit solch einem ersten Entwurf aus mehreren Gründen kaum etwas anfangen: Nur die Person, die es entwickelt hat, kennt das Modell komplett, es berücksichtigt keine Spezialfälle, verwendet einen nur sehr kleinen und übersichtlichen Datensatz und beinhaltet keinerlei Tests oder Dokumentation, und ist nicht skalierbar.

Ein Diagramm, das die Parallelen zwischen Software-Engineering und ML-Engineering hervorhebt. Ein Entwickler/Data Scientist leistet lediglich einen kleinen Beitrag, die endgültige Lösung besteht aus vielen weiteren Bestandteilen.
Ein Entwickler schreibt ein Skript; ein Engineering-Team entwickelt eine Software. Ein Data Scientist baut ein Modell; ein Machine Learning Team entwickelt eine KI-Lösung.

Um einen echten Mehrwert zu bieten, muss das Projekt von einem Machine Learning Engineering Team von Grund auf rekonstruiert werden. Der eigentliche Machine Learning Algorithmus stellt bei Produktionslösungen meist nur einen kleinen Teil des Endprodukts dar.

Die Produktionslösung darf unter anderem niemals von einer einzelnen Person abhängig sein. Außerdem muss sie auch schwierigere Problemstellungen lösen können als der ursprüngliche Proof of Concept. Nur allzu oft werden Software und Machine Learning Produkte nicht mehr verwendet, weil die Person, die sich damit als einzige komplett auskannte, nicht mehr verfügbar ist.

Die zusätzliche Zeit und das Geld, die in eine Produktionslösung investiert werden, ermöglichen nicht nur die Skalierung auf größere Datensätze und komplexere Probleme, sondern gewährleisten auch ihre Langlebigkeit. Es hält das Wissen auf Team- oder Prozessebene und ist nicht an einen bestimmten Entwickler gebunden.

Ein Machine Learning Proof of Concept in Produktion zu übertragen ist jedoch nicht direkt mit traditioneller Softwareentwicklung vergleichbar.

Die besonderen Herausforderungen des Machine Learning Engineering

Alle Best Practices von Software Engineering Teams drehen sich um Code. Analog dazu arbeiten Machine Learning Engineers zusätzlich auch mit Daten und Modellen. Das heißt, sie müssen sich Gedanken machen über:

  • Speichern und Tracken von Modellen – Zum Machine Learning Engineering gehört es dazu, den Überblick darüber zu behalten, wie ein Machine Learning Modell trainiert wurde, welche Ergebnisse es erzielt hat, welche Daten im Training verwendet wurden und wie es effizient eingesetzt werden kann - alles Aspekte, die im Rahmen einer Standard-Softwareentwicklung normalerweise nicht vorkommen. 
  • Große und dynamische Datensätze – Während die meiste Software mit Daten aus Datenbanken und anderen Quellen integriert wird, müssen Machine Learning Lösungen oft deutlich mehr Bereinigungen und Preprocessing vornehmen - und das häufig bei "Live"-Datensätzen, die sich laufend aktualisieren. Machine Learning Engineers benötigen daher ein System, das diese Verarbeitungsschritte überwacht und ausführt, z.B. in Form eines Directed Acyclic Graph (DAG).

Dein Framework für zuverlässige Machine Learning Lösungen

Wir haben die meisten verfügbaren Tools und Software für Machine Learning Teams getestet. Unsere Architektur OpenMLOps bietet eine Sammlung unserer Favoriten, die wir so integriert haben, dass sie für die meisten Teams die optimale Lösung bietet.

Wenn du mehr über OpenMLOps erfahren möchtest oder Unterstützung bei Problemen in deiner Machine-Learning-Architektur brauchst, vereinbare gerne einen kostenlosen Beratungstermin mit uns.

Bekomme immer die neusten Artikel

Trag dich mit deiner E-Mail ein, um du bekommst jede Woche unseren neusten Artikel.

Ich danke Ihnen! Ihre Einreichung ist eingegangen!
Oops! Something went wrong while submitting the form.