исследования 1 мин

Студент написал YOLO-инференс на чистом ARM64 ассемблере без фреймворков

Выпускник бакалавриата реализовал инференс YOLO26n полностью с нуля на ARM64 Assembly и C, без ML-фреймворков, для Raspberry Pi 4. Применил NEON SIMD, Winograd-свёртки, кастомные GEMM-ядра и оптимизацию под кэш. Модель работает корректно, но прирост производительности оказался ниже ожиданий.

Редкий пример глубокого low-level подхода к edge AI — полезен для понимания узких мест оптимизации нейросетей на ARM и ценности (или переоценённости) ручного ассемблера в эпоху фреймворков.

Студент написал YOLO-инференс на чистом ARM64 ассемблере

Разработчик реализовал инференс модели YOLO26n полностью с нуля, используя ARM64 Assembly и C, без единого готового ML-фреймворка. Проект выполнен как выпускная работа бакалавриата с целью разобраться в устройстве современных движков нейросетевого вывода на низком уровне и исследовать техники оптимизации для edge AI на Raspberry Pi 4.

Что реализовано

Движок включает ARM64 Assembly + C, оптимизации ARM NEON SIMD, свёртки Winograd, кастомные GEMM-ядра, тайлинг с учётом кэша, микро-ядра под ARM64, fusion операторов, механизм внимания и полный набор компонентов YOLO26: Conv, C3K2, SPPF, C2PSA, PSA, BottleNeck, Detect.

Параметры модели YOLO26n были извлечены и упакованы в кастомный бинарный формат, оптимизированный под пайплайн инференса. Детекция объектов работает корректно, но прирост производительности оказался скромнее ожидаемого.

Детали и вызовы

Проект демонстрирует глубокое погружение в аппаратную оптимизацию: векторизацию через NEON, управление памятью и кэшем, ручную сборку low-level ядер. Автор делится кодом на GitHub и ищет обратную связь по CNN-оптимизации, векторизации, memory layout и ускорению нейросетей на железе.

Репозиторий: github.com/mohammad-ghaderi/YOLO26

Ключевые выводы

  • Полная реализация YOLO-инференса на ассемблере ARM64 без фреймворков возможна, но трудозатратна
  • Применение NEON SIMD, Winograd, кастомных GEMM-ядер и cache-aware тайлинга даёт работающее решение для edge AI
  • Прирост производительности от низкоуровневой оптимизации может быть ниже ожиданий — gap между теорией и практикой
  • Проект демонстрирует образовательную ценность: понимание внутреннего устройства inference engines
  • Open-source подход позволяет сообществу дать фидбек и улучшить результат
YOLOARM64edge AIRaspberry Piнизкоуровневая оптимизация

Автор: Артём Ковалёв · Источник: reddit.com

Мнение редакции

**Это один из тех проектов, которые заставляют уважать энтузиазм, но задуматься о практическом смысле.** Написать инференс YOLO на чистом ассемблере ARM64 — задача нетривиальная и образовательно ценная: ты реально понимаешь, как работают NEON SIMD, кэш, memory layout, fusion операторов. Но вот парадокс: результат медленнее ожиданий, и это честный урок — современные фреймворки вроде TensorFlow Lite, ONNX Runtime, ncnn годами оттачивались армиями инженеров и содержат тысячи man-hours оптимизаций, compiler tricks и hardware-specific hacks. Один студент с ассемблером против этого — Давид и Голиаф, только без счастливого финала.

**Практическая ценность проекта — в обучении и бенчмаркинге идей, а не в production-ready движке.** Если вы разрабатываете edge AI, не спешите писать свой инференс с нуля: возьмите ncnn, TFLite или OpenVINO и инвестируйте время в оптимизацию модели, квантизацию, pruning. Но если хотите глубоко понять, почему эти фреймворки быстры (или медленны) — вот вам отличный кейс для изучения. Код на GitHub, автор просит фидбека — если вы ARM-guru или низкоуровневый оптимизатор, загляните и подскажите.

Ещё по теме

Комментарии