Я уже несколько недель работаю над тем, чтобы фреймворк 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