[PYTHON] Erstellen Sie die Keras AI Prediction Engine in 1 Stunde mit GCP

Einführung

Dieser Artikel ist der 13. Tagesartikel von Puri Puri Appliance Adventskalender 2019.

In diesem Artikel wird der Autor, der als ML-Ingenieur arbeitet, vorstellen, wie die AI-Plattform von GCP, die er normalerweise verwendet, verwendet wird, um die AI-Vorhersage-Engine in einer Stunde auszuführen.

Was ist AI Platform?

In letzter Zeit habe ich das Gefühl, dass die Anzahl der Unternehmen, die versuchen, Produkte mit KI herzustellen, gestiegen ist. Wenn Sie jedoch tatsächlich versuchen, eine KI-Vorhersage-Engine zu erstellen, ist viel Arbeit erforderlich, z. B. das Festlegen der verfügbaren GPU-Ressourcen und deren Skalierung. Der Dienst, der diese Probleme löst, ist "AIPlatfrom".

AI Platform ist einer der Dienste von Google Could Platform. Offizielle Website der AI-Plattform Da Sie das Lernen und Vorhersagen mithilfe der GPU einfach implementieren können, ist es sehr effektiv, wenn Sie Produkte implementieren, die maschinelles Lernen verwenden. Python wird als Sprache unterstützt und das Framework kann "scikit-learn", "TensorFlow", "XGBoost" usw. verwenden.

Setup für GCP erforderlich

Dieser Artikel verwendet die folgenden GCP-Dienste.

Bitte erstellen Sie ein Konto, das jeden Dienst betreiben kann.

Stellen Sie das Keras-Modell bereit

Erstellen wir ein einfaches Modell mit Keras und stellen es bereit.

Die folgenden Schritte sind für die Bereitstellung erforderlich.

Als Beispiel erstellen und implementieren wir ein Modell, das "x ^ 2" für den "Eingabewert x" regressiv vorhersagt. Unten finden Sie den Beispielcode.

keras_model_deploy.py

keras_model_deploy.py


from tensorflow.python.keras.models import Sequential, Model
from tensorflow.python.keras.layers import Dense
import tensorflow as tf
import numpy as np


def create_data():
    data_size = 1000 
    x = [i for i in range(data_size)]
    y = [i**2 for i in range(data_size)]
    return x, y


def create_model() -> Model:
    model = Sequential()
    model.add(Dense(32, activation=tf.nn.relu, input_shape=(1,)))
    model.add(Dense(1))
     
    optimizer = tf.train.RMSPropOptimizer(0.001)
    model.compile(loss='mse', optimizer=optimizer, metrics=['mae'])
    return model


def run_train(x: np.ndarray, y: np.ndarray, model: Model) -> Model:
    history = model.fit(
        x, 
        y, 
        batch_size=1000,
        epochs=100,
        verbose=1,
    )
    return model


def save_model(model: Model) -> None:
    tf.keras.experimental.export_saved_model(
        model,
        "gs://your-buckets/models/sample_model",  #Geben Sie den Pfad des zu speichernden GCS an
        serving_only=False
    )


if __name__ == "__main__":
    x, y = create_data()
    model = create_model()  
    model = run_train(x, y, model)
    print(model.predict([2]))
    save_model(model)

Sie können das Modell mit tf.keras.experimental.export_saved_model in GCS speichern. Dies ist jedoch nur möglich, wenn die Pfadangabe mit gs: // beginnt und wenn Sie einen normalen Pfad angeben, wird dieser in local gespeichert.

Führen Sie diesen Code aus.

output.txt

Epoch 1/100
1000/1000 [==============================] - 0s 62us/sample - loss: 199351844864.0000 - mean_absolute_error: 332684.8750
Epoch 2/100
1000/1000 [==============================] - 0s 1us/sample - loss: 199338442752.0000 - mean_absolute_error: 332671.3750
Epoch 3/100
1000/1000 [==============================] - 0s 1us/sample - loss: 199328612352.0000 - mean_absolute_error: 332661.5938
Epoch 4/100
1000/1000 [==============================] - 0s 1us/sample - loss: 199320403968.0000 - mean_absolute_error: 332653.3438
Epoch 5/100
1000/1000 [==============================] - 0s 1us/sample - loss: 199313096704.0000 - mean_absolute_error: 332646.0312
Epoch 6/100
1000/1000 [==============================] - 0s 1us/sample - loss: 199306379264.0000 - mean_absolute_error: 332639.2812
Epoch 7/100
1000/1000 [==============================] - 0s 1us/sample - loss: 199300087808.0000 - mean_absolute_error: 332633.0000
Epoch 8/100
1000/1000 [==============================] - 0s 1us/sample - loss: 199294124032.0000 - mean_absolute_error: 332627.0000
Epoch 9/100
1000/1000 [==============================] - 0s 1us/sample - loss: 199288389632.0000 - mean_absolute_error: 332621.2500
・
・
・
Epoch 100/100
1000/1000 [==============================] - 0s 1us/sample - loss: 198860079104.0000 - mean_absolute_error: 332191.8438
[[3.183104]]

Die Genauigkeit des Modells ist schlecht, aber wir haben bestätigt, dass es die Vorhersageergebnisse korrekt zurückgibt.

Von hier aus werden wir auf der GCP-Konsole arbeiten und bereitstellen. (Dieselbe Arbeit kann mit dem Befehl "gcloud" ausgeführt werden, aber ich werde sie diesmal nicht einführen.)

Lassen Sie uns zunächst einen Modell-Namespace auf AI Platform erstellen.

Gehen Sie zur Registerkarte AIPlatform-Modelle und klicken Sie auf "Modell erstellen".

スクリーンショット 2019-12-15 21.07.01.png

Stellen Sie den Namen und die Region ein.

スクリーンショット 2019-12-15 21.07.20.png

Hier werden Protokolleinstellungen vorgenommen. Bitte beachten Sie, dass diese Einstellung nicht geändert werden kann.

Schütteln Sie anschließend die Modellversion. Hier verlinken Sie mit dem auf GCS hochgeladenen Modell.

Wählen Sie ein Modell aus und klicken Sie auf "Neue Version".

スクリーンショット 2019-12-15 21.13.49.png

Geben Sie nach Angabe des Namens der Version und der Betriebsumgebung des Modells den Pfad des auf GCS hochgeladenen SavedModel an. Sie können hier auch die Ressourcen (Maschinentyp) festlegen, die verwendet werden sollen. Wählen Sie die gewünschte Ressource entsprechend Ihrer Anwendung aus.

スクリーンショット 2019-12-15 21.15.29.png

Nachdem Sie alle Einstellungen festgelegt haben, wird das Modell beim Erstellen einer Version auf der AI-Plattform installiert. Wenn Sie ein Modell installieren, bietet AI Platform eine API, mit der Sie anhand dieses Modells Vorhersagen treffen können.

Jetzt können Sie die Vorhersage-API aufrufen.

** Hinweis ** AIPlatform verwendet weiterhin GPU-Ressourcen, wenn das Modell installiert wird. Bitte beachten Sie, dass dies dazu führt, dass Sie belastet werden, ohne eine vorausschauende Anfrage zu stellen! !! `` Wir empfehlen Ihnen, die nicht verwendeten Modelle zu löschen!

Holen Sie sich das Ergebnis der Vorhersage

Ich möchte eine Vorhersageanforderung an ein auf AI Platform bereitgestelltes Modell senden und das Ergebnis erhalten.

Wenn Sie eine Anfrage mit Python stellen, ist es einfach, "googleapiclient" zu verwenden.

Bei der Anforderung ist eine Authentifizierung erforderlich. Dies kann jedoch durch Angabe des Pfads einer Anmeldeinformationsdatei, z. B. eines Dienstkontos, in der Umgebungsvariablen "GOOGLE_APPLICATION_CREDENTIALS" behoben werden.

predict.py


from googleapiclient import discovery

project = "your-project-id"
model = "model_sample"

def predict(instances):
    service = discovery.build('ml', 'v1', cache_discovery=False)
    url = f"projects/{project}/models/{model}"

    response = service.projects().predict(
        name=url,
        body={'instances': [instances]}
    ).execute()

    return response


if __name__ == "__main__":
    features = [2]
    prediction = predict(features) 
    print(prediction)

Detaillierte Angaben zu den Argumenten "Name" von "Vorhersage" und "Körper" finden Sie in der Formel von hier. Bitte überprüfen Sie die Referenz.

Bei Ausführung kann das Vorhersageergebnis wie folgt erhalten werden.

output

{'predictions': [{'dense_1': [3.183104]}]}

Jetzt haben Sie eine Vorhersage-Engine gebaut! (Die Genauigkeit ist schlecht, aber ...)

Am Ende

In diesem Artikel wurde das Lernen in der lokalen Umgebung durchgeführt. Sie können jedoch auch mithilfe von GPU-Ressourcen auf der AI-Plattform lernen. Ich denke, es wird eine mächtige Waffe sein, wenn Produkte mit KI hergestellt werden.

Dieses Mal habe ich in einer Stunde eine Vorhersage-Engine mit einem einfachen Keras-Modell erstellt. Ich hoffe es hilft dir.

Recommended Posts

Erstellen Sie die Keras AI Prediction Engine in 1 Stunde mit GCP
Erstellen Sie einfach CNNs mit Keras
Vorhersage der Sinuswelle mit Keras
Erstellen Sie eine Python-Ausführungsumgebung mithilfe der GPU mit der GCP Compute Engine
Schreiben Sie Reversi AI mit Keras + DQN
4/22 Vorhersage der Sinuswelle mit Keras
Aufbau einer KI / maschinellen Lernumgebung mit Python
Dinge, die Sie bei der Stapelvorhersage mit der GCP ML Engine beachten sollten
Erstellen Sie mit Vagrant in 5 Minuten eine Django-Umgebung
Erstellen Sie eine Python3 + -Kolbenumgebung auf der Compute Engine von GCP