DrivingSDK

陆伍
2小时前发布 /正在检测是否收录...
广告 广告 广告 广告 广告 广告 广告 广告 广告 广告

项目介绍

华为昇腾-自动驾驶加速库

项目详情

通知: 本项目已经正式迁移至 Gitcode 平台

Driving SDK

简介

Driving SDK是基于昇腾NPU平台开发的适用于自动驾驶场景的算子和模型加速库,提供了一系列高性能的算子和模型加速接口,支持PyTorch框架。

安装

前提条件

  1. 本项目依赖昇腾提供的pytorch_npu包和CANN包,需要先安装对应版本的pytorch_npu和CANN软件包,具体配套关系见pytorch仓README。
    请参考昇腾官方文档Pytorch框架训练环境准备。
  2. 使用pip3 install -r requirements.txt 安装python依赖,requirements.txt文件位于项目根目录下。
  3. 如果您需要编译ONNX插件,请安装protobuf-devel-3.14.0, 在centos 系统上可以执行yum install protobuf-devel-3-14.0,否则请将CMakePresets.json中的ENABLE_ONNX选项改为FALSE,CMakePresets.json文件位于项目根目录下。
  4. 建议您在准备好环境后,使用umask 0027将umask调整为0027,以保证文件权限正确。
  5. 建议您以非root用户身份执行以下操作。
  6. 使用gcc编译本仓时,推荐使用gcc 10.2版本。

从发布包安装

当前并未正式发布whl包 ,请参考源码安装方式。

从源码安装

1. 克隆原始仓。

git clone https://gitee.com/ascend/DrivingSDK.git -b master

2. 编译Driving SDK。

注意:请在仓库根目录下执行编译命令
bash ci/build.sh --python=3.8

参数--python指定编译过程中使用的python版本,支持 3.8 及以上版本,缺省值为 3.8。请参考编译指导获取更多编译细节。

生成的whl包在DrivingSDK/dist目录下, 命名规则为mx_driving-1.0.0+git{commit_id}-cp{python_version}-linux_{arch}.whl。

3. 安装Driving SDK。

cd DrivingSDK/dist
pip3 install mx_driving-1.0.0+git{commit_id}-cp{python_version}-linux_{arch}.whl

如需要保存安装日志,可在pip3 install命令后添加--log 参数,并对您指定的目录做好权限控制。

配套关系

DrivingSDK支持的CPU架构,Python,PyTorch和torch_npu版本对应关系如下:

Gitee分支CPU架构支持的Python版本支持的PyTorch版本支持的torch_npu版本
masterx86&aarch64Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.1.0v2.1.0
Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.5.1v2.5.1
Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.6.0v2.6.0
branch_v7.1.RC1x86&aarch64Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.1.0v2.1.0-7.1.0
Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.5.1v2.5.1-7.1.0
Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.6.0v2.6.0-7.1.0
branch_v7.0.RC1x86&aarch64Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.1.0v2.1.0-7.0.0
Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.3.1v2.3.1-7.0.0
Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.4.0v2.4.0-7.0.0
branch_v6.0.0x86&aarch64Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.1.0v2.1.0-6.0.0
Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.3.1v2.3.1-6.0.0
Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.4.0v2.4.0-6.0.0
branch_v6.0.0-RC3x86&aarch64Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.1.0v2.1.0-6.0.rc3
Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.3.1v2.3.1-6.0.rc3
Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x2.4.0v2.4.0-6.0.rc3
branch_v6.0.0-RC2x86&aarch64Python3.7.x(>=3.7.5),Python3.8.x,Python3.9.x,Python3.10.x1.11.0v1.11.0-6.0.rc2
Python3.8.x,Python3.9.x,Python3.10.x2.1.0v2.1.0-6.0.rc2
Python3.8.x,Python3.9.x,Python3.10.x2.2.0v2.2.0-6.0.rc2
Python3.8.x,Python3.9.x,Python3.10.x2.3.1v2.3.1-6.0.rc2
branch_v6.0.0-RC1x86&aarch64Python3.7.x(>=3.7.5),Python3.8.x,Python3.9.x,Python3.10.x1.11.0v1.11.0-6.0.rc1
Python3.8.x,Python3.9.x,Python3.10.x2.1.0v2.1.0-6.0.rc1
Python3.8.x,Python3.9.x,Python3.10.x2.2.0v2.2.0-6.0.rc1

卸载

Pytorch 框架训练环境的卸载请参考昇腾官方文档Pytorch框架训练环境卸载。
Driving SDK的卸载只需执行以下命令:

pip3 uninstall mx_driving

快速上手

import torch, torch_npu
from mx_driving.common import scatter_max
updates = torch.tensor([[2, 0, 1, 3, 1, 0, 0, 4], [0, 2, 1, 3, 0, 3, 4, 2], [1, 2, 3, 4, 4, 3, 2, 1]], dtype=torch.float32).npu()
indices = torch.tensor([0, 2, 0], dtype=torch.int32).npu()
out = updates.new_zeros((3, 8))
out, argmax = scatter_max(updates, indices, out)

特性介绍

目录结构及说明

.
├── kernels                     # 算子实现
│  ├── op_host
│  ├── op_kernel
│  └── CMakeLists.txt
├── onnx_plugin                 # onnx框架适配层
├── mx_driving
│  ├── __init__.py
│  ├── csrc                     # 加速库API适配层
│  └── ...
├── model_examples              # 自动驾驶模型示例
│  └── BEVFormer                # BEVFormer模型示例
├── ci                          # ci脚本
├── cmake                       # cmake脚本
├── CMakeLists.txt              # cmake配置文件
├── CMakePresets.json           # cmake配置文件
├── docs                        # 文档
|  ├── api                      # 算子api调用文档
|  └── ...
├── include                     # 头文件
├── LICENSE                     # 开源协议
├── OWNERS                      # 代码审查
├── README.md                   # 项目说明
├── requirements.txt            # 依赖
├── scripts                     # 工程脚本
├── setup.py                    # whl打包配置
└── tests                       # 测试文件

算子清单

请参见算子清单。

支持特性

  • 支持PyTorch 2.1.0,2.3.1,2.4.0
  • 支持ONNX模型转换,训推一体
  • [ ] 支持图模式

    onnx转换om

    转换前需要手动添加环境变量

    # 查看mx_driving安装路径
    pip3 show mx_driving
    export ASCEND_CUSTOM_OPP_PATH=xxx/site-packages/mx_driving/packages/vendors/customize/
    export LD_LIBRARY_PATH=xxx/site-packages/mx_driving/packages/vendors/customize/op_api/lib/:$LD_LIBRARY_PATH

模型清单

DrivingSDK仓提供了包括感知、规划、端到端、VLA等自动驾驶模型基于昇腾机器的实操案例。每个模型都有详细的使用指导,后续将持续增加和优化典型模型。使用过程中,若遇到报错问题,可查看自动驾驶模型FAQ自助解决,或在Issues中留言。如下列表中Released为Y的表示已经过测试验证,N的表示开发自验通过。

Model8p-Atlas 800T A2性能(FPS)8p-竞品性能(FPS)Released
BEVDepth32.2922.11Y
BEVDet70.4135.56Y
BEVDet4D7.045.59Y
BevFormer3.663.32Y
BEVFusion23.6222.54Y
CenterNet1257.444542Y
CenterPoint(2D)66.16085.712Y
CenterPoint(3D)39.4148.48Y
Deformable-DETR6365Y
DenseTNT166237Y
DETR122126Y
DETR3D14.3514.28Y
Diffusion-Planner5672.965304.32Y
DiffusionDrive28.4330.53Y
FCOS-resnet196196Y
FCOS3D44.3144.30Y
FlashOCC104.8567.98Y
GameFormer7501.86400Y
GameFormer-Planner53195185Y
LaneSegNet18.023.75Y
MapTR34.8533.2Y
MapTRv223.0321.91Y
Mask2Former26.0328.42Y
MatrixVT46.1936.89Y
MultiPath++149.53198.14Y
OpenDWM1.821.82Y
OpenVLA56.1473.12Y
PanoOcc4.324.87Y
Pi-0116.36136.17Y
PivotNet9.7513.8Y
PointPillar(2D)70.7960.75Y
SalsaNext197.2241.6Y
Sparse4D70.5965.75Y
SparseDriveStage1: 46.3Stage2: 37.9Stage1: 41.0Stage2: 35.2Y
StreamPETR26.01625.397Y
SurroundOcc7.597.78Y
TPVFormer6.6910.32Y
UniADStage1: 1.002Stage2: 1.554Stage1: 1.359Stage2: 2.000Y
BEVNeXtStage1: 16.568Stage2: 7.572Stage1: 36.643Stage2: 11.651N
DexVLAStage2: 16.72Stage3: 15.85Stage2: 18.88Stage3: 18.67N
HiVT645652N
HPTR25.1236.07N
LMDrive8.0213.85N
MagicDriveDiTStage1: 0.83Stage1: 1.50N
Panoptic-PolarNet1.281.69N
PointTransformerV311.9235.56N
QCNet75.2994.11N
Senna1.3761.824N
VAD2.8477.476N
VGGT25.0415.30N
YoloV8214.64479.73N

支持的产品型号

  • Atlas A2 训练系列产品

安全声明

系统安全加固

  1. 建议您在运行系统配置时开启ASLR(级别2),又称全随机地址空间布局随机化,以提高系统安全性,可参考以下方式进行配置:

    echo 2 > /proc/sys/kernel/randomize_va_space
  2. 由于Driving SDK需要用户自行编译,建议您对编译后生成的so文件开启strip, 又称移除调试符号信息, 开启方式如下:

    strip -s 

    具体so文件如下:

    • mx_driving/packages/vendors/customize/op_api/lib/libcust_opapi.so
    • mx_driving/packages/vendors/customize/op_proto/lib/linux/aarch64/libcust_opsproto_rt2.0.so
    • mx_driving/packages/vendors/customize/op_impl/ai_core/tbe/op_tiling/lib/linux/aarch64/libcust_opmaster_rt2.0.so

    运行用户建议

    出于安全性及权限最小化角度考虑,不建议使用root等管理员类型账户使用Driving SDK。

文件权限控制

在使用Driving SDK时,您可能会进行profiling、调试等操作,建议您对相关目录及文件做好权限控制,以保证文件安全。

  1. 建议您在使用Driving SDK时,将umask调整为0027及以上,保障新增文件夹默认最高权限为750,文件默认最高权限为640。
  2. 建议您对个人数据、商业资产、源文件、训练过程中保存的各类文件等敏感内容做好权限管控,可参考下表设置安全权限。

    文件权限参考

类型Linux权限参考最大值
用户主目录750(rwxr-x---)
程序文件(含脚本文件、库文件等)550(r-xr-x---)
程序文件目录550(r-xr-x---)
配置文件640(rw-r-----)
配置文件目录750(rwxr-x---)
日志文件(记录完毕或者已经归档)440(r--r-----)
日志文件(正在记录)640(rw-r-----)
日志文件目录750(rwxr-x---)
Debug文件640(rw-r-----)
Debug文件目录750(rwxr-x---)
临时文件目录750(rwxr-x---)
维护升级文件目录770(rwxrwx---)
业务数据文件640(rw-r-----)
业务数据文件目录750(rwxr-x---)
密钥组件、私钥、证书、密文文件目录700(rwx------)
密钥组件、私钥、证书、加密密文600(rw-------)
加解密接口、加解密脚本500(r-x------)

构建安全声明

在源码编译安装Driving SDK时,需要您自行编译,编译过程中会生成一些中间文件,建议您在编译完成后,对中间文件做好权限控制,以保证文件安全。

运行安全声明

  1. 建议您结合运行环境资源状况编写对应训练脚本。若训练脚本与资源状况不匹配,如数据集加载内存大小超出内存容量限制、训练脚本在本地生成数据超过磁盘空间大小等情况,可能引发错误并导致进程意外退出。
  2. Driving SDK在运行异常时(如输入校验异常(请参考api文档说明),环境变量配置错误,算子执行报错等)会退出进程并打印报错信息,属于正常现象。建议用户根据报错提示定位具体错误原因,包括通过设定算子同步执行、查看CANN日志、解析生成的Core Dump文件等方式。

    公网地址声明

Driving SDK代码中包含公网地址声明如下表所示:

公网地址

类型开源代码地址文件名公网IP地址/公网URL地址/域名/邮箱地址用途说明
自研不涉及ci/docker/ARM/Dockerfilehttps://mirrors.aliyun.com/pypi/simpledocker配置文件,用于配置pip源
自研不涉及ci/docker/X86/Dockerfilehttps://mirrors.huaweicloud.com/repository/pypi/simpledocker配置文件,用于配置pip源
自研不涉及ci/docker/ARM/install_cann.shhttps://ascend-cann.obs.cn-north-4.myhuaweicloud.com/CANNcann包下载地址
自研不涉及ci/docker/x86/install_cann.shhttps://ascend-cann.obs.cn-north-4.myhuaweicloud.com/CANNcann包下载地址
自研

...(内容过长,已截断,更多详情请访问项目地址)

⬇️ 下载地址

喜欢就支持一下吧
点赞 0 分享 赞赏
评论 抢沙发
OωO
取消
广告