X

Neuste Trends, Tipps, Strategien &
Events rund um das Thema Cloud

Machine Learning Modelle als Service für autonome Datenbanken – so funktioniert's

Für ein datengetriebenes Unternehmen ist minimaler Zeitaufwand stets ein kritischer Faktor. Das gilt zum Beispiel auch bei der Zeit für die Entwicklung eines Algorithmus für das maschinelle Lernen, der auf Echtzeitdaten trainiert wird. Gut geeignet ist dafür eine Architektur, die sich leicht in einen Service zum Erstellen von  Prognosen oder Klassifizierungen verwandeln lässt.

 

Auf einen Blick: Machine Learning Modelle als Service für autonome Datenbanken

Entwicklung eines Algorithmus' für Machine Learning Modellen als Service auf der Oracle Autonomous Database – Schritt für Schritt anschaulich erklärt.

 

Wie bereits in "Machine Learning on Autonomous Database: Ein praktisches Beispiel" erwähnt, bietet die Oracle Autonomous Database eine  Umgebung für Machine Learning, in der es möglich ist, einen der verfügbaren Algorithmen sofort mit PL/SQL Apache Zeppelin Notebooks zu trainieren. Kürzlich wurden mehrere Tools wie Oracle Application Express (APEX), Oracle SQL Developer Web und Oracle REST Data Services (ORDS) hinzugefügt. Diese sind traditionell für Oracle Database On-Premise verfügbar, so dass Entwickler schnell neue datengesteuerte Anwendungen entwickeln und bereitstellen können.

In diesem Beitrag werde ich Schritt für Schritt aufzeigen, wie ein auf einem Arbeitsblatt (Notebook, Apache Zeppelin) trainiertes ML Model als REST-Service zur Verfügung gestellt wird. Das Modell muss dabei nicht die DB verlassen, in der es trainiert wurde. Beim Aufruf werden die je nach Fall vorliegenden Parameter als JSON Dokument mitgegeben. Entsprechend erhalten wir die Bewertung.

Vorab noch besten Dank an den Kollegen Luca Postacchini, der bei diesem Tutorial maßgeblich geholfen hat.

 

Für die Entwicklung mit maschinellem Lernen wählen Sie einen Benutzer, der auf der Seite "Manage Oracle ML Users" erstellt wird. Er soll hier MLUSER heißen.

Als Beispiel verwenden Sie eines der in der Autonomous Database verfügbaren Notebook-Templates, das "Classification Prediction Model". Dieses Notebook sagt voraus, bei welchen Kunden mit hoher Wahrscheinlichkeit positive Rückmeldungen auf ein Affinity Card Treueprogramm zu erwarten sind. Wählen Sie die Vorlage aus und klicken Sie auf die Schaltfläche "Create Notebook"die nach der Vorlagenauswahl aktiviert wird.
 

 

Um das soeben erstellte Notebook auszuführen, müssen Sie in Bezug auf Interpreter  Verbindungen aktivieren, da als Voreinstellung nur „%md“ ausgewählt ist. Befolgen Sie dazu die Angaben in dieser Abbildung:

 

Führen Sie alle Absätze aus, die in das Notebook aufgenommen wurden; das ist alles  gut dokumentiert. Konzentrieren Sie sich jetzt auf den Datensatz, mit dem das Modell trainiert wurde: die Tabelle SUPPLEMENTARY_DEMOGRAPHICS2. Hier wurde eine 70 prozentige  Teilmenge verwendet, um einen einfachen Entscheidungsbaum-Algorithmus zu trainieren. Das Modell wird als "N1_CLASS_MODEL" gespeichert.

Fügen Sie am Ende des Notebooks einen Absatz hinzu, um das als Stored Procedure trainierte Modell zu registrieren:

%script
CREATE OR REPLACE PROCEDURE post_prediction (
  p_CUST_ID IN  n1_test_data.CUST_ID%TYPE,
  p_EDUCATION IN  n1_test_data.EDUCATION%TYPE,
  p_OCCUPATION IN  n1_test_data.OCCUPATION%TYPE,
  p_HOUSEHOLD_SIZE IN  n1_test_data.HOUSEHOLD_SIZE%TYPE,
  p_YRS_RESIDENCE IN  n1_test_data.YRS_RESIDENCE%TYPE,
  p_BULK_PACK_DISKETTES IN  n1_test_data.BULK_PACK_DISKETTES%TYPE,
  p_FLAT_PANEL_MONITOR IN  n1_test_data.FLAT_PANEL_MONITOR%TYPE,
  p_HOME_THEATER_PACKAGE IN n1_test_data.HOME_THEATER_PACKAGE%TYPE,
  p_BOOKKEEPING_APPLICATION IN 
n1_test_data.BOOKKEEPING_APPLICATION%TYPE,
  p_PRINTER_SUPPLIES IN  n1_test_data.PRINTER_SUPPLIES%TYPE,
  p_OS_DOC_SET_KANJI IN  n1_test_data.OS_DOC_SET_KANJI%TYPE,
  p_Y_BOX_GAMES IN n1_test_data.Y_BOX_GAMES%TYPE,
  y_pred OUT number
) AS y_temp NUMBER;

BEGIN

SELECT PREDICTION ( 
 N1_CLASS_MODEL USING
   p_CUST_ID AS CUST_ID,
   p_EDUCATION AS EDUCATION,
   p_OCCUPATION AS OCCUPATION,
   p_HOUSEHOLD_SIZE AS HOUSEHOLD_SIZE,
   p_YRS_RESIDENCE AS YRS_RESIDENCE,
   p_BULK_PACK_DISKETTES AS BULK_PACK_DISKETTES,
   p_FLAT_PANEL_MONITOR as FLAT_PANEL_MONITOR,
   p_HOME_THEATER_PACKAGE AS HOME_THEATER_PACKAGE,
   p_BOOKKEEPING_APPLICATION AS BOOKKEEPING_APPLICATION ,
   p_PRINTER_SUPPLIES AS PRINTER_SUPPLIES,  
   p_OS_DOC_SET_KANJI AS OS_DOC_SET_KANJI,
  p_Y_BOX_GAMES AS Y_BOX_GAMES
) INTO y_temp
FROM DUAL;

y_pred := y_temp;

END post_prediction;

 

Nur ein paar Anmerkungen zu diesem Code:
•        n1_test_data.CUST_ID%TYPE: Verwenden Sie %TYPE, um den Parametertyp entkoppelt zu definieren;
•    y_pred OUT number: Definieren Sie eine Ausgabevariable, um das Vorhersageergebnis festzulegen.

Wenn das im Notebook läuft, erhalten Sie die Meldung: "Procedure POST_PREDICTION compiled." In der Entwicklungsphase ist es besser, das Verfahren im Oracle SQL Developer Web zu testen (siehe weiter unten).

Jetzt zu den neuen Modulen, die in der Autonomous Database enthalten sind und die Sie nutzen werden, um den REST-Dienst zu erstellen.

Klicken Sie in den "Autonomous Database Details" Ihrer DB-Instanz auf "Service Console":

 

Auf diese Weise kommen Sie in den Bereich, in dem Sie normalerweise die Machine Learning Umgebung finden. Hier geht’s zu den neuen Diensten: "SQL Developer Web" und "APEX."

 

 

Zuerst müssen Sie APEX für den Machine-Learning-Benutzer aktivieren, also Ihren MLUSER. Als ADMIN können Sie SQL Developer Web ausführen, um die Konfigurations-SQL-Anweisungen laufen zu lassen. Führen Sie diesen Code im Arbeitsblatt aus:

 

BEGIN

ords_admin.enable_schema(
  p_enabled => TRUE,
  p_schema => ‘MLUSER’,
  p_url_mapping_type => ‘BASE_PATH’,
  p_url_mapping_pattern => ‘mluser’,
  p_auto_rest_auth => NULL
);

commit;

END;

 

Das p_url_mapping_pattern bestimmt den ersten Teil der REST-URI.

Es ist außerdem sinnvoll, wenn Sie SQL Developer Web mit dem MLUSER-Benutzer verwenden, um die Stored Procedure "post_prediction" zu testen, bevor Sie sie in Ihr Notebook aufnehmen. Auf diese Weise sehen Sie, welche Fehler bei der Kompilierung auftreten können.

Wenn Sie aus diesem oder einem anderen Grund Zugriff auf SQL Developer Web benötigen, speichern Sie z.B. die ADMIN-URL:

https://oracleinstance.com/ords/admin/_sdw/?nav=worksheet

und ändern Sie "admin" in "mluser". Auf diese Weise werden Sie nach den Zugangsdaten des Benutzers gefragt und Sie melden sich an.

Nun greifen Sie noch als ADMIN auf APEX zu, wählen aber "Administration Services":

 

 

… und klicken dann auf die Schaltfläche "Create Workspace":

 

Wählen Sie den Benutzer und geben Sie einen Namen für den Arbeitsbereich an:

 

Kehren Sie nun zur Konsole zurück und greifen auf APEX als Benutzer MLUSER in dessen Arbeitsbereich zu:

 

In der APEX-Umgebung können Sie einen REST-Datenservice zusätzlich zu der Stored Procedure erstellen, die Ihr Machine Learning Model umschließt.

 

Wenn Sie nun die folgende Meldung sehen:

 

… dann ist im vorherigen Schritt der ORDS-Registrierung für den Benutzer MLUSER etwas schiefgegangen. Kein Problem – Sie können das gleiche tun, wenn Sie auf die Schaltfläche "Register Schema with ORDS" klicken.

Dann können Sie ein Modul erstellen, um alle Dienste im Zusammenhang mit den Algorithmen des maschinellen Lernens zu sammeln:

 

In diesem Modell definieren Sie den Einstiegspunkt für den trainierten Klassifikationsalgorithmus namens "affinity_prediction":

 

Stellen Sie "Http Entity Tag Type" auf None und "Priority" auf 0. Jetzt ist der Moment gekommen, die POST-Anfrage zu definieren, um den Aufruf der Stored Procedure zu verarbeiten. Klicken Sie auf "Create Handler" in der rechten unteren Ecke der APEX-Konsole.

Wählen Sie POST als "Method" und setzen Sie "application/json" in der Reihenfolge "Mime Type Allowed", um eine Json-Datei als Body zu veröffentlichen.

 

 

Fügen Sie in den Quellcode den Code ein, um die Parameter aus der Json-Datei, die im Post gesendet wurde, an die Stored Procedure zu übergeben:

begin MLUSER.post_prediction
(
 :p_CUST_ID ,
 :p_EDUCATION ,
 :p_OCCUPATION ,
 :p_HOUSEHOLD_SIZE,
 :p_YRS_RESIDENCE ,
 :p_BULK_PACK_DISKETTES ,
 :p_FLAT_PANEL_MONITOR ,
 :p_HOME_THEATER_PACKAGE,
 :p_BOOKKEEPING_APPLICATION,
 :p_PRINTER_SUPPLIES ,
 :p_OS_DOC_SET_KANJI ,
 :p_Y_BOX_GAMES,
 :y_pred 
); 
end;

 

Die letzte Variable "y_pred" muss in der Konfiguration deklariert werden, um die Antwort als Json-Datei anzugeben; dazu auf die Schaltfläche "Add Row" klicken und Parameter wie in der Abbildung dargestellt einstellen:

 

Auf diese Weise binden Sie den Ausgang an die "RESPONSE". Die Vorhersage hat den Typ NUMBER, wählen Sie daher "DOUBLE" für den Antworttyp. In diesem Teil sollten Sie wirklich gut aufpassen, um sich Kopfschmerzen während der Konfiguration zu ersparen.

 

 

Jetzt haben Sie die "Full URL", die Sie in Ihrem REST-Client verwenden können:

 

Mit jedem REST-Client, wie z.B. Postman, können Sie die Dienste testen, setzen Sie hierfür als Inhalt einen JSON-Abstrakt wie diesen:

{ 
  "p_CUST_ID": 103657,
  "p_EDUCATION”: "Bach.",
  "p_OCCUPATION”:"Prof.",
  "p_HOUSEHOLD_SIZE":"3",
  "p_YRS_RESIDENCE": 6, 
  "p_BULK_PACK_DISKETTES": 0,
  "p_FLAT_PANEL_MONITOR": 0,
  "p_HOME_THEATER_PACKAGE":1,
  "p_BOOKKEEPING_APPLICATION":1,
  "p_PRINTER_SUPPLIES":1,
  "p_OS_DOC_SET_KANJI":0, 
  "p_Y_BOX_GAMES":0
}

 

… wobei Sie auf die in den Feldern verwendeten Typen achten müssen, da sonst die automatische Konvertierung zu falschen Ergebnissen führen könnte.

In "Content-Type" stellen Sie "application/json" ein.

Wenn alles gutgegangen ist, bekommen Sie eine Antwort wie diese:

{
 "y_pred": 1.0
}

 

Dieser Service ist frei zugänglich und kann ohne jede Berechtigung genutzt werden. Wenn Sie ihn schützen wollen, indem Sie nur MLUSER autorisieren, erstellen Sie eine neue Berechtigung, z. B. "affinity_priv":

 

Setzen Sie die Properties nun so:

 

Fügen Sie das Muster für das zu schützende Modul hinzu. In diesem Fall sind alle Endpunkte "/mlmodel/*" :

 

Nach diesem Schritt benötigen Sie eine Basisauthentifizierung mit MLUSER-Benutzerkenndaten, um auf den gerade freigegebenen REST-Dienst zugreifen zu können.

Weitere Informationen finden Sie in der ORDS-Dokumentation.

 

Um mehr über KI und maschinelles Lernen zu erfahren, besuchen Sie die Oracle KI-Seite.

 

Oder sprechen Sie mit mir, per E-MailLinkedInXing oder Twitter. Sabine Leitner, Sr. Marketing Manager.

Kommentieren

Kommentare ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.