4.1. 快速跑通SoC模式

BModel模型的编译量化:需要在一台x86主机上按照指引配置docker环境,在docker环境内进行模型的编译量化。

BModel模型验证:需要将编译好的bmodel拷贝至SoC设备上运行验证。

程序的交叉编译:x86主机系统建议使用Ubuntu16.04~20.04。按照本章指引在x86主机上安装libsophon、sophon-mw,进行程序的交叉编译,待程序编译好后,您需要手动将编译好的程序拷贝到目标SoC中执行。

算法的应用部署:可直接在SoC设备上执行程序。

4.1.1. 开发环境

按照如下步骤搭建环境:

  1. 一台安装了Ubuntu16.04/18.04/20.04的x86主机,运行内存建议12GB以上

  2. 下载SOPHONSDK开发包 SDK下载页面

  3. 解压SDK压缩包

    1sudo apt-get install p7zip
    2sudo apt-get install p7zip-full
    37z x Release_<date>-public.zip  # <date>指日期
    4cd Release_<date>-public
    
  4. 随后进行 tpu-mlir 环境搭建:

4.1.1.1. tpu-mlir 环境搭建

  1. 安装docker

 1# 安装docker,或者参考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​
  1. 创建docker容器并进入。 TPU-MLIR使用的docker镜像和tpu-mlir有绑定关系,少数情况下有可能更新了tpu-mlir,需要新的镜像。

1cd tpu-mlir
2#如果当前系统没有对应的镜像,会自动从docker hub上下载;
3#此处将tpu-mlir的当前目录映射到docker内的/workspace目录
4#myname只是举个名字的例子, 请指定成自己想要的容器的名字
5docker run --privileged --name myname -v $PWD:/workspace -it sophgo/tpuc_dev:v3.2
  1. 安装tpu-mlir ,有两种安装方法:

方法1: 通过 SDK下载页面 下载的SDK整包中的tpu-mlir压缩包安装

  1. 解压tpu-mlir压缩包

1cd tpu-mlir_<date>_<hash>
2mkdir tpu-mlir
3# <date>指日期,<x.y.z>指版本,<hash>为哈希值,若无特殊说明,后续内容均遵守此约定。
4tar zxvf tpu-mlir_v<x.y.z>-<hash>-<date>.tar.gz --strip-components=1 -C tpu-mlir
  1. 初始化mlir环境。请注意,如果docker stop后重新进入,则需要重新source环境变量。

1cd /workspace/tpu-mlir
2source ./envsetup.sh

方法2: 通过pip安装

进入docker环境后安装pip及其依赖,有在线安装和离线安装两种方式。tpu_mlir在对不同框架模型处理时所需的依赖不同,在线安装和离线安装方式都需要安装额外依赖。

  1. 在线安装:直接从pypi源下载并安装,默认为最新版。依赖环境支持 onnx, torch, tensorflow, caffe, paddle

# 安装tpu_mlir
pip install tpu_mlir

# 安装onnx依赖
pip install tpu_mlir[onnx] # torch, tensorflow, caffe, paddle
# 安装全部依赖
pip install tpu_mlir[all]
  1. 离线安装:从Github的 MLIR Assets 处下载最新的 tpu_mlir-*-py3-none-any.whl, 然后使用pip安装。离线安装方式也需要安装额外的依赖环境。

# 安装tpu-mlir
pip install tpu_mlir-*-py3-none-any.whl

# 安装onnx依赖
pip install tpu_mlir-*-py3-none-any.whl[onnx] # torch, tensorflow, caffe, paddle
# 安装全部依赖
pip install tpu_mlir-*-py3-none-any.whl[all]

4.1.2. 运行环境

  1. 对于SoC平台,内部已经集成了相应的libsophon、sophon-opencv和sophon-ffmpeg运行库包,位于/opt/sophon/下。若您需要python环境中的sophon-opencv 还需设置环境变量。

1# 设置环境变量
2export PYTHONPATH=$PYTHONPATH:/opt/sophon/sophon-opencv_<x.y.z>/opencv-python
  1. 若您需要使用python/c++ SAIL库,您还需要安装sophon-sail.whl,否则可跳过:

    1. 需从算能官网上下载符合环境依赖的SDK,找到sophon-sail压缩包,命名如sophon-sail_x.y.z.tar.gz,x.y.z表示版本号。

    2. 若您需要python库,您可以使用SDK中编译好的whl直接安装:

    # 解压sail压缩包
    tar -xvf sophon-sail_x.y.z.tar.gz
    # 进入sail目录,<arch>指您需要选择当前需要安装的平台
    cd sophon-sail/python_wheels/<arch>
    # 查看当前设备libsophon sophonmw 版本
    ll /opt/sophon
    # 选择当前设备libsophon sophonmw 对应版本的文件夹,进入文件夹
    cd libsophon-<x.y.z>_sophonmw-<x.y.z>
    # 选择当前设备python版本,安装sophon-sail
    pip install py<xy>/sophon-sail-<x.y.z>-py3-none-any.whl
    
    1. 若您需要c++库,您可以打开sophon-sail压缩包里面提供的用户手册(命名为sophon-sail_zh.pdf),或者打开在线链接 SOPHON-SAIL用户手册 ,参考编译安装指南章节,选择您需要的模式(C++/Python,PCIe/SoC MODE)进行安装。

4.1.3. SoC模式跑通Yolov5

按照上述步骤搭建环境后,请尝试跑通 SOPHON-DEMO YOLOv5 例程 例程。