Библиотека машинного обучения с открытым исходным кодом Sipeed TinyMaix разработана для микроконтроллеров и достаточно легкая, чтобы работать на микроконтроллере Microchip ATmega328, установленном на плате Arduino UNO и ее многочисленных клонах.
Разработанный во время хакатона выходного дня, основной код TinyMax имеет длину около 400 строк, двоичный размер около 3 КБ и низкое использование оперативной памяти, что позволяет ему запускать рукописную классификацию цифр MNIST на микроконтроллере ATmega320 всего с 2 КБ SRAM и 32 КБ flash-памяти.
Основные моменты TinyMax
- Небольшая занимаемая площадь
- Основной код менее 400 строк (tm_layers.c+tm_model.c+arch_O0.h), раздел кода .text менее 3 КБ
- Низкое потребление ОЗУ, классификация MNIST работает на менее 1 КБ ОЗУ.
- Поддержка модели INT8/FP32, преобразование из keras h5 или tflite.
- Поддержка мультиархитектурного ускорения: ARM SIMD/NEON, MVEI, RV32P, RV64V (32-битные и 64-битные векторные расширения RISC-V)
- Удобные интерфейсы, просто загружайте/запускайте модели
- Поддерживает полную конфигурацию статической памяти
- Поддержка онлайн-обучения моделей MaixHub скоро появится
Sipeed говорит, что уже существуют библиотеки машинного обучения, такие как TensorFlow Lite для микроконтроллеров, microTVM или NNoM, но TinyMax стремится быть более простой библиотекой TinyML, не использует такие библиотеки, как CMSIS-NN, и для ее понимания потребуется около 30 минут. Учитывая, что он может работать на 8-битных микроконтроллерах, он может быть более сравним с AIfES для Arduino, исходный код которого был открыт Fraunhofer IMS в июле 2021 года.
Потенциальные будущие функции TinyMaix включают количественную модель INT16 для более высокой точности и лучшую поддержку ускорения SIMD/RV32P за счет большей занимаемой площади, Concat OPA для поддержки Mobilenet v2 (но использует вдвое больше памяти и может быть медленным) и Winograd. Оптимизация свертки для более высоких скоростей логического вывода за счет увеличения потребления ОЗУ и пропускной способности памяти.
Потенциальные будущие функции TinyMaix включают в себя модель INT16 quant для повышения точности и лучшей поддержки ускорения SIMD / RV32P за счет увеличения занимаемой площади, Concat OPA для поддержки Mobilenet v2 (но использует вдвое больше памяти и может быть медленным) и оптимизацию свертки Winograd для повышения скорости вывода за счет увеличение потребления оперативной памяти и пропускной способности памяти.
Вы найдете исходный код и инструкции по началу работы в репозитории Github для проекта.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.