Kolumne: Stropek as a Service

AI as a Service: AI-Dienste in der Cloud sollen die Technologie alltagstauglich machen
Keine Kommentare

Künstliche Intelligenz (AI) und Machine Learning (ML) beflügeln die Fantasie vieler SaaS-Anbieter. Wäre es nicht schön, wenn wir komplizierte Eingabemasken durch einen einfach zu bedienenden Bot ersetzen könnten?

Warum müssen wir den Reisekostenbeleg noch abtippen? Ein Foto mit einer schlauen AI im Hintergrund kann das doch erledigen. In der Praxis stoßen Teams, die sich an solchen Vorhaben versuchen, auf eine Menge Probleme. Vor allem fehlt es in vielen Fällen an einschlägiger Entwicklungserfahrung. Fertige AI-Dienste wie Cognitive Services von Microsoft versprechen Abhilfe. Statt mühsam alles von Grund auf entwickeln zu müssen, bekommt man einfach konsumierbare Web-APIs mit nutzungsabhängigen Kosten. Geht es damit für typische SaaS-Projekte auf der Überholspur in Richtung AI-Zukunft?

AI von der Stange hat begrenzten Wert

Der erste Schritt zur Beantwortung dieser Frage beginnt mit der Verfügbarkeit von Daten. Zugegeben, es gibt AI-Dienste wie Microsofts Text Analytics und Computer Vision oder Googles Cloud Vision API , die komplett fertig sind. Beispielsweise braucht man für die Erkennung der Sprache eines Texts mit Text Analytics weder Trainingsdaten noch Verständnis für Machine Learning. Wenn man einen Text an ein Web-API schicken kann, kann es losgehen. Für manche Anwendungen mag das als Einstieg schon reichen (z. B. Zuordnung eines Supportfalls zu einem Teammitglied, das die richtige Sprache spricht). Für die meisten Fälle ist das aber zu wenig. AI und Machine Learning haben erst einen echten Mehrwert, wenn sie an einen bestimmten Anwendungsfall angepasst werden.

Anpassbare AI-Dienste

Wenn es keinen fertigen AI-Dienst von der Stange gibt, heißt das noch nicht, dass man alles von Grund auf mit Bibliotheken wie TensorFlow oder Microsoft Cognitive Toolkit (CNTK) bauen muss. Es gibt einen Mittelweg: Anpassbare AI- und ML-Modelle, die man mit eigenen Daten trainieren kann. Hier zwei Beispiele aus dem Produktportfolio von Microsoft:

  • Mit dem Custom Vision Service (aktuell als Preview) kann man Bilder nach einer individuellen Logik verschlagworten. Statt den Algorithmus per Hand zu schreiben oder ein Deep-Learning-Modell von Grund auf neu erstellen zu müssen, stellt man Trainingsdaten in Form von korrekt beschlagworteten Bildern zur Verfügung. Mit ihnen trainiert man ein von Microsoft bereitgestelltes Basismodell. Als Ergebnis erhält man ein individualisiertes Modell mit einem Web-API, mit dem man neue Bilder verschlagworten (Prediction) kann. Es ist bei diesem Service sogar möglich, das trainierte Modell zu exportieren, um es lokal auszuführen.
  • Der Language Understanding Service (LUIS) hilft beim Verarbeiten von Sprache. Wenn ein Benutzer eine Anfrage in natürlicher Sprache formuliert, ist es nicht einfach, die Absicht (Intent) des Benutzers (z. B. navigieren, ein Produkt bestellen, eine Reise buchen etc.) und eventuell im Satz enthaltene Parameter (Entity, z.B. Zielort, Produktname, Datum der Reise) zu erkennen. Diese Fähigkeit ist aber beispielsweise beim Programmieren eines Bots unverzichtbar. LUIS löst genau dieses Problem. Man stellt Trainingsdaten in Form von Mustersätzen (Utterances) mit korrekter Zuordnung zu Intents und Parametern zur Verfügung (Abb. 1). Das trainierte Modell kann mit wenigen Klicks deployt werden. Das Web-API, das man dadurch erhält, kann man direkt nutzen oder es mit dem Azure Bot Service verknüpfen, um einen Bot zu entwickeln.
Abbildung 1: Microsoft LUIS

Abbildung 1: Microsoft LUIS

Daten sind Gold wert

Diese beiden Beispiele zeigen den fundamental neuen Ansatz für die „Programmierung“ von (halb)fertigen AI-Diensten im Vergleich zur klassischen Entwicklung von Programmbibliotheken. Unsere Rolle als Entwickler ist nicht mehr das Schreiben eines Algorithmus. Wir müssen uns um die Trainingsdaten kümmern. Diese Aufgabe ist alles andere als trivial, denn die Qualität des entstehenden Deep-Learning-Modells steht und fällt mit der Qualität der Trainingsdaten. Stehen zu wenig Daten zur Verfügung oder sind die vorhandenen Trainingsdatensätze fehlerhaft (z. B. falsche Verschlagwortung), von schlechter Qualität (z. B. mangelhafte Bildqualität, zu ähnliche Fotos etc.) oder nicht repräsentativ (z. B. Mustersätze, die kein echter Anwender je verwenden würde), ist das Ergebnis unbrauchbar. Darüber hinaus ist es mit Trainingsdaten nicht getan. Es braucht weitere Datensets, um die Modelle testen zu können.

Daten sind in der Welt von AI und ML das neue Gold. Daran ändern auch vorgefertigte AI-Dienste in der Cloud nichts – im Gegenteil. Als Team, das in diese Welt einsteigen will, muss man sich als erstes fragen, wie man an die notwendigen Daten kommt. Diese Hürde macht den Einstieg für Start-ups auch so schwierig. Etablierte Unternehmen haben entweder vorhandene Datenbanken oder können auf eine bestehende Community zurückgreifen, die man motivieren kann, AI-basierte Softwarekomponenten wie Bots zu testen, Feedback zu geben und dadurch indirekt die notwendigen Trainingsdaten zur Verfügung zu stellen.

Iterative Modellentwicklung

Ein wichtiger Aspekt in diesem Zusammenhang ist die iterative Modellentwicklung. Anpassbare AI-Dienste wie die oben genannten enthalten fertige Komponenten, mit denen man echte Daten aus dem Betrieb prüfen kann (z. B. Sätze, die Benutzer zu einem Bot gesagt haben oder Bilder, die zur Verschlagwortung hochgeladen wurden). Entdeckt man Klassifizierungsfehler, kann man auf einfache Art die Echtdaten mit korrekten Metadaten zum Trainingsset hinzufügen und dadurch das AI-Modell Schritt für Schritt verbessern (Abb. 2).

Abb. 2: Verschlagwortung eines Bilds im Custom Vision Service

Abb. 2: Verschlagwortung eines Bilds im Custom Vision Service

Damit diese iterative Vorgehensweise in der Praxis funktioniert, müssen Mechanismen vorhanden sein, die die Versionierung, das Testen und das Produktivsetzen von Modellen einfach und robust machen. AI-Dienste stehen in der Regel Serverless zur Verfügung. Als Entwicklungsteam muss man sich daher in keiner Weise um das Betreiben oder Skalieren der Server kümmern. Man kann das Modell mit einem Klick deployen, kann zwischen Test- und Produktionsumgebung unterscheiden, hat ein eingebautes Versionsmanagement, kann die Modelle zur Archivierung in einer Quellcodeverwaltung exportieren und vieles mehr (Abb. 3). Die notwendige Zeit für Administrations- und DevOps-Prozesse wird durch solche Funktionen auf ein Minimum reduziert.

Abb. 3: Deployment eines LUIS-Modells

Abb. 3: Deployment eines LUIS-Modells

API für Metaprogrammierung

Für SaaS-Anbieter ist eine weitere Eigenschaft von AI-Diensten wichtig: Alle Funktionen stehen nicht nur interaktiv über ein Web-UI zur Verfügung; genau die gleichen Funktionen können auch über Web-APIs automatisiert werden. Wenn man eine eigene Multi-Tenant-SaaS-Lösung entwickelt, kann man oft nicht alle Endkunden über einen Kamm scheren. Jeder Kunde hat etwas andere Anforderungen. Die Datenmodelle unterscheiden sich, Workflows sind kundenspezifisch, Stammdaten sind naturgemäß bei jedem Kunden anders und vieles mehr. Will man beispielsweise jedem SaaS-Endkunden einen individuellen Bot anbieten, muss sich das Modell von Kunde zu Kunde unterscheiden, damit ein qualitativ hochwertiges Ergebnis erzielt werden kann. Die Trainingsdaten sind unterschiedlich und in vielen Fällen unterscheiden sich die Modelle auch strukturell.

Durch die APIs der AI-Dienste kann man als SaaS-Anbieter Metaprogrammierung betreiben. Das bedeutet, dass man ein Programm schreibt, das nicht vom Endkunden verwendet wird, sondern ein anderes Programm erzeugt: In diesem Fall ein AI-Modell mit Hilfe eines AI-Diensts.

Herausforderungen

Das klingt alles verlockend, nicht wahr? AI und ML werden in jedem Projekt problemlos einsetzbar, selbst wenn kein einschlägiges Vorwissen und nur ein begrenztes Budget vorhanden sind. Diese Aussage ist zwar grundsätzlich richtig, im Detail sind aber einige Herausforderungen zu meistern. Die erste wurde oben bereits kurz erwähnt: Man braucht eine Menge Trainingsdaten von guter Qualität. In Zeiten der DSGVO ist das nicht nur eine technische, sondern auch eine rechtliche Hürde.

Die zweite Herausforderung ist das Risiko, dass man von dem ausgewählten AI-Dienst mehr erwartet, als er bieten kann. Wie bereits erwähnt, hat man bei modernen AI-Diensten Möglichkeiten zur Anpassung der vorgefertigten Modelle. Man kann aber nicht alle Aspekte kontrollieren. Es ist schließlich genau die Stärke dieser Dienste, dass die Komplexität reduziert ist. Im Vergleich zu klassischen SaaS- und PaaS-Diensten aus der Cloud ist das Evaluieren von AI-Diensten aber viel schwieriger. Bisher konnte man Featurelisten vergleichen. Bei AI-Diensten geht das nicht mehr so leicht. Angenommen man möchte eine SaaS-Lösung entwickeln, bei der die Erkennung von Autokennzeichen eine Rolle spielt. Sind die Computer-Vision-Dienste von Microsoft dafür geeignet? Kann man eine gute Lösung damit bauen, wenn man das Bildmaterial für Training und Echtbetrieb entsprechend vorbereitet? Würde das Pendant von Google bessere Ergebnisse liefern? Meiner Erfahrung nach kann man diese Fragen nicht theoretisch beantworten. Man muss Prototypen bauen oder braucht Hilfe von Personen, die domänenspezifische Erfahrung mit den ausgewählten AI-Diensten haben.

Fazit

AI- und ML-Projekte sind oft Abenteuer, in denen Unmengen an Geld und Ressourcen versenkt werden. Fertige AI-Dienste in der Cloud, die an die jeweilige Domäne angepasst werden können, bieten in vielen Fällen eine Abkürzung und reduzieren das Projektrisiko. Wer allerdings glaubt, dass solche Projekte trivial sind, wird enttäuscht. Der Umgang mit den Daten, das Automatisieren der begleitenden DevOps-Prozesse, die Evaluierung der verfügbaren AI-Dienste diverser Hersteller und vieles mehr erzwingen eine ernsthafte Auseinandersetzung mit dem Thema. Ansonsten hat man zwar schnell ein Ergebnis, es bietet aber aus Benutzersicht keinen echten Zusatznutzen.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -