付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
FPGA在自动驾驶中的挑战与实践在前不久的BaiduCreate2019百度AI开发者大会上,Apollo发布了业内首创的AVP专用车载计算平台——百度AVP专用量产计算单元ACU-Advanced。这是一篇“硬核”的技术文章。正是这些后台的“硬核”技术,成就了令人炫目的自动驾驶。本文中介绍的相关技术已经落实在ValetParking产品中的量产ACU硬件上。人工智能技术是自动驾驶的基础,算法、算力和数据是其三大要素。本文探讨的就是其中的“算力”。算力的高低,不仅直接影响了行驶速度的高低,还决定了有多大的信息冗余用来保障驾驶的安全。算力最直观地体现在硬件上,而汽车对自动驾驶的控制器有特殊的要求。实践中遇到的挑战是,多种多样的加速需求和有限的硬件资源的矛盾。需求的来源既包括深度学习前向推测、也包括基于规则的算法。硬件资源受限包括了:FPGA资源受限和内存带宽受限。算法工程师采用浮点数float32对模型进行训练,产出的模型参数也是浮点型的。然而在我们使用的FPGA中,没有专用的浮点计算单元,要实现浮点数计算,代价很大,不可行。使用int8计算来逼近浮点数计算,也即实现量化计算,这是需要解决的第一个问题。在量化前,需要完成1000000次float32的乘法。量化成int8后,需要完成1000000次int8的乘法,和30000次量化、反量化乘法。由于量化和反量化占的比重很低,量化的收益就等于int8取代float32乘法的收益,这是非常显著的。FPGA片上存储非常受限,对于绝大多数的算子,不可能将输入或者输出完整缓存到片上内存中。而是从内存中一旦读取足够的数据,就开始计算。一旦计算到足够多,就立即把结果写到内存。和内存数据的流式交互是个公共的需求,我们开发了能兼顾所有算子的DMA的接口。只有对于单次计算耗时很长、或调用非常频繁的独立任务算子,我们才为其定制单独DMA的模块,取得的收益是,这个算子可以通过多线程调度和其它FPGA算子并行计算。这是综合收益和代价后,做出的以资源换时间的折衷。Int8的计算,可以使用DSP或其它逻辑资源来完成。逻辑资源有更多的用途,所以我们占用DSP来完成int8的乘累加计算。FPGA内部的DSP48E2可以接受27bit的乘数。可以把两个int8的乘数排列在高8bit和低8bit,进行一次乘法后,再两个乘积完整的分离出来。这样,就实现了单个DSP一个时钟周期完成了两个乘法,达到了算力倍增的效果。Deconv和conv是网络中计算量最大的两个算子,计算资源复用收益很大。但它们计算形式上差别很大,直接复用计算资源很困难。我们在理论上进行突破,实现了通用的资源复用的方法。简言之,SDK要对conv的计算参数进行扩充以兼容deconv,在计算deconv时,需要对卷积核进行分拆、重排,伪装成conv。FPGA计算完毕后,增加少量逻辑对结果进行修饰。ARM计算:有些算子,比如多通道的softmax、concat、split等,出现频率很低,数据量不大,对整体帧率影响很小,还有些算子比如PSRoiPooling、计算区域不确定、数据不能保证对齐,非常不适合FPGA加速。把这两类算子放在ARM上实现。在ARM上对计算影响最大的单个因素是缓存命中率。通过数据重排、改变遍历顺序等,提高缓存命中率,可以把表观ARM算力提高几十倍。NEON加速:采用NEON指令可以对多通道的Softmax算子有效加速,加速比虽然不及FPGA,但相对于直接采用未优化的C++的代码在ARM上执行,效果可以提升数倍。其它对齐的计算,大多可以通过NEON处理器加速数倍。MaliGPU:我们目前使用XilinxZU系列的FPGA,自带MaliGPU400,原本被设计用来显示时渲染,并不支持CUDA、OpenCL等常用库。经过特殊的驱动方式,我们做到可以利用它实现一些受限的逐像素算子。我们实际计算使用的硬件资源包括了FPGA、MaliGPU、ARM主处理器、ARMNeon协处理器4种。通过ARM(主处理其和协处理器)和MaliGPU实现对部分算子进行承接,有效缓解了FPGA的资源压力。而采用动态量化,搜索量化尺度和进行量化,需要分散在相邻的两个算子中实现。为了保证精度,中间结果需要以半浮点(float16)形式表示。这带来两个问题:CPU并不能直接对FP16的数据进行转换或计算,所以需要FPGA提供额外的算子,提供快速的float32/int8和float16转换。这些额外的算子,是CNN本身不需要的,这构成了浪费。Float16需要的缓存比int8大了一倍。浪费了FPGA的存储资源。而静态量化,离线提供了固定的量化参数,中间计算结果以量化后的int8形式来表示。以上的浪费都得以避免。尽管静态量化对模型训练做额外的要求,我们最终决定切换到静态量化。通过SDK将各种参数进行变换和合并,单个conv算子可以完成最多支持4个算子的组合conv+batchnorm+scale+relu。静态量化降低了内存吞吐,这也是我们放弃动态量化易用性的一个原因。任务的帧率是峰值算力、各算子算力、支持的算子
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电力电子模块热分析:理论、方法与应用的深度探究
- 电力市场监管信息系统:深度分析与创新设计研究
- 湖工院材料物理化学教案第3章 晶体缺陷
- 2025-2030年移动营销工具企业制定与实施新质生产力战略分析研究报告
- 2025-2030年碳碳复合材料企业制定与实施新质生产力战略分析研究报告
- 2025-2030年电梯广告传媒行业商业模式创新分析研究报告
- 2025-2030年烟酒行业跨境出海战略分析研究报告
- 统编版初中历史九年级下册 第21课 冷战后的世界格局 教案
- 河南省南阳市高三上学期期中质量评估英语试题
- 基于数字图像处理的项目式学习:“选区”的建立、理解与应用-桂科版初中信息技术七年级下册教学设计
- 2026年北京市石景山区初三一模数学试卷(含答案)
- 湖北省鄂东南联盟2025-2026学年高一下学期期中考试语文试卷(含答案)
- 2026四川省自然资源投资集团急需紧缺人才招聘考试备考试题及答案解析
- 2025广西金融职业技术学院辅导员招聘考试真题
- 2026届甘肃省兰州市外国语校中考数学模拟预测试卷含解析
- 反职场性骚扰制度培训课件
- 钢结构工程施工安全监控措施
- 土地整治安全生产制度
- 高中政治命题培训课件
- 免疫治疗PRO不良反应预警模型
- 《埋地给水钢管道水泥砂浆衬里技术标准》
评论
0/150
提交评论