232x быстрее: авто-исследование с Codex для GPU
Как разработчик занял 12-е место из 183 участников на соревновании GPU Mode, ускорив QR-ядро в 232 раза с помощью OpenAI Codex и авто-исследования.
Введение: когда ИИ сам ведёт исследование
Что если искусственный интеллект может не просто писать код, но и сам итеративно оптимизировать его — тысячи раз подряд, без сна и выходных? Именно это продемонстрировал разработчик Санкальп Шубхам на соревновании GPU Mode в июне 2026 года.
GPU Mode совместно с Core Automation провели соревнование, посвящённое авто-исследованию. Задача — реализовать пакетную компактную QR-факторизацию Хаусхолдера для квадратных матриц. Санкальп занял 12-е место из 183 участников, достигнув ускорения в 232 раза по сравнению с эталонным решением.
Эта история — не просто об оптимизации GPU-ядра. Это манифест нового подхода к инженерии: когда человек задаёт цель, выстраивает обратную связь, а ИИ-агент самостоятельно ищет путь к результату.
Что такое авто-исследование (auto-research)?
Для Санкальпа это была первая серьёзная попытка авто-исследования. Некоторые называют это «loop engineering» — и это тоже вполне подходящее название.
Концепция авто-исследования строится на простой идее: LLM — это мощный решатель задач, но только при наличии:
- Чёткой цели — конкретной метрики, которую нужно улучшить
- Верификации — способа автоматически проверить результат
- Обратной связи — быстрого цикла «предложи → протестируй → улучши»
«Агенты жаждут тесных циклов обратной связи. Они позволяют им карабкаться на вершину в своё удовольствие.»
По мнению участников Hacker News, LLM стоит воспринимать как продвинутую версию Prolog или линейного программирования: вы задаёте ограничения, имеете способ проверки корректности и ставите чёткую цель. Если модель может верифицировать себя и корректировать курс — можно оставить её на автопилоте.
Задача: QR-декомпозиция на GPU B200
Суть проблемы
Задача состояла в реализации пакетной квадратной компактной QR-факторизации Хаусхолдера. Это фундаментальная операция линейной алгебры, которая раскладывает матрицу на ортогональную матрицу Q и верхнетреугольную матрицу R.
Поскольку отражение каждого столбца зависит от результата предыдущего, наивный алгоритм является последовательным и «недружелюбным» к GPU. Но существуют GPU-совместимые алгоритмы, например, блочный Хаусхолдер, где хитрость заключается в накоплении отражений в компактной форме с последующим применением одного большого матричного умножения.
Санкальп взаимодействовал с Claude и смотрел видео на YouTube, чтобы выстроить интуицию. После обсуждений с Claude стало ясно, что нужно использовать блочный алгоритм Хаусхолдера как основную архитектуру с WY-обновлением хвостовой матрицы.
Почему это сложно?
Традиционные последовательные реализации алгоритма Хаусхолдера имеют существенные ограничения в производительности и масштабируемости при работе с большими матрицами. Для преодоления этих ограничений необходима параллелизация на GPU с использованием CUDA.
Соревнование проходило на аппаратуре NVIDIA B200 — новейшем GPU архитектуры Blackwell. Это добавляло сложности: нужно было не просто написать рабочий код, но и использовать специфические возможности новой архитектуры.
Архитектура авто-исследовательского цикла
Ключевым инструментом в работе Санкальпа стал OpenAI Codex — агент, способный запускать код, читать результаты профилирования и итеративно улучшать реализацию.
graph TD
A[🎯 Постановка задачи] --> B[📚 Изучение алгоритма с Claude/GPT]
B --> C[⚙️ Первичная реализация на Triton/PyTorch]
C --> D[🔁 Цикл авто-исследования]
D --> E[📊 Профилирование: torch + nsys + NCU]
E --> F{Улучшение найдено?}
F -->|Да| G[✅ Принять изменение]
F -->|Нет| H[↩️ Откатиться]
G --> D
H --> D
D --> I[🏆 Результат: 232x ускорение]
Инструменты обратной связи
Агенты могли тестировать, бенчмаркировать и отправлять решения напрямую на лидерборд. Чекер предоставлял обратную связь по каждой форме матрицы вместе с общим геометрическим средним времени выполнения.
За 14 дней соревнования Санкальп сделал более 1500 отправок. Это ~107 попыток в день — темп, невозможный без автоматизации.
По мере продвижения к сложным оптимизациям приходилось всё активнее включаться в цикл — изучать концепции и управлять моделью. Codex получил доступ к профилированию через Modal и использовал torch profiling / nsys profiling для тестирования разных идей, сравнения реализаций и более быстрого перебора параметров.
Инструменты авто-исследования (AutoKernel)
Помимо самого Codex, в экосистеме GPU-оптимизации уже появились специализированные инструменты. Файл program.md специально сделан исчерпывающим, чтобы агент мог работать 10+ часов без остановок. Он включает 6-уровневый плейбук оптимизации, систему принятия решений, обработку сбоев и рассуждения по закону Амдала.
# Пример запуска AutoKernel-агента
# Агент сам профилирует → ранжирует → оптимизирует
python profile.py --model my_model.py
python extract.py --backend triton --top-n 3
# Агент (Codex/Claude) запускает бесконечный цикл улучшений
AutoMegaKernel наследует авто-исследовательский цикл AutoKernel (предложи → фиксированная оценка → принять/откатить, часами, без вмешательства) и добавляет новое измерение поиска: расписание.
Прогресс оптимизации: от 419 мс до 1,8 мс
Финальный результат оказался впечатляющим: время выполнения ядра сократилось с примерно 419 миллисекунд до 1,805 микросекунд (1,8 мс) для различных форм матриц.
| Этап | Время выполнения | Ускорение | Подход |
|---|---|---|---|
| Baseline (torch.geqrf) | ~419 мс | 1× | Стандартный PyTorch |
| Ранняя реализация Triton | ~50 мс | ~8× | Базовый Triton-кернел |
| Блочный Хаусхолдер | ~10 мс | ~40× | Алгоритмическое улучшение |
| После профилирования nsys | ~3 мс | ~140× | Тонкая настройка параметров |
| Финальный результат | 1,805 мс | 232× | Гибрид Triton + PyTorch |
Где были найдены узкие места?
Оптимизации становились значительно сложнее после отметки в 3000 мкс. Приходилось глубже вникать в цикл — изучать концепции и корректировать направление модели.
В финальном решении было много переходов между PyTorch и Triton. Можно было бы держать хвостовую матрицу в формате fp16 вместо постоянных переключений между представлениями — но это был «неизвестный неизвестный» момент, пропущенный из-за нехватки экспертизы в конкретной предметной области.
Что делали топ-решения иначе?
Решения из топ-10 агрессивнее исключали библиотечные функции. Например, 2-е и 5-е решения использовали пользовательскую треугольную инверсию вместо стандартного треугольного решателя PyTorch.
Уроки и выводы: что работает в авто-исследовании?
1. Обратная связь — это всё
Главный урок: качество авто-исследования равно качеству цикла обратной связи. Без мгновенного бенчмаркинга, без чёткой метрики и без автоматической верификации агент слеп.
При разработке Codex приоритет отдавался безопасности и прозрачности, чтобы пользователи могли верифицировать его результаты. Пользователи могут проверять работу Codex через цитаты, логи терминала и результаты тестов. При неопределённости или при ошибках тестов агент явно сообщает об этих проблемах.
2. Человек остаётся архитектором
Авто-исследование не означает «запустил и забыл». Санкальп активно управлял процессом:
- Изучал алгоритмы самостоятельно через Claude и YouTube
- Настраивал направление поиска на сложных этапах
- Интерпретировал результаты профилирования
3. Модель + домен = результат
Достижение стало не результатом недель интенсивного ручного кодирования, а продуктом систематического процесса авто-исследования с использованием ИИ-моделей, таких как Codex и Claude.
4. Что можно улучшить
Стоило иметь пул кандидатов с самого начала; написать более надёжный профилировщик для тестирования случаев смешанной точности; не удалось использовать инструкции tcgen05 — тензорные инструкции пятого поколения NVIDIA для Blackwell, чтобы лучше задействовать тензорные ядра B200.
Алгоритм успешного авто-исследования:
- Определите чёткую числовую метрику (время выполнения, потребление памяти)
- Создайте автоматический бенчмарк с мгновенной обратной связью
- Сформируйте стартовую реализацию вместе с LLM
- Запустите цикл: генерация → тест → принять/откатить
- На сложных этапах углубляйтесь в предметную область лично
- Используйте профилировщики как «глаза» агента
Будущее авто-исследования в GPU-оптимизации
Экосистема инструментов авто-исследования для GPU быстро развивается:
- AutoKernel (адаптация подхода Карпати для работы с Triton/CUDA ядрами)
- AutoMegaKernel — за 10 минут автономной работы самоулучшает мегаядро в 1,47× по сравнению с начальным расписанием
- InferenceBench — все агенты получают одинаковый шаблон промпта с указанием роли, цели, ограничений и инструкцию продолжать улучшения до исчерпания бюджета. Скрипт оценки внутри контейнера служит петлёй обратной связи
OpenAI выпустила GPT-5.3-Codex в феврале 2026 года — модель, сфокусированную на генерации кода, скорости и умении работать с репозиториями, запускать команды в терминале и одновременно отлаживать код.
Заключение: это не магия — это инженерия циклов
Главное, что вынес Санкальп — это глубокие знания об оптимизации GPU-ядер, основах авто-исследования и специфических деталях архитектуры B200.
232-кратное ускорение — это не волшебство. Это результат:
- Правильно выбранного алгоритма (блочный Хаусхолдер с WY-обновлением)
- Тысяч автоматизированных экспериментов через Codex
- Грамотно выстроенного цикла обратной связи
- Человеческой экспертизы для управления направлением
Мы стоим на пороге эпохи, когда исследования по оптимизации низкоуровневого кода становятся доступны не только GPU-экспертам с 10-летним опытом, но и любому разработчику, умеющему правильно выстроить цикл авто-исследования.
Авто-исследование — это не замена инженеру. Это инструмент, который умножает его возможности в сотни раз.
Попробуйте сами: исходные материалы и лидерборд GPU Mode доступны на gpumode.com, а AutoKernel — на GitHub.