Система Salesforce Code T5 может понимать и генерировать код

Система Salesforce Code T5 может понимать и генерировать код

Источник · Перевод автора

Инструменты программирования на базе искусственного интеллекта, которые генерируют код с использованием алгоритмов машинного обучения, привлекают все большее внимание за последнее десятилетие. Теоретически такие системы, как OpenAI’s Codex, могут сократить время, затрачиваемое людьми на написание программного обеспечения, а также вычислительные и эксплуатационные расходы. Но существующие системы имеют серьезные ограничения, приводящие к нежелательным результатам, таким как ошибки.

В поисках лучшего подхода исследователи Salesforce разработали открытый исходный код системы машинного обучения под названием CodeT5, которая может понимать и генерировать код в реальном времени. Команда утверждает, что CodeT5 обеспечивает высочайшую производительность в задачах кодирования, включая обнаружение дефектов кода, которое прогнозирует, уязвим ли код для эксплойтов, и обнаружение клонов, которое прогнозирует, имеют ли два фрагмента кода одинаковые функции.

Новый проект

Как объясняют исследователи Salesforce в блоге и статье, существующие инструменты кодирования на базе ИИ часто полагаются на архитектуры моделей, «неоптимальные» для создания и понимания задач. Они адаптируют традиционные методы предварительного обучения обработки естественного языка к исходному коду, игнорируя структурную информацию на языке программирования, которая важна для понимания семантики кода.

В отличие от этого, CodeT5 включает в себя знания, специфичные для кода, принимая код и сопровождающие его комментарии, чтобы дать модели лучшее понимание кода. Как своего рода ориентир, модель опирается как на документацию, так и на идентификаторы, присвоенные разработчиком в кодовых базах (например, «binarySearch»), которые делают код более понятным при сохранении его семантики.

CodeT5 основан на платформе Google T5 (Text-to-Text Transfer Transformer), которая впервые была подробно описана в статье, опубликованной в 2020 году. Она преобразовывает задачи обработки естественного языка в унифицированный текстовый формат, в котором вводятся и выводятся данные всегда являются строками текста, что позволяет применять одну и ту же модель практически к любой задаче обработки естественного языка.

Для обучения CodeT5 команда получила более 8,35 миллиона экземпляров кода, включая комментарии, написанные пользователями, из общедоступных репозиториев GitHub с открытым исходным кодом. Большинство из них взято из набора данных CodeSearchNet – который охватывает Ruby, JavaScript, Go, Python, PHP, C и C # – дополненного двумя наборами данных C и C # из BigQuery.

Самая большая и наиболее функциональная версия CodeT5, имеющая 220 миллионов параметров, заняла 12 дней для обучения на кластере из 16 графических процессоров Nvidia A100 с 40 ГБ памяти. (Параметры – это части модели машинного обучения, полученные из исторических данных обучения.) Инновации в конструкции позволили ей достичь высочайшего уровня производительности при выполнении четырнадцати задач в тесте CodeXGLUE, включая генерацию текста в код и преобразование кода в код. .

Возможная предвзятость

Исследователи Salesforce признают, что наборы данных, используемые для обучения CodeT5, могут кодировать некоторые стереотипы, такие как раса и пол, из текстовых комментариев или даже из исходного кода. Более того, по их словам, CodeT5 может содержать конфиденциальную информацию, такую ​​как личные адреса и идентификационные номера. И это может привести к появлению уязвимого кода, который негативно повлияет на программное обеспечение.

OpenAI также обнаружил, что его модель Codex, которая также была обучена на коде из репозиториев GitHub с открытым исходным кодом, может предлагать скомпрометированные пакеты, небезопасно вызывать функции и создавать программные решения, которые кажутся правильными, но на самом деле не выполняют намеченную задачу. Codex также может быть предложено генерировать расистские и иным образом вредоносные выходные данные в виде кода, такие как слова «террорист» и «насильственный» при написании комментариев к коду с подсказкой «Ислам».

Но команда Salesforce заявляет, что они предприняли шаги по сокращению и устранению ошибок CodeT5, в том числе путем очистки и фильтрации данных обучения на предмет проблемного контента. Чтобы продемонстрировать полезность модели, исследователи создали помощника по программированию на базе искусственного интеллекта для Apex, проприетарного языка программирования Salesforce с синтаксисом, подобного Java, который позволяет разработчикам вводить описание на естественном языке для создания целевой функции или резюмировать функцию в комментариях к коду.

«С целью повышения продуктивности разработки программного обеспечения с помощью методов машинного обучения исследования интеллектуального программного обеспечения в последнее десятилетие привлекают все большее внимание как в академических кругах, так и в отраслях. Методы анализа программного кода могут помочь разработчикам сократить утомительные повторяющиеся рабочие нагрузки, повысить качество программирования и общую продуктивность разработки программного обеспечения», – написали исследователи в своей статье. «[Такие модели, как CodeT5] значительно сократят время их работы, а также потенциально могут снизить вычислительные и эксплуатационные расходы, поскольку ошибка может снизить производительность системы или даже привести к сбою всей системы».

CodeT5 пополняет растущий список моделей, обученных выполнению задач программирования. Например, Intel ControlFlag и механизм Machine Inferred Code Similarity могут автономно обнаруживать ошибки в коде и определять, когда два фрагмента кода выполняют похожие задачи. TransCoder от Facebook преобразует код одного из трех языков программирования – Java, Python или C ++ – в другой.

Но недавние исследования показывают, что ИИ еще предстоит пройти путь, прежде чем он сможет надежно генерировать код. В июне группа исследователей из Калифорнийского университета в Беркли, Корнелл, Чикагского университета и Университета Иллинойса в Урбане-Шампейне выпустила APPS, эталонный тест для генерации кода из спецификаций естественного языка. Команда протестировала несколько типов моделей в APPS, включая OpenAI GPT-2, GPT-3 и версию GPT-3 с открытым исходным кодом под названием GPT-Neo. В ходе экспериментов они обнаружили, что модели могут научиться генерировать код, решающий более простые проблемы, но не без синтаксических ошибок. Примерно 59% решений вводных задач GPT-3 содержали ошибки, в то время как наиболее эффективная модель – GPT-Neo – достигла точности только 10,15%.

Исследователи Salesforce не тестировали CodeT5 в приложениях.