Implementieren Sie die Modellversionierung mit Amazon Redshift ML | Amazon Web Services

Implementieren Sie die Modellversionierung mit Amazon Redshift ML | Amazon Web Services

Quellknoten: 2360651

Amazon Redshift ML ermöglicht es Datenanalysten, Entwicklern und Datenwissenschaftlern, Modelle für maschinelles Lernen (ML) mithilfe von SQL zu trainieren. In früheren Beiträgen haben wir gezeigt, wie Sie die automatische Modelltrainingsfunktion von Redshift ML zum Trainieren nutzen können Einstufung und Regression Modelle. Mit Redshift ML können Sie ein Modell mit SQL erstellen und Ihren Algorithmus angeben, z. B. XGBoost. Sie können Redshift ML verwenden, um die Datenvorbereitung, Vorverarbeitung und Auswahl Ihres Problemtyps zu automatisieren (weitere Informationen finden Sie unter Erstellen, trainieren und implementieren Sie Machine-Learning-Modelle in Amazon Redshift mithilfe von SQL mit Amazon Redshift ML). Sie können auch ein zuvor eingelerntes Modell mitbringen Amazon Sage Maker in Amazon RedShift über Redshift ML für lokale Inferenz. Für lokale Rückschlüsse auf in SageMaker erstellte Modelle muss der ML-Modelltyp von Redshift ML unterstützt werden. Jedoch, Fernschluss ist für Modelltypen verfügbar, die in Redshift ML nicht nativ verfügbar sind.

Mit der Zeit altern ML-Modelle, und selbst wenn nichts Einschneidendes passiert, häufen sich kleine Änderungen. Zu den häufigsten Gründen, warum ML-Modelle neu trainiert oder geprüft werden müssen, gehören:

  • Datendrift – Da sich Ihre Daten im Laufe der Zeit geändert haben, kann es sein, dass die Vorhersagegenauigkeit Ihrer ML-Modelle im Vergleich zur beim Testen erzielten Genauigkeit abnimmt
  • Konzeptdrift – Der ursprünglich verwendete ML-Algorithmus muss möglicherweise aufgrund unterschiedlicher Geschäftsumgebungen und anderer sich ändernder Anforderungen geändert werden

Möglicherweise müssen Sie das Modell regelmäßig aktualisieren, den Prozess automatisieren und die verbesserte Genauigkeit Ihres Modells neu bewerten. Zum jetzigen Zeitpunkt unterstützt Amazon Redshift keine Versionierung von ML-Modellen. In diesem Beitrag zeigen wir, wie Sie die Bring Your Own Model (BYOM)-Funktionalität von Redshift ML nutzen können, um die Versionierung von Redshift ML-Modellen zu implementieren.

Wir verwenden lokale Inferenz, um die Modellversionierung im Rahmen der Operationalisierung von ML-Modellen zu implementieren. Wir gehen davon aus, dass Sie Ihre Daten und den Problemtyp, der für Ihren Anwendungsfall am besten geeignet ist, gut verstehen und Modelle erstellt und für die Produktion bereitgestellt haben.

Lösungsüberblick

In diesem Beitrag verwenden wir Redshift ML, um ein Regressionsmodell zu erstellen, das die Anzahl der Menschen vorhersagt, die zu einer bestimmten Tageszeit den Bike-Sharing-Dienst der Stadt Toronto nutzen könnten. Das Modell berücksichtigt verschiedene Aspekte, darunter Feiertage und Wetterbedingungen, und da wir ein numerisches Ergebnis vorhersagen müssen, haben wir ein Regressionsmodell verwendet. Wir nutzen die Datendrift als Grund für die Neuschulung des Modells und nutzen die Modellversionierung als Teil der Lösung.

Nachdem ein Modell validiert wurde und regelmäßig zum Ausführen von Vorhersagen verwendet wird, können Sie Versionen der Modelle erstellen, was erfordert, dass Sie das Modell mit einem aktualisierten Trainingssatz und möglicherweise einem anderen Algorithmus neu trainieren. Die Versionierung dient zwei Hauptzwecken:

  • Zur Fehlerbehebung oder zu Prüfungszwecken können Sie auf frühere Versionen eines Modells zurückgreifen. Dadurch können Sie sicherstellen, dass Ihr Modell weiterhin eine hohe Genauigkeit behält, bevor Sie auf eine neuere Modellversion umsteigen.
  • Sie können während des Modelltrainingsprozesses der neuen Version weiterhin Inferenzabfragen für die aktuelle Version eines Modells ausführen.

Zum Zeitpunkt des Schreibens dieses Artikels verfügt Redshift ML nicht über native Versionierungsfunktionen, Sie können jedoch dennoch eine Versionierung erreichen, indem Sie einige einfache SQL-Techniken mithilfe der BYOM-Funktion implementieren. BYOM wurde eingeführt, um vorab trainierte SageMaker-Modelle zum Ausführen Ihrer Inferenzabfragen in Amazon Redshift zu unterstützen. In diesem Beitrag verwenden wir dieselbe BYOM-Technik, um eine Version eines vorhandenen Modells zu erstellen, das mit Redshift ML erstellt wurde.

Die folgende Abbildung veranschaulicht diesen Arbeitsablauf.

In den folgenden Abschnitten zeigen wir Ihnen, wie Sie aus einem vorhandenen Modell eine Version erstellen und anschließend ein erneutes Modelltraining durchführen können.

Voraussetzungen:

Als Voraussetzung für die Umsetzung des Beispiels in diesem Beitrag müssen Sie eine einrichten Rotverschiebungs-Cluster or Amazon Redshift ohne Server Endpunkt. Die vorbereitenden Schritte für den Einstieg und die Einrichtung Ihrer Umgebung finden Sie unter Erstellen, trainieren und implementieren Sie Machine-Learning-Modelle in Amazon Redshift mithilfe von SQL mit Amazon Redshift ML.

Wir verwenden das im Beitrag erstellte Regressionsmodell Erstellen Sie Regressionsmodelle mit Amazon Redshift ML. Wir gehen davon aus, dass es bereits bereitgestellt wurde, und verwenden dieses Modell, um neue Versionen zu erstellen und das Modell neu zu trainieren.

Erstellen Sie eine Version aus dem vorhandenen Modell

Der erste Schritt besteht darin, eine Version des vorhandenen Modells zu erstellen (was bedeutet, dass Entwicklungsänderungen des Modells gespeichert werden), damit eine Historie erhalten bleibt und das Modell später für Vergleiche zur Verfügung steht.

Der folgende Code ist das generische Format der Befehlssyntax CREATE MODEL; Im nächsten Schritt erhalten Sie die Informationen, die Sie benötigen, um mit diesem Befehl eine neue Version zu erstellen:

CREATE MODEL model_name FROM ('job_name' | 's3_path' ) FUNCTION function_name ( data_type [, ...] ) RETURNS data_type IAM_ROLE { default } [ SETTINGS ( S3_BUCKET 'bucket', | --required KMS_KEY_ID 'kms_string') --optional ];

Als nächstes sammeln wir die Eingabeparameter und wenden sie auf den vorangehenden CREATE MODEL-Code auf das Modell an. Wir benötigen den Jobnamen und die Datentypen der Modelleingabe- und -ausgabewerte. Wir sammeln diese, indem wir das ausführen show model Befehl auf unserem bestehenden Modell. Führen Sie den folgenden Befehl im Amazon Redshift Query Editor v2 aus:

show model predict_rental_count;

Beachten Sie die Werte für AutoML-Auftragsname, Funktionsparametertypenund der Zielspalte (trip_count) aus der Modellausgabe. Wir verwenden diese Werte im Befehl CREATE MODEL, um die Version zu erstellen.

Die folgende CREATE MODEL-Anweisung erstellt eine Version des aktuellen Modells unter Verwendung der von uns gesammelten Werte show model Befehl. Wir hängen das Datum (das Beispielformat ist JJJJMMTT) an das Ende der Modell- und Funktionsnamen an, um zu verfolgen, wann diese neue Version erstellt wurde.

CREATE MODEL predict_rental_count_20230706 FROM 'redshiftml-20230706171639810624' FUNCTION predict_rental_count_20230706 (int4, int4, int4, int4, int4, int4, int4, numeric, numeric, int4)
RETURNS float8 IAM_ROLE default
SETTINGS (
S3_BUCKET '<<your S3 Bucket>>');

Die Ausführung dieses Befehls kann einige Minuten dauern. Wenn der Vorgang abgeschlossen ist, führen Sie den folgenden Befehl aus:

show model predict_rental_count_20230706;

In der Ausgabe können wir Folgendes beobachten:

  • AutoML-Auftragsname ist das gleiche wie die Originalversion des Modells
  • Funktionsname zeigt wie erwartet den neuen Namen
  • Inferenztyp erklärt Local, was angibt, dass es sich um BYOM mit lokaler Schlussfolgerung handelt

Sie können Inferenzabfragen mit beiden Versionen des Modells ausführen, um die Inferenzausgaben zu validieren.

Der folgende Screenshot zeigt die Ausgabe der Modellinferenz unter Verwendung der Originalversion.

Der folgende Screenshot zeigt die Ausgabe der Modellinferenz mithilfe der Versionskopie.

Wie Sie sehen, sind die Inferenzausgaben gleich.

Sie haben nun gelernt, wie Sie eine Version eines zuvor trainierten Redshift ML-Modells erstellen.

Trainieren Sie Ihr Redshift ML-Modell neu

Nachdem Sie eine Version eines vorhandenen Modells erstellt haben, können Sie das vorhandene Modell neu trainieren, indem Sie einfach ein neues Modell erstellen.

Sie können ein neues Modell mit demselben CREATE MODEL-Befehl erstellen und trainieren, jedoch je nach Bedarf unterschiedliche Eingabeparameter, Datensätze oder Problemtypen verwenden. Für diesen Beitrag trainieren wir das Modell auf neuere Datensätze neu. Wir hängen an _new zum Modellnamen hinzufügen, sodass es zur Identifizierung dem vorhandenen Modell ähnelt.

Im folgenden Code verwenden wir den Befehl CREATE MODEL mit einem neuen Datensatz, der im verfügbar ist training_data Tabelle:

CREATE MODEL predict_rental_count_new
FROM training_data
TARGET trip_count
FUNCTION predict_rental_count_new
IAM_ROLE 'arn:aws:iam::<accountid>:role/RedshiftML'
PROBLEM_TYPE regression
OBJECTIVE 'mse'
SETTINGS (s3_bucket 'redshiftml-<your-account-id>', s3_garbage_collect off, max_runtime 5000);

Führen Sie den folgenden Befehl aus, um den Status des neuen Modells zu überprüfen:

show model predict_rental_count_new;

Ersetzen Sie das vorhandene Redshift ML-Modell durch das neu trainierte Modell

Der letzte Schritt besteht darin, das vorhandene Modell durch das neu trainierte Modell zu ersetzen. Dies erreichen wir, indem wir die Originalversion des Modells löschen und mithilfe der BYOM-Technik ein Modell neu erstellen.

Überprüfen Sie zunächst Ihr neu trainiertes Modell, um sicherzustellen, dass die MSE/RMSE-Ergebnisse zwischen den Modelltrainingsläufen stabil bleiben. Um die Modelle zu validieren, können Sie durch jede der Modellfunktionen in Ihrem Datensatz Rückschlüsse ziehen und die Ergebnisse vergleichen. Wir verwenden die in bereitgestellten Inferenzabfragen Erstellen Sie Regressionsmodelle mit Amazon Redshift ML.

Nach der Validierung können Sie Ihr Modell ersetzen.

Sammeln Sie zunächst die Details des predict_rental_count_new Modell.

Beachten Sie das AutoML-Auftragsname Wert, der Funktionsparametertypen Werte und die Zielspalte Name in der Modellausgabe.

Ersetzen Sie das ursprüngliche Modell, indem Sie das ursprüngliche Modell löschen und dann das Modell mit den ursprünglichen Modell- und Funktionsnamen erstellen, um sicherzustellen, dass die vorhandenen Verweise auf die Modell- und Funktionsnamen funktionieren:

drop model predict_rental_count;
CREATE MODEL predict_rental_count
FROM 'redshiftml-20230706171639810624' FUNCTION predict_rental_count(int4, int4, int4, int4, int4, int4, int4, numeric, numeric, int4)
RETURNS float8 IAM_ROLE default
SETTINGS (
S3_BUCKET ’<<your S3 Bucket>>’);

Die Modellerstellung sollte in wenigen Minuten abgeschlossen sein. Sie können den Status des Modells überprüfen, indem Sie den folgenden Befehl ausführen:

show model predict_rental_count;

Wenn der Modellstatus lautet ready, die neuere Version predict_rental_count Ihres vorhandenen Modells steht für die Inferenz und die Originalversion des ML-Modells zur Verfügung predict_rental_count_20230706 steht bei Bedarf als Referenz zur Verfügung.

Bitte beziehen Sie sich darauf GitHub-Repository für Beispielskripte zur Automatisierung der Modellversionierung.

Zusammenfassung

In diesem Beitrag haben wir gezeigt, wie Sie die BYOM-Funktion von Redshift ML für die Modellversionierung nutzen können. Auf diese Weise können Sie über einen Verlauf Ihrer Modelle verfügen, sodass Sie die Modellbewertungen im Laufe der Zeit vergleichen, auf Prüfanfragen reagieren und Schlussfolgerungen ziehen können, während Sie ein neues Modell trainieren.

Weitere Informationen zum Erstellen verschiedener Modelle mit Redshift ML finden Sie unter Amazon Redshift ML.


Über die Autoren

Rohit Bansal ist Analytics Specialist Solutions Architect bei AWS. Er ist auf Amazon Redshift spezialisiert und arbeitet mit Kunden zusammen, um Analyselösungen der nächsten Generation unter Verwendung anderer AWS Analytics-Services zu entwickeln.

Phil Bates ist Senior Analytics Specialist Solutions Architect bei AWS. Er verfügt über mehr als 25 Jahre Erfahrung in der Implementierung umfangreicher Data-Warehouse-Lösungen. Er ist leidenschaftlich daran interessiert, Kunden bei ihrer Cloud-Reise zu unterstützen und die Leistungsfähigkeit von ML in ihrem Data Warehouse zu nutzen.

Zeitstempel:

Mehr von AWS Big Data