Acumos机器学习平台的模型打包与共享部署
Posted 跳动的数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Acumos机器学习平台的模型打包与共享部署相关的知识,希望对你有一定的参考价值。
说背景有点老生常谈了,那就不说了,直奔主题吧。
现如今,机器学习平台很多,根据笔者的浅薄认识,应该没有一家公司提供的平台能解决所有的环境的问题,比如有:
微软的Azure, https://docs.azure.cn/
谷歌的Cloud AI
亚马逊的AWS ML
在未来AI 普及的前提,ML模型的封装以及容器化镜像的运行方式是要解决的一个挑战,这样的话就可以很方便去共享、使用部署模型。
下图是对ML模型共享开源平台的对比
Acumos流程设计
上传:从一个贡献者开始(即建模者,数据科学家)将预先训练好的本地模型上传到Acumos上。参与者能够使用各种现有的ML库来构建和训练他的ML模型。训练的框架及语言不做过多的限制,由贡献者喜好而定。
发布:上传后,模型存储在一个私人区域,只有贡献者才能访问。然后,贡献者可以选择何时以及如何共享他的模型。由于模型是封装的,并以“黑盒子”的形式存在,因此发布时需要参与者描述模型的元数据,例如功能描述、输入和输出格式以及模型类别。其他用户可以根据元数据搜索模型并找到合适的模型。
预测:Acumos平台将上传的模型打包成Docker映像中的微服务,该映像可以部署并执行其功能(预测、分类等)。一旦部署,用户就可以向这个正在运行的微服务发送输入,并通过restfulapi接收其输出。
Acumos架构
模型接口统一
Acumos的一个特点是它的拖放设计器。为了能够安全地重用和组合模型,我们需要理解和描述模型的接口(即输入和输出)。Acumos使用ProtocolBuffers提供跨语言和跨平台支持。ProtocolBuffers用于序列化训练和测试数据,以便在本地客户端和服务之间以及服务之间进行传输。ProtocolBuffers支持多种语言,并且是跨平台的。ProtocolBuffers最大优点是,与类似XML的方案相比,它紧凑高效,能够处理大量数据。
模型序列化
上传模型时,Acumos API需要在本地序列化模型,然后在Acumos平台内反序列化。其中最具挑战性的方面是理解模型的软件依赖性。Acumos不需要用户手动提供依赖关系列表;反之,我们通过内省模型来推断这些依赖关系。在Pythoy client库中,在序列化期间遍历对象,然后标识和记录所需的库。此外,使用静态分析技术来检查源代码并找到所需的依赖。
微服务生成与部署
Acumos平台将模型打包为Docker映像,可将其部署到适当的运行时环境中。Docker镜像存储在Acumos数据库中。最终用户可以下载Docker映像并启动 Dockerized 模型服务。可以通过启动的模型服务进行预测。
最后一步是将工作应用程序部署到运行时系统中。Acumos将解决方案打包成Docker映像,然后可以将其部署到任何Docker环境中,并通过一组容器管理工具(如Kubernetes)进行管理。这样的镜像可以很容易地部署到Google云、Azure、AWS或其他流行的云服务,部署到任何企业数据中心或任何实时环境,只要它支持Docker。然后应用程序开发人员可以通过Restful API使用。
示例
总结
通过工程化的手段与容器化特性相结合,实现模型标准与部署的灵活性。
参考
Packaging and Sharing Machine Learning Models via the Acumos AI Open Platform
以上是关于Acumos机器学习平台的模型打包与共享部署的主要内容,如果未能解决你的问题,请参考以下文章