Найти тему
LabelMe

CodeNet: датасет от IBM для нейросетей, генерирующих и анализирующих код

Оглавление

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

По данным исследования Judge Business School Кембриджского университета издержки связанные с устранением проблем в коде IT-сектора составляют порядка 312 миллиардов долларов в год. Чаще всего речь идет о небольших ошибках, которые превращаются в обязательную рутину, или переносы продуктов с одного языка на другой.

С целью исправить устоявший порядок дел компания IBM представили Project CodeNet – open-source датасет для обучения нейронных сетей программированию. Датасет состоит из 14 миллионов примеров кода, написанных на 55 языках.

Ключевая информация о CodeNet

Датасет содержит более 500 млн строк кода на C++, Java, Python, Go, COBOL, Pascal и FORTRAN. CodeNet примерно в 10 раз превышает по размеру предыдущий крупнейший датасет, содержащий 52 000 примеров кода.

CodeNet содержит образцы кода, предназначенные для обучения нейросетей выполнению целого ряда задач программирования, включая поиск кода и обнаружение клонов. Представленный набор данных также содержит метаданные и аннотации, такие как размер кода, объем памяти, время выполнения процессором и состояние кода, что позволяет отличить эффективный код от неотлаженного.

Более 90% кодов в CodeNet содержат документацию, включающую постановку задачи и спецификации форматов ввода и вывода. Для семи миллионов примеров IBM также представила примеры входных и выходных данных.

Перевод кода на другие языки

IBM уделили особое внимание переносу имеющихся it-продуктов на другой язык программирования, выявлять совпадения и сходства между различными наборами кода и настраивать ограничения на основе конкретных потребностей и параметров разработчика.

Почему это круто: чтобы перевести код с одного языка программирования на другой - нужно знать владеть ими обоими. Ну, или иметь сразу нескольких специалистов или даже команд, что опять же встает в копеечку. Например, Банк Содружества Австралии потратил около 750 миллионов долларов в течение пяти лет на перевод своей платформы с COBOL на Java.

-2

Транскомпиляторы могут помочь в теории - они устраняют необходимость переписывать код с нуля, - но их сложно построить на практике, потому что разные языки могут иметь разный синтаксис и полагаться на различные API-интерфейсы платформы, функции стандартной библиотеки и типы переменных.

«Учитывая изобилие программ, написанных на множестве языков, мы считаем, что Project CodeNet может служить эталонным набором данных для перевода из источника в источник и делать для ИИ и кода то, что набор данных ImageNet много лет назад сделал для компьютерного зрения», - говорит Ручир Пури, главный научный сотрудник IBM Research.

Альтернативные решения

-3

IBM - не единственная компания, которая занимается автоматизацией написание и исправления кода на основе ИИ. 

Codota разрабатывает платформу, которая предлагает и автозаполняет скрипты на Python, C, HTML, Java, Scala, Kotlin и JavaScript. Ponicode  использует искусственный интеллект для проверки точности кода, а DeepCode разрабатывает систему на базе искусственного интеллекта для проверки кода  всего приложения.

Возможно, одним из самых впечатляющих проектов на сегодняшний день является TransCoder - транскомпилятор ИИ, который исследователи Facebook разработали для преобразования кода из одного языка программирования в другой.

Еще один претендент - модель из OpenAI, который был обучен на репозиториях GitHub для генерации целых функций на основе англоязычных комментариев.

Заключение

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

К слову, ниже ссылочка на Github. Там есть подробное описание, и код, и все необходимые файлы.

CodeNet на Github

Другие наши статьи:

Наши соцсети: