阿里 深度学习推理框架_如何通过Knative无服务器框架构建深度学习推理

阿里 深度学习推理框架

在某些学术界和行业界,深度学习正在获得巨大的动力。 推理(基于预训练模型从现实世界数据中检索信息的能力)是深度学习应用程序的核心。

深度学习推理可用于在图像到达对象存储时对其进行分类,无论它们是托管在诸如Amazon S3或Azure Blob之类的公共云中,还是使用诸如Ceph RADOS网关 (RGW)之类的内部接口的图像。 此用例的常规工作流程是,当更新映像时,它将触发事件,并且对象存储将事件发布给其订阅者。 订户然后下载图像并将其发送到推理服务。 可以在AWS的Simple Queue Service中找到这种事件触发机制。

Knative ,Kubernetes原生的无服务器框架,并开发了用于深度学习推理服务功能的rgw-pubsub-api

RGW PubSub

RGW PubSub利用了RGW的多站点系统,并提供了一种插件机制,使您可以轻松地针对对象更改创建不同的动作。 一个示例是元数据索引插件,该插件对系统中任何对象的元数据进行索引。 添加的pubsub同步模块提供了一种在系统中发布和订阅对象修改的机制。

RGW PubSub提供了一个REST API,可用于配置和使用此功能。

一切都是基于用户的。 用户可以定义主题。 通过定义包括存储桶(用户拥有)和事件类型(创建对象,删除对象)的通知,可以将更改发布到该主题。 一个主题可能有多个发布者。 必须创建一个订阅才能获得这些事件,并且每个主题可以有多个订阅。 事件可以从订阅拉出,然后ACKED ,一个动作,消除该事件。 还实施了推动机制; 但是,仍在开发可靠且可扩展的推动力。 未确认的事件最终将被删除。

我们实现了一个golang客户端来与RGW PubSub服务进行交互。 Golang客户端由RGW PubSub命令行界面(CLI)客户端和Knative事件源使用。

RGW PubSub与Knative集成

Knative具有三个核心组件:事件,构建和服务。 Eventing是从各种来源(例如GitHub,GCP PubSub和Kubernetes Event)提取外部事件的框架。 一旦事件被拉出,它们将被分派到事件接收器。 常用的接收器是Knative服务,这是运行由服务功能托管的HTTP(S)服务的内部端点。

我们在Knative的ContainerSource之后对RGW PubSub的Knative事件源进行了建模,该用于运行可以生成事件并分派到事件接收器的容器映像。

PubSub事件源使用RGW PubSub API定期提取事件,将事件发布到事件接收器,然后删除它们。 在接收器的另一端,我们实现了两个推理服务功能:Google Vision和ResNet。

推理服务功能

Google Vision服务功能

该服务功能运行HTTP服务,该服务接受RGW PubSub事件源发布的事件,通过Amazon S3 API从RGW下载图像,并将图像发布到Google Vision服务以获取注释。

要使此功能运行, 请先克隆存储库并编辑service-entry.yamlsubscription.yaml以反映您的本地RGW设置和Google Vision API密钥。

然后运行以下命令:


   
   
kubectl apply -f deploy/google-vision-svc/service-entry.yaml
kubectl apply -f deploy/google-vision-svc/subscription.yaml

服务功能运行后,通过将猫的图像上传到RGW中进行测试:


   
   
# wget https://r.hswstatic.com/w_907/gif/tesla-cat.jpg
# ./s3 put buck/cat1.jpg --in-file=./tesla-cat.jpg
# ./s3 put buck/cat2.jpg --in-file=./tesla-cat.jpg

检查服务容器的日志:


   
   
# kubectl logs -lserving.knative.dev/service=rgwpubsub-svc -c user-container
2018/11/29 16:22:49 Ready and listening on port 8080
2018/11/29 16:23:42 [2018-11-29T16:23:41Z] application/json rgwpubsub. Object: "cat1.jpg"  Bucket: "buck"
2018/11/29 16:23:43 label: cat, Score: 0.993347
2018/11/29 16:25:01 [2018-11-29T16:25:01Z] application/json rgwpubsub. Object: "cat2.jpg"  Bucket: "buck"
2018/11/29 16:25:02 label: cat, Score: 0.993347

猫被识别了!

ResNet服务功能

此服务功能将ResNet与预先训练的ImageNet模型一起使用以对图像进行分类。

首先,编辑service-entry.yamlsubscription-resnet.yaml以反映您的本地RGW设置和Tensorflow服务端点。

接下来,运行以下命令:


   
   
kubectl apply -f deploy/resnet-grpc/service-entry.yaml
kubectl apply -f deploy/resnet-grpc/subscription-grpc.yaml

然后将猫狗图像上传到RGW:


   
   
# wget https://r.hswstatic.com/w_907/gif/tesla-cat.jpg
# wget https://upload.wikimedia.org/wikipedia/commons/d/d9/Collage_of_Nine_Dogs.jpg
#./s3 put buck/dogs.jpg --in-file=./Collage_of_Nine_Dogs.jpg
#./s3 put buck/telsa-cat.jpg --in-file=./tesla-cat.jpg

检查服务容器的日志:


   
   
# kubectl logs -lserving.knative.dev/service=rgwpubsub-svc -c user-container
2018/11/29 18:52:23 Ready and listening on port 8080
2018/11/29 18:54:31 [2018-11-29T18:54:31Z] application/json rgwpubsub. Object: "dogs.jpg"  Bucket: "buck"
2018/11/29 18:54:32 classes: [162]
2018/11/29 18:57:54 [2018-11-29T18:57:51Z] application/json rgwpubsub. Object: "telsa-cat.jpg"  Bucket: "buck"
2018/11/29 18:57:54 classes: [286]

关于ImageNet类,类162 小猎犬和类286是美洲狮,美洲狮,美洲豹,美洲狮,画家,豹,猫长臂猿 。 分类器足够接近。

展望未来

我们期待Ceph RGW PubSub和Knative的更多社区参与。 欢迎提供文稿,测试和错误报告。


Chen Huamin和Yehuda Sadeh-Weinraub将在12月10日至13日在西雅图举行的KubeCon + CloudNativeCon北美会议上展示如何通过Knative无服务器框架构建深度学习推理

翻译自: https://opensource.com/article/18/12/deep-learning-inference

阿里 深度学习推理框架

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值