Студент написал 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 подход позволяет сообществу дать фидбек и улучшить результат
Автор: Артём Ковалёв · Источник: 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 или низкоуровневый оптимизатор, загляните и подскажите.
Комментарии