百度跨平台 AI 推理加速引擎 -- Anakin

一、前言

AI技术包含训练和推理两个阶段。推理阶段的性能好坏既关系到用户体验,又关系到企业的服务成本,甚至在一些极端应用上(比如无人驾驶)直接关系到个人生命财产安全。目前AI落地面临的挑战主要来源于两方面,一方面是AI算法的日新月异,带来了计算量的猛增,从AlexNet到AlphaGo,5年多的时间里计算量提升了30w倍。另一方面是底层硬件异构化的趋势愈发明显,近年来涌现出非常多优秀的架构来解决AI计算力问题。推理引擎的首要任务就是将性能优异且计算量庞大的深度学习框架快速部署到不同的硬件架构之上,并且能够保持性能相对高效。

然而纵观开源社区和闭源解决方案,没有任何一款推理引擎可以同时满足开源、跨平台、高性能三个特性。因此,我们结合百度实际业务的需求、百度优秀工程师的研发能力以及行业合作伙伴的大力支持共同完成了百度自己的推理引擎Anakin v0.1.0。Anakin目前支持Intel-CPU、NVIDIA-GPU、AMD-GPU和ARM平台,后续将支持更多平台如寒武纪、比特大陆等。今天Anakin正式开源,期望能够借助社区的力量把Anakin打造的更加精美!

二、Anakin架构

图1 Anakin框架

Anakin框架的核心逻辑如图1所示,主要由Parser, Framework 和Saber组成。Parser是独立解析器,用于将不同训练框架生成的模型转化为统一的Anakin图描述。Framework是框架主体,使用C++实现,用于完成硬件无关的所有操作,比如构建网络、图融合、资源复用、计算调度等。Saber是一个高效的跨平台计算库,包括大量的汇编级优化代码,并支持众多国际行业合作伙伴的架构,如Intel-cpu,NV-gpu,AMD-gpu和ARM等,同时以后还将支持寒武纪MLU100和比特大陆BM1682这两款优秀的国产芯片。

三、Anakin功能特性

Anakin v0.1.0具有开源、跨平台、高性能三个特性,它可以在不同硬件平台实现深度学习的高速推理功能。Anakin在NV、Intel、ARM和AMD-GPU架构上,体现了低功耗、高速预测的特点。

1、支持众多异构平台-跨平台

Anakin广泛的和各个硬件厂商合作,采用联合开发或者部分计算底层自行设计和开发的方式,为Anakin打造不同硬件平台的计算引擎。目前Anakin已经支持了多种硬件架构,如Intel-CPU、NVIDIA-GPU、AMD-GPU、ARM等,未来将会陆续支持比特大陆、寒武纪深度学习芯片等等不同硬件架构。我们希望Anakin可以为用户提供更灵活的底层选择,更方便简单的部署方式,并在不同底层硬件上达到最优性能。

2、高性能

Anakin在众多硬件平台都有很好的性能收益, 本文列举了一些实验对比测试数据,更详尽的数据请参见:https://github.com/PaddlePaddle/Anakin/tree/developing/benchmark

(1)在NV架构上,我们选择Anakin v0.1.0、TensorRT v3.0.0、Tensorflow v1.7.0和Caffe v1.0.0进行了对比,具体的对比结果如图2所示:

图2 Public model on NV

测试平台Nvidia-P4信息:

  • GPU Architecture NVIDIA Pascal™
  • Single-Precision Performance 5.5 TFLOPS
  • GPU Memory 8 GB

(2)在Intel架构上,我们选取Tensorflow-v1.8.0进行对比,具体的对比结果如图3所示:

图3 Anakin and Tensorflow on CPU

测试平台信息:

  • i7-7700:Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
  • 2650-v4:Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
  • 2620-v4:Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz

(3)在移动端ARM上,我们选取Tensorflow-lite进行对比,具体的对比结果如图4所示:

图4 Anakin and TFlite on ARM

测试平台信息:

  • 荣耀v9(root): 处理器:麒麟960, 4 big cores in 2.36GHz, 4 little cores in 1.8GHz
  • 高通835, 4 big cores in 2.36GHz, 4 little cores in 1.9GHz

(4)在AMD-GPU架构上,我们选取Anakin-v0.1.0进行横向对比,具体的对比结果如图5所示:

图5 MI8 and P4 on VGG16 model

测试平台信息:

  • MI8: AMD Radeon Instinct MI8
    • single-Precision Performance 8.192 TFLOPS
    • GPU Memory 4 GB
  • P4: GPU Architecture NVIDIA Pascal™
    • Single-Precision Performance 5.5 TFLOPS
    • GPU Memory 8 GB 图5中的折线图表示MI8和P4的执行效率的相对比例,具体的计算公式:

P4Latency * P4TFLOPS / (MI8Latency * MI8TFLOPS);

从图上的折线可知Anakin在MI8和P4上执行效率非常接近,在Threadnum大于2时AnakinMI8效率更高。

3、汇编级的kernel优化

Anakin追求的目标是极致,因此它提供了一套基于NVIDIA GPU SASS汇编级优化的库。SASS库支持多种(如sm61,sm50)NVIDA GPU 架构的汇编实现的conv 和 gemm 的核心计算。由于和NVIDIA 商业保密协议规定,目前只能开源编译好的 SASS 库。

四、Anakin值得一提的技术亮点

轻量的dashboard

Anakin v0.1.0框架中的Parser提供了一个额外的小功能,可以让开发者查看Anakin优化前后的网络结构及参数,如图6和图7所示。这样有助于开发者方便的分析模型。同时,在优化后的Anakin执行图中会添加相应的优化标记,主要包括memory 复用、op融合、并行度分析、执行顺序分析、存储器使用以及同步标记等。例如,在图7中,对于标记了New标签的地方,在代码运行过程中,将只会对这些内容分配内存。这种处理方式将使得Anakin运行时所需的memory更少。

图6 优化前的网络结构图

图7 优化后的网络结构图

Anakin-lite 轻量的移动端版本

Anakin 还提供了在移动端运行的轻量版本anakin-lite, 我们借助上层图优化机制,帮助深度学习模型code自动生成,针对具体模型自动生成的可执行文件,并且结合针对ARM专门设计的一套轻量接口,合并编译生成模型的lite版本。

Anakin-lite 保持精简化,全底层库大小经过剪裁只有150K 左右,加上自动生成的深度学习模型模块,总大小在200K。模型参数不再采用protobuf而是精简的weights堆叠的方式,尽可能减小model尺寸。同时,anakin-lite依然保有上层anakin 框架的优化分析信息(比如存储复用等),最终可以做到内存消耗相对较小,模型尺寸相对精简。

Anakin多层次的应用

第一个层次:Anakin可以是一个计算库;

第二个层次:Anakin可以是一个独立的推理引擎;

第三个层次:Anakin可以通过Anakin-rpc构建一个完整的推理服务。

五、Anakin的发展前景

Anakin v0.1.0具有开源、跨平台、高性能三个特性,它可以在不同硬件平台实现深度学习的高速推理功能。对于每个开发厂商,仅仅使用一套Anakin框架,就能在不同的硬件服务器上实现快速推理。

Anakin的终极目标是帮助实际业务模型快速迭代和上线,为深度学习模型产业化落地扫清障碍,从而让广大的工程师更专注算法设计,从繁重的优化和工程中解脱出来,进而推动深度学习的哪怕一点点的进步,这就是我们最大的愿望。

原文发布于微信公众号 - 程序员宝库(chengxuyuanbaoku)

原文发表时间:2018-08-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

另一种开源:OpenAI 介绍深度学习基础设施

【新智元导读】OpenAI 昨天在博客发文,结合实例,介绍了 OpenAI 进行深度学习研究时采用的基础设施配置,并且提供了相关开源代码。文章激起了很多反响,其...

4215
来自专栏新智元

【腾讯优图首度开源深度学习框架ncnn】主打手机端,同类cpu框架最快

【新智元导读】 腾讯 AI 三大支柱之一的腾讯优图实验室公布了成立以来的第一个开源项目ncnn,这是一个为手机端极致优化的高性能神经网络前向计算框架,无第三方依...

8359
来自专栏星流全栈

【两分钟论文#161】AI创建用户界面,前端将失业?神器pix2code!

1824
来自专栏数说工作室

懂点硬件 | AlphaGo、图像搜索、街景......背后都有它的影子:TPU

去年,谷歌曾在I/O开发者大会上透露了一款名为TPU的芯片,全称Tensor Processing Unit 张量处理器,是不是有点眼熟?(谷歌推出的机器学习框...

3165
来自专栏PHP在线

基于用户投票的排名算法(一):Delicious和Hacker News

互联网的出现,意味着"信息大爆炸"。 用户担心的,不再是信息太少,而是信息太多。如何从大量信息之中,快速有效地找出最重要的内容,成了互联网的一大核心问题。 各种...

3368
来自专栏AI科技评论

开发 | PyTorch vs. TensorFlow月度使用体验总结

AI科技评论按:日前,英伟达深度学习项目实习生Dominic Monn在medium上发文总结了他使用PyTorch和TensorFlow的一些体会,在文章中,...

3598
来自专栏AI科技大本营的专栏

资源 | 10x Python开发者必读:本月Python文章TOP 10

翻译 | AI科技大本营 参与 | 刘畅 编辑 | Donna 【AI科技大本营导语】Medium热门博客Mybridge AI例行评出本月10篇有助于提升你职...

37415
来自专栏AI研习社

TensorFlow在工程项目中的应用 视频+文字转录(下)

本周四,雷锋网 AI 研习社邀请了跨国 IT 巨头 Thoughtworks 的资深数据架构师白发川,主讲线上公开课,为大家讲解 TensorFlow 在工程项...

3205
来自专栏量子位

小米开源移动端深度学习框架MACE,自主研发,专为IoT设备优化

1765
来自专栏互联网研发闲思录

个性化推荐系统(二)---构建推荐引擎

  当下推荐系统包含的层级特别的多,整个线上推荐系统包含:最上层线上推荐服务、中层各个推荐数据召回集(数据主题、分类池子)、底层各种推荐模型。        ...

4210

扫码关注云+社区

领取腾讯云代金券