🕷️ Crawler Inspector

URL Lookup

Direct Parameter Lookup

Raw Queries and Responses

1. Shard Calculation

Query:
Response:
Calculated Shard: 16 (from laksa146)

2. Crawled Status Check

Query:
Response:

3. Robots.txt Check

Query:
Response:

4. Spam/Ban Check

Query:
Response:

5. Seen Status Check

ℹ️ Skipped - page is already crawled

📄
INDEXABLE
CRAWLED
3 days ago
🤖
ROBOTS ALLOWED

Page Info Filters

FilterStatusConditionDetails
HTTP statusPASSdownload_http_code = 200HTTP 200
Age cutoffPASSdownload_stamp > now() - 6 MONTH0.1 months ago
History dropPASSisNull(history_drop_reason)No drop reason
Spam/banPASSfh_dont_index != 1 AND ml_spam_score = 0ml_spam_score=0
CanonicalPASSmeta_canonical IS NULL OR = '' OR = src_unparsedNot set

Page Details

PropertyValue
URLhttps://www.53ai.com/news/finetuning/2025072471386.html
Last Crawled2026-04-07 16:37:48 (3 days ago)
First Indexed2025-07-24 01:27:54 (8 months ago)
HTTP Status Code200
Meta Title150%训练效率提升:感知检测小模型训练优化方法 - 53AI-AI知识库|企业AI知识库|大模型知识库|AIHub
Meta Description深入探讨 150%训练效率提升的感知检测小模型训练优化方法,聚焦 RAG 技术。文中基于业务实践,总结不同算力卡上的训练之道,为智能驾驶场景提供借鉴。涵盖 maptr、sparsedrive、qcnet、GaussianFormer 等适用于智能驾驶的小模型,详解从选择 dsw 镜像到执行训练命令的全流程。还介绍模型微调方法与技术,助力提升模型性能。点击阅读,了解详情,开启智能驾驶模型训练新征程。
Meta Canonicalnull
Boilerpipe Text
推荐语 阿里团队分享智能驾驶感知检测小模型训练优化方法,150%效率提升助力行业突破。 核心内容: 1. 智能驾驶场景下感知检测小模型的训练挑战 2. 不同算力卡上的性能对比测试方案 3. 四大典型模型的优化实践与效果验证 杨芳贤 53AI创始人/腾讯云(TVP)最具价值专家 一、背景 在智能驾驶技术快速发展的背景下,车辆对周围环境的实时感知和决策能力成为系统性能的关键。目标检测、语义分割、多传感器融合等任务构成了智能驾驶系统的核心感知模块,这些算法通常依赖于大规模深度学习模型的训练与部署。随着自动驾驶等级从L2向L3乃至L4演进,模型复杂度和数据量呈指数级增长,这对计算平台提出了更高的要求,尤其是在算力、内存带宽、并行处理能力和能效比等方面。  当前,行业内主流的高性能计算平台包括高速GPU集群,整体提供极高的内存容量和带宽,支持高效的大批量数据处理和分布式训练,可以满足更复杂的模型架构和更大的训练批次需求。因此,在典型智能驾驶场景中,如高精度目标检测、点云感知以及多模态融合感知任务中,对不同的算力卡进行全面的性能对比测试,为客户在选择合适的算力资源时提供有力的数据支撑。 测试环境配置 环境:mmdet3d、mmcv、flash-attn、nuscenes-devkit、torchrun分布式训练框架; 算力:两种不同的算力卡,用机器一和机器二表示; 模型:maptr、sparsedrive、qcnet、Gaussianformer; 数据集:nuScenes、Agoverse。 二、技术架构 整体的对比测试基于PAI DSW实例进行,在dsw机器上进行训练实验,以下是整体的训练步骤: 以maptr模型为例: 1.先选择dsw镜像,要对应合适的py、cuda版本,尽量和模型要求的配置相同,选择autodrive镜像,里面预装了必要mmcv等依赖。 2.然后根据模型的github官方文档安装必要的依赖,如果碰到报错,重新选择不同的版本,这一步可能需要多次实验配置。 3.创建dsw时会指定一个cpfs挂载点,在dsw挂载的cpfs中下载模型文件和数据集做持久化存储。 4.然后执行训练命令,log记录训练时间和吞吐量。 以下是该项目中测试的四个模型,全部是目标检测和感知领域的小模型,适用于智能驾驶场景: 类型 模型 主要依赖 官方地址 感知-地图构造 maptr v1 mmdet3d 0.17.2 mmcv 1.4.0 https://github.com/hustvl/MapTR 感知-端到端 sparsedrive mmcv 1.7.1 flash-attn 2.3.2 https://github.com/swc-17/SparseDrive 感知-预测 QCNet mmdet3d 0.17.2 https://github.com/ZikangZhou/QCNet 感知-目标检测 GaussianFormer mmcv 2.0.1 mmdet3d 1.1.1 https://github.com/huang-yh/GaussianFormer 三、问题&解决方法 3.1 环境依赖冲突 mmengine和torch 在maptr模型测试中,遇到了严重的环境依赖问题,执行pip install mmcv==1.4.0,build wheels时失败。 Collecting mmcv-full==1.4.0  Using cached mmcv_full-1.4.0.tar.gz (2.8 MB)  Preparing metadata (setup.py): started  Preparing metadata (setup.py): finished with status 'done'Building wheels for collected packages: mmcv-full  Building wheel for mmcv-full (setup.py): started  Building wheel for mmcv-full (setup.py): still running...  error: command '/usr/local/cuda/bin/nvcc' failed with exit code 1  Complete output from command /usr/bin/python3 -c "import setuptools, tokenize;__file__='.../mmcv_full-1.4.0/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d : 根据mmcv官方文档排查,发现该1.4.0版本的mmcv是比较旧的依赖,必须要求1.9.1<=torch<=1.10.0,在dsw官方自带的镜像中已经找不到满足要求的低版本torch,重新卸载torch安装低版本会导致大量的镜像自带库产生兼容错误。 mmcv1.4.0又是maptr的必须依赖。 针对maptr模型的解决方法是选择带py38+cu111版本的ubuntu裸镜像,重新安装合适的torch版本,然后再安装mmcv。 flash-attn和transformer 在sparsedrive模型测试时,需要安装flash-attn==2.6.1,setup时失败。 Collecting flash - attn    Using  cached flash_attn -2.6.1 .tar.gz ( 49  kB)   Preparing metadata(setup.py): started   Preparing metadata(setup.py): finished  with  status  'error'   ERROR: Command errored  out   with  exit status  1 :    command:  / usr / bin / python3  - c  'import io, os, sys, setuptools, tokenize; ...'  bdist_wheel  - d ...        cwd:  / tmp / pip - install - xxxx / flash - attn /   Complete output  from  command:      Running   from  flash - attn source directory.     TORCH_CUDA_ARCH_LIST = 8.0 + PTX     Traceback (most recent  call   last ):       File "<string>", line  1 ,  in   < module >       File "/tmp/pip-build-env-xxxx/overlay/lib/python3.8/site-packages/setuptools/__init__.py", line  16 ,  in   < module >         import ez_setup       File "/tmp/pip-build-env-xxxx/overlay/lib/python3.8/site-packages/ez_setup.py", line  139 ,  in   < module >         raise RuntimeError("ez_setup cannot run as a namespace package")     RuntimeError: ez_setup cannot run  as  a namespace package     During handling  of  the above exception, another exception occurred:     Traceback (most recent  call   last ):       File "<string>", line  2 ,  in   < module >       File "/tmp/pip-install-xxxx/flash-attn/setup.py", line  10 ,  in   < module >         import torch       File "/home/user/.local/lib/python3.8/site-packages/torch/__init__.py", line  197 ,  in   < module >         _load_global_library( 'libtorch_cpu.so' )       File "/home/user/.local/lib/python3.8/site-packages/torch/_utils_internal.py", line  85 ,  in  _load_global_library         ctypes.CDLL(path)     OSError:  / home / user / . local / lib / python3 .8 / site - packages / torch / lib / libtorch_cpu.so: undefined symbol: _ZN3c106detail15unchecked_inplace_False_aten_14_GLOBALS_INITIALIZED_for___nv_isnan 这个错误很复杂,看起来是cuda版本的错误,但查看flash的官方文档,又显示和torch123兼容,很难找到根因,后面查看了py3.8的torch/_utils_internal.py的源代码,里面调用了transformers库的一个函数,这个函数在高版本的transformers已经被废弃,只有该模型指定的transformers4.30.1在使用,因为缺少这个函数,导致这个undefined symbol错误。 解决方法是transformers库降级,pip install transformers==4.30.1。 3.2 源代码适配 由于不同算力卡底层编译环境的差异,在进行模型测试一般需要对源代码做处理。 local rank处理 local_rank是指定GPU序号的参数变量,在多卡并行训练时需要传入local_rank默认值,目前大部分的模型,包括本项目测试的四个模型,默认以Nvidia算力作为模型训练和推理的环境,因此会在启动脚本中硬编码传入参数--local_rank,但不同的算力卡调度逻辑不一样,可能会采用不用的GPU序号变量。 比如sparsedrive在机器一执行启动命令会出现变量错误: train.py: error: unrecognized arguments: --local_rank=0E0522 17:29:16.787000139811472776256 torch/distributed/elastic/multiprocessing/api.py:826] failed (exitcode: 2) local_rank: 0 (pid: 100906) of binary: /usr/local/bin/python3 该问题的解决方法是在训练脚本中修改代码parser.add_argument('--local-rank',type=int,default=0) NCCL P2P处理 DDP多卡并行训练时,会默认使用多卡的点对点通信,多张卡之间共享模型权重和数据集,实现并行训练;点对点通信直接使用卡之间的内部通信网络,不经过主机内存中转。 在测试实验中会偶发出现以下的错误,rank0和rank1的参数不一样: Traceback (most recent call last):  File "train_ddp.py", line 42, in <module>    model = DDP(model)  File "/usr/local/lib/python3.10/site-packages/torch/nn/parallel/distributed.py", line 610, in __init__    _check_same_numel(self.module.parameters(), self.device_ids[0])  File "/usr/local/lib/python3.10/site-packages/torch/nn/parallel/distributed.py", line 587, in _check_same_numel    assert torch.distributed.is_initialized(), "Distributed process group is not initialized"RuntimeError: DDP expects same model across all ranks, but Rank 0 has 1012 params, while rank 1 has inconsistent 0 params. 这个错误原因在rank1没有读取到rank0的状态,多卡通信失败;这个时候禁用点对点通信,可以解决这个错误, 解决方法是在训练脚本加入EXPORT NCCL_P2P_DISABLE=1 , 该参数可以禁用点对点通信。 但P2P被禁用,让多卡状态共享不再通过高速网络,会让训练效率略微下降。 3.3 性能优化 实际在对比测试中,可以采用一些优化性能的方法,让算力卡发挥尽可能多的算力优势;以下介绍从cpu、应用、外部挂载三个方面的优化点。 3.3.1 cpu处理加速 在maptr模型测试中,发现实际算力卡的显存使用率和显存占用量都比较低,从以下监控中显示训练进程大量在CPU核心上执行,GPU上的运算很短时间就结束,然后等待CPU执行完毕再执行。 由于该模型是小模型,本身的模型的计算节点数远小于大模型,根据其源码显示,GPU用于模型本身的梯度计算和参数更新,CPU用于读取图片数据做预处理tensor,而进程监控的结果是CPU的处理时间很长,GPU在等待CPU处理数据完毕后再进行计算,因此算力卡肯定无法全部发挥算力,需要对CPU的计算做优化来提升效率。 进程池 进程池(Process Pool) 是一种用于并行执行任务的机制,主要用于在多核 CPU 环境下提高程序的运行效率。它通过预先创建一组工作进程,将多个任务分配给这些进程并发地执行,从而充分利用计算机的硬件资源。使用进程池可以避免频繁创建和销毁进程所带来的性能开销,因为进程池中的进程是复用的。 当主程序向进程池提交任务时,进程池会根据当前可用的工作进程数量自动调度任务,可以在提升执行速度的同时,避免资源竞争和系统过载。 对cpu计算要求高的小模型可以使用进程池来加速计算,进程数一般设置成cpu核心数: from  multiprocessing  import  Pool def   image_process ( image ):     ...      return  tensor if  __name__ ==  '__main__' :      with  Pool(processes=n)  as  pool:   # 创建一个包含n个进程的池         results = pool. map (image_process, image_list)   # 进程池并行计算          print (results) 共享内存 共享内存是一种进程间通信机制,它允许多个进程访问同一块内存区域,从而实现数据的高效交换和同步。相比于其他 IPC 机制,共享内存具有极低的通信开销,因为不需要在内核与用户空间之间频繁复制数据;多个进程可以通过标识符或名称映射到同一块物理内存地址空间上。一旦某个进程将数据写入该共享内存区域,其他进程可以立即读取这些数据,而无需通过复杂的序列化或网络传输过程。 这种机制特别适用于多进程之间的频繁数据交换和并发操作。 对于小模型在处理数据时,需要大量使用cpu对内存的读取写入,前面启用了进程池,共享内存可以配合多进程使用,加快cpu的处理速度,对于共享内存的大小,一般设置成实例的分配内存;当数据占用量很大时,需要增加共享内存。 3.3.2 torch应用加速 用torch做模型训练时,有一些torch内置的方法,能够对batch数据做高效处理,对模型本身做图处理,加速训练过程,以下介绍三种不同的方法: pin_memory PyTorch 会将数据加载到 page-locked 内存,这种内存不会被操作系统交换到磁盘,因此可以更高效地通过 PCIe 总线传输到 GPU,直接由 GPU 异步访问,从而加快从 CPU 到 GPU 的数据拷贝速度。 CUDA 支持从 pinned memory 到 GPU 的异步数据传输,这可以与计算重叠,提升整体训练效率: dataloader = DataLoader(    dataset,    batch_size=32,    shuffle=True,    num_workers=4,    pin_memory=True  # 启用 pinned memory) num_workers num_workers指定了用于数据预处理和加载的子进程数量,每个子进程负责从磁盘读取数据、进行预处理,并将处理好的 batch 数据传递给主进程。使用多个 workers 并行读取和处理数据,可以显著提升训练效率,在 GPU 进行模型训练的同时,workers 可以提前准备好下一个 batch 的数据,实现“GPU计算 + 数据加载”并行。 num_workers的原理和上文中提到的cpu进程池原理类似,都是通过多进程并发来提升速度,这个是torch自带的加速数据加载和处理的方法,进程池是cpu层面所有任务的加速方法。 num_workers的值一般设置成cpu核心数。 dataloader = DataLoader(    dataset,    batch_size=32,    shuffle=True,    num_workers=4, #cpu核心数    pin_memory=True  ) torch compile torch compile使用torchdynamo对模型进行追踪,将其转换为Graph。这个过程会记录模型的计算路径,忽略掉非必要的控制流,并构建一个可优化的计算图。 然后对生成的计算图进行各种优化,例如:算子融合:将多个连续的操作合并成一个,减少内核启动次数。常量折叠:提前计算静态值。内存布局优化:减少数据拷贝,提高缓存命中率。 将优化后的图转换为目标平台的高效代码。PyTorch 默认使用 Inductor 编译器在后续的前向/反向传播中直接调用,绕过 Python 解释器,实现高速执行。 注意:compile无法编译非pytorch的指令,自定义 C/CUDA 扩展的模型可能会遇到兼容性问题。 model=torch.compile(    model,    backend='inductor',    dynamic=False,    fullgraph=False,) 3.3.3 cpfs优化加速 在maptr模型测试中,发现模型在写入checkpoint文件到cpfs时的时间存在很大差异,在同一地域乌兰察布下的cpfsA区的机器一时延比较长在2分钟左右,但机器二秒级就能写入完成,理论上同一套cpfs不应该有这么大的读写性能差异,根据后台的监控显示两台不同机器上的cpfs时延差了3倍。 机器一 机器二 后面分析cpfs的实例情况,发现挂载的cpfs都在乌兰A区,但根据智算CPFS的官方文档显示,cpfs使用高速eRDMA网络通信,目前只有乌兰C区支持,初步判断是因为可用区导致无法使用网速网络读写,使机器一读写效率很低。 重新新建一个C区的cpfs,重新训练后发现ppu的cpfs写入延迟大大降低,时延问题解决。 要启用cpfs的高速eRDMA网络读写,cpfs的可用区需要选择乌兰C区。 四、测试结果 从loss结果来看,机器一在100000 step时基本收敛,机器二在180000 step时基本收敛,基本符合预期的加速比,收敛趋势一致。 总结 如果在实际业务场景中需要训练感知检测类的小模型,可以按照如下的操作方法来优化性能,总体的性能优化可以从调度层、应用层、挂载区三个方面来考虑。 模型训练过程中的tensor计算会先进入底层cpu做数据预处理,然后处理完的tensor会用cuda gpu算力来做模型梯度计算,训练过程中产生的checkpoint会写入到挂载区cpfs,从三个阶段可以分别做三方面的优化: 1.调度层:创建进程池,提高cpu并行处理速度,增加共享内存,加快cpu读取内存的速度; 2.应用层:torch dataloader启用pin_memory,加快数据传输速度,增加num_workers,提高并行计算速度,用compile加速模型计算; 3.挂载区:使用有高速读写网络的CPFS存储,并选择合适的可用区。
Markdown
2026年4月10日 周五晚上19:30,来了解“从个人单点提效,到构建企业AI生产力”(限30人) [抢占你的席位](https://www.53ai.com/huiyiliebiao/2026031686403.html) [![](https://static.53ai.com/assets/static/images/logo.png)](https://www.53ai.com/) ![](https://static.53ai.com/uploads/20240311/eb21a9e0409ab946254c64427055a5fa.png) 免费POC, 零成本试错 [首页](https://www.53ai.com/) [产品服务](https://www.53ai.com/products/53AIBrain) - 热门场景 ![]() 工作+AI 大模型提升全员工作效率 [工作对话](https://www.53ai.com/product/gongzuoduihua) [内容创作](https://www.53ai.com/product/neirongchuangzuo) [方案撰写](https://www.53ai.com/product/zhinengwendang) [魔法菜单](https://www.53ai.com/product/mofacaidan) ![]() 业务+AI 大模型掌握企业知识与流程 [微信分身](https://www.53ai.com/product/weixinfenshen) [海外客服](https://www.53ai.com/product/haiwaikefu) [官网客服](https://www.53ai.com/product/guanwangkefu) [抖音客服](https://www.53ai.com/product/douyinkefu) [数字老师](https://www.53ai.com/product/shuzilaoshi) [数字督导](https://www.53ai.com/product/shuzidudao) [智能服务台](https://www.53ai.com/product/zhinengfuwutai) ![]() AIx业务 大模型驱动产品智能化改造 [智能问数](https://www.53ai.com/product/zhinengwenshu) [智能审核](https://www.53ai.com/product/zhinengshenhe) [智能工单](https://www.53ai.com/product/zhinenggongdan) [企微跟进助手](https://www.53ai.com/product/qiweigenjinzhushou) [智能报价](https://www.53ai.com/product/zhinengbaojia) [企微销售助手](https://www.53ai.com/product/qiweixiaoshouzhushou) [应用智改](https://www.53ai.com/product/zijianyingyong) [企微客服助手](https://www.53ai.com/product/qiweikefuzhushou) - 落地咨询 [![]() Consulting AI生产力教练 了解更多 \>](https://www.53ai.com/consulting.html) - 场景共创 [![]() Co-creation AI场景共创 了解更多 \>](https://www.53ai.com/fine-tuning.html) 热门产品 [![53AI Brain](https://static.53ai.com/uploads/20250429/f9ed1b6c2d16a688c5791a0057c2217d.png) 53AI Brain 让知识在人与AI之间高效流动](https://www.53ai.com/products/53AIBrain) [![53AI Studio](https://static.53ai.com/uploads/20250429/b2cd4330d03bce8eb0eb0332eb2954cd.png) 53AI Studio 高准确率的企业级智能体开发平台](https://www.53ai.com/products/53AIStudio) [![53AI Hub](https://static.53ai.com/uploads/20250429/94e6d990ee63512db567bc53c113e8bd.png) 53AI Hub开源 三分钟搭建出独立的企业AI门户](https://www.53ai.com/products/53AIHub) [![53AI Browser](https://static.53ai.com/uploads/20250429/05d03bb026421069826c64e2407ad7ee.png) 53AI Browser “AI专家”效率倍增的秘密武器 敬请期待...]() [客户案例](https://www.53ai.com/kehuanli.html) - 行业案例 [![政府央国企](https://static.53ai.com/uploads/20250718/14a52c018cf42a962cd782bc00deecaf.png) 政府央国企 政府央国企大模型落地应用案例](https://www.53ai.com/kehuanli/hangyeanli#solution-230) [![能源矿业](https://static.53ai.com/uploads/20250718/febd8ab7274bef72d77798177fa4b55a.png) 能源矿业 新能源与矿业大模型落地应用案例](https://www.53ai.com/kehuanli/hangyeanli#solution-231) [![电子科技](https://static.53ai.com/uploads/20250718/94f808db1b269c89e3da457d49752174.png) 电子科技 电子科技行业大模型落地应用案例](https://www.53ai.com/kehuanli/hangyeanli#solution-232) [![贸易流通](https://static.53ai.com/uploads/20250718/0816ed40b43b19540c8149301535a27e.png) 贸易流通 贸易流通大模型落地应用案例](https://www.53ai.com/kehuanli/hangyeanli#solution-235) [![制造行业](https://static.53ai.com/uploads/20250718/4c7688c517858072bee15b3eae9a8eb1.png) 制造行业 高端制造行业大模型落地应用案例](https://www.53ai.com/kehuanli/hangyeanli#solution-236) [![企科数服](https://static.53ai.com/uploads/20250718/20339b3fdb032d7ee0d009b2a3595191.png) 企科数服 企科数服行业大模型落地应用案例](https://www.53ai.com/kehuanli/hangyeanli#solution-237) [![生物医药](https://static.53ai.com/uploads/20250718/2640c0c52d0e598bf673372b5d771d4a.png) 生物医药 生物医药行业大模型落地应用案例](https://www.53ai.com/kehuanli/hangyeanli#solution-234) [![地产与消费品](https://static.53ai.com/uploads/20250718/f3e87229b4498063145a2c622d2072cc.png) 地产与消费品 地产与消费品行业大模型落地应用案例](https://www.53ai.com/kehuanli/hangyeanli#solution-233) - 场景案例 [![【智能问答】场景案例](https://static.53ai.com/assets/static/images/solution_icon_1.png) 【智能问答】场景案例 让大模型掌握企业的知识和流程](https://www.53ai.com/kehuanli/solution#solution-148) [![【应用智改】场景案例](https://static.53ai.com/assets/static/images/solution_icon_2.png) 【应用智改】场景案例 让大模型融入企业的产品和业务](https://www.53ai.com/kehuanli/solution#solution-149) [![【智能工单】场景案例](https://static.53ai.com/assets/static/images/solution_icon_3.png) 【智能工单】场景案例 让大模型创建和受理业务工单](https://www.53ai.com/kehuanli/solution#solution-150) [![【智能问数】场景案例](https://static.53ai.com/uploads/20250811/9be0a71f6e9b51b9cd9ca9b7dfeddd95.png) 【智能问数】场景案例 与业务系统数据对话式互动](https://www.53ai.com/kehuanli/solution#solution-151) [AI知识库](https://www.53ai.com/news.html) 企业AI落地知识库 [前沿技术](https://www.53ai.com/news/qianyanjishu) [大模型技术](https://www.53ai.com/news/LargeLanguageModel) [多模态技术](https://www.53ai.com/news/MultimodalLargeModel) [RAG技术](https://www.53ai.com/news/RAG) [知识图谱](https://www.53ai.com/news/knowledgegraph) [模型微调](https://www.53ai.com/news/finetuning) [Skill](https://www.53ai.com/news/tishicikuangjia) [提示词技巧](https://www.53ai.com/news/tishicijiqiao) [开源大模型](https://www.53ai.com/news/OpenSourceLLM) [智能硬件](https://www.53ai.com/news/zhinengyingjian) [Palantir](https://www.53ai.com/news/Palantir) [Agent框架](https://www.53ai.com/news/agentplatform) [langchain](https://www.53ai.com/news/langchain) [llamaindex](https://www.53ai.com/news/llamaindex) [RAGFlow](https://www.53ai.com/news/RAGFlow) [coze](https://www.53ai.com/news/coze) [Dify](https://www.53ai.com/news/dify) [Fastgpt](https://www.53ai.com/news/fastgpt) [Bisheng](https://www.53ai.com/news/Bisheng) [Qanything](https://www.53ai.com/news/Qanything) [MaxKB](https://www.53ai.com/news/MaxKB) [Openclaw](https://www.53ai.com/news/Openclaw) [行业应用](https://www.53ai.com/news/hangyeyingyong) [AI+汽车](https://www.53ai.com/news/AIqiche) [AI+金融](https://www.53ai.com/news/AIjinrong) [AI+工业](https://www.53ai.com/news/AIgongye) [AI+培训](https://www.53ai.com/news/AIpeixun) [AI+SaaS](https://www.53ai.com/news/AISaaS) [AI+电商](https://www.53ai.com/news/AIdianshang) [AI+医疗](https://www.53ai.com/news/AIyiliao) [企业落地](https://www.53ai.com/news/qiyejingying) [内容创作](https://www.53ai.com/news/neirongchuangzuo) [个人提效](https://www.53ai.com/news/gerentixiao) [智能客服](https://www.53ai.com/news/zhinengkefu) [AI面试](https://www.53ai.com/news/AImianshi) [数字员工](https://www.53ai.com/news/shuziyuangong) [ChatBI](https://www.53ai.com/news/zhinengbaobiao) [AI知识库](https://www.53ai.com/news/zhishiguanli) [智能营销](https://www.53ai.com/news/zhinengyingxiao) [智能化改造](https://www.53ai.com/news/zhinenghuagaizao) [Glean](https://www.53ai.com/news/Glean) [行业报告](https://www.53ai.com/hangyebaogao.html) [研究报告](https://www.53ai.com/hangyebaogao.html?report_type=%E7%A0%94%E7%A9%B6%E6%8A%A5%E5%91%8A) [行业报告](https://www.53ai.com/hangyebaogao.html?report_type=%E8%A1%8C%E4%B8%9A%E6%8A%A5%E5%91%8A) [技术分享](https://www.53ai.com/hangyebaogao.html?report_type=%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB) [专题报告](https://www.53ai.com/hangyebaogao.html?report_type=%E4%B8%93%E9%A2%98%E6%8A%A5%E5%91%8A) [课件讲义](https://www.53ai.com/hangyebaogao.html?report_type=%E8%AF%BE%E4%BB%B6%E8%AE%B2%E4%B9%89) [关于我们](https://www.53ai.com/about.html) [公司介绍](https://www.53ai.com/about/introduction) [渠道合作](https://www.53ai.com/about/cooperation) [GitHub Star 8.8K+](https://github.com/53ai/53aihub) [预约演示](https://www.53ai.com/trial.html) ![]() ![]() - [首页](https://www.53ai.com/) - [产品服务]() - [客户案例]() - [AI知识库]() - [关于我们]() 热门场景 ![]() 工作+AI [![]() 工作对话](https://www.53ai.com/product/gongzuoduihua) [![]() 内容创作](https://www.53ai.com/product/neirongchuangzuo) [![]() 方案撰写](https://www.53ai.com/product/zhinengwendang) [![]() 魔法菜单](https://www.53ai.com/product/mofacaidan) ![]() 业务+AI [![]() 微信分身](https://www.53ai.com/product/weixinfenshen) [![]() 海外客服](https://www.53ai.com/product/haiwaikefu) [![]() 官网客服](https://www.53ai.com/product/guanwangkefu) [![]() 抖音客服](https://www.53ai.com/product/douyinkefu) [![]() 数字老师](https://www.53ai.com/product/shuzilaoshi) [![]() 数字督导](https://www.53ai.com/product/shuzidudao) [![]() 智能服务台](https://www.53ai.com/product/zhinengfuwutai) ![]() AIx业务 [![]() 智能问数](https://www.53ai.com/product/zhinengwenshu) [![]() 智能审核](https://www.53ai.com/product/zhinengshenhe) [![]() 智能工单](https://www.53ai.com/product/zhinenggongdan) [![]() 企微跟进助手](https://www.53ai.com/product/qiweigenjinzhushou) [![]() 智能报价](https://www.53ai.com/product/zhinengbaojia) [![]() 企微销售助手](https://www.53ai.com/product/qiweixiaoshouzhushou) [![]() 应用智改](https://www.53ai.com/product/zijianyingyong) [![]() 企微客服助手](https://www.53ai.com/product/qiweikefuzhushou) [落地咨询](https://www.53ai.com/consulting.html) [场景共创](https://www.53ai.com/fine-tuning.html) 热门产品 [![53AI Brain](https://static.53ai.com/uploads/20250429/f9ed1b6c2d16a688c5791a0057c2217d.png) 53AI Brain 让知识在人与AI之间高效流动](https://www.53ai.com/products/53AIBrain) [![53AI Studio](https://static.53ai.com/uploads/20250429/b2cd4330d03bce8eb0eb0332eb2954cd.png) 53AI Studio 高准确率的企业级智能体开发平台](https://www.53ai.com/products/53AIStudio) [![53AI Hub](https://static.53ai.com/uploads/20250429/94e6d990ee63512db567bc53c113e8bd.png) 53AI Hub开源 三分钟搭建出独立的企业AI门户](https://www.53ai.com/products/53AIHub) [![53AI Browser](https://static.53ai.com/uploads/20250429/05d03bb026421069826c64e2407ad7ee.png) 53AI Browser “AI专家”效率倍增的秘密武器 敬请期待...]() [行业案例](https://www.53ai.com/kehuanli/hangyeanli) [场景案例](https://www.53ai.com/kehuanli/solution) [前沿技术](https://www.53ai.com/news/qianyanjishu) [Agent框架](https://www.53ai.com/news/agentplatform) [行业应用](https://www.53ai.com/news/hangyeyingyong) [企业落地](https://www.53ai.com/news/qiyejingying) [公司介绍](https://www.53ai.com/about/introduction) [渠道合作](https://www.53ai.com/about/cooperation) ![AI知识库](https://static.53ai.com/uploads/20250210/aec076a60258b0cc07078c8ea7dff92c.webp) 53AI知识库 学习大模型的前沿技术与行业应用场景 [立即咨询]() [预约演示]() [![](https://static.53ai.com/assets/static/images/tab1.png) 首页](https://www.53ai.com/) [AI知识库](https://www.53ai.com/news.html) [前沿技术](https://www.53ai.com/news/qianyanjishu) [模型微调](https://www.53ai.com/news/finetuning) ![](https://static.53ai.com/assets/static/images/edit-icon.png) 我要投稿 # 150%训练效率提升:感知检测小模型训练优化方法 发布日期:2025-07-24 08:35:47 浏览次数: 2306 作者:阿里云开发者 ![](https://static.53ai.com/assets/static/images/detail-icon.png) 微信搜一搜,关注“阿里云开发者” 推荐语 阿里团队分享智能驾驶感知检测小模型训练优化方法,150%效率提升助力行业突破。 核心内容: 1. 智能驾驶场景下感知检测小模型的训练挑战 2. 不同算力卡上的性能对比测试方案 3. 四大典型模型的优化实践与效果验证 ![](https://static.53ai.com/assets/static/images/avatar.jpg) 杨芳贤 53AI创始人/腾讯云(TVP)最具价值专家 一、背景 在智能驾驶技术快速发展的背景下,车辆对周围环境的实时感知和决策能力成为系统性能的关键。目标检测、语义分割、多传感器融合等任务构成了智能驾驶系统的核心感知模块,这些算法通常依赖于大规模深度学习模型的训练与部署。随着自动驾驶等级从L2向L3乃至L4演进,模型复杂度和数据量呈指数级增长,这对计算平台提出了更高的要求,尤其是在算力、内存带宽、并行处理能力和能效比等方面。 当前,行业内主流的高性能计算平台包括高速GPU集群,整体提供极高的内存容量和带宽,支持高效的大批量数据处理和分布式训练,可以满足更复杂的模型架构和更大的训练批次需求。因此,在典型智能驾驶场景中,如高精度目标检测、点云感知以及多模态融合感知任务中,对不同的算力卡进行全面的性能对比测试,为客户在选择合适的算力资源时提供有力的数据支撑。 测试环境配置 - 环境:mmdet3d、mmcv、flash-attn、nuscenes-devkit、torchrun分布式训练框架; - 算力:两种不同的算力卡,用机器一和机器二表示; - 模型:maptr、sparsedrive、qcnet、Gaussianformer; - 数据集:nuScenes、Agoverse。 二、技术架构 整体的对比测试基于PAI DSW实例进行,在dsw机器上进行训练实验,以下是整体的训练步骤: ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlM0RjJxQ0t3TWZaNUdpYlNHdWhhM2s5aWM3enpvdkprdU1YNHV5U3RDZmJnWGdMeEcyQ09veVp4QS82NDA/d3hfZm10PW90aGVyJmFtcA==;from=appmsg) 以maptr模型为例: 1\.先选择dsw镜像,要对应合适的py、cuda版本,尽量和模型要求的配置相同,选择autodrive镜像,里面预装了必要mmcv等依赖。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNqSXh0alp5b0xzWVBTTGJrRGZEcUVycVNteTJZaWNBTEhkb0hhSERPNUh2SVhEV1AzS25WcHRRLzY0MD93eF9mbXQ9b3RoZXImYW1w;from=appmsg) 2\.然后根据模型的github官方文档安装必要的依赖,如果碰到报错,重新选择不同的版本,这一步可能需要多次实验配置。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNiVFFnRFhpYjlFUzFoVnNpYk9rSXpEWUVWZ1hqcFhqSDBWMlU0TXNxSHNoOU54SU40OER6ZE1Mdy82NDA/d3hfZm10PW90aGVyJmFtcA==;from=appmsg) 3\.创建dsw时会指定一个cpfs挂载点,在dsw挂载的cpfs中下载模型文件和数据集做持久化存储。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNpY3JwWDR0YmpWSFZ0dTBnQ2dsU3MwRTJab21UNlJPQ2Z2Qmlhd0V2Z3lzT2FuaHhtU2M4RUNOQS82NDA/d3hfZm10PW90aGVyJmFtcA==;from=appmsg) 4\.然后执行训练命令,log记录训练时间和吞吐量。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNocDVLamt2VlFxWFI1bDFIcEhqNmlhRUNhUWx4WGlhd1FVWmFxVFFUNGtjRjN0V1hreHhNTkJrQS82NDA/d3hfZm10PW90aGVyJmFtcA==;from=appmsg) 以下是该项目中测试的四个模型,全部是目标检测和感知领域的小模型,适用于智能驾驶场景: | | | | | |---|---|---|---| | 类型 | 模型 | 主要依赖 | 官方地址 | | 感知-地图构造 | maptr v1 | mmdet3d 0.17.2mmcv 1.4.0 | https://github.com/hustvl/MapTR | | 感知-端到端 | sparsedrive | mmcv 1.7.1flash-attn 2.3.2 | https://github.com/swc-17/SparseDrive | | 感知-预测 | QCNet | mmdet3d 0.17.2 | https://github.com/ZikangZhou/QCNet | | 感知-目标检测 | GaussianFormer | mmcv 2.0.1mmdet3d 1.1.1 | https://github.com/huang-yh/GaussianFormer | 三、问题&解决方法 **3\.1 环境依赖冲突** ### mmengine和torch 在maptr模型测试中,遇到了严重的环境依赖问题,执行pip install mmcv==1.4.0,build wheels时失败。 ``` Collecting mmcv-full==1.4.0  Using cached mmcv_full-1.4.0.tar.gz (2.8 MB)  Preparing metadata (setup.py): started  Preparing metadata (setup.py): finished with status 'done'Building wheels for collected packages: mmcv-full  Building wheel for mmcv-full (setup.py): started  Building wheel for mmcv-full (setup.py): still running...  error: command '/usr/local/cuda/bin/nvcc' failed with exit code 1  Complete output from command /usr/bin/python3 -c "import setuptools, tokenize;__file__='.../mmcv_full-1.4.0/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d : ``` 根据mmcv官方文档排查,发现该1.4.0版本的mmcv是比较旧的依赖,必须要求1.9.1\<=torch\<=1.10.0,在dsw官方自带的镜像中已经找不到满足要求的低版本torch,重新卸载torch安装低版本会导致大量的镜像自带库产生兼容错误。 mmcv1.4.0又是maptr的必须依赖。 针对maptr模型的解决方法是选择带py38+cu111版本的ubuntu裸镜像,重新安装合适的torch版本,然后再安装mmcv。 flash-attn和transformer 在sparsedrive模型测试时,需要安装flash-attn==2.6.1,setup时失败。 ``` Collecting flash-attn  Using cached flash_attn-2.6.1.tar.gz (49 kB)  Preparing metadata(setup.py): started  Preparing metadata(setup.py): finished with status 'error'  ERROR: Command errored out with exit status 1:   command: /usr/bin/python3 -c 'import io, os, sys, setuptools, tokenize; ...' bdist_wheel -d ...       cwd: /tmp/pip-install-xxxx/flash-attn/  Complete output from command:    Running from flash-attn source directory.    TORCH_CUDA_ARCH_LIST=8.0+PTX    Traceback (most recent call last):      File "<string>", line 1, in <module>      File "/tmp/pip-build-env-xxxx/overlay/lib/python3.8/site-packages/setuptools/__init__.py", line 16, in <module>        import ez_setup      File "/tmp/pip-build-env-xxxx/overlay/lib/python3.8/site-packages/ez_setup.py", line 139, in <module>        raise RuntimeError("ez_setup cannot run as a namespace package")    RuntimeError: ez_setup cannot run as a namespace package    During handling of the above exception, another exception occurred:    Traceback (most recent call last):      File "<string>", line 2, in <module>      File "/tmp/pip-install-xxxx/flash-attn/setup.py", line 10, in <module>        import torch      File "/home/user/.local/lib/python3.8/site-packages/torch/__init__.py", line 197, in <module>        _load_global_library('libtorch_cpu.so')      File "/home/user/.local/lib/python3.8/site-packages/torch/_utils_internal.py", line 85, in _load_global_library        ctypes.CDLL(path)    OSError: /home/user/.local/lib/python3.8/site-packages/torch/lib/libtorch_cpu.so: undefined symbol: _ZN3c106detail15unchecked_inplace_False_aten_14_GLOBALS_INITIALIZED_for___nv_isnan ``` 这个错误很复杂,看起来是cuda版本的错误,但查看flash的官方文档,又显示和torch123兼容,很难找到根因,后面查看了py3.8的torch/\_utils\_internal.py的源代码,里面调用了transformers库的一个函数,这个函数在高版本的transformers已经被废弃,只有该模型指定的transformers4.30.1在使用,因为缺少这个函数,导致这个undefined symbol错误。 解决方法是transformers库降级,pip install transformers==4.30.1。 **3\.2 源代码适配** 由于不同算力卡底层编译环境的差异,在进行模型测试一般需要对源代码做处理。 ### local rank处理 local\_rank是指定GPU序号的参数变量,在多卡并行训练时需要传入local\_rank默认值,目前大部分的模型,包括本项目测试的四个模型,默认以Nvidia算力作为模型训练和推理的环境,因此会在启动脚本中硬编码传入参数--local\_rank,但不同的算力卡调度逻辑不一样,可能会采用不用的GPU序号变量。 比如sparsedrive在机器一执行启动命令会出现变量错误: ``` train.py: error: unrecognized arguments: --local_rank=0E0522 17:29:16.787000139811472776256 torch/distributed/elastic/multiprocessing/api.py:826] failed (exitcode: 2) local_rank: 0 (pid: 100906) of binary: /usr/local/bin/python3 ``` 该问题的解决方法是在训练脚本中修改代码parser.add\_argument('--local-rank',type=int,default=0) ### NCCL P2P处理 DDP多卡并行训练时,会默认使用多卡的点对点通信,多张卡之间共享模型权重和数据集,实现并行训练;点对点通信直接使用卡之间的内部通信网络,不经过主机内存中转。 在测试实验中会偶发出现以下的错误,rank0和rank1的参数不一样: ``` Traceback (most recent call last):  File "train_ddp.py", line 42, in <module>    model = DDP(model)  File "/usr/local/lib/python3.10/site-packages/torch/nn/parallel/distributed.py", line 610, in __init__    _check_same_numel(self.module.parameters(), self.device_ids[0])  File "/usr/local/lib/python3.10/site-packages/torch/nn/parallel/distributed.py", line 587, in _check_same_numel    assert torch.distributed.is_initialized(), "Distributed process group is not initialized"RuntimeError: DDP expects same model across all ranks, but Rank 0 has 1012 params, while rank 1 has inconsistent 0 params. ``` 这个错误原因在rank1没有读取到rank0的状态,多卡通信失败;这个时候禁用点对点通信,可以解决这个错误,解决方法是在训练脚本加入EXPORT NCCL\_P2P\_DISABLE=1,该参数可以禁用点对点通信。 但P2P被禁用,让多卡状态共享不再通过高速网络,会让训练效率略微下降。 **3\.3 性能优化** 实际在对比测试中,可以采用一些优化性能的方法,让算力卡发挥尽可能多的算力优势;以下介绍从cpu、应用、外部挂载三个方面的优化点。 ### 3\.3.1 cpu处理加速 在maptr模型测试中,发现实际算力卡的显存使用率和显存占用量都比较低,从以下监控中显示训练进程大量在CPU核心上执行,GPU上的运算很短时间就结束,然后等待CPU执行完毕再执行。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3N2Zy95bFJoclNqUWI4Z3ZhVUF1c0d2aWJCaWIxUGt0TUNpY1oxdEQxWnRLQjRKd0RnR2xYUGpwdGY1Nk0xVGJDaWFiczVBOWdFYld5TUpoUVFRZ2Nab3o4YjRpYlRleVIzMEdJQk9KSy82NDA/d3hfZm10PXN2ZyZhbXA=;from=appmsg) 由于该模型是小模型,本身的模型的计算节点数远小于大模型,根据其源码显示,GPU用于模型本身的梯度计算和参数更新,CPU用于读取图片数据做预处理tensor,而进程监控的结果是CPU的处理时间很长,GPU在等待CPU处理数据完毕后再进行计算,因此算力卡肯定无法全部发挥算力,需要对CPU的计算做优化来提升效率。 进程池 进程池(Process Pool) 是一种用于并行执行任务的机制,主要用于在多核 CPU 环境下提高程序的运行效率。它通过预先创建一组工作进程,将多个任务分配给这些进程并发地执行,从而充分利用计算机的硬件资源。使用进程池可以避免频繁创建和销毁进程所带来的性能开销,因为进程池中的进程是复用的。 当主程序向进程池提交任务时,进程池会根据当前可用的工作进程数量自动调度任务,可以在提升执行速度的同时,避免资源竞争和系统过载。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNQbjVCQ1ZzZWg2bFdhYVNRVDN1TGw0clJNWFc0WUIwaWMzV2JJdDc3bVFHYVBpYmE2dlVOcG5wUS82NDA/d3hfZm10PW90aGVyJmFtcA==;from=appmsg) 对cpu计算要求高的小模型可以使用进程池来加速计算,进程数一般设置成cpu核心数: ``` from multiprocessing import Pooldef image_process(image):    ...    return tensorif __name__ == '__main__':    with Pool(processes=n) as pool:  # 创建一个包含n个进程的池        results = pool.map(image_process, image_list)  # 进程池并行计算        print(results) ``` #### 共享内存 共享内存是一种进程间通信机制,它允许多个进程访问同一块内存区域,从而实现数据的高效交换和同步。相比于其他 IPC 机制,共享内存具有极低的通信开销,因为不需要在内核与用户空间之间频繁复制数据;多个进程可以通过标识符或名称映射到同一块物理内存地址空间上。一旦某个进程将数据写入该共享内存区域,其他进程可以立即读取这些数据,而无需通过复杂的序列化或网络传输过程。 这种机制特别适用于多进程之间的频繁数据交换和并发操作。 对于小模型在处理数据时,需要大量使用cpu对内存的读取写入,前面启用了进程池,共享内存可以配合多进程使用,加快cpu的处理速度,对于共享内存的大小,一般设置成实例的分配内存;当数据占用量很大时,需要增加共享内存。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNpYnp0WVpTUXVLWWFRSURYMG9QWjVSVEJKaWEzTVVGaWJhRXZUWk1PbEtRMk5FS2RieDVsQWR4ckEvNjQwP3d4X2ZtdD1vdGhlciZhbXA=;from=appmsg) 3\.3.2 torch应用加速 用torch做模型训练时,有一些torch内置的方法,能够对batch数据做高效处理,对模型本身做图处理,加速训练过程,以下介绍三种不同的方法: #### pin\_memory PyTorch 会将数据加载到 page-locked 内存,这种内存不会被操作系统交换到磁盘,因此可以更高效地通过 PCIe 总线传输到 GPU,直接由 GPU 异步访问,从而加快从 CPU 到 GPU 的数据拷贝速度。 CUDA 支持从 pinned memory 到 GPU 的异步数据传输,这可以与计算重叠,提升整体训练效率: ``` dataloader = DataLoader(    dataset,    batch_size=32,    shuffle=True,    num_workers=4,    pin_memory=True  # 启用 pinned memory) ``` #### num\_workers num\_workers指定了用于数据预处理和加载的子进程数量,每个子进程负责从磁盘读取数据、进行预处理,并将处理好的 batch 数据传递给主进程。使用多个 workers 并行读取和处理数据,可以显著提升训练效率,在 GPU 进行模型训练的同时,workers 可以提前准备好下一个 batch 的数据,实现“GPU计算 + 数据加载”并行。 num\_workers的原理和上文中提到的cpu进程池原理类似,都是通过多进程并发来提升速度,这个是torch自带的加速数据加载和处理的方法,进程池是cpu层面所有任务的加速方法。 num\_workers的值一般设置成cpu核心数。 ``` dataloader = DataLoader(    dataset,    batch_size=32,    shuffle=True,    num_workers=4, #cpu核心数    pin_memory=True  ) ``` #### torch compile torch compile使用torchdynamo对模型进行追踪,将其转换为Graph。这个过程会记录模型的计算路径,忽略掉非必要的控制流,并构建一个可优化的计算图。 然后对生成的计算图进行各种优化,例如:算子融合:将多个连续的操作合并成一个,减少内核启动次数。常量折叠:提前计算静态值。内存布局优化:减少数据拷贝,提高缓存命中率。 将优化后的图转换为目标平台的高效代码。PyTorch 默认使用 Inductor 编译器在后续的前向/反向传播中直接调用,绕过 Python 解释器,实现高速执行。 注意:compile无法编译非pytorch的指令,自定义 C/CUDA 扩展的模型可能会遇到兼容性问题。 ``` model=torch.compile(    model,    backend='inductor',    dynamic=False,    fullgraph=False,) ``` ### 3\.3.3 cpfs优化加速 在maptr模型测试中,发现模型在写入checkpoint文件到cpfs时的时间存在很大差异,在同一地域乌兰察布下的cpfsA区的机器一时延比较长在2分钟左右,但机器二秒级就能写入完成,理论上同一套cpfs不应该有这么大的读写性能差异,根据后台的监控显示两台不同机器上的cpfs时延差了3倍。 机器一 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNLQmljdXdlYkM3aWI1a1JleFhKUzVURDNlQTg0WGdVeGd4aE1wdmlhQkJ4UUdBTnZpYnFHa2M0OTZ3LzY0MD93eF9mbXQ9b3RoZXImYW1w;from=appmsg) 机器二 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlM5MXdDSUd6RlJzb1R2M3pJS05Tb2ZFVUdJNzFaY25yaWNLZmljUGpONExpY0RQclR4aHlNNkpQSGcvNjQwP3d4X2ZtdD1vdGhlciZhbXA=;from=appmsg) 后面分析cpfs的实例情况,发现挂载的cpfs都在乌兰A区,但根据智算CPFS的官方文档显示,cpfs使用高速eRDMA网络通信,目前只有乌兰C区支持,初步判断是因为可用区导致无法使用网速网络读写,使机器一读写效率很低。 重新新建一个C区的cpfs,重新训练后发现ppu的cpfs写入延迟大大降低,时延问题解决。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlN0OFBBRTYwd2paQ3FhaWFCSGdBaWJhajlCdjVTOERUVnB3ODJuSDdwVWdEaWM3dU85SVk5dEZMbVEvNjQwP3d4X2ZtdD1vdGhlciZhbXA=;from=appmsg) 要启用cpfs的高速eRDMA网络读写,cpfs的可用区需要选择乌兰C区。 四、测试结果 从loss结果来看,机器一在100000 step时基本收敛,机器二在180000 step时基本收敛,基本符合预期的加速比,收敛趋势一致。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNhTjU4T2xpYTdXZ25pYTZvaG5TOVp2RFlNbzQ1WUpVRVk2aWNmMFRtaHQ3b0FMWm51YzdGY3paM1EvNjQwP3d4X2ZtdD1vdGhlciZhbXA=;from=appmsg) 总结 如果在实际业务场景中需要训练感知检测类的小模型,可以按照如下的操作方法来优化性能,总体的性能优化可以从调度层、应用层、挂载区三个方面来考虑。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNXNGlhWnNYMEMzaWJnUzVzMUVBNW5uSmEzS1NoZEl4eEJHRmozNkZxZ1lpY2lib3dPQ1BwN3R2UmVRLzY0MD93eF9mbXQ9b3RoZXImYW1w;from=appmsg) 模型训练过程中的tensor计算会先进入底层cpu做数据预处理,然后处理完的tensor会用cuda gpu算力来做模型梯度计算,训练过程中产生的checkpoint会写入到挂载区cpfs,从三个阶段可以分别做三方面的优化: 1\.调度层:创建进程池,提高cpu并行处理速度,增加共享内存,加快cpu读取内存的速度; 2\.应用层:torch dataloader启用pin\_memory,加快数据传输速度,增加num\_workers,提高并行计算速度,用compile加速模型计算; 3\.挂载区:使用有高速读写网络的CPFS存储,并选择合适的可用区。 [模型微调方法](https://www.53ai.com/keyword/%E6%A8%A1%E5%9E%8B%E5%BE%AE%E8%B0%83%E6%96%B9%E6%B3%95) [模型微调技术](https://www.53ai.com/keyword/%E6%A8%A1%E5%9E%8B%E5%BE%AE%E8%B0%83%E6%8A%80%E6%9C%AF) [模型微调的方法](https://www.53ai.com/keyword/%E6%A8%A1%E5%9E%8B%E5%BE%AE%E8%B0%83%E7%9A%84%E6%96%B9%E6%B3%95) 分享: ![]() ![]() ![]() ![]() 53AI,企业落地大模型首选服务商 **产品**:场景落地咨询+大模型应用平台+行业解决方案 **承诺**:免费POC验证,效果达标后再合作。**零风险落地应用大模型**,已交付160+中大型企业 [上一篇:飞桨 AI Studio:一步步微调你的大模型](https://www.53ai.com/news/finetuning/2025072818023.html) [下一篇:10分钟微调,让0.6B模型媲美235B模型!免费体验进行中](https://www.53ai.com/news/finetuning/2025072202673.html) [返回列表](https://www.53ai.com/news/finetuning) 相关资讯 [2026-03-23 养死四只龙虾的小白有感](https://www.53ai.com/news/finetuning/2026032393054.html) [2026-03-22 Mistral Forge 的真正意义:企业AI从“租用”走向“拥有”](https://www.53ai.com/news/finetuning/2026032275649.html) [2026-03-21 马斯克再次站台Kimi,扒掉了Cursor 500亿估值的底裤](https://www.53ai.com/news/finetuning/2026032117849.html) [2026-03-19 MiniMax M2.7 炸场!自己训自己,8 项基准硬刚 GPT-5 和 Opus 4.6](https://www.53ai.com/news/finetuning/2026031936270.html) [2026-03-17 【淘宝直播数字人互动LLM】告别AI感:基于真人ASR数据的拟人化探索](https://www.53ai.com/news/finetuning/2026031762905.html) [2026-03-03 罕见!Meta、OpenAI、xAI联合分享了用生产环境提升LLM的最佳实践!](https://www.53ai.com/news/finetuning/2026030385931.html) [2026-02-13 工具调用准确率从60%飙到95%?我用这个‘解耦微调’把Qwen-7B救活了](https://www.53ai.com/news/finetuning/2026021323748.html) [2026-02-05 普林斯顿大学RLAnything:AI学会一边学习一边给自己打分](https://www.53ai.com/news/finetuning/2026020547398.html) ![智能化改造方案]() ![智能化改造方案]() [联系获取](https://www.53ai.com/solution.html) ![大模型落地应用平台]() ![大模型落地应用平台]() [联系获取](https://www.53ai.com/solution.html) 160+中大型企业正在使用53AI [立即咨询]() [预约演示]() [把握AI发展的机遇,共同探索、共同进步 2025-01-22](https://www.53ai.com/news/dongtai/2025012294502.html) [如何打造基于GenAI的员工服务机器人 2025-01-22](https://www.53ai.com/news/dongtai/2025012234192.html) [![banner](https://static.53ai.com/uploads/20250611/c637940d8902b253d3264aaf89cd40fc.jpg)](https://hub.53ai.com/) 热点资讯 [【GitHub高星】AI Research Skills:一键赋予AI“博士级”科研能力,74项硬核技能库开源! 2026-01-18](https://www.53ai.com/news/finetuning/2026011816429.html) [MiniMax M2.7 炸场!自己训自己,8 项基准硬刚 GPT-5 和 Opus 4.6 2026-03-19](https://www.53ai.com/news/finetuning/2026031936270.html) [Agent 越用越聪明?AgentScope Java 在线训练插件来了! 2026-02-04](https://www.53ai.com/news/finetuning/2026020450798.html) [1GB 显存即可部署:腾讯 HY-MT1.5 的模型蒸馏与量化策略解析 2026-01-19](https://www.53ai.com/news/finetuning/2026011928134.html) [前Mata GenAI研究员田渊栋​的年终总结:关于未来AI的思考 2026-01-10](https://www.53ai.com/news/finetuning/2026011002816.html) [微调已死?LoRA革新 2026-01-29](https://www.53ai.com/news/finetuning/2026012953476.html) [Oxygen 9N-LLM生成式推荐训练框架 2026-01-30](https://www.53ai.com/news/finetuning/2026013067103.html) [马斯克再次站台Kimi,扒掉了Cursor 500亿估值的底裤 2026-03-21](https://www.53ai.com/news/finetuning/2026032117849.html) [自然·通讯:如何挖掘复杂系统中的三元交互 2026-01-29](https://www.53ai.com/news/finetuning/2026012959201.html) [普林斯顿大学RLAnything:AI学会一边学习一边给自己打分 2026-02-05](https://www.53ai.com/news/finetuning/2026020547398.html) 大家都在问 [DeepSeek 发布新论文,提出全新 MHC 架构,有何创新与应用前景? 2026-01-02](https://www.53ai.com/news/finetuning/2026010293608.html) [LoAR做Fine-Tuning微调原理到底是什么? 2025-11-19](https://www.53ai.com/news/finetuning/2025111967130.html) [如何将 AI 代码采纳率从30%提升到80%? 2025-09-25](https://www.53ai.com/news/finetuning/2025092523981.html) [大模型微调,为什么99%的企业都不应该碰这个坑? 2025-06-20](https://www.53ai.com/news/finetuning/2025062093260.html) [万不得已,不要对 LLM 进行微调? 2025-06-17](https://www.53ai.com/news/finetuning/2025061712380.html) [可以将任何符合OpenAPI规范的接口转 MCP Server吗? 2025-05-21](https://www.53ai.com/news/finetuning/2025052176139.html) [OpenAI发布GPT-4.1系列模型,对行业最大吸引力是什么? 2025-05-17](https://www.53ai.com/news/finetuning/2025051747635.html) [私有部署大模型需要多少显存? 2025-05-14](https://www.53ai.com/news/finetuning/2025051464782.html) 热门标签 [内容创作](https://www.53ai.com/news/neirongchuangzuo) [大模型技术](https://www.53ai.com/news/LargeLanguageModel) [个人提效](https://www.53ai.com/news/gerentixiao) [langchain](https://www.53ai.com/news/langchain) [llamaindex](https://www.53ai.com/news/llamaindex) [多模态技术](https://www.53ai.com/news/MultimodalLargeModel) [RAG技术](https://www.53ai.com/news/RAG) [智能客服](https://www.53ai.com/news/zhinengkefu) [知识图谱](https://www.53ai.com/news/knowledgegraph) [模型微调](https://www.53ai.com/news/finetuning) [RAGFlow](https://www.53ai.com/news/RAGFlow) [coze](https://www.53ai.com/news/coze) [Dify](https://www.53ai.com/news/dify) [Fastgpt](https://www.53ai.com/news/fastgpt) [Bisheng](https://www.53ai.com/news/Bisheng) [Qanything](https://www.53ai.com/news/Qanything) [AI+汽车](https://www.53ai.com/news/AIqiche) [AI+金融](https://www.53ai.com/news/AIjinrong) [AI+工业](https://www.53ai.com/news/AIgongye) [AI+培训](https://www.53ai.com/news/AIpeixun) [AI+SaaS](https://www.53ai.com/news/AISaaS) [Skill](https://www.53ai.com/news/tishicikuangjia) [提示词技巧](https://www.53ai.com/news/tishicijiqiao) [AI+电商](https://www.53ai.com/news/AIdianshang) [AI面试](https://www.53ai.com/news/AImianshi) [数字员工](https://www.53ai.com/news/shuziyuangong) [ChatBI](https://www.53ai.com/news/zhinengbaobiao) [AI知识库](https://www.53ai.com/news/zhishiguanli) [开源大模型](https://www.53ai.com/news/OpenSourceLLM) [智能营销](https://www.53ai.com/news/zhinengyingxiao) [智能硬件](https://www.53ai.com/news/zhinengyingjian) [智能化改造](https://www.53ai.com/news/zhinenghuagaizao) [AI+医疗](https://www.53ai.com/news/AIyiliao) [MaxKB](https://www.53ai.com/news/MaxKB) [Palantir](https://www.53ai.com/news/Palantir) [Glean](https://www.53ai.com/news/Glean) [Openclaw](https://www.53ai.com/news/Openclaw) [应聘简历请发送至: ceo@53ai.com](mailto:ceo@53ai.com) [产品服务](https://www.53ai.com/product.html) [工作+AI](https://www.53ai.com/product/quanyuanAI) [工作对话](https://www.53ai.com/product/gongzuoduihua) [内容创作](https://www.53ai.com/product/neirongchuangzuo) [方案撰写](https://www.53ai.com/product/zhinengwendang) [魔法菜单](https://www.53ai.com/product/mofacaidan) [业务+AI](https://www.53ai.com/product/yewuAI) [微信分身](https://www.53ai.com/product/weixinfenshen) [海外客服](https://www.53ai.com/product/haiwaikefu) [官网客服](https://www.53ai.com/product/guanwangkefu) [抖音客服](https://www.53ai.com/product/douyinkefu) [数字老师](https://www.53ai.com/product/shuzilaoshi) [数字督导](https://www.53ai.com/product/shuzidudao) [智能服务台](https://www.53ai.com/product/zhinengfuwutai) [AIx业务](https://www.53ai.com/product/AIXyewu) [智能问数](https://www.53ai.com/product/zhinengwenshu) [智能审核](https://www.53ai.com/product/zhinengshenhe) [智能工单](https://www.53ai.com/product/zhinenggongdan) [企微跟进助手](https://www.53ai.com/product/qiweigenjinzhushou) [智能报价](https://www.53ai.com/product/zhinengbaojia) [企微销售助手](https://www.53ai.com/product/qiweixiaoshouzhushou) [应用智改](https://www.53ai.com/product/zijianyingyong) [企微客服助手](https://www.53ai.com/product/qiweikefuzhushou) [落地咨询](https://www.53ai.com/consulting.html) [场景共创](https://www.53ai.com/fine-tuning.html) [客户案例](https://www.53ai.com/kehuanli.html) [行业案例](https://www.53ai.com/kehuanli/hangyeanli) [场景案例](https://www.53ai.com/kehuanli/solution) [AI知识库](https://www.53ai.com/news.html) [前沿技术](https://www.53ai.com/news/qianyanjishu) [Agent框架](https://www.53ai.com/news/agentplatform) [行业应用](https://www.53ai.com/news/hangyeyingyong) [企业落地](https://www.53ai.com/news/qiyejingying) [结构化提示词](https://www.53ai.com/prompt.html) [关于我们](https://www.53ai.com/about.html) [公司介绍](https://www.53ai.com/about/introduction) [渠道合作](https://www.53ai.com/about/cooperation) 友情链接: [通往AGI之路](https://www.waytoagi.com/) [云璨信息](https://www.yuncan.com/) [企微SCRM](https://www.wescrm.com/) [小名片](https://www.mingpian.top/) [优网科技](https://www.uweb.net.cn/) CopyRight © 2012-2024 深圳市博思协创网络科技有限公司 版权所有 [![]()粤ICP备14082021号](https://beian.miit.gov.cn/) 广州:广州市华景路37号(华景软件园)暨南大学科技大厦6楼(整层) 深圳:深圳市福田区泰然四路29号天安创新科技广场一期A座1204 上海:上海市浦东新区金新路58号1602室 微信扫码 和创始人交个朋友 联系我们 售前咨询 [186 6662 7370](tel:18666627370) 预约演示 [185 8882 0121](tel:18588820121) ![]() 微信扫码 添加专属顾问 回到顶部 ![](https://static.53ai.com/assets/static/images/loading.svg) 加载中... 扫码咨询 ![]() ![]() [预约演示](https://work.weixin.qq.com/ca/cawcde2599cf74e2d9) [微信咨询](https://work.weixin.qq.com/ca/cawcdefb661890e885) [电话咨询](tel:400-838-1185)
Readable Markdown
推荐语 阿里团队分享智能驾驶感知检测小模型训练优化方法,150%效率提升助力行业突破。 核心内容: 1. 智能驾驶场景下感知检测小模型的训练挑战 2. 不同算力卡上的性能对比测试方案 3. 四大典型模型的优化实践与效果验证 ![](https://static.53ai.com/assets/static/images/avatar.jpg) 杨芳贤 53AI创始人/腾讯云(TVP)最具价值专家 一、背景 在智能驾驶技术快速发展的背景下,车辆对周围环境的实时感知和决策能力成为系统性能的关键。目标检测、语义分割、多传感器融合等任务构成了智能驾驶系统的核心感知模块,这些算法通常依赖于大规模深度学习模型的训练与部署。随着自动驾驶等级从L2向L3乃至L4演进,模型复杂度和数据量呈指数级增长,这对计算平台提出了更高的要求,尤其是在算力、内存带宽、并行处理能力和能效比等方面。 当前,行业内主流的高性能计算平台包括高速GPU集群,整体提供极高的内存容量和带宽,支持高效的大批量数据处理和分布式训练,可以满足更复杂的模型架构和更大的训练批次需求。因此,在典型智能驾驶场景中,如高精度目标检测、点云感知以及多模态融合感知任务中,对不同的算力卡进行全面的性能对比测试,为客户在选择合适的算力资源时提供有力的数据支撑。 测试环境配置 - 环境:mmdet3d、mmcv、flash-attn、nuscenes-devkit、torchrun分布式训练框架; - 算力:两种不同的算力卡,用机器一和机器二表示; - 模型:maptr、sparsedrive、qcnet、Gaussianformer; - 数据集:nuScenes、Agoverse。 二、技术架构 整体的对比测试基于PAI DSW实例进行,在dsw机器上进行训练实验,以下是整体的训练步骤: ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlM0RjJxQ0t3TWZaNUdpYlNHdWhhM2s5aWM3enpvdkprdU1YNHV5U3RDZmJnWGdMeEcyQ09veVp4QS82NDA/d3hfZm10PW90aGVyJmFtcA==;from=appmsg) 以maptr模型为例: 1\.先选择dsw镜像,要对应合适的py、cuda版本,尽量和模型要求的配置相同,选择autodrive镜像,里面预装了必要mmcv等依赖。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNqSXh0alp5b0xzWVBTTGJrRGZEcUVycVNteTJZaWNBTEhkb0hhSERPNUh2SVhEV1AzS25WcHRRLzY0MD93eF9mbXQ9b3RoZXImYW1w;from=appmsg) 2\.然后根据模型的github官方文档安装必要的依赖,如果碰到报错,重新选择不同的版本,这一步可能需要多次实验配置。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNiVFFnRFhpYjlFUzFoVnNpYk9rSXpEWUVWZ1hqcFhqSDBWMlU0TXNxSHNoOU54SU40OER6ZE1Mdy82NDA/d3hfZm10PW90aGVyJmFtcA==;from=appmsg) 3\.创建dsw时会指定一个cpfs挂载点,在dsw挂载的cpfs中下载模型文件和数据集做持久化存储。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNpY3JwWDR0YmpWSFZ0dTBnQ2dsU3MwRTJab21UNlJPQ2Z2Qmlhd0V2Z3lzT2FuaHhtU2M4RUNOQS82NDA/d3hfZm10PW90aGVyJmFtcA==;from=appmsg) 4\.然后执行训练命令,log记录训练时间和吞吐量。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNocDVLamt2VlFxWFI1bDFIcEhqNmlhRUNhUWx4WGlhd1FVWmFxVFFUNGtjRjN0V1hreHhNTkJrQS82NDA/d3hfZm10PW90aGVyJmFtcA==;from=appmsg) 以下是该项目中测试的四个模型,全部是目标检测和感知领域的小模型,适用于智能驾驶场景: | | | | | |---|---|---|---| | 类型 | 模型 | 主要依赖 | 官方地址 | | 感知-地图构造 | maptr v1 | mmdet3d 0.17.2mmcv 1.4.0 | https://github.com/hustvl/MapTR | | 感知-端到端 | sparsedrive | mmcv 1.7.1flash-attn 2.3.2 | https://github.com/swc-17/SparseDrive | | 感知-预测 | QCNet | mmdet3d 0.17.2 | https://github.com/ZikangZhou/QCNet | | 感知-目标检测 | GaussianFormer | mmcv 2.0.1mmdet3d 1.1.1 | https://github.com/huang-yh/GaussianFormer | 三、问题&解决方法 **3\.1 环境依赖冲突** ### mmengine和torch 在maptr模型测试中,遇到了严重的环境依赖问题,执行pip install mmcv==1.4.0,build wheels时失败。 ``` Collecting mmcv-full==1.4.0  Using cached mmcv_full-1.4.0.tar.gz (2.8 MB)  Preparing metadata (setup.py): started  Preparing metadata (setup.py): finished with status 'done'Building wheels for collected packages: mmcv-full  Building wheel for mmcv-full (setup.py): started  Building wheel for mmcv-full (setup.py): still running...  error: command '/usr/local/cuda/bin/nvcc' failed with exit code 1  Complete output from command /usr/bin/python3 -c "import setuptools, tokenize;__file__='.../mmcv_full-1.4.0/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d : ``` 根据mmcv官方文档排查,发现该1.4.0版本的mmcv是比较旧的依赖,必须要求1.9.1\<=torch\<=1.10.0,在dsw官方自带的镜像中已经找不到满足要求的低版本torch,重新卸载torch安装低版本会导致大量的镜像自带库产生兼容错误。 mmcv1.4.0又是maptr的必须依赖。 针对maptr模型的解决方法是选择带py38+cu111版本的ubuntu裸镜像,重新安装合适的torch版本,然后再安装mmcv。 flash-attn和transformer 在sparsedrive模型测试时,需要安装flash-attn==2.6.1,setup时失败。 ``` Collecting flash-attn  Using cached flash_attn-2.6.1.tar.gz (49 kB)  Preparing metadata(setup.py): started  Preparing metadata(setup.py): finished with status 'error'  ERROR: Command errored out with exit status 1:   command: /usr/bin/python3 -c 'import io, os, sys, setuptools, tokenize; ...' bdist_wheel -d ...       cwd: /tmp/pip-install-xxxx/flash-attn/  Complete output from command:    Running from flash-attn source directory.    TORCH_CUDA_ARCH_LIST=8.0+PTX    Traceback (most recent call last):      File "<string>", line 1, in <module>      File "/tmp/pip-build-env-xxxx/overlay/lib/python3.8/site-packages/setuptools/__init__.py", line 16, in <module>        import ez_setup      File "/tmp/pip-build-env-xxxx/overlay/lib/python3.8/site-packages/ez_setup.py", line 139, in <module>        raise RuntimeError("ez_setup cannot run as a namespace package")    RuntimeError: ez_setup cannot run as a namespace package    During handling of the above exception, another exception occurred:    Traceback (most recent call last):      File "<string>", line 2, in <module>      File "/tmp/pip-install-xxxx/flash-attn/setup.py", line 10, in <module>        import torch      File "/home/user/.local/lib/python3.8/site-packages/torch/__init__.py", line 197, in <module>        _load_global_library('libtorch_cpu.so')      File "/home/user/.local/lib/python3.8/site-packages/torch/_utils_internal.py", line 85, in _load_global_library        ctypes.CDLL(path)    OSError: /home/user/.local/lib/python3.8/site-packages/torch/lib/libtorch_cpu.so: undefined symbol: _ZN3c106detail15unchecked_inplace_False_aten_14_GLOBALS_INITIALIZED_for___nv_isnan ``` 这个错误很复杂,看起来是cuda版本的错误,但查看flash的官方文档,又显示和torch123兼容,很难找到根因,后面查看了py3.8的torch/\_utils\_internal.py的源代码,里面调用了transformers库的一个函数,这个函数在高版本的transformers已经被废弃,只有该模型指定的transformers4.30.1在使用,因为缺少这个函数,导致这个undefined symbol错误。 解决方法是transformers库降级,pip install transformers==4.30.1。 **3\.2 源代码适配** 由于不同算力卡底层编译环境的差异,在进行模型测试一般需要对源代码做处理。 ### local rank处理 local\_rank是指定GPU序号的参数变量,在多卡并行训练时需要传入local\_rank默认值,目前大部分的模型,包括本项目测试的四个模型,默认以Nvidia算力作为模型训练和推理的环境,因此会在启动脚本中硬编码传入参数--local\_rank,但不同的算力卡调度逻辑不一样,可能会采用不用的GPU序号变量。 比如sparsedrive在机器一执行启动命令会出现变量错误: ``` train.py: error: unrecognized arguments: --local_rank=0E0522 17:29:16.787000139811472776256 torch/distributed/elastic/multiprocessing/api.py:826] failed (exitcode: 2) local_rank: 0 (pid: 100906) of binary: /usr/local/bin/python3 ``` 该问题的解决方法是在训练脚本中修改代码parser.add\_argument('--local-rank',type=int,default=0) ### NCCL P2P处理 DDP多卡并行训练时,会默认使用多卡的点对点通信,多张卡之间共享模型权重和数据集,实现并行训练;点对点通信直接使用卡之间的内部通信网络,不经过主机内存中转。 在测试实验中会偶发出现以下的错误,rank0和rank1的参数不一样: ``` Traceback (most recent call last):  File "train_ddp.py", line 42, in <module>    model = DDP(model)  File "/usr/local/lib/python3.10/site-packages/torch/nn/parallel/distributed.py", line 610, in __init__    _check_same_numel(self.module.parameters(), self.device_ids[0])  File "/usr/local/lib/python3.10/site-packages/torch/nn/parallel/distributed.py", line 587, in _check_same_numel    assert torch.distributed.is_initialized(), "Distributed process group is not initialized"RuntimeError: DDP expects same model across all ranks, but Rank 0 has 1012 params, while rank 1 has inconsistent 0 params. ``` 这个错误原因在rank1没有读取到rank0的状态,多卡通信失败;这个时候禁用点对点通信,可以解决这个错误,解决方法是在训练脚本加入EXPORT NCCL\_P2P\_DISABLE=1,该参数可以禁用点对点通信。 但P2P被禁用,让多卡状态共享不再通过高速网络,会让训练效率略微下降。 **3\.3 性能优化** 实际在对比测试中,可以采用一些优化性能的方法,让算力卡发挥尽可能多的算力优势;以下介绍从cpu、应用、外部挂载三个方面的优化点。 ### 3\.3.1 cpu处理加速 在maptr模型测试中,发现实际算力卡的显存使用率和显存占用量都比较低,从以下监控中显示训练进程大量在CPU核心上执行,GPU上的运算很短时间就结束,然后等待CPU执行完毕再执行。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3N2Zy95bFJoclNqUWI4Z3ZhVUF1c0d2aWJCaWIxUGt0TUNpY1oxdEQxWnRLQjRKd0RnR2xYUGpwdGY1Nk0xVGJDaWFiczVBOWdFYld5TUpoUVFRZ2Nab3o4YjRpYlRleVIzMEdJQk9KSy82NDA/d3hfZm10PXN2ZyZhbXA=;from=appmsg) 由于该模型是小模型,本身的模型的计算节点数远小于大模型,根据其源码显示,GPU用于模型本身的梯度计算和参数更新,CPU用于读取图片数据做预处理tensor,而进程监控的结果是CPU的处理时间很长,GPU在等待CPU处理数据完毕后再进行计算,因此算力卡肯定无法全部发挥算力,需要对CPU的计算做优化来提升效率。 进程池 进程池(Process Pool) 是一种用于并行执行任务的机制,主要用于在多核 CPU 环境下提高程序的运行效率。它通过预先创建一组工作进程,将多个任务分配给这些进程并发地执行,从而充分利用计算机的硬件资源。使用进程池可以避免频繁创建和销毁进程所带来的性能开销,因为进程池中的进程是复用的。 当主程序向进程池提交任务时,进程池会根据当前可用的工作进程数量自动调度任务,可以在提升执行速度的同时,避免资源竞争和系统过载。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNQbjVCQ1ZzZWg2bFdhYVNRVDN1TGw0clJNWFc0WUIwaWMzV2JJdDc3bVFHYVBpYmE2dlVOcG5wUS82NDA/d3hfZm10PW90aGVyJmFtcA==;from=appmsg) 对cpu计算要求高的小模型可以使用进程池来加速计算,进程数一般设置成cpu核心数: ``` from multiprocessing import Pooldef image_process(image):    ...    return tensorif __name__ == '__main__':    with Pool(processes=n) as pool:  # 创建一个包含n个进程的池        results = pool.map(image_process, image_list)  # 进程池并行计算        print(results) ``` #### 共享内存 共享内存是一种进程间通信机制,它允许多个进程访问同一块内存区域,从而实现数据的高效交换和同步。相比于其他 IPC 机制,共享内存具有极低的通信开销,因为不需要在内核与用户空间之间频繁复制数据;多个进程可以通过标识符或名称映射到同一块物理内存地址空间上。一旦某个进程将数据写入该共享内存区域,其他进程可以立即读取这些数据,而无需通过复杂的序列化或网络传输过程。 这种机制特别适用于多进程之间的频繁数据交换和并发操作。 对于小模型在处理数据时,需要大量使用cpu对内存的读取写入,前面启用了进程池,共享内存可以配合多进程使用,加快cpu的处理速度,对于共享内存的大小,一般设置成实例的分配内存;当数据占用量很大时,需要增加共享内存。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNpYnp0WVpTUXVLWWFRSURYMG9QWjVSVEJKaWEzTVVGaWJhRXZUWk1PbEtRMk5FS2RieDVsQWR4ckEvNjQwP3d4X2ZtdD1vdGhlciZhbXA=;from=appmsg) 3\.3.2 torch应用加速 用torch做模型训练时,有一些torch内置的方法,能够对batch数据做高效处理,对模型本身做图处理,加速训练过程,以下介绍三种不同的方法: #### pin\_memory PyTorch 会将数据加载到 page-locked 内存,这种内存不会被操作系统交换到磁盘,因此可以更高效地通过 PCIe 总线传输到 GPU,直接由 GPU 异步访问,从而加快从 CPU 到 GPU 的数据拷贝速度。 CUDA 支持从 pinned memory 到 GPU 的异步数据传输,这可以与计算重叠,提升整体训练效率: ``` dataloader = DataLoader(    dataset,    batch_size=32,    shuffle=True,    num_workers=4,    pin_memory=True  # 启用 pinned memory) ``` #### num\_workers num\_workers指定了用于数据预处理和加载的子进程数量,每个子进程负责从磁盘读取数据、进行预处理,并将处理好的 batch 数据传递给主进程。使用多个 workers 并行读取和处理数据,可以显著提升训练效率,在 GPU 进行模型训练的同时,workers 可以提前准备好下一个 batch 的数据,实现“GPU计算 + 数据加载”并行。 num\_workers的原理和上文中提到的cpu进程池原理类似,都是通过多进程并发来提升速度,这个是torch自带的加速数据加载和处理的方法,进程池是cpu层面所有任务的加速方法。 num\_workers的值一般设置成cpu核心数。 ``` dataloader = DataLoader(    dataset,    batch_size=32,    shuffle=True,    num_workers=4, #cpu核心数    pin_memory=True  ) ``` #### torch compile torch compile使用torchdynamo对模型进行追踪,将其转换为Graph。这个过程会记录模型的计算路径,忽略掉非必要的控制流,并构建一个可优化的计算图。 然后对生成的计算图进行各种优化,例如:算子融合:将多个连续的操作合并成一个,减少内核启动次数。常量折叠:提前计算静态值。内存布局优化:减少数据拷贝,提高缓存命中率。 将优化后的图转换为目标平台的高效代码。PyTorch 默认使用 Inductor 编译器在后续的前向/反向传播中直接调用,绕过 Python 解释器,实现高速执行。 注意:compile无法编译非pytorch的指令,自定义 C/CUDA 扩展的模型可能会遇到兼容性问题。 ``` model=torch.compile(    model,    backend='inductor',    dynamic=False,    fullgraph=False,) ``` ### 3\.3.3 cpfs优化加速 在maptr模型测试中,发现模型在写入checkpoint文件到cpfs时的时间存在很大差异,在同一地域乌兰察布下的cpfsA区的机器一时延比较长在2分钟左右,但机器二秒级就能写入完成,理论上同一套cpfs不应该有这么大的读写性能差异,根据后台的监控显示两台不同机器上的cpfs时延差了3倍。 机器一 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNLQmljdXdlYkM3aWI1a1JleFhKUzVURDNlQTg0WGdVeGd4aE1wdmlhQkJ4UUdBTnZpYnFHa2M0OTZ3LzY0MD93eF9mbXQ9b3RoZXImYW1w;from=appmsg) 机器二 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlM5MXdDSUd6RlJzb1R2M3pJS05Tb2ZFVUdJNzFaY25yaWNLZmljUGpONExpY0RQclR4aHlNNkpQSGcvNjQwP3d4X2ZtdD1vdGhlciZhbXA=;from=appmsg) 后面分析cpfs的实例情况,发现挂载的cpfs都在乌兰A区,但根据智算CPFS的官方文档显示,cpfs使用高速eRDMA网络通信,目前只有乌兰C区支持,初步判断是因为可用区导致无法使用网速网络读写,使机器一读写效率很低。 重新新建一个C区的cpfs,重新训练后发现ppu的cpfs写入延迟大大降低,时延问题解决。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlN0OFBBRTYwd2paQ3FhaWFCSGdBaWJhajlCdjVTOERUVnB3ODJuSDdwVWdEaWM3dU85SVk5dEZMbVEvNjQwP3d4X2ZtdD1vdGhlciZhbXA=;from=appmsg) 要启用cpfs的高速eRDMA网络读写,cpfs的可用区需要选择乌兰C区。 四、测试结果 从loss结果来看,机器一在100000 step时基本收敛,机器二在180000 step时基本收敛,基本符合预期的加速比,收敛趋势一致。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNhTjU4T2xpYTdXZ25pYTZvaG5TOVp2RFlNbzQ1WUpVRVk2aWNmMFRtaHQ3b0FMWm51YzdGY3paM1EvNjQwP3d4X2ZtdD1vdGhlciZhbXA=;from=appmsg) 总结 如果在实际业务场景中需要训练感知检测类的小模型,可以按照如下的操作方法来优化性能,总体的性能优化可以从调度层、应用层、挂载区三个方面来考虑。 ![](https://api.ibos.cn/v4/weapparticle/accesswximg?aid=119219&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9aNmJpY3hJeDVuYUpyVzUzcjh1bkhsekdtczZCSEQxMlNXNGlhWnNYMEMzaWJnUzVzMUVBNW5uSmEzS1NoZEl4eEJHRmozNkZxZ1lpY2lib3dPQ1BwN3R2UmVRLzY0MD93eF9mbXQ9b3RoZXImYW1w;from=appmsg) 模型训练过程中的tensor计算会先进入底层cpu做数据预处理,然后处理完的tensor会用cuda gpu算力来做模型梯度计算,训练过程中产生的checkpoint会写入到挂载区cpfs,从三个阶段可以分别做三方面的优化: 1\.调度层:创建进程池,提高cpu并行处理速度,增加共享内存,加快cpu读取内存的速度; 2\.应用层:torch dataloader启用pin\_memory,加快数据传输速度,增加num\_workers,提高并行计算速度,用compile加速模型计算; 3\.挂载区:使用有高速读写网络的CPFS存储,并选择合适的可用区。
Shard16 (laksa)
Root Hash336105317631279416
Unparsed URLcom,53ai!www,/news/finetuning/2025072471386.html s443