Sophon SDK 开发 Sophon SDK Sophon SDK是算能科技基于其自主研发的 AI 芯片所定制的深度学习 SDK,涵盖 了神经网络推理阶段所需的模型优化、高效运行支持等能力,为深度学习应用开 发和部署提供易用、高效的全栈式解决方案。 Sophon SDK既兼容第三代BM1684芯片,也支持第四代BM1684X芯片。 Sophon SDK 包组成 Sophon SDK 包括基础工具包与高阶工具包。 基础工具包 包括: tpu-nntc 负责对第三方深度学习框架下训练得到的神经网络模型进行离线编译 和优化,生成最终运行时需要的BModel。目前支持Caffe、Darknet、MXNet、 ONNX、PyTorch、PaddlePaddle、TensorFlow等。 libsophon 提供BMCV、BMRuntime、BMLib等库,用来驱动VPP、TPU等硬件,完成 图像处理、张量运算、模型推理等操作,供用户进行深度学习应用开发。 sophon-mw 封装了BM-OpenCV、BM-FFmpeg等库,用来驱动VPU、JPU等硬件,支持 RTSP流、GB28181流的解析,视频图像编解码加速等,供用户进行深度学习应用 开发。 sophon-sail 提供了支持Python/C++的高级接口,是对BMRuntime、BMCV、 BMDecoder、BMLib等底层库接口的封装,供用户进行深度学习应用开发。 高阶工具包 包括: tpu-mlir 为TPU编译器工程提供一套完整的工具链,可以将不同框架下预训练的 神经网络,转化为可以在算能TPU上高效运行的二进制文件BModel。目前直接支 持的框架包括tflite、onnx和Caffe。 tpu-perf 为模型性能和精度验证提供了一套完整工具包。 tpu-kernel 是芯片底层开发接口,既可以调用专用指令实现深度学习业务逻辑 的加速,又可以调用通用指令实现客制的各种算法加速。 Sophon SDK 目录 Sophon SDK 提供了十一个文件夹模块,具体如下表所示: Sophon SDK 解压后的目录 解压后的 SDK 文件结构如下: 1SophonSDK 2 3├── libsophon__ 4│   ├── BMCV_Technical_Reference_Manual.pdf 5│   ├── BMCV开发参考手册.pdf 6│   ├── BMLib_Technical_Reference_Manual.pdf 7│   ├── BMLIB开发参考手册.pdf 8│   ├── BMRuntime Technical Reference Manual.pdf 9│   ├── BMRUNTIME开发参考手册.pdf 10│   ├── libsophon__aarch64.tar.gz #arm64机器,其他LINUX系统对应的libsophon安装包 11│   ├── libsophon__x86_64.tar.gz #x86_64机器,其他LINUX系统对应的libsophon安装包 12│   ├── libsophon_dockerfile 13│   ├── libsophon.MD5 14│   ├── LIBSOPHON_User_Guide.pdf 15│   ├── LIBSOPHON使用手册.pdf 16│   ├── release_version.txt 17│   ├── sophon-driver__amd64.deb #x86_64机器,Debian/Ubuntu系统对应的PCIe卡驱动安装文件 18│   ├── sophon-driver__arm64.deb #arm64机器,Debian/Ubuntu系统对应的PCIe卡驱动安装文件 19│   ├── sophon-libsophon__amd64.deb #x86_64机器,Debian/Ubuntu系统对应的libsophon运行时环境安装文件 20│   ├── sophon-libsophon__arm64.deb #arm64机器,Debian/Ubuntu系统对应的libsophon运行时环境安装文件 21│   ├── sophon-libsophon-dev__amd64.deb #x86_64机器,Debian/Ubuntu系统对应的libsophon开发环境安装文件 22│   └── sophon-libsophon-dev__arm64.deb #arm64机器,Debian/Ubuntu系统对应的libsophon开发环境安装文件 23├── sophon-demo__ 24│   ├── release_version.txt 25│   ├── sophon-demo.MD5 26│   └── sophon-demo_v_b909566_20221027.tar.gz #针对单模型或场景的综合例程 27├── sophon-img__ 28│   ├── bsp-debs 29│   ├── bsp_update.tgz 30│   ├── libsophon_soc__aarch64.tar.gz #交叉编译所需文件 31│   ├── release_version.txt 32│   ├── sdcard.tgz #SoC卡刷包 33│   ├── SOPHON_BSP_Technical_Reference_Manual.pdf 34│   ├── SOPHON BSP开发参考手册.pdf 35│   ├── sophon-img.MD5 36│   ├── sophon-soc-libsophon__arm64.deb #SoC平台对应的libsophon安装文件 37│   ├── sophon-soc-libsophon-dev__arm64.deb #SoC平台对应的libsophon安装文件 38│   ├── system.tgz 39│   └── tftp.tgz 40├── sophon-mw__ 41│   ├── Multimedia FAQ.pdf 42│   ├── Multimedia Technical Reference Manual.pdf 43│   ├── Multimedia User Guide.pdf 44│   ├── MULTIMEDIA使用手册.pdf 45│   ├── MULTIMEDIA常见问题手册.pdf 46│   ├── MULTIMEDIA开发参考手册.pdf 47│   ├── release_version.txt 48│   ├── sophon-mw__aarch64.tar.gz #arm64机器,其他LINUX系统对应的sophon-mw安装包 49│   ├── sophon-mw__x86_64.tar.gz #x86_64机器,其他LINUX系统对应的sophon-mw安装包 50│   ├── sophon-mw.MD5 51│   ├── sophon-mw-soc__aarch64.tar.gz 52│   ├── sophon-mw-soc-sophon-ffmpeg__arm64.deb #SoC平台,ffmpeg运行时环境安装文件 53│   ├── sophon-mw-soc-sophon-ffmpeg-dev__arm64.deb #SoC平台,ffmpeg开发环境安装文件 54│   ├── sophon-mw-soc-sophon-opencv__arm64.deb #SoC平台,opencv运行时环境安装文件 55│   ├── sophon-mw-soc-sophon-opencv-dev__arm64.deb #SoC平台,opencv开发环境安装文件 56│   ├── sophon-mw-soc-sophon-sample__arm64.deb #SoC平台,多媒体程序示例文件 57│   ├── sophon-mw-sophon-ffmpeg__amd64.deb #x86_64机器,Debian/Ubuntu系统对应的ffmpeg运行时环境安装文件 58│   ├── sophon-mw-sophon-ffmpeg__arm64.deb #arm64机器,Debian/Ubuntu系统对应的ffmpeg运行时环境安装文件 59│   ├── sophon-mw-sophon-ffmpeg-dev__amd64.deb #x86_64机器,Debian/Ubuntu系统对应的ffmpeg开发环境安装文件 60│   ├── sophon-mw-sophon-ffmpeg-dev__arm64.deb #arm64机器,Debian/Ubuntu系统对应的ffmpeg开发环境安装文件 61│   ├── sophon-mw-sophon-opencv__amd64.deb #x86_64机器,Debian/Ubuntu系统对应的opencv运行时环境安装文件 62│   ├── sophon-mw-sophon-opencv__arm64.deb #arm64机器,Debian/Ubuntu系统对应的opencv运行时环境安装文件 63│   ├── sophon-mw-sophon-opencv-abi0__amd64.deb #x86_64机器,CenterOS系统对应的opencv运行时环境安装文件 64│   ├── sophon-mw-sophon-opencv-abi0__arm64.deb #arm64机器,CenterOS系统对应的opencv运行时环境安装文件 65│   ├── sophon-mw-sophon-opencv-abi0-dev__amd64.deb #x86_64机器,CenterOS系统对应的opencv开发环境安装文件 66│   ├── sophon-mw-sophon-opencv-abi0-dev__arm64.deb #arm64机器,CenterOS系统对应的opencv开发环境安装文件 67│   ├── sophon-mw-sophon-opencv-dev__amd64.deb #x86_64机器,Debian/Ubuntu系统对应的opencv开发环境安装文件 68│   ├── sophon-mw-sophon-opencv-dev__arm64.deb #arm64机器,Debian/Ubuntu系统对应的opencv开发环境安装文件 69│   ├── sophon-mw-sophon-sample__amd64.deb #x86_64机器,多媒体程序示例文件 70│   └── sophon-mw-sophon-sample__arm64.deb #arm64机器,多媒体程序示例文件 71├── sophon-pipeline__ 72│   ├── release_version.txt 73│   ├── sophon-pipeline.MD5 74│   └── sophon-pipeline_v_586366b_20221027.tar.gz #基于pipeline的高性能推理框架 75├── sophon-rpc__ 76│   ├── release_version.txt 77│   ├── sophon-rpc__amd64.deb #x86_64机器,Debian/Ubuntu系统对应的sophon-rpc安装文件 78│   ├── sophon-rpc__arm64.deb #arm64机器,Debian/Ubuntu系统对应的sophon-rpc安装文件 79│   ├── sophon-rpc_.tar.gz #其他系统对应的sophon-rpc安装包 80│   ├── sophon-rpc.MD5 81│   └── sophon-rpc使用指南.pdf 82├── sophon-sail__ 83│   ├── release_version.txt 84│   ├── Sophon_Inference_zh.pdf 85│   ├── sophon-sail_.tar.gz #封装了BMLib、BMDecoder、BMCV、BMRuntime的高级接口库 86│   └── sophon-sail.MD5 87├── Sophon SDK文件清单.docx 88├── tpu-kernel__ 89│   ├── release_version.txt 90│   ├── tpu-kernel-1684x_v-0d0e513e-221027.tar.gz #自定义算子开发工具 91│   └── tpu-kernel.MD5 92├── tpu-mlir__ 93│   ├── release_version.txt 94│   ├── tpu-mlir.MD5 95│   └── tpu-mlir_v--.tar.gz #编译器工具链 96├── tpu-nntc__ 97│   ├── release_version.txt 98│   ├── tpu-nntc.MD5 99│   └── tpu-nntc_v--.tar.gz #模型编译量化工具链 100└── tpu-perf_v 101 ├── md5sum.txt 102 ├── tpu_perf--py3-none-manylinux2014_aarch64.whl 103 ├── tpu_perf--py3-none-manylinux2014_x86_64.whl 104 └── tpu-perf-.tar.gz #模型的性能分析和精度验证工具 SDK主要模块 硬件驱动及运行时库 LIBSOPHON : 包含BMCV、BMRuntime、BMLib等库,用来驱 动VPP、TPU等硬件,完成图像处理、张量运算、模型推理等操作。 多媒体库 SOPHON-MW : 支持Sophon设备硬件加速的BM-OpenCV和BM-FFmpeg,支 持RTSP流、GB28181流的解析,视频及图片的编解码。 模型编译量化工具链 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使能等 算丰AI加速库 SAIL : 支持Python/C++的高级接口,是对BMRuntime、BMCV、 BMDecoder等底层库接口的封装。 自定义算子高级编程库 BMLang:基于C++的面向Sophon TPU的高级编程库,与硬 件信息解耦,无需了解硬件架构,使用张量数据(bmlang::Tensor)和计算操作 (bmlang::Operator)编写代码,最后使用bmlang::compile或 bmlang::compile_with_check来生成TPU可以运行的BModel;此外也支持使用 BM168X中的arm cpu来实现TPU尚不支持的算子。 算法并行加速编程库 TPUKernel:基于Sophon芯片底层原子操作接口的底层编程 接口,需要熟悉硬件架构和指令集。 模型性能和精度验证工具 TPUPerf : 可对模型进行性能分析和精度验证。 详细资料 获取 SDK(v23.05.01 版本) 安装 SDK(v23.05.01 版本) 更多资料的,请参考: https://developer.sophgo.com/site/index/document/all/all.html