Tests zum Bereitstellen von Modellen für maschinelles Lernen

Sie können die Bereitstellung jetzt vornehmen. Wenn nur die Bereitstellung eines Modells so einfach wäre wie das Klicken auf eine große rote Schaltfläche. Bei der Bereitstellung soll Ihre Pipeline problemlos ausgeführt, aktualisiert und bereitgestellt werden. Diese Anforderungen führen zu den auf dieser Seite beschriebenen Anforderungen und Lösungen.

Modellaktualisierungen mit reproduzierbarem Training testen

Zweifellos möchten Sie den Indikator für das Einhorn-Erscheinungsbild weiter verbessern. Nehmen wir an, Sie refaktorieren den Feature Engineering-Code für das Feature „Tageszeit“. Wie testest du, ob der Code korrekt ist? Sie beschließen, Ihr Modell noch einmal zu trainieren und zu sehen, ob Sie dasselbe Ergebnis erhalten. Oh nein, Sie stellen fest, dass Ihr Modelltraining nicht reproduzierbar ist. Wenn wir feststellen, dass die Darstellung von Einhorndarstellungen weiterhin vorhergesagt werden muss, untersuchen Sie weitere Details. Sie können die Reproduzierbarkeit folgendermaßen feststellen:

  • Seed-Seed-Wertgenerator (RNG) Weitere Informationen finden Sie im Kurs zur Datengenerierung bei der Datengenerierung im Kurs zur Datenvorbereitung und Feature Engineering in ML.

  • Initialisieren Sie die Modellkomponenten in einer festen Reihenfolge, damit die Komponenten bei jeder Ausführung die gleiche Zufallszahl aus dem RNG erhalten. ML-Bibliotheken erfüllen diese Anforderung in der Regel automatisch.

  • Durchschnittlich mehrere Ausführungen des Modells.

  • Verwenden Sie die Versionsverwaltung, auch für vorläufige Iterationen, damit Sie bei der Untersuchung Ihres Modells oder Ihrer Pipeline Code und Parameter markieren können.

Selbst wenn Sie diese Schritte ausgeführt haben, gibt es möglicherweise andere Quellen von Determinismus.

Modellaktualisierungen nach Spezifikationen und API-Aufrufen testen

Nachdem Sie das Modell auf Unicorn Predictor 2.0 aktualisiert haben, müssen Sie das neue Modell auf algorithmische Richtigkeit sowie Änderungen an API-Aufrufen testen. Sehen wir uns an, wie das geht.

API-Aufrufe testen

Wie testest du Aktualisierungen von API-Aufrufen? Natürlich können Sie Ihr Modell neu trainieren, aber das ist zeitaufwendig. Schreiben Sie stattdessen einen Unittest, um zufällige Eingabedaten zu generieren, und führen Sie einen einzelnen Schritt des Gradientenverfahrens aus. Sie möchten, dass der Schritt ohne Laufzeitfehler abgeschlossen wird.

Auf algorithmische Korrektur testen

Ein Modell muss nicht nur die richtige Vorhersage treffen, sondern dies auch tun, da es algorithmisch korrekt ist und kein Glück ist. Wenn beispielsweise 99% der E-Mails kein Spam sind, wird die Klassifizierung aller E-Mails als kein Spam mit Zufall von 99% umgesetzt. Daher müssen Sie Ihr Modell auf algorithmische Richtigkeit prüfen. Gehen Sie dazu so vor:

  • Trainieren Sie Ihr Modell für einige Iterationen und prüfen Sie, ob der Verlust sinkt.
  • Trainieren Sie Ihren Algorithmus ohne Normalisierung. Wenn Ihr Modell komplex genug ist, werden die Trainingsdaten gespeichert und der Trainingsverlust ist nahezu 0.
  • Bestimmte Teilberechnungen des Algorithmus testen Sie können beispielsweise testen, ob ein Teil Ihrer RNN einmal pro Element der Eingabedaten ausgeführt wird.

Integrationstests für Pipelinekomponenten schreiben

In einer ML-Pipeline können Änderungen in einer Komponente zu Fehlern in anderen Komponenten führen. Prüfen Sie, ob die Komponenten zusammenarbeiten, indem Sie einen Test schreiben, der die gesamte End-to-End-Pipeline ausführt. Ein solcher Test wird als Integrationstest bezeichnet.

Neben der laufenden Ausführung von Integrationstests sollten Sie Integrationstests ausführen, wenn Sie neue Modelle und neue Softwareversionen bereitstellen. Die langsame Ausführung der gesamten Pipeline erschwert das Testen kontinuierlicher Integrationen. Trainieren Sie für eine schnellere Ausführung von Integrationstests eine Teilmenge der Daten oder ein einfacheres Modell. Die Details hängen von Ihrem Modell und Ihren Daten ab. Für eine kontinuierliche Abdeckung müssen Sie die schnelleren Tests so anpassen, dass sie mit jeder neuen Version des Modells oder der neuen Software ausgeführt werden. In der Zwischenzeit werden Ihre langsamen Tests im Hintergrund ausgeführt.

Modellqualität vor der Bereitstellung validieren

Bevor Sie eine neue Modellversion in die Produktion übertragen, testen Sie diese beiden Qualitätsverschlechterungen:

  • Plötzliche Beeinträchtigung: Ein Programmfehler in der neuen Version kann zu einer erheblich niedrigeren Qualität führen. Sie können neue Versionen prüfen, indem Sie ihre Qualität mit der vorherigen Version vergleichen.

  • Langsame Beeinträchtigung: Der Test auf plötzliche Beeinträchtigung erkennt möglicherweise nicht langsam eine Beeinträchtigung der Modellqualität über mehrere Versionen hinweg. Sorgen Sie stattdessen dafür, dass die Vorhersagen Ihres Modells für ein Validierungs-Dataset einen festen Schwellenwert erreichen. Wenn Ihr Validierungs-Dataset von Live-Daten abweicht, aktualisieren Sie das Validierungs-Dataset und achten Sie darauf, dass Ihr Modell weiterhin denselben Qualitätsschwellenwert erfüllt.

Modell-Infrastruktur-Kompatibilität vor der Bereitstellung validieren

Wenn das Modell schneller als Ihr Server aktualisiert wird, weist das Modell unterschiedliche Softwareabhängigkeiten von Ihrem Server auf, was potenziell Inkompatibilitäten verursacht. Prüfen Sie, ob die vom Modell verwendeten Vorgänge auf dem Server vorhanden sind. Führen Sie dazu das Modell in einer Sandbox-Version des Servers aus.