弹性推理服务快速上手指南

滴滴云技术支持发表于:2018年12月28日 17:57:08更新于:2019年06月19日 16:19:49

滴滴云弹性推理服务EIS实现了深度学习推理服务的线上发布和托管,本教程通过一个Inceptionv3的例子说明滴滴云弹性推理服务EIS如何使用。

在EIS上发布一个推理服务需要以下步骤:

  1. 预处理模型文件

  2. 将模型文件上传到滴滴云对象存储(S3)

  3. 创建模型

  4. 上传模型文件

  5. 创建推理服务

  6. 执行推理任务

预处理模型文件

 

滴滴云弹性推理服务支持TensorFlow SavedModel模型格式。

TensorFlow导出SavedModel模型格式参见:https://help.didiyun.com/hc/kb/article/1288690/

Keras/Checkpoint转换为SavedModel格式参见:https://help.didiyun.com/hc/kb/article/1288691/

本示例Inception模型目录结构如下:

inception/
 1/
   saved_model.pb
   variables/
      variables.data-00000-of-00001
     variables.index

注意:请将所有的文件放到一个以数字命名的目录下,如本示例的“1”。

滴滴云弹性推理服务支持压缩的模型文件,压缩文件的格式支持tar、tar.gz、tar.bz2、tgz、zip,在这里我们把inceptionv3模型文件压缩成tar格式。

将模型文件上传到对象存储

若您的滴滴云账户下尚没有对象存储,您需要先创建一个对象存储桶,然后将压缩好的模型文件上传到对象存储桶中。

创建滴滴云对象存储(S3)

在滴滴云控制台跳转到”存储-》对象存储(S3)“,点击”创建对象存储“:

0015c25f38b7f8721f282687e44eca9

在这里创建一个dlmodels的存储桶:填写名称”dlmodels“,为了保护文件的安全性,这里设置访问权限为”私有“,点击”立即创建“:

0015c25f3a1baba0e08ed1ce19104ab

几秒钟后,在存储桶列表会看到刚才创建的dlmodels存储桶,点击”详情“,进入存储桶,此时就可以上传文件了。

0015c25f3b794e91bccf52e4ab0a9f6

将模型文件上传到滴滴云对象存储(S3)

在存储桶详情页面,点击”上传文件“

0015c25f3ca9ff08928d1391c73ac17

选择文件的权限,这里选择继承存储桶的读写权限,点击”点击上传“按钮,选择压缩好的模型文件,点击”立即上传“按钮。

0015c25f3da03ebdd9fd9633f9b5679

在页面右下角可查看文件的上传进度。

0015c25f3eb886b0c83b97832383385

上传完成后,在文件列表中显示文件的名称和大小,模型文件上传到滴滴云对象存储(S3)成功。

0015c25f3f95ac93c68674ce2f66826

 

创建模型

首先要创建一个模型,然后在这个模型中上传不同版本的模型文件。

需要说明的是创建模型时要指定model spec和模型所用的框架。model spec将会在请求推理服务时用到,请您选用有意义的英文名称。

0015c25f408e71960d6ee552fd5d309

模型创建成功后,可以查看我们创建的模型。

0015c25f41a0473978408898134bee0

上传模型文件

创建好模型好,需要把上传到滴滴云对象存储(S3)上的inception文件同步到模型中。

0015c25f429b2a6628df8e42524f127

点击【上传文件】按钮,需要填写模型文件的S3地址,版本号:

0015c25f436bc2a82a2c5de9c4d8912

模型文件S3地址可通过模型文件在S3中的详情得到:

0015c25f4470c9bfa2d7957b4c24655

点击【复制】按钮,复制文件链接,粘贴到S3地址输入框即可。

模型文件上传成功后,滴滴云弹性推理服务会从S3上同步文件,并检查模型文件的可用性。过段时间后(视模型文件大小而定),模型文件变为可用状态,就可以创建推理服务了。

0015c25f45555a071df4d97f2ca3a14

创建推理服务

进入到推理服务页面,点击【创建推理服务】

 

0015c25f465434dbf482835e72b95ac

选择之前上传的inceptionv3模型文件、配置规格,输入服务名称,点击【立即创建】。

0015c25f472b5d7d8ff72fcffd1589f

服务创建后,等待服务变为可用状态。

0015c25f4873acf967776537b722a52

执行推理任务

当模型推理服务状态为“可用”时,可通过推理服务释放的API执行推理任务。

滴滴云提供了执行推理服务的示例代码,用户可参考示例代码执行自己创建的推理服务。下面以Inception v3为例举例说明其用法。

inference-client 是滴滴云推理服务的 HTTP 客户端示例代码,目前支持C++、golang、java、python等编程语言。这里以Python Client Demo为例,Python文件夹里提供了一个咖菲猫的图片。

inference client GitHub地址: https://github.com/didiyun/inference-client/

cd tensorflow-client/python
pip install -r requirements.txt
sh build-protoc.sh

编辑inception.py。

修改model spec和AppCode,AppCode可在推理服务详情中拿到:

0015cd384d0cb9a807b9503450aa341

 

0015cd385a1a4ebb56f6b613024679a

其中Authorization写法示例是: 'Authorization':  "AppCode ACDDxik6U9DqHp7dZWdfdfEDx09z1y2q"

【注:不能省略AppCode】

其中 model_spec.name 为模型管理页面中用户输入的 model spec

model_spec.signature_name为模型导出的时候指定的,详见模型导出的example


接下来获取推理服务的URL:在我的推理服务页面复制URL链接。

0015c25f4cd8e5a6f473d819b29f017

 

执行如下命令:

python inception.py https://e18e555c.eis.didiyunapi.com/v1/model/predict

得到如下结果

0015c25f4dae8c4412c6acf173161c2

示例图片识别为" taby cat"。

OK,推理服务执行成功!

总结

通过滴滴云弹性推理服务(EIS)可以很方便得创建推理服务,同时滴滴云弹性推理服务(EIS)还提供了推理服务的托管环境,只需调用API即可执行推理任务。

滴滴云推理服务(EIS)支持用户自定义上传的模型,提供了很好的灵活性和便利性。