滴滴云弹性推理服务EIS实现了深度学习推理服务的线上发布和托管,本教程通过一个Inceptionv3的例子说明滴滴云弹性推理服务EIS如何使用。
在EIS上发布一个推理服务需要以下步骤:
预处理模型文件
将模型文件上传到滴滴云对象存储(S3)
创建模型
上传模型文件
创建推理服务
执行推理任务
预处理模型文件
滴滴云弹性推理服务支持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)“,点击”创建对象存储“:
在这里创建一个dlmodels的存储桶:填写名称”dlmodels“,为了保护文件的安全性,这里设置访问权限为”私有“,点击”立即创建“:
几秒钟后,在存储桶列表会看到刚才创建的dlmodels存储桶,点击”详情“,进入存储桶,此时就可以上传文件了。
将模型文件上传到滴滴云对象存储(S3)
在存储桶详情页面,点击”上传文件“
选择文件的权限,这里选择继承存储桶的读写权限,点击”点击上传“按钮,选择压缩好的模型文件,点击”立即上传“按钮。
在页面右下角可查看文件的上传进度。
上传完成后,在文件列表中显示文件的名称和大小,模型文件上传到滴滴云对象存储(S3)成功。
创建模型
首先要创建一个模型,然后在这个模型中上传不同版本的模型文件。
需要说明的是创建模型时要指定model spec和模型所用的框架。model spec将会在请求推理服务时用到,请您选用有意义的英文名称。
模型创建成功后,可以查看我们创建的模型。
上传模型文件
创建好模型好,需要把上传到滴滴云对象存储(S3)上的inception文件同步到模型中。
点击【上传文件】按钮,需要填写模型文件的S3地址,版本号:
模型文件S3地址可通过模型文件在S3中的详情得到:
点击【复制】按钮,复制文件链接,粘贴到S3地址输入框即可。
模型文件上传成功后,滴滴云弹性推理服务会从S3上同步文件,并检查模型文件的可用性。过段时间后(视模型文件大小而定),模型文件变为可用状态,就可以创建推理服务了。
创建推理服务
进入到推理服务页面,点击【创建推理服务】
选择之前上传的inceptionv3模型文件、配置规格,输入服务名称,点击【立即创建】。
服务创建后,等待服务变为可用状态。
执行推理任务
当模型推理服务状态为“可用”时,可通过推理服务释放的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可在推理服务详情中拿到:
其中Authorization写法示例是: 'Authorization': "AppCode ACDDxik6U9DqHp7dZWdfdfEDx09z1y2q"
【注:不能省略AppCode】
其中 model_spec.name 为模型管理页面中用户输入的 model spec
model_spec.signature_name为模型导出的时候指定的,详见模型导出的example
接下来获取推理服务的URL:在我的推理服务页面复制URL链接。
执行如下命令:
python inception.py https://e18e555c.eis.didiyunapi.com/v1/model/predict
得到如下结果
示例图片识别为" taby cat"。
OK,推理服务执行成功!
总结
通过滴滴云弹性推理服务(EIS)可以很方便得创建推理服务,同时滴滴云弹性推理服务(EIS)还提供了推理服务的托管环境,只需调用API即可执行推理任务。
滴滴云推理服务(EIS)支持用户自定义上传的模型,提供了很好的灵活性和便利性。