软件安装

开发环境部署

Docker容器部署

在前文中,我们已介绍了使用 Docker 容器前的相关准备工作。为帮助您快速上手工具链,我们提供了包含完整开发环境的 Docker 镜像,大大简化了环境部署流程。 接下来将为您详细说明 Docker 容器的部署方法。

小技巧

若您已下载离线镜像,需先使用下方命令将镜像加载到本地。

docker load -i docker_openexplorer_xxx.tar.gz

您可以在OE包的一级目录下直接运行以下脚本启动当前OE版本所对应的Docker容器(如果本地没有对应镜像,则脚本会自动从官方Docker hub拉取镜像):

bash run_docker.sh data/

其中, data 为评测数据集文件夹路径,请提前创建好后再运行命令,否则将导致加载问题。

若您想要使用CPU版本Docker镜像则需要增加 cpu 参数:

bash run_docker.sh data/ cpu

OE包示例所依赖的相关公开评测数据集的下载链接可参考 数据集下载 章节的介绍进行获取。

如果您希望手动启动Docker容器,可以参考下方命令,其中 {version} 为您当前所用的OE版本号。

注解

为方便使用,我们为您提供了两种CPU Docker以及GPU Docker,可按需选择。

CPU版本Docker
GPU版本Docker
# CPU Docker
docker pull openexplorer/ai_toolchain_ubuntu_22_j6_cpu:{version}
# 手动启动 CPU Docker 镜像
docker run -it --rm \
  --network host \ # 调整网络模式为host
  -v {OE 包路径}:/open_explorer \ # 挂载 OE
  -v ./dataset:/data/horizon_j6/data \ # 挂载数据集
  openexplorer/ai_toolchain_ubuntu_22_j6_cpu:{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 命令再次进入容器。

本地手动安装

在前文中,我们已介绍了两种量化方案及地平线开源高效模型训练的环境依赖和相关说明。本节将为您介绍本地手动安装环境的方法。我们建议您在完成浮点模型训练后,优先选择简单易用的 PTQ 量化方案,仅在精度问题无法解决时再切换至 QAT 量化方案。

本地手动安装环境,仅需运行下方脚本,即可一键式完成环境安装。

cd package/host
bash install.sh  

安装脚本会自动检查相应的环境,缺少相应依赖或配置会中断安装过程。

根据建议补充依赖后,重新执行install脚本即可。

注解
  • 如需要生成板端可执行程序,则使用交叉编译工具 aarch64-none-linux-gnu-gccaarch64-none-linux-gnu-g++,版本为 Arm GNU Toolchain 12.2.Rel1

  • 如需要生成X86仿真环境可执行程序,则使用 X86 gcc ,如果修正建议指出是gcc/g++版本不符合要求,在安装完指定版本之后,您需要重新建立gcc和g++软链接为gcc-12.2.0和g++-12.2.0。

  • 如需要生成QNX环境可执行程序,则使用 aarch64-unknown-nto-qnx8.0.0-gccaarch64-unknown-nto-qnx8.0.0-g++,同时请注意由于LICENSE原因,QNX交叉编译器不随OE包交付,若您需要获取QNX交叉编译器,请联系地平线技术支持人员。

  • 对于host端(x86)依赖的库,比如 isl,gmp,mpc,mpfr 等,在lib/x86_64-linux-gnu下,如果编译报错,请在编译工程中通过LD_LIBRARY_PATH来指定。

  • 如果编译过程中出现glibc库版本冲突的问题,例如:xxx@GLIBC_xxx的未定义符号的错误,请在编译工程中通过-rpath-link来指定到工具链的aarch64-none-linux-gnu/lib路径下,同时在编译工程中加上-lxxx, 例如:-lpthread。另外需要特别注意的是下图框起来的记录源文件的变量SRCS,最好放在 \${LIBS} 链接库的前面,否则可能也会报未定义的符号。

    image

  • 安装脚本会自动检查相应的环境,缺少相应依赖或配置会中断安装过程,可以根据提示补充依赖,并重新执行install脚本。

  • 脚本执行成功后,会在 ~/.bashrc 系统环境变量中添加Path等信息(环境变量 LD_LIBRARY_PATH 经常被使用,建议您检查环境变量是否符合预期),请执行 source ~/.bashrc 来使当前terminal的配置生效。

运行环境部署

在前文中,我们已为您介绍了推理运行前开发板的相关准备工作。接下来,将为您说明模型推理运行时所需的板端工具及其安装方法。

板端工具安装

补充工具

工具链的部分补充工具未包含在系统镜像中,但可以在宿主机环境下执行OE包中的安装脚本将其拷贝至开发板,其参考命令如下:

cd package/board
# Linux环境
bash install_linux.sh ${board_ip}
# QNX环境
bash install_qnx.sh ${board_ip}
注解

其中, ${board_ip} 是您为开发板设置的IP地址,请确保在开发机上可以成功访问该IP。 补充文件成功安装后,请重新启动开发板,在开发板上执行 hrt_model_exec --help 即可验证安装是否成功。

DEB部署包

为简化板端部署流程,UCP统一计算平台提供了DEB部署包。该部署包安装完成后,您可直接通过命令行调用相关工具,自动安装所需的二进制文件和相关依赖库,快速设置并运行UCP相关的应用程序,大幅提升系统配置的便捷性与高效性。

关于DEB部署包的详细内容,您可参考UCP统一计算平台章节中的 总览-DEB部署包 小节。

注意

由于J6B平台搭载的是QNX操作系统,暂不支持DEB打包工具。