Привет, в работе над проектом постоянно сменяются периоды активной разработки и этапы отладки, тестирования и оптимизации.
На прошлой неделе основное внимание было уделено
тестированию и доработке ядра матричного умножения (matmul
). Благодаря увеличению нагрузки на потоки и изменению размера тайла удалось добиться заметного ускорения на средних размерах — это подтверждается графиком сравнения Adept и PyTorch с разными режимами использования cuBLAS .
Однако начиная с размеров
512×1024 производительность Adept начинает значительно отставать, см.
график. А это критично: особенно в современных LLM. Например, в модели
Qwen-7B, которую можно запускать локально, типичные операции включают умножения вида:
- 4096 × 4096 (линейные слои),
- 4096 × 11008 (expansion в MLP блоках).
Теперь надо определиться что же делать дальше. Есть несколько важных направлений:
1. Продолжать оптимизировать matmul. Например внедрить транспонирование одной из входных матриц (обычно B). Это позволит:
- организовать
сгруппированный доступ к данным (все потоки в warp’е читают соседние адреса),
- использовать прямоугольные тайлы (например, 64×128),
- лучше распределить работу между потоками и повысить occupancy.
Да, такой подход требует дополнительной памяти для хранения транспонированной матрицы — но это стандартная практика: даже cuBLAS выделяет рабочую память, управляемую через параметры worksize.
2. Оптимизация операций свёртки, которые критичны для CNN и гибридных архитектур. Тут надо реализовать быстрые свёртки с использованием алгоритма Winograd. Алгоритм Implicit GEMM для работы в стиле im2col но без промежуточных матриц.
3. Также крайне важно завершить реализацию
функциональности срезов тензоров — без неё невозможно поддерживать широкий спектр моделей машинного обучения, включая те, что используют динамические формы или сложные attention-маски.
🚀
Приглашаем всех заинтересованных принять участие в развитии Adept!Ваш вклад — будь то тестирование, код, идеи по оптимизации или документация — напрямую ускорит появление полноценного Vulkan-бэкенда для ML.
#Adept #Vulkan #GPU #GEMM #LLM #TensorSlicing