Представляем Code Llama: современная большая языковая модель для генерации кода

Представляем Code Llama: современная большая языковая модель для генерации кода

Введение

Генеративный ИИ находится на пороге полной автоматизации генерации кода, хотя ещё не достиг этой вехи. Однако лучший инструмент на сегодня — это Code Llama! Выпущенный в 2023 году, новейший генератор кода от Meta, Code Llama, предназначен для помощи программистам в различных задачах. Code Llama сосредоточен на улучшении рабочих процессов разработчиков, генерации и завершении кода, а также помощи в тестировании. Давайте рассмотрим Code Llama как самостоятельный инструмент, а затем сравним его с другими генеративными ИИ-решениями, специализированными на программировании.

Как работает Code Llama

Code Llama — это вариант Llama 2, специализированный для кода, разработанный путём дальнейшего обучения Llama 2 на наборах данных, специфичных для кода, и сбора дополнительных данных из этих наборов в течение длительного времени. Этот процесс наделил Code Llama расширенными возможностями кодирования, основанными на фундаменте Llama 2. Модель может генерировать код и описания кода на естественном языке как из кода, так и из запросов на естественном языке (например: «Напиши функцию, которая выводит последовательность Фибоначчи»). Кроме того, её можно использовать для автодополнения кода и отладки. Code Llama поддерживает множество популярных языков программирования, включая Python, C++, Java, PHP, TypeScript (JavaScript), C# и Bash.

Источник: Meta AI

Meta выпускает четыре размера Code Llama: модели с 7B, 13B, 34B и 70B параметрами соответственно. Каждая из этих моделей, кроме версии на 70B, обучается на 500B токенах кода и связанных с кодом данных, в то время как модель на 70B обучается на 1T токенов. Базовая модель и модель instruct с 7B и 13B также поддерживают возможность заполнения середины (FIM), что позволяет вставлять код в существующий код и поддерживать такие задачи, как автодополнение кода, прямо «из коробки».

Эти модели подходят для разных требований к обслуживанию и задержкам. Например, модель на 7B может работать на одном GPU. Хотя модели на 34B и 70B дают наилучшие результаты и обеспечивают превосходную помощь в написании кода, меньшие модели на 7B и 13B быстрее и лучше подходят для задач, требующих низкой задержки, таких как автодополнение кода в реальном времени.

Возможности Code Llama

Модели Code Llama обеспечивают стабильную генерацию с контекстом до 100 000 токенов. Все модели обучаются на последовательностях из 16 000 токенов и демонстрируют улучшение при входах до 100 000 токенов.

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

Кроме того, Meta дополнительно дообучила две вариации Code Llama: Code Llama — Python и Code Llama — Instruct.

Code Llama — Python — это версия, специализированная на языке, дополнительно дообученная на 100B токенах кода Python. Учитывая, что Python является наиболее часто используемым языком для бенчмаркинга генерации кода и играет важную роль в сообществе ИИ вместе с PyTorch, эта специализированная модель предоставляет дополнительную ценность.

Code Llama — Instruct — это вариант, дообученный инструкциям и выровненный. Обучение на основе инструкций продолжает процесс обучения с другой целью: модель получает на вход «инструкцию на естественном языке» и ожидаемый выход. Это улучшает её способность понимать человеческие ожидания от запросов. Рекомендуется использовать варианты Code Llama — Instruct для генерации кода, так как они дообучены давать полезные и безопасные ответы на естественном языке.

Не рекомендуется использовать Code Llama или Code Llama — Python для общих задач на естественном языке, так как эти модели не предназначены для выполнения инструкций на естественном языке. Если вы хотите выполнять задачи NLP, вы можете выбрать модели Llama2 или Llama3, доступ к которым можно получить, интегрировавшись с LLM API от novita.ai:

Благодаря самым низким ценам и масштабируемым моделям, Novita AI LLM Inference API обеспечивает вашей LLM невероятную стабильность и довольно низкую задержку менее 2 секунд. Производительность LLM может быть значительно повышена с помощью Novita AI LLM Inference API.

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

Пользователи моделей Code Llama должны соблюдать лицензию Meta и политику допустимого использования.

Оценка производительности Code Llama

Чтобы оценить производительность Code Llama по сравнению с существующими решениями, Meta использовала два популярных бенчмарка для кода: HumanEval и Mostly Basic Python Programming (MBPP). HumanEval оценивает способность модели завершать код на основе docstring, а MBPP проверяет способность модели писать код на основе описания.

Тестирование показало, что Code Llama превзошёл другие открытые языковые модели, специализированные для кода, и превысил производительность Llama 2. Например, Code Llama 34B достиг 53,7% на HumanEval и 56,2% на MBPP, что является наивысшим показателем среди современных открытых решений и сопоставимо с ChatGPT.

Как и любая передовая технология, Code Llama сопряжена с определёнными рисками. Ответственное создание ИИ-моделей крайне важно, поэтому до выпуска Code Llama были реализованы многочисленные меры безопасности. В рамках red teaming была проведена количественная оценка риска генерации вредоносного кода с помощью Code Llama. Использовались запросы, предназначенные для получения вредоносного кода с явным намерением, и ответы Code Llama сравнивались с ответами ChatGPT (GPT-3.5 Turbo). Результаты показали, что Code Llama даёт более безопасные ответы.

Как использовать Code Llama

Code Llama не доступен напрямую через веб-сайт или платформу. Вместо этого он доступен на GitHub и может быть загружен для локального использования. Вот несколько способов доступа к Code Llama:

  1. Интеграция с чат-ботом: Perplexity-AI, текстовый ИИ, аналогичный ChatGPT, интегрировал версию Code Llama с 34B параметрами. Это позволяет пользователям генерировать код с помощью текстовых запросов. Perplexity-AI предлагает несколько вариантов, ориентированных на конкретные языки программирования, такие как Python, Java, C++ и JavaScript.

  2. Интеграция с моделью: Hugging Face, открытая платформа, предоставляет стандартные модели, которые можно использовать для лёгкой генерации кода.

  3. Интегрированная среда разработки (IDE): Ollama — это библиотека Code Llama, которую можно загрузить и интегрировать непосредственно в IDE. Это позволяет пользователям использовать большие языковые модели локально.

В этом руководстве мы продемонстрируем возможности Code Llama с помощью Perplexity AI. Начнём с определения и создания функций сортировки. Сначала создадим функцию бинарной сортировки, которая похожа на сортировку вставками, но использует бинарный поиск для определения позиции элемента. Затем спросим у Perplexity, существуют ли другие алгоритмы, сравнимые с бинарной сортировкой. Наконец, попросим Perplexity сгенерировать класс Sorting, содержащий некоторые из этих функций.

Запрос:

У меня есть класс Python, которому не помешал бы алгоритм бинарной сортировки. Не могли бы вы создать класс Python, который принимает список значений, сортирует их с помощью бинарной сортировки и возвращает отсортированный список.

Ответ:

Запрос:

Существует ли другой алгоритм, сравнимый с бинарной сортировкой или лучше?

Ответ:

Запрос:

На самом деле я бы хотел иметь варианты сортировки для своих нужд. Можете ли вы создать класс Sorting с функциональностью бинарной сортировки, быстрой сортировки и сортировки слиянием?

Ответ:

Кому подходит Code Llama

Программисты уже используют большие языковые модели (LLM) для помощи в различных задачах — от написания нового программного обеспечения до отладки существующего кода. Цель — улучшить рабочие процессы разработчиков, позволяя им сосредоточиться на более человеко-ориентированных аспектах своей работы, а не на повторяющихся задачах.

В Meta считают, что модели ИИ, особенно LLM для кодирования, значительно выигрывают от открытого подхода, способствуя как инновациям, так и безопасности. Публично доступные модели, специализированные для кода, могут стимулировать разработку новых технологий, улучшающих жизнь людей. Выпуская такие модели, как Code Llama, всё сообщество может оценить их возможности, выявить проблемы и устранить уязвимости.

Ответственное использование Code Llama

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

Кроме того, было обновлено Руководство по ответственному использованию, включив рекомендации по ответственному созданию производных моделей, охватывающие такие аспекты, как:

  • Определение политик контента и мер по смягчению последствий
  • Подготовка данных
  • Дообучение модели
  • Оценка и улучшение производительности
  • Обработка рисков на уровне ввода и вывода
  • Обеспечение прозрачности и механизмов отчётности во взаимодействии с пользователями

Разработчикам рекомендуется оценивать свои модели с помощью оценочных бенчмарков, специфичных для кода, и проводить исследования безопасности в сценариях использования, связанных с кодом, таких как генерация вредоносного ПО, компьютерных вирусов или злонамеренного кода. Также рекомендуется использовать наборы данных безопасности для автоматической и человеческой оценки и проводить red teaming с состязательными запросами.

Будущее генеративного ИИ для программирования

Code Llama предназначен для поддержки инженеров-программистов во всех секторах, включая исследования, промышленность, проекты с открытым исходным кодом, НКО и бизнес. Однако существует ещё много вариантов использования, выходящих за рамки того, что могут поддерживать наши базовые и instruct-модели на данный момент.

Мы надеемся, что Code Llama вдохновит других использовать Llama 2 для создания новых инновационных инструментов для исследований и коммерческих продуктов.

Заключение

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

Как инструмент ИИ для программирования, Code Llama выделяется своей автономностью. Его можно импортировать в IDE, устраняя необходимость в подключении к интернету. Обученный на 100 ГБ данных, он отлично справляется с автодополнением и генерацией кода. Существует несколько версий Code Llama, включая версии с 7B, 13B и 34B параметрами, а также специализированные версии -Python и -Instruct. Выберите ту, которая лучше всего подходит вашим задачам, и удачи в программировании!

novita.ai — универсальная платформа для безграничного творчества, предоставляющая доступ к более чем 100 API. От генерации изображений и обработки языка до улучшения аудио и манипуляции видео, недорогая оплата по факту использования — она избавляет вас от хлопот по обслуживанию GPU, пока вы создаёте свои продукты. Попробуйте бесплатно.

Рекомендуемое чтение

В чём разница между LLM и GPT

Прогнозы рейтинга LLM на 2024 год

Novita AI LLM Inference Engine: самая высокая пропускная способность и самый дешёвый инференс