Sophgo SDK开发
一、SDK 简介
SOPHONSDK是算能科技基于BM1684、BM1684X定制的深度学习SDK,涵盖了神经网络推理阶段所需的模型优化、高效运行支持等能力,为深度学习应用开发和部署提供易用、高效的全栈式解决方案。
1、基础工具包
基础工具包包括:
- tpu-nntc 负责对第三方深度学习框架下训练得到的神经网络模型进行离线编译和优化,生成最终运行时需要的BModel。目前支持Caffe、Darknet、MXNet、ONNX、PyTorch、PaddlePaddle、TensorFlow等。
- libsophon 提供BMCV、BMRuntime、BMLib等库,用来驱动VPP、智能视觉深度学习处理器模块等硬件,完成图像处理、张量运算、模型推理等操作,供用户进行深度学习应用开发。
- sophon-mw 封装了SOPHON-OpenCV、SOPHON-FFmpeg等库,用来驱动VPU、JPU等硬件,支持RTSP流、GB28181流的解析,视频图像编解码加速等,供用户进行深度学习应用开发。
- sophon-sail 提供了支持Python/C++的高级接口,是对BMRuntime、BMCV、sophon-mw、BMLib等底层库接口的封装,供用户进行深度学习应用开发。
2、高阶工具包
高阶工具包包括:
- tpu-mlir 为Tensor Processing Unit编译器工程提供一套完整的工具链,可以将不同框架下预训练的神经网络,转化为可以在算能智能视觉深度学习处理器上高效运行的二进制文件BModel。目前直接支持的框架包括tflite、onnx和Caffe。
- tpu-perf 为模型性能和精度验证提供了一套完整工具包。
- tpu-kernel 是Tensor Processing Unit底层开发接口,既可以调用专用指令实现深度学习业务逻辑的加速,又可以调用通用指令实现客制的各种算法加速。
具体参考 算能文档
备注
- sophon-demo 提供了x86和SoC环境下针对单模型或场景的综合例程,供用户在深度学习应用开发过程中参考。
- sophon-pipeline 提供了一个简易的基于pipeline的高性能推理框架,能够将前处理/推理/后处理分别运行在3个线程上,最大化的实现并行,供用户在深度学习应用开发过程中参考。

3、SOPHONSDK文件夹目录
文件夹 | 备注 |
---|---|
libsophon | 支持SOPHON设备硬件加速的图像处理、张量运算、模型推理等库 |
sophon-mw | 支持SOPHON设备硬件加速的多媒体库 |
tpu-kernel | 底层开发接口 |
tpu-mlir | Tensor Processing Unit编译器工具链 |
tpu-nntc | Tensor Processing Unit编译器工具链 |
tpu-perf | 模型性能和精度验证工具包 |
sophon-pipeline | 基于pipeline的高性能推理框架 |
sophon-img | SoC模式安装包 |
sophon-demo | 针对单模型或者场景的综合例程 |
sophon-sail | 对底层接口进行C++/Python API封装的接口库 |
sophon-rpc | 在PCIe卡产品上将一些计算任务offload到卡上的ARM上进行 |
docker-image | docker镜像 |
4、SOPHONSDK解压后的文件夹目录
如下:
SOPHONSDK
├── docker-image
│ ├── md5sum.txt
│ ├── sophgo-tpuc_dev-v2.1-82d75f5c633d.tar.bz2
│ └── sophgo-tpuc_dev-v2.2-f72913f3a83d.tar.bz2
├── libsophon_20240108_210425
│ ├── BMCV开发参考手册.pdf
│ ├── BMCV_Technical_Reference_Manual.pdf
│ ├── BMLIB开发参考手册.pdf
│ ├── BMLib_Technical_Reference_Manual.pdf
│ ├── BMRUNTIME开发参考手册.pdf
│ ├── BMRuntime Technical Reference Manual.pdf
│ ├── centos
│ ├── libsophon_0.4.9-LTS_aarch64.tar.gz
│ ├── libsophon_0.4.9-LTS_loongarch64.tar.gz
│ ├── libsophon_0.4.9-LTS_x86_64.tar.gz
│ ├── LIBSOPHON使用手册.pdf
│ ├── libsophon_dockerfile
│ ├── libsophon.MD5
│ ├── LIBSOPHON_User_Guide.pdf
│ ├── release_version.txt
│ ├── sophon-driver_0.4.9-LTS_amd64.deb
│ ├── sophon-driver_0.4.9-LTS_arm64.deb
│ ├── sophon-libsophon_0.4.9-LTS_amd64.deb
│ ├── sophon-libsophon_0.4.9-LTS_arm64.deb
│ ├── sophon-libsophon-dev_0.4.9-LTS_amd64.deb
│ └── sophon-libsophon-dev_0.4.9-LTS_arm64.deb
├── sophon-demo_20231116_085900
│ ├── release_version.txt
│ ├── sophon-demo.MD5
│ ├── sophon-demo_v0.1.8_dbb4632_20231116
│ └── sophon-demo_v0.1.8_dbb4632_20231116.tar.gz
├── sophon-img_20240116_212937
│ ├── bsp-debs
│ ├── bsp_update.tgz
│ ├── libsophon_soc_0.4.9-LTS_aarch64.tar.gz
│ ├── release_version.txt
│ ├── sdcard.tgz
│ ├── SOPHON BSP开发参考手册.pdf
│ ├── SOPHON_BSP_Technical_Reference_Manual.pdf
│ ├── sophon-img.MD5
│ ├── system.tgz
│ └── tftp.tgz
├── sophon-mw_20240116_152830
│ ├── MULTIMEDIA常见问题手册.pdf
│ ├── MULTIMEDIA开发参考手册.pdf
│ ├── MULTIMEDIA使用手册.pdf
│ ├── Multimedia FAQ.pdf
│ ├── Multimedia Technical Reference Manual.pdf
│ ├── Multimedia User Guide.pdf
│ ├── release_version.txt
│ ├── sophon-mw_0.8.0_aarch64.tar.gz
│ ├── sophon-mw_0.8.0_loongarch64.tar.gz
│ ├── sophon-mw_0.8.0_x86_64.tar.gz
│ ├── sophon-mw.MD5
│ ├── sophon-mw-soc_0.8.0_aarch64.tar.gz
│ ├── sophon-mw-soc-sophon-ffmpeg_0.8.0_arm64.deb
│ ├── sophon-mw-soc-sophon-ffmpeg-dev_0.8.0_arm64.deb
│ ├── sophon-mw-soc-sophon-opencv_0.8.0_arm64.deb
│ ├── sophon-mw-soc-sophon-opencv-dev_0.8.0_arm64.deb
│ ├── sophon-mw-soc-sophon-sample_0.8.0_arm64.deb
│ ├── sophon-mw-sophon-ffmpeg_0.8.0_amd64.deb
│ ├── sophon-mw-sophon-ffmpeg_0.8.0_amd64.rpm
│ ├── sophon-mw-sophon-ffmpeg_0.8.0_arm64.deb
│ ├── sophon-mw-sophon-ffmpeg_0.8.0_arm64.rpm
│ ├── sophon-mw-sophon-ffmpeg_0.8.0_loongarch64.deb
│ ├── sophon-mw-sophon-ffmpeg-dev_0.8.0_amd64.deb
│ ├── sophon-mw-sophon-ffmpeg-dev_0.8.0_amd64.rpm
│ ├── sophon-mw-sophon-ffmpeg-dev_0.8.0_arm64.deb
│ ├── sophon-mw-sophon-ffmpeg-dev_0.8.0_arm64.rpm
│ ├── sophon-mw-sophon-ffmpeg-dev_0.8.0_loongarch64.deb
│ ├── sophon-mw-sophon-opencv_0.8.0_amd64.deb
│ ├── sophon-mw-sophon-opencv_0.8.0_arm64.deb
│ ├── sophon-mw-sophon-opencv_0.8.0_loongarch64.deb
│ ├── sophon-mw-sophon-opencv-abi0_0.8.0_amd64.rpm
│ ├── sophon-mw-sophon-opencv-abi0_0.8.0_arm64.rpm
│ ├── sophon-mw-sophon-opencv-abi0-dev_0.8.0_amd64.rpm
│ ├── sophon-mw-sophon-opencv-abi0-dev_0.8.0_arm64.rpm
│ ├── sophon-mw-sophon-opencv-dev_0.8.0_amd64.deb
│ ├── sophon-mw-sophon-opencv-dev_0.8.0_arm64.deb
│ ├── sophon-mw-sophon-opencv-dev_0.8.0_loongarch64.deb
│ ├── sophon-mw-sophon-sample_0.8.0_amd64.deb
│ ├── sophon-mw-sophon-sample_0.8.0_amd64.rpm
│ ├── sophon-mw-sophon-sample_0.8.0_arm64.deb
│ ├── sophon-mw-sophon-sample_0.8.0_arm64.rpm
│ └── sophon-mw-sophon-sample_0.8.0_loongarch64.deb
├── sophon-rpc_20231208_174527
│ ├── release_version.txt
│ ├── sophon-rpc_3.2.0-LTS_amd64.deb
│ ├── sophon-rpc_3.2.0-LTS_amd64.rpm
│ ├── sophon-rpc_3.2.0-LTS_arm64.deb
│ ├── sophon-rpc_3.2.0-LTS_arm64.rpm
│ ├── sophon-rpc_3.2.0-LTS.tar.gz
│ ├── sophon-rpc使用指南.pdf
│ └── sophon-rpc.MD5
├── sophon-sail_20231116_085400
│ ├── release_version.txt
│ ├── sophon-sail_3.7.0.tar.gz
│ ├── sophon-sail_en.pdf
│ ├── sophon-sail.MD5
│ └── sophon-sail_zh.pdf
├── sophon-stream_20231116_011200
│ ├── release_version.txt
│ ├── sophon-stream.MD5
│ └── sophon-stream_v0.0.4-rc4_10a8ed8_20231115.tar.gz
├── tpu-kernel_20231130_055600
│ ├── release_version.txt
│ ├── tpu-kernel-1684x_v3.1.7-520261d8-231130.tar.gz
│ └── tpu-kernel.MD5
├── tpu-mlir_20231116_054500
│ ├── release_version.txt
│ ├── tpu-mlir.MD5
│ └── tpu-mlir_v1.3.140-g3180ff37-20231116.tar.gz
├── tpu-nntc_20231130_054100
│ ├── release_version.txt
│ ├── tpu-nntc.MD5
│ └── tpu-nntc_v3.1.9-29fa956b-231130.tar.gz
└── tpu-perf_v1.2.37
├── tpu_perf-1.2.37-py3-none-manylinux2014_aarch64.whl
├── tpu_perf-1.2.37-py3-none-manylinux2014_x86_64.whl
├── tpu-perf-v1.2.37.tar.gz
└── tpu-perf-v1.2.37.zip
5、SDK主要模块
- 硬件驱动及运行时库 LIBSOPHON : 包含BMCV、BMRuntime、BMLib等库,用来驱动VPP、智能视觉深度学习处理器等硬件,完成图像处理、张量运算、模型推理等操作。
- 多媒体库 SOPHON-MW : 支持SOPHON设备硬件加速的SOPHON-OpenCV和SOPHON-FFmpeg,支持RTSP流、GB28181流的解析,视频及图片的编解码。
- 模型编译量化工具链 TPU-MLIR : 支持Caffe、TFLite、ONNX等框架模型的模型转换;支持模型量化:原始模型 -> MLIR Model -> FP32 BModel或者原始模型 -> MLIR Model -> cali_table -> INT8 BModel,同时提供model_deploy.py 量化脚本。
- 模型编译量化工具链 TPU-NNTC : 支持Caffe、Tensorflow、Pytorch、MXNet、 Darknet、Paddle Paddle、ONNX等框架模型的模型转换;支持模型量化:原始模型 -> FP32 UModel -> INT8 UModel -> INT8 BModel, 同时提供 auto-cali 自动量化工具。
- 张量运算及图像处理库 BMCV : 色彩空间转换、尺度变换、仿射变换、投射变换、线性变换、画框、JPEG编码、BASE64编码、NMS、排序、特征匹配。
- 设备管理 BMLib : 基础接口 :设备Handle的管理,内存管理、数据搬运、API的发送和同步、A53使能等
- 算丰深度学习处理加速库 SAIL : 支持Python/C++的高级接口,是对BMRuntime、BMCV、sophon-mw等底层库接口的封装。
- 自定义算子高级编程库 BMLang :基于C++的面向SOPHON 智能视觉深度学习处理器的高级编程库,与硬件信息解耦,无需了解硬件架构,使用张量数据(bmlang::Tensor)和计算操作(bmlang::Operator)编写代码,最后使用bmlang::compile或bmlang::compile_with_check来生成智能视觉深度学习处理器可以运行的BModel;此外也支持使用BM168X中的arm 处理器来实现智能视觉深度学习处理器尚不支持的算子。
- 算法并行加速编程库 TPUKernel :基于SOPHON BM1684、BM1684X底层原子操作接口的底层编程接口,需要用户熟悉设备硬件架构和指令集。
- 模型性能和精度验证工具 TPUPerf : 可对模型进行性能分析和精度验证。
二、SDK获取与安装
三、更多资料
详见