首发于 人工智能框架前沿技术分享
【模型部署与业务落地】AI 框架部署方案之模型部署概述

【模型部署与业务落地】AI 框架部署方案之模型部署概述

文 @ 不愿透露姓名的小 P 同学

1 概述

模型训练重点关注的是如何通过训练策略来得到一个性能更好的模型,其过程似乎包含着各种“玄学”,被戏称为“炼丹”。从训练样本的获取(包括数据采集与标注)、模型结构的确定、损失函数和评价指标的确定,到模型参数的训练,这一整个流程更多是由业务方去承接相关工作。一旦“炼丹”完成(即训练得到了一个指标不错的模型),如何将这颗“丹药”赋能到实际业务中,充分发挥其能力,就是部署方需要承接的工作了。

总的来说,在一般情况下,学术界负责各种 SOTA (State of the Art) 模型的训练和结构探索,而工业界负责将这些 SOTA 模型应用落地,赋能百业。

本文将要讲述的是,在 CV 场景中,如何实现模型的快速落地,赋能到产业应用中。模型部署一般无需再考虑如何修改训练方式或者修改网络结构以提高模型精度,更多的是需要明确部署的场景、部署方式(中心服务化还是本地终端部署)、模型的优化指标,以及如何提高吞吐率和减少延迟等。本文接下来将对这些内容逐一进行介绍。

1.1 模型部署场景

这个问题主要源于中心服务器云端部署边缘部署两种方式的差异。

1.2 模型部署方式

针对上面提到的两种场景,分别有两种不同的部署方案,Service 部署SDK 部署

SDK 部署Service 部署
部署环境SDK 引擎训练框架
模型语义转换需要进行前后处理和模型的算子重实现一般框架内部负责语义转换
前后处理对齐算子训练和部署对应两套实现,需要进行算子数值对齐共用算子
计算优化偏向于挖掘芯片编译器的深度优化能力利用引擎已有训练优化能力

1.3 部署的核心优化指标

部署的核心目标是合理把控成本、功耗、性价比三大要素。

成本问题是部署硬件的重中之重,AI 模型部署到硬件上的成本将极大限制用户的业务承受能力。

成本问题主要聚焦于芯片的选型。比如,对比寒武纪 MLU220 和 MLU270,MLU270 主要用作数据中心级的加速卡,其算力和功耗都相对于边缘端的人工智能加速卡 MLU220 要低。

至于 Nvidia 推出的 Jetson 和 Tesla T4 也是类似思路,Tesla T4 是主打数据中心的推理加速卡,而 Jetson 则是嵌入式设备的加速卡。

对于终端场景,还会根据对算力的需求进一步细分,比如表中给出的高通骁龙芯片,除 GPU 的浮点算力外,还会增加 DSP 以增加定点算力。

篇幅有限,不再赘述,主要还是根据成本和业务需求来进行权衡。

芯片型号算力功耗
Snapdragon 8557 TOPS (DSP) + 954.7 GFLOPs(GPU FP32)10 W
Snapdragon 86515 TOPS (DSP) + 1372.1 GFLOPs(GPU FP32)10 W
MLU2208 TOPS (INT8)8.25 W
MLU270-S4128 TOPS (INT8)70w
Jetson-TX21.30 TOPS (FP16)7.5 W / 15 W
T4130 TOPS (INT8)70 W

在数据中心服务场景,对于功耗的约束要求相对较低;在边缘终端设备场景,硬件的功耗会影响边缘设备的电池使用时长。因此,对于功耗要求相对较高的场景,一般来说,会利用 NPU 等专用优化的加速器单元来处理神经网络等高密度计算,从而节省大量功耗。

不同的业务场景对于芯片的选择有所不同,以达到更高的性价比。

从公司业务来看,云端相对更加关注是多路的吞吐量优化需求,而终端场景则更关注单路的延时需要。在目前主流的 CV 领域,低比特模型相对成熟,并且因为 INT8/INT4 芯片成本低、算力高,已经广泛使用这种芯片;但在 NLP 或者语音等领域,由于对精度的要求较高,低比特模型精度可能会存在难以接受的精度损失,所以 FP16 是相对更优的选择。

在 CV 领域的芯片性价比选型上,在有 INT8/INT4 计算精度的芯片里,主打低精度算力的产品是追求高性价比的主要选择之一,但这也为平衡精度和性价比提出了巨大的挑战。

2 部署流程

上面简要介绍了部署的主要方式和场景,以及部署芯片的选型考量指标,接下来以 SDK 部署为例,给大家概括介绍一下 SenseParrots 在部署中的整体流程。

SenseParrots 部署流程大致分为以下几个步骤:

2.1 模型转换

模型转换主要用于模型在不同框架之间的流转,常用于训练和推理场景的连接。

目前主流的框架都以 ONNX 或者 caffe 为模型的交换格式,SenseParrots 也不例外。SenseParrots 的模型转换主要分为计算图生成计算图转换两大步骤,另外,根据需要,还可以在中间插入计算图优化,对计算机进行推理加速(诸如常见的 CONV/BN 的算子融合)。

计算图生成是通过一次 inference 并追踪记录的方式,将用户的模型完整地翻译成静态的表达。在模型 inference 的过程中,框架会记录执行算子的类型、输入输出、超参、参数和调用该算子的模型层次,最后把 inference 过程中得到的算子信息和模型信息结合得到最终的静态计算图。

在计算图生成之后与计算图转换之前,可以进行计算图优化,例如去除冗余 op,计算合并等。SenseParrots 原生实现了一批计算图的精简优化 pass,也开放接口鼓励用户对计算图进行自定义的处理和优化操作。

计算图转换是指分析静态计算图的算子,对应转换到目标格式。SenseParrots 支持了多后端的转换,能够转换到各个 opset 的 ONNX、原生 caffe 和多种第三方版本的 caffe。框架通过算子转换器继承或重写的方式,让 ONNX 和 caffe 的不同版本的转换开发变得更加简单。同时,框架开放了自定义算子生成和自定义算子转换器的接口,让第三方框架开发者也能够轻松地自主开发实现 SenseParrots 到第三方框架的转换。

2.2 模型量化压缩

终端场景中,一般会有内存和速度的考虑,因此会要求模型尽量小,同时保证较高的吞吐率。除了人工针对嵌入式设备设计合适的模型,如 MobileNet 系列,通过 NAS(Neural Architecture Search) 自动搜索小模型,以及通过蒸馏/剪枝的方式压缩模型外,一般还会使用量化来达到减小模型规模和加速的目的。

量化的过程主要是将原始浮点 FP32 训练出来的模型压缩到定点 INT8(或者 INT4/INT1)的模型。由于 INT8 只需要 8 比特来表示,因此相对于 32 比特的浮点,其模型规模理论上可以直接降为原来的 1/4,这种压缩率是非常可观的。

另外,大部分终端设备都会有专用的定点计算单元,通过低比特指令实现的低精度算子,速度上会有很大的提升。当然,这部分还依赖协同体系结构和算法来获得更大的加速。

量化的技术栈主要分为量化训练 (QAT, Quantization Aware Training)和离线量化 (PTQ, Post Training Quantization)。两者的主要区别在于:

两者各有优劣,量化训练基于原始浮点模型的训练逻辑进行训练,理论上更能保证收敛到原始模型的精度,但需要精细调参且生产周期较长;离线量化只需要基于少量校准数据,因此生产周期短且更加灵活,缺点是精度可能略逊于量化训练。

实际落地过程中,发现大部分模型通过离线量化就可以获得不错的模型精度(1% 以内的精度损失,当然这部分精度的提升也得益于优化策略的加持),剩下少部分模型可能需要通过量化训练来弥补精度损失,因此实际业务中会结合两者的优劣来应用。

量化主要有两大难点:

1. 如何平衡模型的吞吐率和精度,

2. 如何结合推理引擎充分挖掘芯片的能力。

比特数越低,其吞吐率可能会越大,但其精度损失可能也会越大。因此,如何通过算法提升精度至关重要。这也是组内的主要工作之一。

另外,压缩到低比特,某些情况下吞吐率未必会提升,还需要结合推理引擎优化一起对模型进行图优化,甚至有时候会反馈如何进行网络设计。这是一个算法与工程迭代的过程。

2.3 模型打包封装 SDK

实际业务落地过程中,模型可能只是产品流程中的一环,用于实现某些特定功能,其输出可能会用于流程的下一环。所以,模型打包会将模型的前后处理,一个或者多个模型整合到一起,再加入描述性的文件(前后处理的参数、模型相关参数、模型格式和版本等)来实现一个完整的功能。

由于这种需求,SDK 除了需要一些通用前后处理的高效实现、对齐训练时的前后处理逻辑,还需要具有足够好的扩展性来应对不同的场景,方便业务线同学扩展新的功能。

可以看到,模型打包过程更多是模型的进一步组装,将不同模型组装在一起,当需要使用的时候将这些内容解析成整个流程 (pipeline) 的不同阶段 (stage),从而实现整个产品功能。

另外,考虑到模型很大程度是研究员的研究成果,对外涉及保密问题,因此会对模型进行加密,以保证其安全性。加密算法的选择需要根据实际业务需求来决定,诸如不同加密算法其加解密效率不一样,加解密是否有中心验证服务器,其核心都是为了保护研究成果。

References

1. nvidia.com/content/dam/

2. nvidia.com/en-us/autono

3. cambricon.com/index.php?

4. cambricon.com/index.php?

5. nvidia.com/en-us/data-c

6. zhuanlan.zhihu.com/p/58

7. wikiwand.com/en/List_of_and_860_(2021)


感谢阅读,欢迎在评论区留言讨论哦~

P.S. 如果喜欢本篇文章,请多多 赞同、喜欢、评论、收藏,让更多的人看见我们 :D


关注 公众号「SenseParrots」,获取人工智能框架前沿业界动态与技术思考。

深圳SEO优化公司白城百度标王多少钱松原百姓网标王推广邵阳网站优化软件价格包头企业网站制作公司嘉兴如何制作网站报价广州网站排名优化推荐肇庆模板网站建设双龙如何制作网站哪家好龙岗百度网站优化价格木棉湾企业网站建设价格北海网站排名优化推荐景德镇关键词按天计费哪家好安阳建站价格九江设计公司网站价格保山网站改版罗湖网站改版价格盐田网站推广工具推荐雅安SEO按天计费乐山网站建设设计报价抚顺网站制作多少钱双龙至尊标王推荐贺州SEO按天扣费价格陇南seo盘锦网站改版价格黄南关键词按天扣费报价抚顺阿里店铺托管多少钱布吉英文网站建设哪家好岳阳设计网站推荐同乐优化公司通辽设计公司网站哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化