Большие языковые модели неплохо пишут код. Это уже не новость – миллионы разработчиков пользуются ИИ-помощниками в повседневной работе. Но одно дело – написать рабочий фрагмент, и совсем другое – написать максимально быстрый код. Особенно это актуально для вычислений, где важна каждая миллисекунда: научные симуляции, обработка данных, задачи машинного обучения.
Именно об этом – новый эксперимент от команды AMD. Во второй части серии об ИИ-агентах для высокопроизводительных вычислений (HPC) исследователи показали, как можно заставить языковую модель не просто генерировать код, а итеративно его улучшать – снова и снова, пока производительность не достигнет нужного уровня.
Проблема: написать – не значит оптимизировать
Когда мы просим ИИ написать код, он, как правило, выдаёт что-то рабочее. Но «рабочее» и «быстрое» – не одно и то же. В высокопроизводительных вычислениях код должен максимально использовать возможности оборудования: параллельные вычисления, особенности памяти, специфику конкретного процессора или видеокарты.
Человек-эксперт справляется с этим через итерации: написал – запустил – измерил – переписал. Причём переписал не наугад, а опираясь на понимание того, что именно замедляет программу. Можно ли научить ИИ делать то же самое?
Ответ, который предлагают авторы публикации: да, если дать модели правильный инструмент и правильную обратную связь.
OpenEvolve: эволюция кода как стратегия
В основе эксперимента – инструмент под названием OpenEvolve. Проще говоря, это система, которая подходит к оптимизации кода так же, как биологическая эволюция подходит к выживанию: через множество попыток, отбор лучших вариантов и постепенное улучшение.
Вот как это работает на практике:
- ИИ-агент получает исходный код и задачу – сделать его быстрее.
- Модель предлагает изменения: переписывает фрагменты, пробует разные подходы.
- Каждый вариант запускается и измеряется – насколько он быстр по сравнению с предыдущим.
- Лучшие варианты «выживают» и становятся основой для следующего раунда изменений.
- Цикл повторяется.
Это не просто «попроси ИИ переписать код». Это управляемый итеративный процесс, где каждая итерация опирается на реальные измерения производительности, а не на интуицию модели.
MCP: как агент «разговаривает» с инструментами
Отдельная часть эксперимента касается того, как именно ИИ-агент взаимодействует с инструментами оптимизации. Здесь используется подход под названием MCP (Model Context Protocol) – это, если коротко, стандартизированный способ для языковой модели вызывать внешние инструменты и получать от них результаты.
Представьте, что у агента есть «руки»: он может запустить код, получить результат замера, передать его обратно в модель – и та примет решение о следующем шаге. MCP как раз и описывает, как эти «руки» устроены и как ими пользоваться.
Это важный момент, потому что без такой связи агент был бы ограничен только своими внутренними предположениями о том, что работает хорошо, а что плохо. С MCP он получает реальные данные из реального окружения – и это принципиально меняет качество оптимизации.
Что получилось в итоге
Эксперимент проводился на задачах из области высокопроизводительных вычислений – тех, где важна скорость работы на GPU. Результаты показали, что итеративный подход с OpenEvolve действительно позволяет агенту находить более производительные решения, чем те, что он предложил бы с первого раза.
Это не означает, что ИИ превзошёл опытного инженера-оптимизатора. Но это демонстрирует рабочую концепцию: автоматизированная оптимизация через итерации и измерения – реализуемая идея, а не только теория.
Для разработчиков, которые работают с вычислительно тяжёлыми задачами, это может означать новый инструмент в арсенале: не «попросить ИИ написать быстрый код», а «запустить агента, который будет улучшать код до тех пор, пока не достигнет цели».
Почему это интересно за пределами HPC
Высокопроизводительные вычисления – довольно специфическая область. Но логика, которую демонстрирует этот эксперимент, применима шире.
Итеративное улучшение с обратной связью – это, по сути, то, как работает любой хороший инженерный процесс. И если ИИ-агент может встроиться в этот процесс не как генератор готового решения, а как участник цикла «попробовал – измерил – улучшил», это меняет то, как мы думаем об автоматизации разработки в целом.
Пока что такие системы требуют настройки, понимания контекста и чёткого определения того, что именно мы хотим оптимизировать. Агент не знает сам, что «быстрее» – это хорошо, пока мы не скажем ему, как это измерить. Но это разумное ограничение, а не принципиальный барьер.
Открытые вопросы
Как и любой эксперимент, эта работа оставляет вопросы открытыми.
Насколько хорошо подход масштабируется на более сложные кодовые базы? Что происходит, когда оптимизация одного фрагмента ухудшает другой? Как агент справляется с ситуациями, где «быстрее» трудно измерить напрямую?
Эти вопросы не обесценивают результат – они просто обозначают направление следующих шагов. А сам факт того, что AMD публично делится такими экспериментами, говорит о том, что тема ИИ-агентов для разработки выходит за рамки исследовательских лабораторий и становится частью практической инженерной повестки.