Testen ist eine wichtige Aufgabe im Entwicklungslebenszyklus eines Machine Learning-Systems, um hochwertige Vorgänge zu gewährleisten. Wir verwenden Tests, um uns zu vergewissern, dass etwas ordnungsgemäß funktioniert. Die erstellten Tests können dann automatisch ausgeführt werden, wenn wir eine Änderung am System vornehmen, und wir können sie im Laufe der Zeit immer weiter verbessern. Es empfiehlt sich, die Implementierung von Tests zu belohnen und Fehlerquellen im Entwicklungszyklus frühestmöglich zu identifizieren, um spätere Kosten und Zeitverluste zu vermeiden.
In diesem Blog wird das Testen von Machine Learning-Systemen aus der Sicht von Machine Learning Operations (MLOps) behandelt. Außerdem werden bewährte Methoden und ein Testframework für die Erstellung robuster, skalierbarer und sicherer Machine Learning-Systeme vorgestellt. Bevor wir uns näher mit Tests befassen, sehen wir uns zunächst an, was MLOps ist und welchen Nutzen es bei der Entwicklung von Machine Learning-Systemen hat.
Abbildung 1: MLOps = DevOps + maschinelles Lernen
Die Softwareentwicklung ist eine fachübergreifende Tätigkeit und entwickelt sich ihrerseits weiter, um maschinelles Lernen zu unterstützen. MLOps verschmilzt maschinelles Lernen mit der Softwareentwicklung. Hierzu werden maschinelles Lernen und DevOps miteinander verbunden. Das Ziel von MLOps ist die zuverlässige und effiziente Erstellung, Bereitstellung und Verwaltung von Machine Learning-Modellen in der Produktion. DevOps steuert Machine Learning-Vorgänge. Sehen wir uns an, wie das in der Praxis funktioniert. Die folgende Darstellung eines MLOps-Workflows zeigt, wie maschinelles Lernen durch DevOps ermöglicht wird, um stabile, skalierbare und sichere Machine Learning-Lösungen zu orchestrieren.
Abbildung 2: MLOps-Workflow
Der MLOps-Workflow ist modular und flexibel und kann verwendet werden, um Proofs of Concept zu erstellen oder Machine Learning-Lösungen in beliebigen Unternehmen oder Branchen zu operationalisieren. Dieser Workflow ist in drei Module unterteilt: Erstellung, Bereitstellung und Überwachung. Das Erstellungsmodul wird verwendet, um Machine Learning-Modelle mithilfe einer Machine Learning-Pipeline zu entwickeln. Das Bereitstellungsmodul dient zum Bereitstellen von Modellen in Entwicklungs-, Test- und Produktionsumgebungen. Das Überwachungsmodul dient zum Überwachen, Analysieren und Steuern des Machine Learning-Systems, um den größtmöglichen geschäftlichen Nutzen zu erzielen. Tests werden hauptsächlich in zwei Modulen durchgeführt: im Erstellungs- und im Bereitstellungsmodul. Im Erstellungsmodul werden Daten für das Training erfasst. Anschließend wird das Modell mithilfe der erfassten Daten trainiert und dann im Modelltestschritt getestet.
1. Modelltests: In diesem Schritt wird die Leistung des trainierten Modells für einen separaten Satz von Datenpunkten ausgewertet. Diese als Testdaten bezeichneten Daten wurden im Datenerfassungsschritt aufgeteilt und versioniert. Der Rückschluss des trainierten Modells wird gemäß den ausgewählten Metriken und abhängig vom Anwendungsfall ausgewertet. Die Ausgabe dieses Schritts ist ein Bericht zur Leistung des trainierten Modells. Im Bereitstellungsmodul werden die trainierten Modelle in Entwicklungs-, Test- und Produktionsumgebungen bereitgestellt. Wir beginnen mit Anwendungstests (in Entwicklungs- und Testumgebungen).
2. Anwendungstests: Vor der Bereitstellung eines Machine Learning-Modells in der Produktion ist es wichtig, die Stabilität, Skalierbarkeit und Sicherheit des Modells zu testen. Dafür ist die Phase „Anwendungstests“ vorgesehen, in der alle trainierten Modelle sowie die Anwendung sorgfältig in einer produktionsähnlichen Umgebung (einer sogenannten Test- oder Stagingumgebung) getestet werden. In dieser Phase können Tests wie A/B-Tests, Integrationstests, Benutzerakzeptanztests (User Acceptance Tests, UATs), Schattentests oder Auslastungstests durchgeführt werden.
Hier sehen Sie das Framework für Tests, das die Hierarchie der Anforderungen beim Testen von Machine Learning-Systemen widerspiegelt:
Abbildung 3: Hierarchie der Anforderungen beim Testen von Machine Learning-Systemen
Bei der Betrachtung von Machine Learning-Systemen kann beispielsweise die Maslowsche Bedürfnishierarchie herangezogen werden. Niedrigere Ebenen einer Pyramide spiegeln Grund- oder Existenzbedürfnisse wider, während das wahre menschliche Potenzial erst entfesselt wird, wenn die lebensnotwendigen und emotionalen Grundbedürfnisse befriedigt sind. Analog dazu sorgen Stabilitäts-, Skalierbarkeits- und Sicherheitstests dafür, dass das System nicht nur grundlegend funktioniert, sondern auch sein wahres Potenzial entfalten kann. Es gibt noch zahlreiche weitere Formen von funktionsbezogenen und nicht funktionsbezogenen Tests – etwa Buildakzeptanztests (schnelle Integritätsprüfungen) und Leistungstests (Belastungstests). Diese lassen sich jedoch alle als Systemtests klassifizieren.
In den nächsten drei Beiträgen gehen wir auf alle drei allgemeinen Testebenen ein. Wir beginnen mit Stabilität, widmen uns dann der Skalierbarkeit und beschäftigen uns schließlich mit der Sicherheit.
Weitere Details und Informationen zur praktischen Implementierung finden Sie im E-Book MLOps für Engineering. Im On-Demand-Webinar Schnellere Amortisierung mit bewährten MLOps-Methoden erfahren Sie außerdem, wie Sie ein Modell in Microsoft Azure Machine Learning unter Verwendung von MLOps erstellen und bereitstellen. Sehen Sie sich auch unseren kürzlich angekündigten Blog zu Solution Accelerators (MLOps v2) an, um Ihren MLOps-Arbeitsstream in Azure Machine Learning zu vereinfachen.
Quelle für Bilder: E-Book „MLOps für Engineering“