Разработка с использованием 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
Интерфейс для разработки под чип, который позволяет использовать как специализированные инструкции для ускорения бизнес-логики глубокого обучения, так и универсальные инструкции для ускорения различных пользовательских алгоритмов.
Структура каталогов 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
Обеспечивает анализ производительности и проверку точности моделей.
Более подробная информация доступна по ссылке.