6.3.1. 环境安装

章节主要介绍X5算法工具链完整开发环境部署方法。

6.3.1.1. 交付使用说明

进行算法工具链使用环境部署前,请根据 X5 SDK交付包中的 ai_toolchain_package 目录版本信息下载对应版本嵌入式应用开发Sample交付 到Linux开发环境中。

下载嵌入式应用开发Sample交付包:

// 示例版本为 V1.2.8,请根据X5 SDK交付包中 ai_toolchain_package 目录下的 release_note.txt 下载对应版本SDK

wget -c ftp://oeftp@sdk.d-robotics.cc/runtime_package/Ai_Toolchain_Package-release-v1.23.9-OE-v1.2.8.tar.xz --ftp-password=Oeftp~123$%

示例源码目录结构说明

解压算法工具链SDK源码包:

// 示例版本为 V1.2.8,请根据X5 SDK交付包中 ai_toolchain_package 目录下的 release_note.txt 下载对应版本SDK

tar -xvf Ai_Toolchain_Package-release-v1.23.9-OE-v1.2.8.tar.xz

解压目录结构如下:

  • ai_benchmark: 目录提供常见分类、检测分割模型评测示例,包括性能评测精度评测部分。

  • horizon_runtime_sample: 目录提供定点模型上板示例。

  • package: 目录包含发布运行一些基础组件

    1. board 文件夹板端可执行程序。

    2. host 文件夹为x86开发环境环境依赖、工具依赖以及模型推理相关的libdnn库头文件。

6.3.1.2. 开发部署

对于开发环境部署,X5算法工具链支持使用Docker部署方式。

开发准备

为了顺利使用算法工具链,X5算法工具链建议您选择开发机应满足以下要求:

硬件/操作系统 要求
CPU CPU I3以上或者级别E3/E5的处理器
内存 16G或以上级别
GPU(可选) CUDA11.6、驱动版本Linux:>= 510.39.01*

适配显卡包括限于:

1)GeForce RTX 3090

2)GeForce RTX 2080 Ti

3)NVIDIA TITAN V

4)Tesla V100S-PCIE-32GB

5)A100
系统 Ubuntu 20.04

关于CUDA与显卡兼容性问题参考NVIDIA官网信息

使用Docker环境

为了帮助快速使用算法工具链,X5算法工具链提供包含完整开发环境的Docker镜像,大大简化环境部署过程。

阅读部分内容前,我们希望开发机中已经预装了Docker的基础环境。 X5算法工具链要求的Docker基础环境信息如下:

完成Docker环境安装后,需要无root权限用户添加到Docker用户组中。参考如下命令:

sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart

获取需要使用的Docker镜像地址如下:

镜像文件命名形式为:

  • CPU版本docker: openexplorer/ai_toolchain_ubuntu_20_x5_cpu:{version}

  • GPU版本docker: openexplorer/ai_toolchain_ubuntu_20_x5_gpu:{version}

技巧:

  1. 执行命令{version} 替换根据 X5 SDK交付包中的 ai_toolchain_package 目录获取版本信息

  2. 本地Docker镜像版本,可以联系技术支持团队获取。

  3. 开发机并不是必须含有GPU卡,一般使用CPU开发加载Docker镜像即可模型转换!

每个镜像文件第一次使用前,需要拉取镜像。

  • 镜像拉取命令为:

    docker pull openexplorer/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8
    

然后执行以下命令运行Docker容器。

  • CPU开发机Docker容器执行以下命令:

    // 运行 docker 镜像的命令
    
    export version=v1.2.8
    
    export ai_toolchain_package_path=/home/users/xxx/ai_toolchain_package
    
    export dataset_path=/home/users/xxx/data/
    
    docker run -it --rm \
      -v "$ai_toolchain_package_path":/open_explorer \
      -v "$dataset_path":/data \
      openexplorer/ai_toolchain_ubuntu_20_x5_cpu:"${version}"
    
  • GPU开发机 Docker容器执行以下命令:

    // 运行 docker 镜像的命令
    
    export version=v1.2.8
    
    export ai_toolchain_package_path=/home/users/xxx/ai_toolchain_package
    
    export dataset_path=/home/users/xxx/data/
    
    # 手动启动 GPU Docker 镜像
    docker run -it --rm 
      --gpus all \ # 在启动容器时,添加标记以启用GPU资源的访问
      --shm-size=15g \  # 修改共享内存大小
      -v "$ai_toolchain_package_path":/open_explorer \
      -v "$dataset_path":/data \
      openexplorer/ai_toolchain_ubuntu_20_x5_gpu:"${version}"
    

注意:

  1. 由于OE Docker镜像构建过程配置PATHLD_LIBRARY_PATH环境变量值,未使用推荐方式(如docker attach)进入容器可能导致环境变量加载正常从而导致 Cmake、GCC、CUDA等工具使用异常。

  2. 希望Docker容器退出销毁,请使用命令行 docker run -it 手动启动,不要带上 --rm 选项。

  3. 希望Docker容器启动后台执行,请命令行 docker run -it增加 -d 选项,容器启动返回容器ID,此时通过 docker exec -it {容器ID} /bin/bash 命令再次进入容器。

小提示:

至此,您已经成功通过Docker镜像进入完整算法工具链开发环境。 您可以键入 hb_mapper --help 命令验证是否可以正常得到帮助信息:

[root@d67382e74eea open_explorer]# hb_mapper --help
Usage: hb_mapper [OPTIONS] COMMAND [ARGS]...

  hb_mapper is an offline model transform tool provided by horizon.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  checker    check whether the model meet the requirements.
  infer      inference and dump output feature as float vector.
  makertbin  transform caffe model to quantization model, generate runtime...

若hb_mapper工具正常输出日志, 说明环境安装部署完成,请开发板部署 章节,进行开发板环境安装。

6.3.1.3. 开发板部署

开发板部署需要按照刷机说明,将开发镜像更新最新版本,升级方法参考安装系统 章节内容, 升级完成后,再相关补充文件拷贝到开发板即可。

算法工具链部分补充工具包含系统镜像中,这些工具已经放置Ai_Toolchain_Package-release-vX.X.X-OE-vX.X.X/package/ 安装包中, 进入Ai_Toolchain_Package-release-vX.X.X-OE-vX.X.X/package/board 执行install脚本。 执行命令如下:

bash install.sh ${board_ip}

注意:

  • ${board_ip}开发板设置的IP地址,请确保开发机上可以访问该IP。

  • 成功安装后,重新启动开发板,在开发板执行 hrt_model_exec 可以验证安装是否成功。

6.3.1.4. 版本管理工具使用说明

章节主要介绍ddk_vcs版本管理工具使用说明,便于开发者了解当前开发环境算法工具链依赖版本情况。

注意: 版本管理工具主要用于在使用Docker环境进行模型PTQ转换出现错误时做DEBUG使用,若模型转换功能正常,可跳过此章节阅读。

版本管理工具包括以下功能:

  • ddk_vcs list;

  • ddk_vcs install;

  • ddk_vcs uninstall;

  • ddk_vcs patch;

  • ddk_vcs show;

ddk_vcs list

ddk_vcs list 用于列出安装软件包。

参数执行命令时,结果展示当前安装各个模块信息。使用示例如下:

[horizon@gpu-dev067 ai_toolchain]$ ddk_vcs list
Host package version: x5 1.2.8
The following packages versions
Platform         Package        Version MD5
---------------- -------------- ------- --------------
aarch_64         dnn            1.24.5  a4c77552d3
x86_64_gcc11.4.0 dnn_x86        1.24.5  39527daad7
x86_64_gcc11.4.0 horizon-nn     1.1.0   origin:1.1.0
x86_64_gcc11.4.0 horizon-nn-gpu N/A     origin:N/A
x86_64_gcc11.4.0 horizon_tc_ui  1.24.3  origin:1.24.3
x86_64_gcc11.4.0 hbdk           3.49.15 origin:3.49.15

备注:

最后几行的origin信息会在每次使用工具链SDK包内的install脚本进行安装后更新为当前环境下的版本,
后续在使用ddk_vcs进行安装时则不会改变,只会改变Version的值。

使用 -p 参数以后显示当前可以安装模块版本情况,可以通过 ddk_vcs install 进行安装,使用示例如下:

[horizon@gpu-dev004]$ ddk_vcs list -l
Host package version: 1.2.8
The following packages versions
Platform         Local Package         Version MD5
---------------- --------------------- ------- ----------
aarch_64         dnn_1.24.5.tar.gz     1.24.5  a4c77552d3
x86_64_gcc11.4.0 dnn_x86_1.24.5.tar.gz 1.24.5  39527daad7

ddk_vcs install

ddk_vcs install 用于安装包进行安装。 用户可以直接通过 ddk_vcs install对应模块tar包进行安装。安装需要指定对应的platform。使用示例如下:

[horizon@gpu-dev004]$ ddk_vcs install dnn_1.17.3d.tar.gz -p aarch_64
dnn installed successfully, version: 1.17.3d, platform: aarch_64
[horizon@gpu-dev004]$ ddk_vcs install hbdk-3.44.7-cp38-cp38-linux_x86_64.whl  horizon_nn-0.17.1-cp38-cp38-linux_x86_64.whl
hbdk-3.44.7-cp38-cp38-linux_x86_64.whl installed successfully
horizon_nn-0.17.1-cp38-cp38-linux_x86_64.whl installed successfully

使用 ddk_vcs list -l用户可以得到自己当前host package中各个模块版本信息, 然后使用 ddk_vcs install 可以方便切换各个版本,使用示例如下:

[horizon@gpu-dev004]$ ddk_vcs install dnn==1.15.2  --platform aarch_64
dnn installed successfully, version: 1.15.2, platform: aarch_64

如果本地没有对应版本可以指定安装包位置进行安装。

ddk_vcs uninstall

ddk_vcs uninstall 用于卸载指定模块。使用示例如下:

[horizon@gpu-dev004]$ ddk_vcs uninstall dnn --platform aarch_64
Start to uninstall modules, platform: aarch_64
dnn uninstalled successfully, version: 1.17.3d, platform: aarch_64

ddk_vcs patch

使用 ddk_vcs patch ddk_patch.tar.gz 可以安装预先制作的patch包。使用示例如下:

[horizon@gpu-dev004]$ ddk_vcs patch ddk_patch.tar.gz
dnn installed successfully, version: 1.15.2_patch0, platform: aarch64

ddk_vcs show

ddk_vcs show 用于显示有关安装软件包信息。使用 ddk_vcs show [模块名] ,可以展示对应模块信息。使用示例如下:

[horizon@gpu-dev004]$ ddk_vcs show dnn
Host package version: x5 1.2.8
The following packages versions
Platform Package Version MD5
-------- ------- ------- ----------
aarch_64 dnn     1.24.5  a4c77552d3