ML模型部署-工具箱

Machine Learning模型部署涉及两大工程部分,服务优化和模型优化。服务优化就是大家熟知的后端开发优化,涉及的指标有吞吐量、响应时间、CPU占用和服务内存占用等。而模型优化涉及模型参数量、模型推理时间、内存占用等。

本文将简单介绍有关模型优化的工具库,便于之后需要时进行查阅。

1 推理框架

ONNX

ONNX(Open Neural Network Exchange)是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。它使得不同的人工智能框架(如Pytorch、MXNet)可以采用相同格式存储模型数据并交互。 ONNX的规范及代码主要由微软,亚马逊,Facebook和IBM等公司共同开发,以开放源代码的方式托管在Github上。目前官方支持加载ONNX模型并进行推理的深度学习框架有:PyTorch ,Caffe2, PyTorch, MXNet,TensorRT 和 Microsoft CNTK。

TensorRT

NVIDIA TensorRT™ 是用于高性能深度学习推理的SDK。此 SDK 包含深度学习推理优化器和运行时环境,可为深度学习推理应用提供低延迟和高吞吐量。借助 TensorRT,您可以优化在所有主要框架中训练的神经网络模型,精确校正低精度,并最终将模型部署到超大规模数据中心、嵌入式或汽车车产品平台中。

附带一句,ONNX能转TensorRT格式进行推理加速,也就是各种深度学习框架(PyTorch、TensorFlow等)训练的模型都能间接转为TensorRT进行推理加速。

TensorRT 以 NVIDIA 的并行编程模型 CUDA为基础构建而成,所以TensorRT只能在有NVIDIA GPU的设备上使用。

OpenVINO

OpenVINO 是英特尔推出的一款全面的工具套件,利用其提供的深度学习推理套件(DLDT),能将各种深度学习开源框架中预训练好的模型,在Intel的CPU上快速部署起来。

在模型部署中,在线推理阶段往往需要前处理后处理,前处理如通道变换,取均值,归一化,Resize等,后处理是推理后,需要将检测框等特征叠加至原图等,都可以使用OpenVINO工具套件里的API接口完成。

**深度学习推理套件(DLDT)**分为两部分:

  • 模型优化器(Model Optimizer)
  • 推理引擎(Inference Engine)

关于模型优化器的具体使用过程。将开源框架已训练好的模型通过模型优化器(python脚本工具),转化为OpenVINO推理引擎可以识别的中间表达(xml文件和bin文件,前者是网络结构的描述,后者是权重文件)。模型优化器包括压缩模型和加速[3]。

推理引擎是一个支持C\C++和python的一套API接口,需要开发人员自己实现推理过程的开发。

NCNN

ncnn有腾讯公司推出的,专门为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。[4]

MNN

MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT等场景下也有若干应用。

MNN可以分为Converter和Interpreter两部分。

Converter由Frontends和Graph Optimize构成。前者负责支持不同的训练框架,MNN当前支持Tensorflow(Lite)、Caffe和ONNX(PyTorch/MXNet的模型可先转为ONNX模型再转到MNN);后者通过算子融合、算子替代、布局调整等方式优化图。

Interpreter由Engine和Backends构成。前者负责模型的加载、计算图的调度;后者包含各计算设备下的内存分配、Op实现。在Engine和Backends中,MNN应用了多种优化方案,包括在卷积和反卷积中应用Winograd算法、在矩阵乘法中应用Strassen算法、低精度计算、Neon优化、手写汇编、多线程优化、内存复用、异构计算等。

2 模型服务器

​ 简化模型部署过程的一种方法是使用模型服务器,即专门设计用于在生产中提供机器学习预测的现成的 Web 应用程序。模型服务器可轻松加载一个或多个模型,并自动创建由可扩展 Web 服务器提供支持的预测 API。接下来会介绍常用的模型服务器,并在最后介绍由微软开发的,用于管理整个机器学习项目生命周期的云服务–Microsoft Azure

TensorRT Inference Server

TensorRT Inference Server提供了一个为NVIDIA gpu优化的数据中心推理解决方案。 它通过HTTP或gRPC端点最大化gpu上的推理利用率和性能,允许远程客户机请求对服务器管理的任何模型进行推理,并提供关于延迟和请求的实时指标。

Triton Inference Server

Triton Inference Server提供了一个针对cpu和gpu优化的云和边缘推理解决方案。 Triton支持HTTP/REST和GRPC协议,允许远程客户端请求对服务器管理的任何模型进行推理。 对于边缘部署,Triton是一个具有C API的共享库,允许将Triton的全部功能直接包含在应用程序中。

TorchServe

TorchServe是一款高性能、灵活且易于使用的工具,用于服务于PyTorch模型和torscript模型。模型服务器还可以根据预测请求运行代码预处理和后处理。最后同样重要的一点是,模型服务器还提供对生产至关重要的功能,例如日志记录、监控和安全性等。广为使用的模型服务器有 TensorFlow Serving 和 Multi Model Server。

Azure

Azure 机器学习是微软开发的,一种用于加速和管理机器学习项目生命周期的云服务。 机器学习专业人员、数据科学家和工程师可以在日常工作流中使用它:训练和部署模型,以及管理 MLOps(机器学习生命周期)。

可以在 Microsoft Azure 机器学习中创建模型,也可以使用从开源平台构建的模型,例如 Pytorch、TensorFlow 或 scikit-learn。 MLOps 工具有助于监视、重新训练和重新部署模型。

参考

[1] ONNX home https://onnx.ai/

[2]NVIDIA TensorRT™ (https://developer.nvidia.com/zh-cn/tensorrt)

[3]OpenVINO推理简介(知乎_火狐狸) https://zhuanlan.zhihu.com/p/918825151

[4]腾讯NCNN Github地址 https://github.com/Tencent/ncnn

[5]TensorRT Inference Server https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorrtserver

[6]Triton Inference Server https://github.com/triton-inference-server/server

.nvidia.com/orgs/nvidia/containers/tensorrtserver

[6]Triton Inference Server https://github.com/triton-inference-server/server

[7]TorchServehttps://pytorch.org/serve/

ML模型部署-工具箱相关推荐

  1. 六条规则让你的ML模型部署的更快

    双语原文:六点规则让你的ML模型部署的更快 英语原文:Six Rules for Deploying your Machine Learning Models Faster 翻译:雷锋字幕组(yhfw ...

  2. apache beam_Apache Beam ML模型部署

    apache beam This blog post builds on the ideas started in three previous blog posts. 这篇博客文章基于之前 三篇 博 ...

  3. 手把手教你使用TF服务将TensorFlow模型部署到生产环境

    2019独角兽企业重金招聘Python工程师标准>>> 介绍 将机器学习(ML)模型应用于生产环境已成为一个火热的的话题,许多框架提供了旨在解决此问题的不同解决方案.为解决这一问题, ...

  4. sam服务器是什么_使用SAM CLI将机器学习模型部署到无服务器后端

    sam服务器是什么 介绍 (Introduction) Over the last year at CMRA, we have been incorporating more machine lear ...

  5. tensorflow图形识别_手把手教你使用TF服务将TensorFlow模型部署到生产环境

    摘要: 训练好的模型不知道如何布置到生产环境?快来学习一下吧! 介绍 将机器学习(ML)模型应用于生产环境已成为一个火热的的话题,许多框架提供了旨在解决此问题的不同解决方案.为解决这一问题,谷歌发布了 ...

  6. 面向生产环境!深度学习模型部署资源全辑

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器学习实验室   Author:louwill Machine Learning Lab AI博士笔记系列推 ...

  7. 模型部署入门教程(一):模型部署简介

    前言 OpenMMLab 的算法如何部署?是很多社区用户的困惑.而模型部署工具箱 MMDeploy 的开源,强势打通了从算法模型到应用程序这 "最后一公里"! 今天我们将开启模型部 ...

  8. 机器学习模型部署的三种方法

    "企业机器学习需要从数据工程和数据平台的角度看待大局[...],"贾斯汀·诺曼(Justin Norman)在今年巴塞罗那的DataWorks峰会上关于机器学习模型的部署的演讲中说 ...

  9. ML:MLOps系列讲解之《CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型—业务和数据理解→数据工程(数据准备)→ML模型工程→评估ML模型→模型部署→模型监控和维护》解读

    ML:MLOps系列讲解之<CRISP-ML (Q)ML生命周期过程-了解机器学习开发的标准过程模型-业务和数据理解→数据工程(数据准备)→ML模型工程→评估ML模型→模型部署→模型监控和维护& ...

最新文章

  1. java 移动平均值_使用用户输入数组移动平均线
  2. 腾讯微博即将关停,十年了,你用过吗?
  3. matlab脉宽调制pwm,PWM脉宽调制直流调速系统设计及MATLAB仿真验证
  4. Wiwiz无线Web认证实现限速
  5. drools 7.x 领域语言dsl详细语法
  6. 用双边模式,让生意立刻火爆
  7. [翻译]RoboChamps城市挑战赛
  8. 你了解MySQL 主从复制吗?
  9. Angular4记账webApp练手项目之四(在Angular4项目中用echarts绘制图表)
  10. MyBatis中解决字段名与实体类属性名不相同的冲突
  11. “互联网+”时代,网络安全市场将达千亿级别
  12. 北京内推 | 微软亚洲研究院视觉计算组招聘研究与开发实习生
  13. IJCAI‘22 推荐系统论文梳理
  14. 两狗(sogou google)相争,必有一伤
  15. k倍区间(前缀和+组合)
  16. java中的softreference_Java中的 WeakReference 和 SoftReference
  17. mysql查询1999年后出生的_1999年出生的属兔人2021年几岁了
  18. 批处理-快速格式化硬盘(全自动进行)
  19. Google Earth Engine APP——MODIS海洋表明温度chart图简单工具
  20. visual studio 下载慢的解决办法

热门文章

  1. Mpp 的一种 java 读写解决方案
  2. 正则表达式 - 简单模式匹配
  3. 由“中国回力鞋在欧美走红热销”想到的
  4. 详解 AMBA APB 5.0 最新标准协议(1)引言
  5. python代码破解wifi,含密码字典
  6. spring 配置sqlite的方式
  7. YOLOV5使用(一): docker跑通,详解TensorRT下plugin的onnx
  8. php 实现防盗链,PHP如何实现防盗链详解
  9. PostgreSQL操作-psql命令详解
  10. 计算机维修看图,计算机在看图的时候,图像识别在看什么?