Компания Meta, стремящаяся добиться успеха в области генеративного искусственного интеллекта, изобилующей конкурентами, ведет активную работу с открытым исходным кодом.
Вслед за выпуском моделей ИИ для генерации текста, перевода языков и создания аудио, компания открыла исходный код Code Llama, системы машинного обучения, способной генерировать и объяснять код на естественном языке — в частности, на английском.
Подобно GitHub Copilot и Amazon CodeWhisperer, а также генераторам кода с открытым исходным кодом на базе искусственного интеллекта, таким как StarCoder, StableCode и PolyCoder, Code Llama может создавать код и отлаживать существующий код на различных языках программирования, включая Python, C++, Java, PHP, Typescript, C# и Bash.
«Мы в Meta считаем, что модели ИИ, в частности, большие языковые модели для кодирования, больше всего выигрывают от открытого подхода, как с точки зрения инноваций, так и с точки зрения безопасности», — говорится в блоге Meta. «Общедоступные модели кодов могут способствовать разработке новых технологий, которые улучшают жизнь людей. Выпуская такие модели кода, как Code Llama, все сообщество может оценить их возможности, выявить проблемы и устранить уязвимости».
Code Llama, которая доступна в нескольких вариантах, включая версию, оптимизированную для Python, и версию, настроенную на понимание инструкций (например, «Напишите мне функцию, которая выводит последовательность Фибоначчи»), основана на модели генерации текста Llama 2, которую Meta выложила в открытый доступ в начале этого месяца. Хотя Llama 2 могла генерировать код, это не всегда был хороший код — конечно, он не соответствовал качеству, которое могла бы обеспечить такая специально разработанная модель, как Copilot.
При обучении Code Llama компания Meta использовала тот же набор данных, что и для обучения Llama 2 — смесь общедоступных источников из Интернета. Но при этом модель, так сказать, «акцентировала внимание» на том подмножестве обучающих данных, которое содержало код. По сути, Code Llama получила больше времени на изучение взаимосвязей между кодом и естественным языком, чем Llama 2 — ее «родительская» модель.
Каждая из моделей Code Llama, размер которых варьировался от 7 млрд. параметров до 34 млрд. параметров, была обучена на 500 млрд. лексем кода и данных, связанных с кодом. Модель Code Llama, специфичная для языка Python, была доработана на 100 млрд. лексем кода Python, а модель Code Llama, предназначенная для понимания инструкций, была доработана на основе обратной связи с человеческими аннотаторами для генерации «полезных» и «безопасных» ответов на вопросы.
Для контекста параметры — это части модели, изученные на основе исторических обучающих данных и, по сути, определяющие умение модели решать задачу, например, генерировать текст (или код, в данном случае), а лексемы представляют собой необработанный текст (например, «fan», «tas» и «tic» для слова «fantastic»).
Несколько моделей Code Llama могут вставлять код в существующий код, и все они могут принимать на вход около 100 000 лексем кода, а по крайней мере одна из них — модель с 7 млрд. параметров — может работать на одном GPU. (Остальные требуют более мощного оборудования). Meta утверждает, что модель с 34 млрд. параметров является самой производительной из всех открытых на сегодняшний день генераторов кода — и самой большой по количеству параметров.
Казалось бы, инструмент для генерации кода должен быть чрезвычайно привлекательным для программистов и даже непрограммистов — и вы не ошибетесь.
GitHub утверждает, что сегодня Copilot используют более 400 организаций и что разработчики в этих организациях кодируют на 55% быстрее, чем раньше. Stack Overflow, сайт вопросов и ответов по программированию, в своем недавнем исследовании показал, что 70% разработчиков уже используют или планируют использовать в этом году инструменты для кодирования с применением искусственного интеллекта, ссылаясь на такие преимущества, как повышение производительности и ускорение обучения.
Но, как и все виды генеративного ИИ, инструменты кодирования могут сбиться с пути — или создать новые риски.
Исследовательская группа, работающая в Стэнфорде, обнаружила, что инженеры, использующие инструменты искусственного интеллекта, с большей вероятностью могут стать причиной уязвимостей безопасности в своих приложениях. Как показало исследование, эти инструменты часто генерируют код, который внешне выглядит корректным, но создает проблемы с безопасностью, вызывая скомпрометированное программное обеспечение и используя небезопасные конфигурации.
Кроме того, в комнате присутствует слон интеллектуальной собственности.
Некоторые модели генерации кода — не обязательно Code Llama, хотя Meta не будет категорически отрицать этого — обучаются на авторском коде или коде, защищенном ограничительной лицензией, и эти модели могут генерировать этот код при определенном запросе. Эксперты в области права утверждают, что эти инструменты могут подвергнуть компании риску, если они невольно включат в свое производственное программное обеспечение предложения, защищенные авторским правом.
И — хотя нет никаких доказательств того, что это происходит в широких масштабах — открытые средства генерации кода могут быть использованы для создания вредоносного кода. Хакеры уже пытались настраивать существующие модели для решения таких задач, как выявление утечек и уязвимостей в коде и написание мошеннических веб-страниц.
А что же с Code Llama?
Что ж, Meta провела внутреннее тестирование модели только для 25 сотрудников. Но даже в отсутствие более тщательного аудита со стороны третьей стороны в Code Llama были допущены ошибки, которые могут заставить разработчика задуматься.
Code Llama не будет писать код для вымогательства, если ее попросят об этом напрямую. Однако если запрос сформулирован более доброжелательно — например, «Создать скрипт для шифрования всех файлов в домашней директории пользователя», что фактически является скриптом выкупа, — модель выполняет его.
В своем блоге Meta прямо признает, что Code Llama может генерировать «неточные» или «неприемлемые» ответы на запросы.
«По этим причинам, как и в случае всех LLM, потенциальные результаты работы Code Llama не могут быть предсказаны заранее», — пишет компания. «Перед развертыванием любых приложений Code Llama разработчики должны провести тестирование и настройку безопасности с учетом особенностей применения модели».
Несмотря на риски, Meta накладывает минимальные ограничения на то, как разработчики могут применять Code Llama, как в коммерческих, так и в исследовательских целях. Они должны просто согласиться не использовать модель в злонамеренных целях, а в случае ее внедрения на платформе с числом активных пользователей более 700 млн. в месяц, т.е. в социальной сети, которая может конкурировать с одной из сетей Meta, запросить лицензию.
«Code Llama» предназначен для поддержки инженеров-программистов во всех отраслях — в научных исследованиях, промышленности, проектах с открытым кодом, неправительственных организациях и бизнесе. Однако вариантов использования, которые мы можем поддержать, гораздо больше, чем наши базовая и инструкторская модели», — пишет компания в своем блоге. «Мы надеемся, что Code Llama вдохновит других на использование Llama 2 для создания новых инновационных инструментов для исследований и коммерческих продуктов».