Современные технологии искусственного интеллекта и вычислительной математики требуют всё более мощных и быстрых инструментов для обработки данных. PyTorch является одним из самых популярных фреймворков для разработки и внедрения моделей машинного обучения благодаря своей простоте и гибкости. Однако, несмотря на постоянные улучшения и оптимизации, имеются операции, в которых PyTorch далеко не всегда демонстрирует максимальную производительность, особенно на новейших графических процессорах, таких как NVIDIA H100. Инновационный проект, разработанный командой из Lossfunk, показал, что даже сравнительно небольшое количество специализированных AI-агентов, работающих совместно, способно создавать CUDA-кернелы, которые значительно превосходят по скорости стандартные реализации PyTorch, иногда в два и более раза быстрее. Основная идея подхода заключается в разбиении процесса оптимизации на несколько специализированных ролей, каждая из которых отвечает за конкретный аспект создания и улучшения GPU-кода.
Это решение работает гораздо эффективнее, чем попытка поручить все задачи одному единственному агенту, и тесно имитирует структуру хорошо слаженной команды профессионалов, каждый из которых выполняет свою функцию с максимальной эффективностью. Такой мультиагентный метод опирается на опыт ведущих исследований в области создания комплексных AI-систем и разрабатывался с использованием современных концепций, доказавших свою эффективность в других областях. В состав системы входят пять основных агентов, каждый из которых выполняет важную задачу. Синтезирующий агент отвечает за превращение высокоуровневых идей оптимизации в работающий код на CUDA. Он разрабатывает несколько вариантов кернелов, экспериментируя с оптимизациями, такими как векторизация и распределение памяти, а также заботится о том, чтобы работать с продвинутыми конструкциями CUDA.
Агент компиляции гарантирует, что код не только компилируется без ошибок, но и оптимизирован с точки зрения настройки компилятора и флагов, а также предоставляет подробную диагностику проблем, касающихся синтаксиса и платформенных ограничений. Агент достоверности отвечает за тестирование созданных кернелов на корректность, сравнивая результаты вычислений с эталонными данными PyTorch. Этот этап необходим, поскольку небольшие ошибки в численных алгоритмах зачастую незаметны на первых этапах, но приводят к накоплению ошибок и неправильным результатам при масштабировании. Агент рассуждений анализирует выявленные узкие места в производительности и предлагает новые гипотезы и идеи оптимизации, основываясь на аппаратном опыте и знании архитектуры GPU. Наконец, оркестратор управляет всей системой, распределяя задачи между агентами, контролируя прогресс, предотвращая повторение одинаковых ошибок и обеспечивая своевременное завершение оптимизационных циклов.
Многообразие и независимость вариантов повышения эффективности создают эффект «ветвления» на каждом этапе — вместо последовательного редактирования кода система одновременно тестирует несколько разных подходов. Благодаря этому снижается риск застрять в локальных оптимумах и увеличить шансы найти действительно инновационные решения. После реализации вариантов они проходят этапы компиляции и проверки, при этом наиболее успешные решения получают больше возможностей для дальнейшего улучшения. Такой параллелизм и структурированность напоминают эволюционный процесс, где лучшие образцы выживают и развиваются быстрее. Эти методы позволили достигнуть внушительных результатов.
Например, для операции softmax был разработан кастомный кернел, который оказался в четыре раза быстрее стандартной реализации в PyTorch. Аналогично, слияние операций линейного слоя и суммирования по строкам привело к ускорению почти в 2.5 раза. Эти улучшения достигаются за счёт оптимизации доступа к памяти, применения векторизации, использования разделяемой памяти и управления регистрами, а также за счёт специально адаптированных алгоритмических решений, которые автоматически подбирает мультиагентная система. Безусловно, не все операции поддаются заметному ускорению.
Простые и давно оптимизированные операции PyTorch выполнять уже очень эффективно, и здесь преимущества минимальны или отсутствуют. Особенно стоит отметить, что система требует дисциплинированного подхода к тестированию и бенчмаркингу, так как неверные условия эксперимента могут привести к ошибочным выводам. Команда Lossfunk также отмечает, что их мультиагентная архитектура прекрасно масштабируется и имеет потенциал для дальнейших улучшений. В их планах — интеграция поддержки смешанной точности, оптимизация для разных архитектур GPU, включая специализированные ядра Tensor Core, а также расширение использования кросс-операционных слияний кернелов. Эти направления обещают сделать вычислительные процессы ещё более эффективными и открывают широкие перспективы для автоматизации оптимизаций в разных областях вычислительной математики и машинного обучения.
Кроме того, разработчики собираются открыто делиться своими наработками и улучшениями по системе KernelBench — популярному фреймворку для тестирования и сравнения кернелов. Это позволит другим исследователям и инженерам использовать мультиагентные методы, а также вносить собственный вклад в развитие технологии. Таким образом, мультиагентный подход к генерации CUDA-кода показывает, что для создания действительно высоко производительных решений далеко не всегда требуется огромная команда специалистов. Достаточно разумно структурированной системы из нескольких агентов, каждый из которых обладает глубокой экспертизой в своей области. Такой подход меняет парадигму разработки сложных вычиислительных алгоритмов, даёт возможность быстрее находить нестандартные решения и существенно экономить ресурсы разработки.
В итоге, если вы занимаетесь оптимизацией вычислений на GPU и ищете способы превзойти стандартные библиотеки, стоит обратить внимание на стратегию мультиагентных систем. Они доказали свою эффективность на практике, обеспечив ускорение сложных операций в разы и открывая новые горизонты для исследований и прикладных задач. В мире, где производительность и точность имеют критическое значение, инновационные методы такой масштабной автоматизации вполне могут стать ключом к будущему вычислительной техники и искусственного интеллекта.