《自动驾驶技术中FPGA面临的挑战与实践.docx》由会员分享,可在线阅读,更多相关《自动驾驶技术中FPGA面临的挑战与实践.docx(2页珍藏版)》请在第一文库网上搜索。
1、自动驾驶技术中FPGA面临的挑战与实践人工智能技术是自动驾驶的基础,算法、算力和数据是其三大要素。本文探讨的就是其中的“算力”。算力的高低,不仅直接影响了行驶速度的高低,还决定了有多大的信息冗余用来保障驾驶的安全。算力最直观地体现在便性上,而汽车对自动驾驶的燧避有特殊的要求。除了对一般硬件的成本、体积重量、功耗的要求外,还要求:提供足够的算力,保证行驶速度和信息冗余。满足严苛的车规标准,比如超宽的温度范围,-40-85o综合来看FPGA是适合自动驾驶高速计算的技术。实践中遇到的挑战是,多种多样的加速需求和有限的硬件资源的矛盾。需求的来源既包括深度学习前向推测、也包括基于规则的算法。硬件资源受限
2、包括了:FPGA资源受限和内存带宽受限。FPGA资源的有限性体现:峰值算力受限:有限的FPGA资源限制了计算并行度的提高,这约束了峰值算力。支持的算子种类受限:有限的FPGA资源只能容纳有限个算子。内存带宽受限体现在:内存数据传输在计算总时间中占据了不可忽略的时间。极端情况下,对某些算子提高并行度后,计算时间不减。为应对这些挑战,我们在实践中提取了一些有益的经验,总结出来与大家共享。算法建哑采用浮点数f1oat32对模型进行训练,产出的模型参数也是浮点型的。然而在我们使用的FPGA中,没有专用的浮点计算单元,要实现浮点数计算,代价很大,不可行。使用int8计算来逼近浮点数计算,也即实现量化计算
3、,这是需要解决的第一个问题。符号表示四舍五入,两个把矩阵A和B的元素线性映射到区间-127,127,在此区间完成乘法和加法。最后一个乘法把整型结果还原成f1oat32o在量化前,需要完成IoOOOoo次f1oat32的乘法。量化成int8后,需要完成IOOOOOO次int8的乘法,和30000次量化、反量化乘法。18bWj7tt口。18x27V*tt*Kf1MKT-DSPcHZI由于量化和反量化占的比重很低,量化的收益就等于int8取代f1oat32乘法的收益,这是非常显著的。这种方法的好处是,每次计算既能充分利用int8数据的表征能力(127总能被使用到),不存在数据饱和的情况(所有元素都被
4、线性映射),保证单次计算的精度最高。可以直接接受浮点训练的模型,维持准召率。Resnet50测50000张图片,Top1和Top5准确率下降1%0在Va1etParking产品用到的多个网络中,没有观察到准召率下降。缺点是,FPGA计算有截断误差,经过多次累计,数值计算误差最大平均可以达到10%。对于一些训练不完全成功的模型(只在有限评测集上效果比较好),准召率下降明显,结果不可控。已知量化尺度:静态量化,如果上面的式子变成经过线下统计,量化尺度被固化为Sca1eA和sca1eB,表示四舍五入,并且限制在-127,127之内。这种方法的好处是节约了FPGA资源。可以很方便地采用跟量化推测一致的训练方法,推测和训练计算数值误差很小,准召率可控。缺点是,要求模型训练采用一致的量化方法。否则,计算误差很大,不可接受。