Перейти к основному содержимому

Разработка с использованием Sophon SDK

Sophon SDK — это кастомизированный SDK для глубокого обучения, который обеспечивает оптимизацию моделей и эффективную работу на стадии инференса нейросетей. 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, который может преобразовывать заранее обученные нейросети, выполненные в различных фреймворках, в бинарную BModel, которая работает на TPU Sophon. В настоящее время поддерживаются такие фреймворки, как tflite, onnx и Caffe.

Tpu-perf

Представляет собой полный набор инструментов для проверки производительности и точности моделей.

Tpu-kernel

Интерфейс для разработки под чип, который позволяет использовать как специализированные инструкции для ускорения бизнес-логики глубокого обучения, так и универсальные инструкции для ускорения различных пользовательских алгоритмов.

img.png

Структура каталогов SDK

Всего в SophonSDK представлено одиннадцать каталогов:

Название папкиОписание
libsophonБиблиотеки для аппаратного ускорения устройств Sophon, включая обработку изображений, операции с тензорами, инференс моделей и другие задачи.
sophon-mwМультимедийная библиотека, поддерживающая аппаратное ускорение устройств на Sophon.
tpu-kernelИнтерфейс для низкоуровневой разработки, предоставляющий доступ к инструкциям для ускорения логики глубокого обучения и пользовательских алгоритмов.
tpu-nntcИнструментальная цепочка компилятора TPU для оптимизации моделей и их преобразования в формат, поддерживаемый чипами Sophon.
tpu-mlirЦепочка инструментов компилятора TPU, предназначенная для преобразования обученных нейросетей в бинарный формат, работающий на TPU Sophon.
tpu-perfНабор инструментов для проверки производительности и точности моделей.
sophon-pipelineВысокопроизводительная инференсная платформа на основе пайплайнов для выполнения задач глубокого обучения.
sophon-imgУстановка для работы в режиме SoC (System on Chip) для устройств Sophon.
sophon-demoКомплекс примеров, демонстрирующих использование SDK для одиночных моделей или сценариев.
sophon-sailБиблиотека интерфейсов, инкапсулирующая низкоуровневые интерфейсы в API для C++/Python.
sophon-rpcМеханизм для разгрузки вычислительных задач с PCIe-карты на ARM-CPU, установленный на карту.

Структура каталогов распакованного SDK

  1 SophonSDK
2
3├── libsophon_<date>_<hash>
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_<x.y.z>_aarch64.tar.gz #Arm64 machine, libsophon installar for other LINUX systems
11│ ├── libsophon_<x.y.z>_x86_64.tar.gz #X86x64 machine, libsophon installar for other LINUX systems
12│ ├── libsophon_dockerfile
13│ ├── libsophon.MD5
14│ ├── LIBSOPHON_User_Guide.pdf
15│ ├── LIBSOPHON.pdf
16│ ├── release_version.txt
17│ ├── sophon-driver_<x.y.z>_amd64.deb #x86_64 machine,PCIe card driver installation file corresponding to Debian/Ubuntu system
18│ ├── sophon-driver_<x.y.z>_arm64.deb #arm64 machine,PCIe card driver installation file corresponding to Debian/Ubuntu system
19│ ├── sophon-libsophon_<x.y.z>_amd64.deb #x86_64 machine,libsophon runtime environment installation file corresponding to Debian/Ubuntu system
20│ ├── sophon-libsophon_<x.y.z>_arm64.deb #arm64 machine,libsophon runtime environment installation file corresponding to Debian/Ubuntu system
21│ ├── sophon-libsophon-dev_<x.y.z>_amd64.deb #x86_64 machine,libsophon runtime environment installation file corresponding to Debian/Ubuntu system
22│ └── sophon-libsophon-dev_<x.y.z>_arm64.deb #arm64 machine,libsophon runtime environment installation file corresponding to Debian/Ubuntu system
23├── sophon-demo_<date>_<hash>
24│ ├── release_version.txt
25│ ├── sophon-demo.MD5
26│ └── sophon-demo_v<x.y.z>_b909566_20221027.tar.gz #Comprehensive routines for a single model or scenario
27├── sophon-img_<date>_<hash>
28│ ├── bsp-debs
29│ ├── bsp_update.tgz
30│ ├── libsophon_soc_<x.y.z>_aarch64.tar.gz #Files required for cross-compilation
31│ ├── release_version.txt
32│ ├── sdcard.tgz #SoC card brush package
33│ ├── SOPHON_BSP_Technical_Reference_Manual.pdf
34│ ├── SOPHON BSP.pdf
35│ ├── sophon-img.MD5
36│ ├── sophon-soc-libsophon_<x.y.z>_arm64.deb #Libsophon installation files corresponding to SoC platform
37│ ├── sophon-soc-libsophon-dev_<x.y.z>_arm64.deb #Libsophon installation files corresponding to SoC platform
38│ ├── system.tgz
39│ └── tftp.tgz
40├── sophon-mw_<date>_<hash>
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_<x.y.z>_aarch64.tar.gz #Arm64 machine, sophon-mw installar for other LINUX systems
49│ ├── sophon-mw_<x.y.z>_x86_64.tar.gz #Arm64 machine, sophon-mw installar for other LINUX systems
50│ ├── sophon-mw.MD5
51│ ├── sophon-mw-soc_<x.y.z>_aarch64.tar.gz
52│ ├── sophon-mw-soc-sophon-ffmpeg_<x.y.z>_arm64.deb #SoC platform, ffmpeg runtime environment installation files
53│ ├── sophon-mw-soc-sophon-ffmpeg-dev_<x.y.z>_arm64.deb #SoC platform, ffmpeg development environment installation files
54│ ├── sophon-mw-soc-sophon-opencv_<x.y.z>_arm64.deb #SoC platform, opencv runtime environment installation files
55│ ├── sophon-mw-soc-sophon-opencv-dev_<x.y.z>_arm64.deb #SoC platform, opencv development environment installation files
56│ ├── sophon-mw-soc-sophon-sample_<x.y.z>_arm64.deb #SoC platform, multimedia program sample file
57│ ├── sophon-mw-sophon-ffmpeg_<x.y.z>_amd64.deb #X86x64 machine, installation files for ffmpeg runtime environment corresponding to Debian/Ubuntu system
58│ ├── sophon-mw-sophon-ffmpeg_<x.y.z>_arm64.deb #arm64 machine, installation files for ffmpeg runtime environment corresponding to Debian/Ubuntu system
59│ ├── sophon-mw-sophon-ffmpeg-dev_<x.y.z>_amd64.deb #x86_64 machine, ffmpeg development environment installation file corresponding to Debian/Ubuntu system
60│ ├── sophon-mw-sophon-ffmpeg-dev_<x.y.z>_arm64.deb #arm64 machine, ffmpeg development environment installation file corresponding to Debian/Ubuntu system
61│ ├── sophon-mw-sophon-opencv_<x.y.z>_amd64.deb #x86_64 machine, opencv runtime environment installation file corresponding to Debian/Ubuntu system
62│ ├── sophon-mw-sophon-opencv_<x.y.z>_arm64.deb #arm64 machine, opencv runtime environment installation file corresponding to Debian/Ubuntu system
63│ ├── sophon-mw-sophon-opencv-abi0_<x.y.z>_amd64.deb #X86x64 machine, installation files for opencv runtime environment corresponding to CenterOS system
64│ ├── sophon-mw-sophon-opencv-abi0_<x.y.z>_arm64.deb #arm64 machine, opencv runtime environment installation file corresponding to CenterOS system
65│ ├── sophon-mw-sophon-opencv-abi0-dev_<x.y.z>_amd64.deb #x86x64 machine, opencv development environment installation file corresponding to CenterOS system
66│ ├── sophon-mw-sophon-opencv-abi0-dev_<x.y.z>_arm64.deb #arm64 machine, opencv development environment installation file corresponding to CenterOS system
67│ ├── sophon-mw-sophon-opencv-dev_<x.y.z>_amd64.deb #x86x64 machine, opencv development environment installation file corresponding to Debian/Ubuntu system
68│ ├── sophon-mw-sophon-opencv-dev_<x.y.z>_arm64.deb #arm64 machine, opencv development environment installation file corresponding to Debian/Ubuntu system
69│ ├── sophon-mw-sophon-sample_<x.y.z>_amd64.deb #x86x64 machine, sample files for multimedia programs
70│ └── sophon-mw-sophon-sample_<x.y.z>_arm64.deb #arm64 machine, sample files of multimedia programs
71├── sophon-pipeline_<date>_<hash>
72│ ├── release_version.txt
73│ ├── sophon-pipeline.MD5
74│ └── sophon-pipeline_v<x.y.z>_586366b_20221027.tar.gz #High performance inference framework based on pipeline
75├── sophon-rpc_<date>_<hash>
76│ ├── release_version.txt
77│ ├── sophon-rpc_<x.y.z>_amd64.deb #x86x64 machine, sophon-rpc installation file corresponding to Debian/Ubuntu system
78│ ├── sophon-rpc_<x.y.z>_arm64.deb #arm64 machine, sophon-rpc installation file corresponding to Debian/Ubuntu system
79│ ├── sophon-rpc_<x.y.z>.tar.gz #Sophon-rpc installation packages corresponding to other systems
80│ ├── sophon-rpc.MD5
81│ └── sophon-rpc.pdf
82├── sophon-sail_<date>_<hash>
83│ ├── release_version.txt
84│ ├── Sophon_Inference_zh.pdf
85│ ├── sophon-sail_<x.y.z>.tar.gz #Advanced interface library encapsulating BMLib, BMDecoder, BMCV, BMRuntime
86│ └── sophon-sail.MD5
87├── Sophon SDK.docx
88├── tpu-kernel_<date>_<hash>
89│ ├── release_version.txt
90│ ├── tpu-kernel-1684x_v<x.y.z>-0d0e513e-221027.tar.gz #Custom operator development tool
91│ └── tpu-kernel.MD5
92├── tpu-mlir_<date>_<hash>
93│ ├── release_version.txt
94│ ├── tpu-mlir.MD5
95│ └── tpu-mlir_v<x.y.z>-<hash>-<date>.tar.gz #Compiler tool chain
96├── tpu-nntc_<date>_<hash>
97│ ├── release_version.txt
98│ ├── tpu-nntc.MD5
99│ └── tpu-nntc_v<x.y.z>-<hash>-<date>.tar.gz #Model compilation quantization tool chain
100└── tpu-perf_v<x.y.z>
101 ├── md5sum.txt
102 ├── tpu_perf-<x.y.z>-py3-none-manylinux2014_aarch64.whl
103 ├── tpu_perf-<x.y.z>-py3-none-manylinux2014_x86_64.whl
104 └── tpu-perf-<x.y.z>.tar.gz #Tools for performance analysis and accuracy verification of the model

Основные модули SDK

Аппаратный драйвер и среда выполнения LIBSOPHON

Содержит такие библиотеки, как BMCV, BMRuntime, BMLib и другие, которые используются для управления аппаратным обеспечением, таким как VPP, TPU и другие устройства, для выполнения операций, таких как обработка изображений, операции с тензорами, инференс моделей и других задач.

Мультимедийная библиотека SOPHON-MW

Поддерживает BM-OpenCV и BM-FFmpeg для аппаратного ускорения устройств на Sophon, парсинга RTSP-потоков, GB28181-потоков, кодирования и декодирования видео и изображений.

Инструментальная цепочка для компиляции и квантизации моделей TPU-NNTC

Поддерживает преобразование моделей из фреймворков Caffe, TensorFlow, PyTorch, MXNet, Darknet, PaddlePaddle, ONNX и других. Также поддерживает квантизацию моделей: исходная модель -> FP32 UModel -> INT8 UModel -> INT8 BModel, а также предоставляет инструмент автоматической калибровки для квантизации.

Библиотека для операций с тензорами и обработки изображений BMCV

Выполняет преобразование цветовых пространств, масштабирование, аффинные и проекционные преобразования, линейные преобразования, работу с кадрами, кодирование JPEG, кодирование BASE64, NMS, сортировку, сопоставление признаков.

Библиотека для управления оборудованием BMLib

Базовые интерфейсы для управления дескрипторами устройств, управления памятью, обработки данных, отправки API и синхронизации, активации A53 и другие.

Библиотека для ускорения AI-вычислений SAIL

Поддерживает высокоуровневые интерфейсы для Python/C++ и является оберткой для таких библиотечных интерфейсов, как BMRuntime, BMCV, BMDecoder.

Библиотека для разработки пользовательских операторов BMLang

Высокоуровневая C++ библиотека для TPUs Sophon, независимая от аппаратной информации, не требует знаний архитектуры оборудования. Код пишется с использованием тензорных данных (bmlang::Tensor) и вычислительных операций (bmlang::Operator), а затем используется bmlang::compile или bmlang::compile_with_check для генерации BModel, которую может выполнить TPU. Также поддерживается использование ARM-CPU в BM168X для выполнения вычислений, которые не поддерживаются TPU.

Библиотека для параллельного ускорения алгоритмов TPUKernel

Низкоуровневый интерфейс программирования на основе интерфейса атомарных операций Sophon чипа, требующий знаний об архитектуре оборудования и наборе инструкций.

Инструмент для проверки производительности и точности модели TPUPerf

Обеспечивает анализ производительности и проверку точности моделей.

Более подробная информация доступна по ссылке.