AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

推出适用于 Apache MXNet 的模型服务器

  • 2019-11-04
  • 本文字数:2540 字

    阅读完需:约 8 分钟

推出适用于 Apache MXNet 的模型服务器

本周早些时候,AWS 宣布推出适用于 Apache MXNet 的模型服务器,这是构建于 Apache MXNet 上的开源组件,用于处理深度学习模型。Apache MXNet 是一种可快速进行训练和推理的可扩展框架,具有易于使用、简明扼要的机器学习 API。工程师们现在可以利用适用于 Apache MXNet 的模型服务器,轻松、快速地对 MXNet 模型进行大规模处理。

什么是适用于 Apache MXNet 的模型服务器?

适用于 Apache MXNet 的模型服务器 (MMS) 是一种开源组件,旨在简化深度学习推理模型的大规模部署任务。部署推理模型并不是无关紧要的任务。它需要收集各种模型构件、设置处理堆栈、初始化并配置深度学习框架、公开终端节点、发送实时指标,以及运行自定义预处理和后处理代码,而这只是众多工程任务中的几项。虽然每项任务都不是特别复杂,但与部署模型相关的所有工作足以使部署过程变得缓慢而繁琐。


MMS 是 AWS 贡献的一款适用于 Apache MXNet 的开源工程工具集,可以极大地简化部署深度学习模型的过程。如果您使用 MMS 部署模型,可以使用以下主要功能:


  • 将所有模型构件打包并导出为单一“模型存档”文件 (其中封装了处理 MXNet 模型的所有必要内容) 的工具作业。

  • 自动设置处理堆栈,其中包括 HTTP 推理终端节点、基于 MXNet 的引擎,所有组件均根据处理的具体模型进行自动配置。

  • 预配置的 Docker 镜像,利用 NGINX、MXNet 和 MMS 进行设置,以实现可扩展的模型处理。

  • 能够自定义推理执行管道中的每个步骤,从模型初始化到预处理和推理,再到对模型输出的后处理。

  • 用于监控推理服务和终端节点的实时运行指标,涵盖延迟、资源利用率和错误。

  • 支持 OpenAPI 规范,可实现轻松集成和自动生成热门堆栈的客户端代码,例如 Java、JavaScript、C# 等等。


可通过 PyPi 程序包使用 MMS,或直接通过模型服务器 GitHub 存储库使用 MMS,它可在 Mac 和 Linux 上运行。对于可扩展的生产使用案例,我们建议使用 MMS GitHub 存储库中提供的预配置 Docker 镜像


下图演示了示例参考架构:


模型处理快速启动

MMS 很容易入门,我们将在以下示例中进行展示。此示例利用了经过预训练的 SqueezeNet v1.1 目标物检测模型,该模型在 MMS Model Zoo 中公开提供。


要开始使用,您需要具有 Python,这是使用 MMS 的唯一先决条件。如果您未安装 Python,请根据 Python 网站上的说明,安装 Python 2.7 或 3.6。


接下来,使用 PyPi 在您所选的机器上安装 MMS。MMS 支持 Mac 和 Linux 操作系统。


$ pip install mxnet-model-server
复制代码


只需要运行 MMS 并向其提供模型存档 URL 或本地文件,即可完成模型的处理:


$ mxnet-model-server --models squeezenet=https://s3.amazonaws.com/model-server/models/squeezenet_v1.1/squeezenet_v1.1.model
复制代码


执行此命令后,MMS 处理将启动:下载并解压缩模型存档,使用模型构件配置服务,并开始在


/squeezenet/predict 终端节点的 localhost、端口 8080 上侦听传入请求 (可配置主机和端口)。


为了测试您新建的服务,让我们通过 HTTP 发送一个推理请求,要求模型对一个图像进行分类:


$ curl -O https://s3.amazonaws.com/model-server/inputs/kitten.jpg$ curl http://127.0.0.1:8080/squeezenet/predict -F "input0=@kitten.jpg"
复制代码


您将会看到与以下内容类似的一条响应,模型识别出图像中的目标物是一只“埃及猫”,概率为 85%。成功啦!


{  "prediction": [    [      {        "class": "n02124075 Egyptian cat",        "probability": 0.8515276312828064      },… (other lower probability predictions) …}
复制代码


要深入了解模型处理,请查看服务器文档

导出用于处理的模型

MMS 可处理以 MMS 模型存档格式打包的模型。它包括命令行界面


mxnet-model-export,用于打包模型构件并导出为单一模型存档文件。导出的模型存档封装了处理模型所需的所有构件和元数据,MMS 在初始化处理终端节点时会用到它。进行处理无需其他模型元数据或资源。


下图阐明了导出过程:



如图所示,打包模型存档所需的必要构件是模型的神经网络架构和参数 (层、运算符和权重),以及服务输入和输出数据类型和张量形状定义。但是,在真实的使用案例中使用模型需要的可不只是神经网络。例如,在为模型提供图像前,许多视觉模型需要对输入图像进行预处理和转换。另一个示例是分类模型,通常需要进行后处理,以便对分类结果进行排序和截断。为了应对这些需求,并将模型完全封装到模型存档中,MMS 可以将自定义处理代码以及所有辅助文件打包到存档中,并在运行时提供这些文件。利用这一强大机制,您可以生成封装了整个处理管道的模型存档:从预处理输入到自定义推理,并在网络输出通过网络返回客户端之前应用类别标签标识符。


要了解有关模型存档导出的更多信息,请查看 MMS 导出文档

了解更多信息并做出贡献

MMS 的设计宗旨是易于使用、灵活和可扩展。除了此篇博文中提到的内容,它还提供其他功能,包括处理终端节点的配置、实时指标和日志、预配置容器映像等。


要了解有关 MMS 的更多信息,我们建议您首先参阅我们的 Single Shot MultiBox Detector (SSD) 教程,您可以通过它了解到如何导出并处理 SSD 模型。在存储库的文档文件夹中提供了更多示例和其他文档。


我们欢迎您以提问、提出请求的方式参与社区讨论并做出贡献,帮助我们进一步开发和扩展 MMS。请访问 awslabs/mxnet-model-server 存储库,开始使用!



补充阅读

了解有关 AWS 和 MXNet 的更多信息!





作者介绍:



Hagay Lupesko 是 AWS 深度学习的工程经理。他专注于构建让开发人员和科学家能够创造智能应用程序的深度学习工具。在业余时间,他喜欢阅读、徒步旅行以及与家人共享天伦之乐。


**



Ruofei Yu 是 AWS 深度学习的软件工程师。**他专注于为软件工程师和科学家构建创新的深度学习工具。在业余时间,他喜欢与朋友和家人共度美好时光。


**



Yao Wang 是 AWS 深度学习的软件工程师。**他专注于为软件工程师和科学家构建创新的深度学习工具。在业余时间,他喜欢徒步旅行、阅读和听音乐。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/introducing-model-server-for-apache-mxnet/


2019-11-04 08:00968

评论

发布
暂无评论
发现更多内容

SAP | 内部表的表类型

暮春零贰

SAP 10月月更 内部表

Webpack中的高级特性

Geek_02d948

webpack

在线问题反馈模块实战(七):安装部署swagger2

bug菌

springboot 项目实战 10月月更

在线问题反馈模块实战(八)​:实现图片上传功能(上)

bug菌

springboot 项目实战 10月月更

深度解读Webpack中的loader原理

Geek_02d948

webpack

Webpack中的plugin插件机制

Geek_02d948

webpack

数据湖(六):Hudi与Flink整合

Lansonli

10月月更 Hudi与Flink整合

【一Go到底】第二十一天---defer

指剑

Go golang 10月月更

“程”风破浪的开发者|镜像仓库迁移的方法

琦彦

学习方法 Harbor 10月月更 “程”风破浪的开发者

ScheduledThreadPoolExecutor踩过最痛的坑

小小怪下士

Java 程序员

Sonatype Nexus 管理员初始密码

HoneyMoose

Fabric8 Docker Maven Plugin 如何让部署的时候执行 Docker 打包推送

HoneyMoose

数据量剧增怎么办?Redis切片集群了解一下

芥末拌个饭吧

后端 redis 底层原理 10月月更

GaussDB(DWS)如何实现实时,批量和交付式查询一站式开发

乌龟哥哥

10月月更

在线问题反馈模块实战(九)​:实现图片上传功能(下)

bug菌

springboot 项目实战 10月月更

你知道Redis有哪些潜在的阻塞点吗

芥末拌个饭吧

后端 redis 底层原理 10月月更

“程”风破浪的开发者|慢慢踏上算法学习之旅

六月暴雪飞梨花

学习方法 算法 10月月更 “程”风破浪的开发者

CentOS部署Harbor镜像仓库

程序员欣宸

Docker 10月月更 habor

Qt|模态窗口如何实现进入页面等待加载数据效果

中国好公民st

c++ qt 10月月更

Webpack插件核心原理

Geek_02d948

webpack

数据开发也能双轮驱动?

乌龟哥哥

10月月更

CentOS 上安装 Sonatype Nexus 仓库

HoneyMoose

Maven docker-maven-plugin 插件 Push 413 错误

HoneyMoose

Vue虚拟dom是如何被创建的

yyds2026

Vue

IP报文在阿里云上的神奇之旅:同地域内云上通信

阿里技术

通信 IP 路由

Python继承还不会,看这篇就够了

芥末拌个饭吧

继承 python 3.5+ 10月月更

React源码中的dom-diff

夏天的味道123

React

【愚公系列】2022年10月 Go教学课程 035-接口和继承和转换与空接口

愚公搬代码

10月月更

Vue中的diff算法深度解析

yyds2026

Vue

HashMap源码分析(三)

知识浅谈

HashMap底层原理 10月月更

推出适用于 Apache MXNet 的模型服务器_技术管理_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章