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.
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.
Dieser Artikel verwendet die folgenden GCP-Dienste.
Bitte erstellen Sie ein Konto, das jeden Dienst betreiben kann.
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".
Stellen Sie den Namen und die Region ein.
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".
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.
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!
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 ...)
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