BEVFormer-accelerate:基于 EasyCV 加速 BEVFormer

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

导言

BEVFormer是一种纯视觉的自动驾驶感知算法,通过融合环视相机图像的空间和时序特征显式的生成具有强表征能力的BEV特征,并应用于下游3D检测、分割等任务,取得了SOTA的结果。我们在EasyCV开源框架(https://github.com/alibaba/EasyCV)中,对BEVFomer算法进行集成,并从训练速度、算法收敛速度角度对代码进行了一些优化。同时,我们进一步使用推理优化工具PAI-Blade对模型进行优化,相比于原始模型在A100配置下能取得40%的推理速度提升。本文将从以下几个部分进行介绍:1、BEVFormer算法思想 2、训练速度和算法收敛速度优化 3、使用PAI-Blade优化推理速度。

BEVFormer算法思想

如上图所示,BEVFormer由如下三个部分组成:

  1. backbone:用于从6个角度的环视图像中提取多尺度的multi-camera feature
  2. BEV encoder:该模块主要包括Temporal self-Attention 和 Spatial Cross-Attention两个部分。
    1. Spatial Cross-Attention结合多个相机的内外参信息对对应位置的multi-camera feature进行query,从而在统一的BEV视角下将multi-camera feature进行融合。
    2. Temporal self-Attention将History BEV feature和 current BEV feature通过 self-attention module进行融合。
    3. 通过上述两个模块,输出同时包含多视角和时序信息的BEV feature进一步用于下游3D检测和分割任务
  3. Det&Seg Head:用于特定任务的task head

BEVFormer训练优化

训练加速优化

我们从数据读取和减少内存拷贝消耗等角度对训练代码进行优化。

  • 数据读取
    • 使用更高效的图片解码库 turbojpeg
    • BEVFormer在训练过程中,需要时序上的数据作为输入,将串形的读取方式优化为并行读取。
    • 先做resize再做其他预处理,减少了额外像素带来的计算开销
  • 内存拷贝优化
    • 使用pin_memery=True,并修复了mmcv DataContainer pin_memory的bug
    • 将代码中的numpy操作替换为torch.tensor,避免不必要的h2d拷贝
  • other
    • 使用torch.backends.cudnn.benchmark=True(ps:需要保证在输入数据没有动态性的情况下使用,否则反而会增加训练耗时)
    • 修复了torch.cuda.amp混合精度在LayerNorm层失效的bug

我们在A100 80G的机器上,使用fp16对比吞吐量如下:

Setting throughput(samples/s)
BEVFormer-tiny bs=32 3.55
EasyCV BEVFormer-tiny bs=32 9.84(+177%)
BEVFormer-base bs=5 0.727
EasyCV BEVFormer-base bs=5 0.8(+10%)

精度收敛优化

相关推荐

基于对比稀疏扰动技术的时间序列解释框架 ContraLSP

论文在白盒时序预测,黑盒时序分类等仿真数据,和一个真实时序数据集分类任务中进行了实验,ContraLSP在解释性能上超越了SOTA模型,显著提升了时间序列数据解释的质量。

阿里云云栖号 3107

Spring AI 抢先体验,5 分钟玩转 Java AI 应用开发

Spring Cloud Alibaba AI 以 Spring AI 为基础,并在此基础上提供阿里云通义系列大模型全面适配,让用户在 5 分钟内开发基于通义大模型的 Java AI 应用。

阿里云云栖号 4592

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

本文演示了使用 Kibana 连接 SLS ES 兼容接口进行查询和分析的方法。

阿里云云栖号 2421

大数据基础工程技术团队4篇论文入选ICLR,ICDE,WWW

近日,由阿里云计算平台大数据基础工程技术团队主导的四篇时间序列相关论文分别被国际顶会ICLR2024、ICDE2024和WWW2024接收。

阿里云云栖号 2547

PolarDB-X V2.4 列存引擎开源正式发布

PolarDB-X 采用 Shared-nothing 与存储分离计算架构进行设计,系统由5个核心组件组成。

阿里云云栖号 2886

Apache RocketMQ ACL 2.0 全新升级

RocketMQ ACL 2.0 不管是在模型设计、可扩展性方面,还是安全性和性能方面都进行了全新的升级。旨在能够为用户提供精细化的访问控制,同时,简化权限的配置流程。欢迎大家尝试体验新版本,并应用在生产环境中。

阿里云云栖号 2929

SLS 查询新范式:使用 SPL 对日志进行交互式探索

像 Unix 命令一样支持多级管道级联,像加工预览一样实时处理查询结果,更便捷的交互,更丰富的算子,更灵活的探索半结构化日志,快来试试使用 SPL 语言查询日志数据吧~

阿里云云栖号 2801

得物 ZooKeeper SLA 也可以 99.99%

在本文中,作者探讨了ZooKeeper(ZK)的一个内存占用问题,特别是当有大量的Watcher和ZNode时,导致的内存消耗。

阿里云云栖号 2716

RocketMQ 事件驱动:云时代的事件驱动有啥不同?

本文深入探讨了云时代 EDA 的新内涵及它在云时代再次流行的主要驱动力,包括技术驱动力和商业驱动力,随后重点介绍了 RocketMQ 5.0 推出的子产品 EventBridge,并通过几个云时代事件驱动的典型案例,进一步叙述了云时代事件驱动的常见场景和最佳实践。

阿里云云栖号 2545

Higress 全新 Wasm 运行时,性能大幅提升

本文介绍 Higress 将 Wasm 插件的运行时从 V8 切换到 WebAssembly Micro Runtime (WAMR) 的最新进展。

阿里云云栖号 5940

更优性能与性价比,从自建 ELK 迁移到 SLS 开始

本文介绍了 SLS 基本能力,并和开源自建 ELK 做了对比,可以看到 SLS 相比开源 ELK 有较大优势。

阿里云云栖号 2810

All in One:Prometheus 多实例数据统一管理最佳实践

当管理多个Prometheus实例时,阿里云Prometheus托管版相比社区版提供了更可靠的数据采集和便捷的管理。本文比较了全局聚合实例与数据投递方案,两者在不同场景下各有优劣。

阿里云云栖号 2583

云原生最佳实践系列 6:MSE 云原生网关使用 JWT 进行认证鉴权

本文档介绍了如何在 MSE(Microservices Engine)云原生网关中集成JWT进行全局认证鉴权。

阿里云云栖号 2782

Higress 基于自定义插件访问 Redis

本文介绍了Higress,一个支持基于WebAssembly (WASM) 的边缘计算网关,它允许用户使用Go、C++或Rust编写插件来扩展其功能。文章特别讨论了如何利用Redis插件实现限流、缓存和会话管理等高级功能。

阿里云云栖号 2703

云原生最佳实践系列 7:基于 OSS Object FC 实现非结构化文件实时处理

阿里云OSS对象存储方案利用函数计算FC,在不同终端请求时实时处理OSS中的原图,减少衍生图存储,降低成本。

阿里云云栖号 2750

让你的文档从静态展示到一键部署可操作验证

通过函数计算的能力让阿里云的文档从静态展示升级为动态可操作验证,用户在文档中单击一键部署可快速完成代码的部署及测试。这一改变已在函数计算的活动沙龙中得到用户的认可。

阿里云云栖号 2794

日志服务 HarmonyOS NEXT 日志采集最佳实践

鸿蒙操作系统(HarmonyOS)上的日志服务(SLS)SDK 提供了针对 IoT、移动端到服务端的全场景日志采集、处理和分析能力,旨在满足万物互联时代下应用的多元化设备接入、高效协同和安全可靠运行的需求。

阿里云云栖号 3337

提升团队工程交付能力,从“看见”工程活动和研发模式开始

本文从统一工程交付的概念模型开始,介绍了如何将应用交付的模式显式地定义出来,并通过工具平台落地。

阿里云云栖号 2782

RocketMQ 之 IoT 消息解析:物联网需要什么样的消息技术?

RocketMQ 5.0 是为应对物联网(IoT)场景而发布的云原生消息中间件,旨在解决 IoT 中大规模设备连接、数据处理和边缘计算的需求。

阿里云云栖号 2776

云原生最佳实践系列 5:基于函数计算 FC 实现阿里云 Kafka 消息内容控制 MongoDB DML 操作

在大数据 ETL 场景,将 Kafka 中的消息流转到其他下游服务是很常见的场景,除了常规的消息流转外,很多场景还需要基于消息体内容做判断,然后决定下游服务做何种操作。

阿里云云栖号 2505

云原生最佳实践系列 4:基于 MSE 和 SAE 的微服务部署与压测

云原生应用平台为基于 Spring Cloud / Dubbo 开发的微服务应用提供了完善的能力支撑,例如服务注册发现、Serverless 无服务部署、实例弹性伸缩、微服务链路跟踪、全链路压力测试等,应用能够方便快捷的部署在阿里云上。

阿里云云栖号 1987

RocketMQ 流数据库解析:如何实现一体化流处理?

目前,消息中间件在国内许多行业的关键应用中扮演着至关重要的角色。随着数字化转型的深入,客户在使用消息技术的过程中往往同时涉及交叉场景。

阿里云云栖号 1368

云原生最佳实践系列 3:基于 SpringCloud 应用玩转 MSE

本实践基于云原生应用产品提供微服务注册配置中心、微服务治理和云原生网关等一系列高性能和高可用的企业级云服务能力。

阿里云云栖号 1483

适应多样化需求:WASM 插件在全链路灰度发布中的应用

据调研数据显示,约 70% 的生产故障是由变更引起的。为了消除变更过程存在的风险,在发布过程中,我们总是希望能够用小部分特定流量来验证下新发布应用是否正常。

阿里云云栖号 1813

微调工程师岗位可能并不存在,但使用 AI 编码工具已经成为刚需

智能编码工具的快速普及是否会带来全新的编程模式?“大力出奇迹”的规律还将继续适用吗?

阿里云云栖号 1449

通过阿里云向量检索 Milvus 版和通义千问快速构建基于专属知识库的问答系统

本文展示了如何使用阿里云向量检索 Milvus 版和灵积(Dashscope)提供的通用千问大模型能力,快速构建一个基于专属知识库的问答系统。在示例中,我们通过接入灵积的通义千问 API 及文本嵌入(Embedding)API 来实现 LLM 大模型的相关功能。

阿里云云栖号 1689

MaxCompute 近实时增全量处理一体化新架构和使用场景介绍

随着当前数据处理业务场景日趋复杂,对于大数据处理平台基础架构的能力要求也越来越高,既要求数据湖的大存储能力,也要求具备海量数据高效批处理能力,同时还可能对延时敏感的近实时链路有强需求,本文主要介绍基于 MaxCompute 的离线近实时一体化新架构如何来支持这些综合的业务场景,提供近实时增全量一体的数据存储和计算(Transaction Table2.0)解决方案。

阿里云云栖号 2179

运维人少,如何批量管理上百个微服务、上千条流水线?

云效 AppStack 平台针对微服务和云原生环境下的应用管理难题,提供了以应用为中心的资源、流水线和权限管理解决方案。

阿里云云栖号 1488

云原生最佳实践系列2:基于 MSE 云原生网关同城多活

通过使用阿里云的云原生微服务引擎 MSE,可以实现注册中心的同城容灾多活微服务应用。MSE 提供了云原生网关和注册中心,支持机房级故障的秒级自动转移、非对等部署下的全局流量负载均衡以及流量精细化管控。

阿里云云栖号 1895

RocketMQ 流存储解析:面向流场景的关键特性与典型案例

流存储是流处理的基石,流存储也是 RocketMQ 从应用架构集成走向数据架构集成的基础,为大数据架构的数据组件提供异步解耦的能力。

阿里云云栖号 1664
上一篇: 鱼传科技:函数计算,只要用上就会觉得香
下一篇: 优化 20% 资源成本,新东方的 Serverless 实践之路
阿里云云栖号
阿里云云栖号 企业官方账号 企业官方账号
博客等级 码龄9年 2万+粉丝 · 5466原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值