Meta* выпустила Code Llama, модель искусственного интеллекта, генерирующую код

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 Lama, размером от 7 до 34 миллиардов параметров, была обучена с помощью 500 миллиардов токенов кода вместе с данными, связанными с кодом. Специально для Python Code Llama был дополнительно настроен на 100 миллиардах токенов кода Python, и, аналогичным образом, Code Llama для понимания инструкций был доработан с использованием обратной связи от людей-аннотаторов для генерации «полезных» и «безопасных» ответов на вопросы.

В контексте, параметры являются частями модели, полученными из исторических обучающих данных, и, по сути, определяют навыки модели решать проблему, такую как генерация текста (или кода, в данном случае), в то время как токены представляют собой необработанный текст (например, «fan», «tas» и «tic» для слова «fantastic»).

Некоторые из моделей Code Llama могут вставлять код в существующий код, и все они могут принимать около 100 000 токенов кода в качестве входных данных, в то время как по крайней мере одна из них — модель с 7 миллиардами параметров — может работать на одном графическом процессоре (для других требуется более мощное оборудование). Meta* утверждает, что модель с 34 миллиардами параметров является самой эффективной из всех генераторов кода с открытым исходным кодом на сегодняшний день и самой большой по количеству параметров.

Вы могли бы подумать, что инструмент генерации кода будет чрезвычайно привлекателен для программистов и даже непрограммистов — и вы не ошибетесь.

GitHub утверждает, что сегодня более 400 организаций используют Copilot, и что разработчики в этих организациях кодируют на 55% быстрее, чем раньше. В другом месте Stack Overflow, сайт вопросов и ответов по программированию, обнаружил в недавнем опросе, что 70% уже используют или планируют использовать инструменты кодирования ИИ в этом году, ссылаясь на такие преимущества, как повышение производительности и более быстрое обучение.

Но, как и все формы генеративного ИИ, инструменты кодирования могут сойти с рельсов или создать новые риски.

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

Некоторые модели, генерирующие код — не обязательно Code Llama, хотя Meta* не будет категорически отрицать это —  обучены на коде, защищенном авторским правом или под ограничительной лицензией, и эти модели могут извергать этот код при определенном запросе. Эксперты по правовым вопросам утверждают, что эти инструменты могут подвергнуть компании риску, если они невольно включат защищенные авторским правом предложения из инструментов в свое производственное программное обеспечение.

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

Что ж, 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 для создания новых инновационных инструментов для исследований и коммерческих продуктов».

*Meta признана экстремистcкой организацией в России.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *