深度学习 AMI
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

推理

本部分将介绍如何使用 MXNet 和 TensorFlow 在 EC2 的深度学习容器上运行推理。

有关 AWS Deep Learning Containers的完整列表,请参阅Deep Learning Containers映像

注意

MKL 用户:读取 AWS Deep Learning Containers MKL 建议以获得最佳训练或推理性能。

TensorFlow 推理

为了演示如何将 Deep Learning Containers 用于推理,我们将以一个简单的“half plus two”模型为例来使用 TensorFlow Serving。我们建议使用适用于 TensorFlow 的Deep Learning Base AMI。登录实例后,运行以下命令:

$ git clone -b r1.14 https://github.com/tensorflow/serving.git $ cd serving $ git checkout r1.14

现在,我们可以针对此模型使用Deep Learning Containers来启动 TensorFlow Serving。请注意,与用于训练的Deep Learning Containers不同,模型处理将在运行容器后立即开始,并且作为后台进程运行。

  • 对于 CPU:

    $ docker run -p 8500:8500 -p 8501:8501 --name tensorflow-inference --mount type=bind,source=$(pwd)/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu,target=/models/saved_model_half_plus_two -e MODEL_NAME=saved_model_half_plus_two -d <cpu inference container>

    例如:

    $ docker run -p 8500:8500 -p 8501:8501 --name tensorflow-inference --mount type=bind,source=$(pwd)/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu,target=/models/saved_model_half_plus_two -e MODEL_NAME=saved_model_half_plus_two -d 763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference:1.14.0-cpu-py36-ubuntu18.04
  • 对于 GPU:

    $ nvidia-docker run -p 8500:8500 -p 8501:8501 --name tensorflow-inference --mount type=bind,source=$(pwd)/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_gpu,target=/models/saved_model_half_plus_two -e MODEL_NAME=saved_model_half_plus_two -d <gpu inference container>

    例如:

    $ nvidia-docker run -p 8500:8500 -p 8501:8501 --name tensorflow-inference --mount type=bind,source=$(pwd)/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_gpu,target=/models/sad_model_half_plus_two -e MODEL_NAME=saved_model_half_plus_two -d 763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference:1.14.0-gpu-py36-cu100-ubuntu16.04

现在,我们可以通过 AWS Deep Learning Containers运行推理。

$ curl -d '{"instances": [1.0, 2.0, 5.0]}' -X POST http://127.0.0.1:8501/v1/models/saved_model_half_plus_two:predict

输出将类似如下:

{ "predictions": [2.5, 3.0, 4.5 ] }

注意

如果您想要调试容器的输出,可以使用名称来附加输出:

$ docker attach <your docker container name>

在此示例中,我们使用的是 tensorflow-inference

MXNet 推理

为开始使用 MXNet 运行推理,我们将使用来自公有 S3 存储桶的一个预先训练好的模型。

对于 CPU 实例,运行:

$ docker run -itd --name mms -p 80:8080 -p 8081:8081 <your container image id> \ mxnet-model-server --start --mms-config /home/model-server/config.properties \ --models squeezenet=https://s3.amazonaws.com/model-server/models/squeezenet_v1.1/squeezenet_v1.1.model

对于 GPU 实例,运行:

$ nvidia-docker run -itd --name mms -p 80:8080 -p 8081:8081 <your container image id> \ mxnet-model-server --start --mms-config /home/model-server/config.properties \ --models squeezenet=https://s3.amazonaws.com/model-server/models/squeezenet_v1.1/squeezenet_v1.1.model

注意:配置文件包含在容器中。

在启动您的服务器后,现在您可以使用以下命令从不同的窗口来运行推理:

$ curl -O https://s3.amazonaws.com/model-server/inputs/kitten.jpg curl -X POST http://127.0.0.1/predictions/squeezenet -T kitten.jpg

一旦您使用完容器,即可使用以下命令将其删除:

$ docker rm -f mms