"Искусственный интеллект"

Новый генератор кода OpenAI: GitHub Copilot (и Codex)

Узнайте, как этот ИИ генерирует код из слов

Первоначально опубликовано на louisbouchard.ai, прочтите его за 2 дня до этого в моем блоге!

Вы, наверное, слышали о недавнем инструменте Copilot от GitHub, который генерирует для вас код. Вы можете рассматривать этот инструмент как автозаполнение ++ для кода. Вы даете ему имя функции вместе с некоторой дополнительной информацией, и он генерирует для вас код довольно точно! Но это не просто автозаполнение вашей функции. Скорее, он попытается понять, что вы пытаетесь сделать для его создания. Он также может генерировать гораздо более крупные и полные функции, чем классические инструменты автозаполнения. Это потому, что он использует модель, аналогичную GPT-3, чрезвычайно мощную модель естественного языка, которую вы наверняка знаете.

Если вы не уверены или не помните, как это работает, вам следует прочитать статью, которую я написал год назад, когда вышел GPT-3.



Итак, как вы знаете, GPT-3 - это языковая модель, поэтому она была обучена не на коде, а на естественном человеческом языке. Если вы попытаетесь сгенерировать код с основной моделью GPT-3 из API OpenAI, это не сработает. Фактически, в своей новой статье, выпущенной для второго пилота GitHub, OpenAI протестировала GPT-3 без какого-либо дополнительного обучения по коду и решила ровно 0 проблем с написанием кода Python. Итак, как они взяли такую ​​мощную модель генерации языков, которая совершенно бесполезна для генерации кода, и преобразовали ее, чтобы она соответствовала этой новой задаче генерации кода?

Первая часть проста. Он должен был понять, чего хочет пользователь, в чем GPT-3 уже неплохо разбирается (см. Мою статью выше). Вторая часть труднодостижима, так как GPT-3 никогда раньше не видел кода, ну, не так уж много. Как вы знаете, чтобы быть такой мощной языковой моделью, GPT-3 был обучен практически на тексте из всего Интернета. И теперь OpenAI и GitHub пытаются построить аналогичную модель, но для генерации кода. Не вдаваясь во все дилеммы конфиденциальности, порожденные проблемами авторского права кода, используемого для обучения на GitHub, вы явно не можете найти лучшего места для этого. Я вернусь к этим вопросам конфиденциальности в конце!

Поскольку GPT-3 - самая мощная языковая модель, которая существует в настоящее время, они начали с нее. Используя очень похожую модель, они атаковали вторую часть проблемы, генерируя код, обучая эту модель GPT на миллиардах строк общедоступного кода GitHub вместо случайного текста из Интернета. Сила GPT-3 в значительной степени заключается в количестве информации, на которой он может изучать, поэтому выполнение того же самого, но специализированного в коде, безусловно, даст потрясающие результаты. Точнее, они обучили эту адаптированную модель GPT на 54 миллионах общедоступных репозиториев программного обеспечения, размещенных на GitHub! Теперь у нас есть огромная модель, обученная на множестве примеров кода. Проблема в том, что, как вы знаете, модель может быть настолько хороша, насколько хороши данные, на которых она была обучена. Итак, если данные выбираются случайным образом из GitHub, как вы можете быть уверены, что они работают и хорошо написаны? Вы не можете знать наверняка, и это может вызвать множество проблем, но отличный способ, который они нашли для дальнейшего улучшения навыков кодирования модели, состоял в том, чтобы настроить ее на код с веб-сайтов конкурирующих программ и из репозиториев с непрерывным интеграция. Это означает, что код, скорее всего, хорош и хорошо написан, но в меньшем количестве.

Они под контролем настроили модель с этим новым набором обучающих данных. Это означает, что они обучили ту же модель второй раз на меньшем и более конкретном наборе данных из тщательно отобранных примеров. Тонкая настройка - это мощный метод, который часто используется для улучшения результатов в соответствии с нашими конкретными потребностями вместо того, чтобы начинать с нуля. Модель часто оказывается намного более мощной при обучении с большим количеством данных, даже если она не полезна для нашей задачи и в дальнейшем адаптирована для нашей задачи, вместо обучения новой модели с нуля с небольшими тщательно подобранными данными. Когда дело доходит до данных и глубокого обучения, чаще всего, чем больше, тем лучше.

Потомки этой модели используются в GitHub Copilot и моделях Codex в OpenAI API. Конечно, Copilot еще не идеален и имеет множество ограничений. Он не заменит программистов в ближайшее время, но показал потрясающие результаты и может ускорить работу многих программистов по написанию простых, но утомительных функций и классов. Как я уже упоминал, они обучили модель второго пилота миллиардам строк открытого кода, но с любыми лицензиями, и, поскольку это было сделано в сотрудничестве с OpenAI, они, конечно, будут продавать этот продукт.

Совершенно здорово, что они хотят зарабатывать деньги на созданном ими мощном инструменте, но могут возникнуть некоторые сложности, если он был создан с использованием вашего кода с ограничительными лицензиями. Если вы хотите узнать больше об этом вопросе в отношении закона об авторском праве, лицензии GPL и условий обслуживания, я настоятельно рекомендую вам посмотреть отличное видео, которое Янник Килчер снял несколько дней назад. Ссылки на него приведены в приведенных ниже ссылках.

Спасибо за чтение!

Больше примеров Copilot смотрите в видео:

Если вам нравится моя работа и вы хотите быть в курсе событий с искусственным интеллектом, вы обязательно должны подписаться на меня в других моих учетных записях в социальных сетях (LinkedIn, Twitter) и подписаться на мою еженедельную информационную рассылку AI !

Чтобы поддержать меня:

  • Лучший способ поддержать меня - это стать участником этого веб-сайта или подписаться на мой канал на YouTube, если вам нравится формат видео. .
  • Поддержите мою работу над Patreon финансово
  • Следуйте за мной здесь, на medium

Использованная литература: