TensorFlow Servieren - AWS Deep Learning AMIs

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

TensorFlow Servieren

TensorFlow Serving ist ein flexibles, leistungsstarkes Serversystem für Modelle des maschinellen Lernens.

Auf dem tensorflow-serving-api ist Deep Learning AMI mit Conda vorinstalliert! Sie finden ein Beispielskript zum Trainieren, Exportieren und Bereitstellen eines MNIST Modells. ~/examples/tensorflow-serving/

Um eines dieser Beispiele auszuführen, stellen Sie zunächst AMI mit Conda eine Verbindung zu Ihrem Deep Learning her und aktivieren Sie die TensorFlow Umgebung.

$ source activate tensorflow2_p310

Jetzt setzen Sie die Verzeichnisse auf den Ordner mit den Beispiel-Skripts.

$ cd ~/examples/tensorflow-serving/

Bereitstellen eines vorgeschulten Inception-Modells

Im Folgenden finden Sie ein Beispiel, mit dem Sie die Bereitstellung verschiedener Modelle wie Inception testen können. In der Regel benötigen Sie ein servierbares Modell und Client-Skripte, die bereits auf Ihre heruntergeladen wurden. DLAMI

Bereitstellen und Testen von Inference mit einem Inception-Modell
  1. Laden Sie das Modell herunter.

    $ curl -O https://s3-us-west-2.amazonaws.com/tf-test-models/INCEPTION.zip
  2. Entpacken Sie das Modell.

    $ unzip INCEPTION.zip
  3. Laden Sie das Bild eines Huskys herunter.

    $ curl -O https://upload.wikimedia.org/wikipedia/commons/b/b5/Siberian_Husky_bi-eyed_Flickr.jpg
  4. Starten Sie den Server. Beachten Sie, dass Sie in Amazon Linux das Verzeichnis, das für model_base_path verwendet wird, von /home/ubuntu in /home/ec2-user ändern müssen.

    $ tensorflow_model_server --model_name=INCEPTION --model_base_path=/home/ubuntu/examples/tensorflow-serving/INCEPTION/INCEPTION --port=9000
  5. Wenn der Server im Vordergrund läuft, müssen Sie eine weitere Terminalsitzung starten, um fortzufahren. Öffnen Sie ein neues Terminal und aktivieren Sie es TensorFlow mitsource activate tensorflow2_p310. Verwenden Sie anschließend den von Ihnen bevorzugten Texteditor, um ein Skript mit folgendem Inhalt zu erstellen. Geben Sie ihr den Namen inception_client.py. Dieses Skript verwendet einen Image-Dateinamen als Parameter und ruft ein Voraussageergebnis von dem vorgeschulten Modell ab.

    from __future__ import print_function import grpc import tensorflow as tf import argparse from tensorflow_serving.apis import predict_pb2 from tensorflow_serving.apis import prediction_service_pb2_grpc parser = argparse.ArgumentParser( description='TF Serving Test', formatter_class=argparse.ArgumentDefaultsHelpFormatter ) parser.add_argument('--server_address', default='localhost:9000', help='Tenforflow Model Server Address') parser.add_argument('--image', default='Siberian_Husky_bi-eyed_Flickr.jpg', help='Path to the image') args = parser.parse_args() def main(): channel = grpc.insecure_channel(args.server_address) stub = prediction_service_pb2_grpc.PredictionServiceStub(channel) # Send request with open(args.image, 'rb') as f: # See prediction_service.proto for gRPC request/response details. request = predict_pb2.PredictRequest() request.model_spec.name = 'INCEPTION' request.model_spec.signature_name = 'predict_images' input_name = 'images' input_shape = [1] input_data = f.read() request.inputs[input_name].CopyFrom( tf.make_tensor_proto(input_data, shape=input_shape)) result = stub.Predict(request, 10.0) # 10 secs timeout print(result) print("Inception Client Passed") if __name__ == '__main__': main()
  6. Führen Sie nun das Skript aus und geben Sie Server-Standort sowie Port und Dateinamen des Husky-Bilds als Parameter weiter.

    $ python3 inception_client.py --server=localhost:9000 --image Siberian_Husky_bi-eyed_Flickr.jpg

Trainiere und diene einem MNIST Model

Für dieses Tutorial exportieren wir ein Modell und stellen es mit der Anwendung tensorflow_model_server bereit. Schließlich können Sie den Modell-Server mit einem Beispiel-Client-Skript testen.

Führen Sie das Skript aus, das ein MNIST Modell trainiert und exportiert. Als einziges Argument für das Skript müssen Sie einen Ordnerspeicherort angeben, wo es das Modell speichern kann. Hier können wir es einfach in mnist_model ablegen. Das Skript erstellt den Ordner für Sie.

$ python mnist_saved_model.py /tmp/mnist_model

Haben Sie Geduld, da dieses Skript kann eine Weile brauchen kann, bevor es etwas ausgibt. Wenn das Training abgeschlossen ist und das Modell schließlich exportiert wurde, sollten Sie Folgendes sehen:

Done training! Exporting trained model to mnist_model/1 Done exporting!

Ihr nächster Schritt besteht darin, den tensorflow_model_server auszuführen, um das exportierte Modell bereitzustellen.

$ tensorflow_model_server --port=9000 --model_name=mnist --model_base_path=/tmp/mnist_model

Ein Client-Skript wird bereitgestellt, damit Sie den Server testen können.

Wenn Sie einen Test durchführen, müssen Sie ein neues Terminal-Fenster öffnen.

$ python mnist_client.py --num_tests=1000 --server=localhost:9000

Weitere Funktionen und Beispiele

Wenn Sie mehr über TensorFlow Serving erfahren möchten, besuchen Sie die TensorFlow Website.

Sie können TensorFlow Serving auch mit Amazon Elastic Inference verwenden. Weitere Informationen finden Sie in der Anleitung zur Verwendung von Elastic Inference with TensorFlow Serving.