Kedro-Expectations: Datenmonitoring für KI-Lösungen im Produktivbetrieb
Der KI- und Data Science Kosmos ist erfahrungsgemäß von schnellem Tempo geprägt. Während in der Öffentlichkeit neusten Entwicklungen im Bereich Künstlicher Intelligenz (KI) große Aufmerksamkeit gewidmet wird, ist tatsächlich vor allem die Qualität der zugrundeliegenden Daten kritisch für den Erfolg eines jeden KI Modelles. Eine gleichbleibend hohe Datenqualität ist umso entscheidender für den Produktivbetrieb einer entwickelten KI-Lösung. In unserem heutigen Blog möchten wir unser Open-Source Python Projekt kedro-expectations vorstellen. Mit diesem Tool verbinden wir zwei essenzielle Open-Source Komponenten in vielen produktiven KI-Lösungen: das Data Science Framework Kedro und die Datenqualitätsüberprüfung Great Expectations (GX).
Warum Datenintegrität so wichtig ist
In der digitalen Welt sind Daten das Rückgrat vieler Unternehmen und dienen als Grundlage für fast alle operativen Entscheidungen. Aber was nützen diese Daten, wenn nicht gewährleistet ist, dass sie den erwarteten Standards entsprechen und diesen behalten? Datenintegrität bedeutet, dass Informationen über den gesamten Zeitraum konsistenten Kriterien entsprechen und verlässlich bleiben — von der Datenerfassung bis hin zur tatsächlichen Nutzung. Ohne diese Integrität kann es dazu kommen, dass Entscheidungen auf Basis fehlerhafter Informationen getroffen werden, mit möglicherweise katastrophalen Folgen.
Dies gilt analog für KI-Modelle, denn auch hier gilt das „garbage in, garbage out“ Prinzip: Die Prognosen und Ausgaben eines KI-Modells ist immer nur so gut, wie die Daten, mit denen es gefüttert wurde.
Gerade im Bereich Data Science und KI wachsen Projekte und die damit verbundenen Datenmengen in rasantem Tempo. Dabei werden Quellen, aus denen die Daten stammen, häufig ausgetauscht, weil alte Datenquellen, z.B. aufgrund eines Software- oder Datenbankupdates, entfernt und neue hinzugefügt werden. Angesichts dieses Netzes aus sich wandelnden Datenströmen, ist es kaum verwunderlich, dass Datenintegrität und -homogenität eine zentrale Rolle spielen muss. Damit KI-Modelle in der Praxis tatsächlich das leisten können, was Sie in der Machbarkeitsstudie gezeigt haben, ist es von größter Bedeutung, die vom Modell genutzten Daten genau kontrollieren und überwachen zu können.
Ein Beispiel: Stellen Sie sich vor, dass ein KI-Modell zur Prognose von Finanzflüssen eines US-Unternehmens existiert. Dieses Modell funktioniert im Jahr 2023 einwandfrei und liefert gute Prognosen, mit denen die Geschäftsführung sinnvolle Einblicke über den Unternehmenserfolg erhält. Im Jahr 2024 expandiert dieses Unternehmen nun nach Kanada, dementsprechend liegen nun auch Transaktionen in kanadischen Dollar, einer schwächeren Währung, vor. Wenn diese Änderung in den Daten nicht erkannt und entsprechend gehandhabt wird, ist das Modell nicht in der Lage, die Wechselkurse und Währungsumrechnungen korrekt zu berücksichtigen. Dadurch kann das eigentlich sehr gute Analysemodell seine Prognosequalität aus 2023 nicht mehr einhalten und liefert falsche Prognosen für 2024, die im schlimmsten Fall niemandem rechtzeitig auffallen.
Je umfassender ein KI-Modell verschiedene Daten verarbeitet, desto schneller entstehen solche Diskrepanzen und Verschiebungen. Externe Datenquellen sind hierfür besonders anfällig, aber auch interne Daten sind davor nicht geschützt, denn es ist praktisch unmöglich, dass alle IT-Administratoren im Konzern darüber Bescheid wissen, welche speziellen Annahmen die Data Scientisten in einer bestimmten Abteilung zu den Daten (bewusst oder unbewusst) getroffen haben, als die KI-Anwendung konzipiert wurde.
Welche Komponenten wir für robuste KI-Anwendungen nutzen
Robustheit und Reproduzierbarkeit sind also essenzielle Eigenschaften einer KI-Anwendung im Produktivbetrieb. Um diese Eigenschaften in unseren Projekten zu gewährleisten, bedienen wir uns meistens zweier beliebter Data Science Frameworks:
Kedro ist ein Python Framework, das von Quantum Black (dem KI-Zweig von McKinsey) als Open Source Projekt entwickelt wird. Es bietet die Möglichkeit, die verschiedenen Prozessierungs- und Modellierungsschritte einer KI-Anwendung in eine sogenannte Pipeline nach einem einheitlichen Standard zu gießen und zu betreiben. Dadurch wird die Zusammenarbeit in Entwicklungsteams deutlich vereinfacht und gemeinsames Arbeiten, auch über unterschiedliche Projekte hinaus, ist effizient realisierbar. Zudem sind alle Prozessierungsschritte in modulare Einheiten geteilt, wodurch sich wiederholende Schritte einfach wiederverwendet werden können und das Erweitern und Umbauen von Pipelines vereinfacht wird.
Great Expectations (GX) ist ein weiteres Open Source Python Projekt, das sowohl von der gleichnamigen Firma als auch der Data Science Community vorangetrieben wird. Es beschäftigt sich vor allem mit der eingangs beschriebenen Aufgabe der Datenvalidierung und -qualitätskontrolle. Nutzerinnen und Nutzer dokumentieren ihre Annahmen zu den Daten (sogenannte Expectations), beispielsweise, dass eine Datenquelle bestimmte Spalten besitzt oder dass die Werte einer Spalte keine fehlenden Werte haben dürfen. Diese Expectations können dann gegen die Datensätze validiert werden. So werden Ungereimtheiten schnell und zuverlässig erkannt. Es können verschiedene Datenquellen getestet werden, von einfachen csv-Dateien bis hin zu Cloud-Stores. Die nötige Konfiguration von Great Expectations sowie der Datenquellen und Validierungsschritte ist allerdings umfangreich und die korrekte Integration der möglichen Validierungen in die eigene KI-Anwendung obliegt den Data Scientisten.
Wie kedro-expectations Komponenten verbindet
Mit kedro-expectations kann die umfangreiche Datenvalidierung von Great Expectations „on-the-fly“ auf KedroPipelines angewendet werden. Dadurch garantieren wir nicht nur, dass Daten zum Zeitpunkt der Nutzung den Erwartungen entsprechen, sondern wir reduzieren auch den manuellen Arbeitsaufwand, zwei separate Tools nutzen und verwalten zu müssen. Damit wird der gesamte Workflow deutlich geradliniger, von der Erstellung unserer Datenanforderungen bis hin zum Einsatz der KI-Pipeline. Durch einen anpassbaren Benachrichtigungsservice bleiben wir immer up-to-date über das Ergebnis der Datenvalidierung. Ein Profiler hilft zudem anhand eines vorhandenen Datensatzes, die strukturellen und statistischen Annahmen über diesen Datensatz zu erstellen und für künftige Validierungen zu persistieren.
Die technischen Details
Eine Kedro Pipeline besteht aus einer Sequenz von Verarbeitungsschritten (sogenannter Nodes). Jede Nodedefiniert, welche Datensätze sie erhalten muss und welche Datensätze sie weitergibt. Um die Integration von eigenem Code möglichst einfach zu gestalten, bietet Kedro die Möglichkeit an, eigene Hooks registrieren zu können, die dann z.B. vor jedem Verarbeitungschritt ausgeführt werden. An diesem Punkt setzt kedro-expectations an: Durch unsere Hook können wir uns vor jeder Node-Ausführung (also vor Verarbeitung der Daten) einhaken und die Qualität der Eingabedaten überprüfen. Diese Validierung wird mithilfe von Great Expectations durchgeführt. Dadurch können wir garantieren, dass zum Zeitpunkt der Verarbeitung der Datensatz allen diesen Anforderungen entspricht und unsere Pipeline stabil und wie erwartet ausgeführt wird.
In der folgenden Grafik ist dies schematisch dargestellt:
Der kedro-expectations Aufbau. Bevor Daten innerhalb von kedro nodes verarbeitet werden, wird eine Validierung mit Great-Expectations gestartet, von deren Ergebnis der weitere Verlauf der kedro pipeline abhängt.
Ein Nachteil dieses seriellen Vorgehens: Sollte die Validierung der Daten lange dauern — sei es aufgrund von großen Datensätzen oder aber vielen Anforderungen an diese — verzögert das die Ausführung der gesamten Data Science Pipeline und führt unter Umständen zu deutlich längeren Wartezeiten. Um dies zu berücksichtigen, unterstützt kedro-expectations neben dem seriellen auch einen parallelen Validierungsmodus: Bei Aktivierung wird jede Datenvalidierung in einem separaten Prozess durchgeführt, während die Gesamtpipeline einfach weiterlaufen kann. Benachrichtigungen über Erfolg oder Misserfolg werden gesammelt und nach Ablauf der Pipeline über den konfigurierten Nachrichtenkanal versendet:
Der parallele Validierungsmodus. Die Datenvalidierung mit Great Expectations findet in einem separaten Prozess statt, sodass die Kedro-Pipeline nicht auf das Ergebnis warten muss. Alle Ergebnisse werden nach Ablauf der Pipeline gesammelt und verschickt.
Dieser Modus kann die Laufzeit der KI-Pipeline erheblich reduzieren. Sollte es wichtig sein, dass bei einer gescheiterten Validierung kein Ergebnis in eine Datenbank geschrieben wird, lässt sich dies realisieren, indem die Node zum Schreiben in die Datenbank in einer separaten Kedro-Pipeline liegt, welcher nur ausgeführt wird, wenn die vorherige Pipeline ohne Validierungsfehler durchlief.
Unabhängig vom Validierungsmodus erhalten wir am Ende der Ausführung eine Zusammenfassung über alle Validierungen per E-Mail und können die Ergebnisse in einer übersichtlichen Weboberfläche einsehen. Somit gewährleisten wir optimale Datenintegrität und Robustheit unserer KI-Anwendungen.
Fazit
Mit kedro-expectations gelingt es uns, unsere KI-Lösungen auf effiziente Weise robust und reproduzierbar zu entwickeln und zu betreiben. kedro-expectations ist Open Source (d.h. frei verwendbar) unter https://gitlab.com/anacision/kedro-expectations erhältlich.
Sind Sie an weiteren technischen Details interessiert? In unserem englischsprachigen Blogpost erfahren Sie mehr: https://medium.com/@anacision/introducing-kedro-expectations-bridging-data-validation-and-monitoring-in-data-science-pipelines-e6cde6e98349
Haben Sie weitere Fragen oder möchten wissen, wie Sie mit uns robuste KI-Lösungen in Ihrem Unternehmen einsetzen können? Kontaktieren Sie uns gerne. Sollten Sie an zukünftigen Updates und Blogposts interessiert sein, folgen Sie uns gerne bei LinkedIn, um nichts zu verpassen.