我们在7月1日的嵌入式AI简报,已经提到商汤开源了他们的深度学习推理引擎PPL,今天,距离他们开源已经将近半个月,有人在知乎借着WAIC关于商汤提问:
如何评价 WAIC 上商汤开源的高性能深度学习推理平台 OpenPPL?
https://github.com/openppl-pu...
在知乎上,高叔亲自解答,下面是其回答:
SensePPL 是什么?
SensePPL 是商汤 HPC 团队从 2015 年开始精心打造的多后端深度学习推理部署引擎。训练平台训练好的模型,可以通过转换成 onnx 等标准格式,使用 SensePPL 进行快速推理部署。
SensePPL 会对模型进行加载转换,生成有向图和执行计划,进行图级别的优化,运行时调用深度调教过的算子库进行推理计算。所有核心框架和算子库的代码,完全是团队自研,几乎不依赖第三方。
OpenPPL 开源 —— 新的起点,面向未来
SensePPL 在商汤内部使用和打磨多年,积累了在 CV 领域深度学习推理的很多技术和业务实践。当然,也由此产生了许多与公司业务强相关的私有定制功能,这与业界众多闭源技术是相似的。当我们决定反哺技术社区,选择开源 PPL 之时,为了能让更多开发者顺畅使用我们的推理引擎,我们决定为开源的 SensePPL 版本选择一个业界通行的标准 —— onnx 模型格式,并为此重构了 SensePPL 的核心框架。
新的 PPL 因开源而生,我们称之为「OpenPPL」,预示着我们将拥抱开源,拥抱业界的标准化建设。
OpenPPL 是一个新的开始,第一个版本将从 v0.1 开始。包含了对x86 架构 fp32 数据类型,以及 NVIDIA GPU 的 Turing 架构 fp16 数据类型的基本支持。
同时我们会为 OpenMMLab 的核心重点网络开发针对这两种架构的推理方案。这两个架构基本能覆盖云和服务器领域相当一部分部署的需求,但仍然远远不够。未来半年到一年的时间,我们将大幅迭代完善 OpenPPL,达到商业化可用的 v1.0 版本。
v1.0 版本将包括但不限于如下一些特性:
- x86 CPU:x86 处理器仍然是云和服务器场景的基石,是部署最广泛的云端计算架构。OpenPPL 将进一步完善,根据市场反馈,可能会支持更多的 x86 新指令集;同时会支持 AMD 的 Zen 系列架构以及国产的多款 x86 处理器。
2. NVIDIA GPU:会继续大幅优化 GPU 上的算子性能和框架支持;会支持 Turing 架构的 int8/int4 等更低精度的数据格式推理,同时开放出相关量化工具链的代码;会支持 NVIDIA 最新的安培架构。这些内容将大幅提高 CUDA 架构上 OpenPPL 的可用性。
3. ARM server:PPL 对 ARM 架构的支持和优化最为悠久,但一直是作为移动和 IoT 场景的拳头产品。ARM 架构有着优秀的能耗比和强大的生态系统。随着 ARM 处理器性能的飞速提升,在云计算领域 ARM server 终于迈过了大规模应用的门槛,代表了未来云数据中心的方向。OpenPPL 将会把在移动领域 ARM 处理器的支持,转化到云和服务器领域,在 v1.0 版本时候初步支持 ARMv8/v9 等架构。
对于更长期的规划和展望:
OpenPPL 会吸收业界的需求,长期维护并完善算子的种类,模型支持的类型,并将长期优化模型推理全链条。除了模型本身的推理以外,模型前后处理,Serving 等技术也会陆续引入。目前 OpenPPL 还是传统的有向图表示+算子库的方式,可以做的模型融合,图优化能力有限。HPC 团队已经在代码自动生成等领域进行了很多实践,未来会陆续将相关技术引入 OpenPPL,使模型优化的能力更彻底。
机器学习的发展远没有结束,我们将始终关注业界的进展,引进更多的技术和支持,例如最近异常火爆的 Transformer 等模型技术。AI 后端架构的发展也更加的多元化,很多 AI 处理器已经占有相当的市场份额,我们也将根据需求,扩大和业界更多 AI 芯片和处理器的合作,将我们在 NVIDIA GPU 和 CPU 上的技术积累转移转化去支持更多的场景和芯片。同时 SensePPL 在端侧的技术积累,也将在 1.0 之后的版本里陆续开放出来。我们希望和业界更多的上下游组织和厂商建立深入的合作。
PPL 发展简史
PPL 的名字,最初是作为 Parrots Primitive Library 的缩写。Parrots是 2015 年早期,商汤的 HPC 团队和港中文 MMLab 实验室合作开发的训练平台,为商汤 2016 年训练的 1200 层大模型立下了汗马功劳。SensePPL 原本是作为 Parrots 的基础算子优化库的定位诞生的。但是随着商汤业务的发展,更多的推理部署需求使 PPL 的定位发生了较大变化,也更加的独立。发展到今天,SensePPL 和 Parrots 更多是一种模型生产链条上的互补关系。不过 SensePPL 这个名字沿用至今,也无需修改。
HPC 团队最早从 CPU 通用处理器入手,开发了 ARM 和 x86 架构下的卷积算法:
2016 年初就加入了对 Winograd 算法的实现,使 SensePPL 在端侧具备初步可用的性能。商汤也借助 SensePPL 最早实现了端侧人像检测,追踪,关键点等算法,在 FaceU 等 App 中集成,使实时美颜特效这个功能一鸣惊人,开创了手机拍照,视频娱乐的人工智能时代。
在紧随而后的 2017-2018年,智能手机上的计算摄影和图像视频处理技术如火如荼发展,SensePPL 也适时候加入了对移动端 GPU,以及若干种端侧 DSP 的支持,性能一度领先厂商自己提供的推理库。
在 2018 年的某品牌手机内部,集成了带有 SensePPL 的十几种商汤的创新算法;App 市场更是做到了最高 80% 的市场占有率。SensePPL 的总部署量过亿台设备。
从 2017 年开始,各家互联网,手机或者智能硬件厂商也陆续开发开源了自己的端侧推理引擎,我们欣喜地看到这一市场的繁荣。
从 2019 年开始,HPC 团队的关注重点逐渐从端侧转向云和服务器;市场也逐渐从对 CPU,DSP 等通用架构的适配,转向 AI 加速器这种处理 AI 更高效的架构;同时因为 NVIDIA 巨大的影响力和开创性贡献,NVIDIA GPU 的需求也热度不减。
因此 SensePPL 开始了对各种 AI加速器和云端 GPU 的支持。我们深入研究了NVIDIA GPU的底层架构,设计并研发了若干种适合在 NVIDIA Turing TensorCore 架构上的卷积算法,适配不同的卷积参数,取得了非常明显的加速效果。
目前在单 batch 模型推理领域,部分模型的性能可以超越 TensorRT的较新版本,大幅领先 onnxruntime 等开源平台。后面我们会引入更多的技术来全面追平超越 TensorRT,敬请期待。
目前我们已在不同程度支持了多种AI加速器,包括了昇腾,寒武纪等知名国产加速器品牌,在 OpenPPL 的后续版本可以陆续见到。
来源:NeuralTalk
作者:高洋
往期回顾
本作品采用知识共享署名-相同方式共享 4.0 通用许可协议进行许可。
欢迎关注公众号,关注模型压缩、低比特量化、移动端推理加速优化、部署。
更多嵌入式AI相关技术干货请关注嵌入式AI专栏。