Искусственный интеллект, пишущий код, обещает сократить затраты на разработку и позволить программистам сосредоточиться на творческих, менее повторяющихся задачах. Исследовательские лаборатории, такие как OpenAI и DeepMind, поддерживаемый Alphabet, уже разработали мощный ИИ для генерации кода, но многие из наиболее эффективных систем недоступны с открытым исходным кодом. Например, обучающие данные для Codex от OpenAI, на основе которого работает GitHub Copilot, недоступен для публики, что не позволяет исследователям точно настраивать модель ИИ или изучать разные ее аспекты.
Чтобы исправить это, исследователи из Университета Карнеги-Меллона — Фрэнк Сюй, Ури Алон, Грэм Нойбиг и Винсент Хеллендорн — разработали PolyCoder, модель, основанную на языковой модели OpenAI GPT-2, которая была обучена на базе в 249 ГБ кода на 12 языках программирования. Хотя PolyCoder не соответствует производительности лучших ИИ генераторов кода в каждой задаче, исследователи утверждают, что PolyCoder может писать на C с большей точностью, чем все известные модели, включая Codex.
«Когда прошлым летом вышел GitHub Copilot, стало ясно, что эти большие языковые модели могут быть очень полезны в помощи разработчикам и повышения их производительности. Но в открытом доступе не было ни одной модели даже близкого масштаба», — сообщили исследователи. «PolyCoder начался с того, что Винсент просто пытался увидеть, какая самая большая модель может быть обучена на нашем лабораторном сервере. В конечном итоге мы сделали модель с 2.7 миллиардами параметров… и эта модель была на голову впереди других моделей, ориентированных на код, которые были публично доступный на данный момент».
Генерация кода
Все больше организаций изучают создание кода искусственным интеллектом. Во время конференции Build в мае 2021 года Microsoft подробно рассказала о новой функции в Power Apps, которая использует языковую модель OpenAI GPT-3, чтобы помочь людям в создании формул. Intel ControlFlag может автономно обнаруживать ошибки в коде. А TransCoder от Facebook преобразует код с одного языка программирования на другой.
Недавно DeepMind анонсировала AlphaCode, которая, по утверждению лаборатории, является одной из первых систем генерации кода, конкурирующих с программистами-людьми. DeepMind сообщил, что в соревнованиях по программированию, проводимых на Codeforces, платформе для соревнований по программированию, AlphaCode попала в 54.3% лучших разработчиков.
Но исследователи из Университета Карнеги-Меллона отмечают, что «почти никто», кроме хорошо обеспеченных ресурсами компаний, не может обучать модели размером с AlphaCode или Codex. Исследование, проведенное в 2020 году стартапом AI21 Labs, оценило стоимость обучения модели генерации текста с 1.5 миллиардами параметров — примерно в два раза меньше размера PolyCode — от 80 000 до 1.6 миллиона долларов. А Copilot, например, имеет 12 миллиардов параметров.
«Крупные технологические компании не публикуют свои модели публично, что действительно сдерживает научные исследования и демократизацию таких больших языковых моделей кода», — говорят исследователи. «В какой-то степени мы надеемся, что наши усилия по открытию исходного кода убедят других сделать то же самое. Но более широкий взгляд заключается в том, что сообщество должно иметь возможность самостоятельно обучать эти модели. Наша модель раздвинула границы того, что вы можете обучить на одном сервере — для чего-то большего требуется кластер серверов, что резко увеличивает стоимость».
Открытость в генерации кода
При разработке PolyCoder исследователи также изучили и сравнили производительность различных систем искусственного интеллекта, генерирующих код, включая Codex. Они обнаружили, что модели, в основном обученные текстам на английском языке и небольшому количеству кода, оказались очень хорошими в написании программ — возможно, потому, что они получили информацию, связанную с кодом, из таких ресурсов, как веб-сайт вопросов и ответов для разработчиков Stack Overflow, которые были включены в базу данных из 249 ГБ
«Многообещающий подход к созданию надежных моделей генерации кода, по-видимому, заключается в обучении на различных источниках знаний в области программирования, включая код на множестве языков программирования, а также текстов из Интернета, связанные с кодом», — говорят исследователи.
Однако исследователи выражают обеспокоенность тем, что такие модели, как PolyCoder, могут быть вынуждены генерировать программы с ошибками, в том числе с трудно обнаруживаемыми уязвимостями в безопасности. Они опасаются, что в будущем злоумышленники смогут скрывать вредоносное поведение в моделях генерации кода, которые проявятся только при наличии определенных условий, например, ключевого слова, или “загружать” уязвимый код, который может быть подхвачен моделями генерации кода.
В качестве одного из способов борьбы с этим они предлагают модели с открытым исходным кодом, что может позволить исследователям искать в них ошибки. В качестве дополнительного преимущества открытый исходный код позволит разработчикам персонализировать модели или «обучать» их новым языкам программирования с помощью тонкой настройки, которая менее затратна, чем обучение моделей с нуля.
«Несмотря на то, что индустрия в настоящее время обладает гораздо большими вычислительными ресурсами, все еще есть много возможностей для инноваций со стороны академических кругов и исследовательского сообщества, включая создание меньших и более быстрых персонализированных моделей, которые не зависят от подключения к Интернету, полезных приложений, автоматическую проверку кода и многого другое. Это задачи, для решения которых исследовательское сообщество создало многообещающие прототипы, которые действительно могут извлечь выгоду из возможностей таких очень больших языковых моделей», — говорят исследователи. «Децентрализованное обучение, когда несколько групп объединяются для совместного обучения большой модели, может иметь здесь большое значение. Исследовательские гранты и сотрудничество между компаниями и академическими кругами также могут помочь».