Привет!
Привет! Я уже несколько недель работаю над тем, чтобы фреймворк Adept мог обучать YOLOv11 полностью на GPU и без NumPy. Я наконец-то довёл Adept до состояния, в котором он может полностью тренировать YOLOv11 на GPU без NumPy. Делюсь тем, что пришлось починить и дописать. 🛠 Ядро и Автоград • In-place broadcast: a -= b больше не падает, левый операнд корректно ресайзится. • Редукция градиентов: при broadcast для + - * / градиенты теперь сворачиваются к форме операндов. • Matmul backward: поддержка 1D тензоров (вектор-матрица и т.д.). • Vulkan Convs: переписал накопление bias-градиента (считается один раз, без лишних аллокаций). 🧩 API для YOLO-loss (прощай, CPU) Чтобы IoU и assigner работали на GPU, реализовал: • Индексация: gather, scatter/add, masked_select/fill, where, topk, unique. • Форма: expand, permute, flatten, cat, stack, reshape. • Математика: clamp, pow, arctan, min/max, argmax. • Скаляры: перегрузки операторов типа 2 * tensor • Создание: arange, detach. 📉 Loss, Оптимизатор и Модули • Добавлены BCE (для DFL) и CE без усреднения (per-position loss). • Фикс Python-операторов: a + b теперь возвращает новый тензор, а не мутирует a (сохраняет граф!). • SGD с momentum и weight decay. • BatchNorm: инициализация дисперсии = 1 (убрал деление на ноль). • Чекпоинты: префиксы имён корректно пробрасываются во вложенные модули. ⚙️ Пайплайн тренировки • Loss, IoU и assigner переведены на нативный clamp`/`min`/`max. Сетки координат - через adept.arange. • Warmup + Cosine LR, логирование box/cls/dfl loss. • Упаковка нескольких GT через scatter_add (меньше синков). • Инференс: новый CLI (`--image`, --weights и т.д.). Починил letterbox — confidence вернулась с 0.08 до 0.61. 📊 Результаты и Перф Тренировал на синтетике (геометрические фигуры). Eval total loss стабильно упал с 13.2 (эпоха 1) до 6.5 (эпоха 24). Градиенты сходятся, детектор учится. ⚡ Оптимизировал Vulkan memory pool: выравнивание 4096, кэш 10000 буферов - заметно меньше аллокаций в train-loop. 🎯 Планы Стек от ядра до высокоуровневого API готов. Следующий шаг - полноценное обучение на MS COCO, сбор метрик AP и дальнейший тюнинг скорости. Теперь есть инструмент для настоящих экспериментов! #Adept #YOLO #DeepLearning #Vulkan #MachineLearning #MSCOCO