3.4. 安装SDK
SOPHON BM1688/CV186AH 目前支持SoC工作模式,以下为SoC模式与PCIe模式之间的区别
SoC模式 |
PCIe模式 |
|
运行模式 |
独立主机,微服务器形态 |
附属硬件,PCIe加速卡形态 |
对外IO方式 |
千兆以太网 |
PCIe接口 |
对应产品 |
微服务器/模组 |
PCIe加速卡 |
对于BM1688/CV186AH的用户,推荐将开发环境与运行环境分离,其中开发环境是指用于模型转换或验证以及程序编译等开发过程的环境;运行环境是指在具备SOPHON设备的平台上实际使用设备进行算法应用部署的运行环境。
因此,您需要 准备一台x86主机 作为开发环境,用于模型的编译量化以及程序的交叉编译。目前,已在主流的Linux系统适配验证,推荐使用Ubuntu20.04的x86主机,运行内存建议12GB以上。
3.4.1. 环境配置-Linux开发环境
我们提供了tpu-mlir的docker环境供用户在x86主机上进行模型的编译量化, 用户可以在x86主机上基于tpu-mlir和libsophon完成模型的编译量化与程序的交叉编译,部署时将编译好的程序拷贝至SoC平台(SE微服务器/SM模组)中执行。
3.4.1.1. tpu-mlir 环境初始化
Docker 安装
若已安装docker,请跳过本节。 执行以下脚本安装 docker 并将当前用户加入 docker 组,获得 docker 执行权限。
1# 安装docker
2sudo apt-get install docker.io
3sudo systemctl start docker
4sudo systemctl enable docker
5# docker命令免root权限执行
6# 创建docker用户组,若已有docker组会报错,可忽略
7sudo groupadd docker
8# 将当前用户加入docker组
9sudo usermod -aG docker $USER
10# 重启docker服务
11sudo service docker restart
12# 切换当前会话到新group或重新登录重启会话
13newgrp docker
环境初始化
目前支持 pip命令 安装tpu-mlir库,并提供docker模型移植环境
注意,这里请使用 pip
命令安装,而不是 pip3
命令,否则可能会安装错误
创建docker容器并进入docker
1docker run --privileged --name myname -v $PWD:/workspace -it sophgo/tpuc_dev:v3.2
安装tpu_mlir
1pip install tpu_mlir
安装tpu_mlir依赖
1# 安装onnx依赖
2pip install tpu_mlir[onnx]
3# 安装torch依赖
4pip install tpu_mlir[torch]
5
6# 同时安装onnx, torch, caffe依赖
7pip install tpu_mlir[onnx,torch,caffe]
8# 安装全部依赖
9pip install tpu_mlir[all]
目前支持6种配置:onnx, torch, tensorflow, caffe, paddle, all。
如果您想要离线安装,可以从https://github.com/sophgo/tpu-mlir/releases/ 下载最新release包
3.4.1.2. 交叉编译环境搭建
如果您希望使用SOPHONSDK搭建交叉编译环境,您需要用到gcc-aarch64-linux-gnu工具链,再将程序所依赖的头文件和库文件打包到soc-sdk目录中。
首先安装工具链:
1sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
您可以执行以下命令,验证开发环境中的交叉编译工具链是否配置成功:
1which aarch64-linux-gnu-g++
2# 终端输出内容
3# /usr/bin/aarch64-linux-gnu-g++
如果终端输出了aarch64编译的路径,则说明交叉编译工具链正确,开发环境是可以正常使用的。
解压sophon-img包里的libsophon_soc_<x.y.z>_aarch64.tar.gz,将lib和include的所有内容拷贝到soc-sdk文件夹。
1cd sophon-img 2# 创建依赖文件的根目录 3mkdir -p soc-sdk 4# 解压sophon-img release包里的libsophon_soc_${x.y.z}_aarch64.tar.gz,其中x.y.z为版本号 5tar -zxf libsophon_soc_<x.y.z>_aarch64.tar.gz 6# 将相关的库目录和头文件目录拷贝到依赖文件根目录下 7cp -rf libsophon_soc_<x.y.z>_aarch64/opt/sophon/libsophon-<x.y.z>/lib ${soc-sdk} 8cp -rf libsophon_soc_<x.y.z>_aarch64/opt/sophon/libsophon-<x.y.z>/include ${soc-sdk}
解压sophon-media包里的sophon-media-soc_<x.y.z>_aarch64.tar.gz,将sophon-media下lib和include的所有内容拷贝到soc-sdk文件夹。
1cd sophon-media_<date>_<hash> 2# 解压sophon-media包里的sophon-media-soc_<x.y.z>_aarch64.tar.gz,其中x.y.z为版本号 3tar -zxf sophon-media-soc_<x.y.z>_aarch64.tar.gz 4# 将sophon-media目录下的库目录和头文件目录拷贝到依赖文件根目录下 5cp -rf sophon-media-soc_<x.y.z>_aarch64/lib ${soc-sdk} 6cp -rf sophon-media-soc_<x.y.z>_aarch64/include ${soc-sdk} 7# 将ffmpeg和opencv的库目录和头文件目录拷贝到依赖文件根目录下 8cp -rf sophon-media-soc_<x.y.z>_aarch64/opt/sophon/sophon-ffmpeg_<x.y.z>/lib ${soc-sdk} 9cp -rf sophon-media-soc_<x.y.z>_aarch64/opt/sophon/sophon-ffmpeg_<x.y.z>/include ${soc-sdk} 10cp -rf sophon-media-soc_<x.y.z>_aarch64/opt/sophon/sophon-opencv_<x.y.z>/lib ${soc-sdk} 11cp -rf sophon-media-soc_<x.y.z>_aarch64/opt/sophon/sophon-opencv_<x.y.z>/include ${soc-sdk}
若您需要使用第三方库,可以使用qemu在x86上构建虚拟环境安装,再将头文件和库文件拷贝到soc-sdk目录中,具体可参考 libsophon使用手册(构建qemu虚拟环境) 。
若您需要使用SAIL模块,请参考doc目录下《sophon-sail_zh》中的安装说明。
3.4.2. 环境配置-SoC
3.4.2.1. 开发环境配置
对于SoC模式, 模型转换必须要在x86主机的docker开发容器中完成;C/C++程序建议在x86主机上使用交叉编译工具链编译生成可执行文件后,再拷贝到SoC目标平台运行。
若您希望直接在SoC中进行C/C++程序的编译,则 需要先安装 sophon-soc-libsophon-dev_<x.y.z>_arm64.deb 工具包,使用以下命令安装:
1sudo dpkg -i sophon-soc-libsophon-dev_<x.y.z>_arm64.deb
再安装sophon-media-soc-sophon-ffmpeg-dev_<x.y.z>_arm64.deb、sophon-media-soc-sophon-opencv-dev_<x.y.z>_arm64.deb 工具包,使用以下命令安装:
1sudo dpkg -i sophon-media-soc-sophon-ffmpeg-dev_<x.y.z>_arm64.deb
2sudo dpkg -i sophon-media-soc-sophon-opencv-dev_<x.y.z>_arm64.deb
注意
请先使用 bm_version 命令查看微服务器中的SDK版本与当前SDK版本是否一致,如果不一致,请参考下一小节对微服务器进行软件更新。
SE微服务器自带的操作系统并没有桌面系统,您需要使用ssh登录到微服务器终端内进行操作开发。
3.4.2.2. 运行环境配置
对于SoC平台,内部已经集成了相应的libsophon、sophon-opencv和sophon-ffmpeg运行库包,位于/opt/sophon/下。如果您需要使用我们提供opencv-python,只需设置环境变量即可。
1# 设置环境变量
2export PYTHONPATH=$PYTHONPATH:/opt/sophon/sophon-opencv-latest/opencv-python