Внутри Code Llama Вход Meta AI в область Code LLM

Внутри Code Llama - Вход Meta AI в Code LLM.

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

Создано с использованием Midjourney

Недавно я начал образовательную рассылку, посвященную искусственному интеллекту, которая уже имеет более 160 000 подписчиков. TheSequence – это рассылка, ориентированная на машинное обучение, которую можно прочитать за 5 минут и не содержит хайпа или новостей. Цель состоит в том, чтобы держать вас в курсе проектов по машинному обучению, научных статей и концепций. Пожалуйста, попробуйте подписаться ниже:

TheSequence | Хесус Родригес | Substack

Лучший источник информации о новейших разработках в области машинного обучения, искусственного интеллекта и данных…

thesequence.substack.com

Программирование стало одним из самых активных полей деятельности для больших моделей языка (LLM). С момента представления OpenAI Codex (теперь входит в состав GPT-4) в прошлом году, уровень инноваций в моделях языка для программирования был захватывающим. В последние несколько месяцев мы видели выход кодовых LLM от компаний, таких как Salesforce, Hugging Face, DeepMind, Amazon и многих других. На прошлой неделе Meta AI присоединилась к этому фурору, выпустив Code Llama – открытую модель кодового LLM, основанную на недавно выпущенной Llama 2. Выпуск Code Llama является значительным событием, учитывая влияние, которое оказывает Meta на движение моделей с открытым исходным кодом. Meta AI разработала Code Llama, специализированную версию Llama 2, получившуюся в результате продленного обучения на специфических для программирования наборах данных. Благодаря интенсивному извлечению данных из набора данных, связанных с кодом, Code Llama развился, чтобы усилить свои навыки программирования, эффективно расширив возможности, унаследованные от Llama 2. Эта усовершенствованная версия демонстрирует мастерство в генерации кода и изложении естественного языка о коде. Независимо от того, является ли входным кодом или естественным языком, таким как запросы вроде “Создать функцию, генерирующую последовательность Фибоначчи”, Code Llama ловко создает соответствующий код и текстовые объяснения. Более того, он ловко помогает в завершении кода и отладке, легко адаптируясь к популярным языкам, таким как Python, C++, Java, PHP, TypeScript (JavaScript), C# и Bash.

Изображение: Meta AI

Внутри Code Llama

Выпуск Code Llama включает не одну модель, а три различных варианта, отличающихся размером параметров: 7B, 13B и 34B. Каждая из этих моделей обучается на обширном наборе из 500 миллиардов токенов, охватывающих код и информацию, связанную с кодом. Особенно отличаются базовые модели 7B и 13B, которым присуща компетентность “заполнения в середине” (FIM), что позволяет им без проблем вставлять код в существующие структуры кода. Это свойство позволяет им выполнять задачи, такие как автодополнение кода уже на этапе начала работы. Три модели удовлетворяют различным требованиям, касающимся обслуживания и задержки. Например, модель 7B имеет возможность работать на одном графическом процессоре. В то время как модель 34B выделяется оптимальными результатами и улучшением поддержки программирования, более маленькие версии 7B и 13B отличаются скоростью работы, что делает их подходящими для задач с низкой задержкой, таких как в режиме реального времени автодополнение кода.

Инновации Meta AI также распространяются на две нюансированные модификации Code Llama: Code Llama – Python и Code Llama – Instruct.

  • Code Llama – Python – это специализированное производное, тщательно отточенное на большом объеме кода Python, охватывающем 100 миллиардов токенов. Учитывая центральную роль Python в бенчмарках генерации кода и его значение в сообществе искусственного интеллекта, эта специализированная модель увеличивает ее полезность.
  • Code Llama – Instruct представляет собой выравнивание и усовершенствование Code Llama через инструктивную настройку. Этот новый подход к обучению предполагает предоставление модели “инструкций на естественном языке” в сочетании с ожидаемыми результатами. Этот стратегический метод повышает способность модели понимать ожидания людей в подсказках. При работе с генерацией кода рекомендуется использовать версии Code Llama – Instruct, так как они настроены на получение полезных и безопасных ответов на естественном языке.
Кредит изображения: Meta AI

Погружаясь в обучение и настройку Code Llama, стоит выделить несколько аспектов1) Набор данныхОбучение Llama основывается на тщательно подобранном наборе данных, обогащенном общедоступным кодом, предлагающим почти бездубликатное пространство. Набор данных состоит из 500 млрд. токенов в начальной фазе, начиная с версий 7B, 13B и 34B. Дополнительные 8% выборки данных получены из наборов данных на естественном языке, связанных с областями кода.

2) Заполнение пробеловВ рамках задачи заполнения кода ключевым моментом является предсказание отсутствующих сегментов в программе с учетом контекста. Прагматическими применениями являются автодополнение кода в интегрированных средах разработки (IDE), вывод типов и даже генерация встроенной документации, такой как docstring. Работая в соответствии с концепцией причинной маскировки, описанной Агаджаняном и др. (2022) и Фридом и др. (2023), Meta AI формирует модели заполнения пробелов. Процесс обучения включает перемещение частей обучающих последовательностей к завершению, открывая путь для авторегрессивных предсказаний. В этом усилии как 7B, так и 13B модели проходят обучение, отражая стратегии, рекомендованные Баварианом и др. (2022).

3) Отточка на длинном контексте:Разгадывание тонкостей обработки обширных последовательностей является сложной задачей в области языковых моделей на основе трансформеров. Основные проблемы состоят в экстраполяции – изучении последовательностей, превышающих используемые во время обучения – и квадратичной сложности проходов внимания, что склоняет баланс в пользу коротких и средних входов для эффективного обучения. Meta AI предлагает уникальное решение, вводя специализированную область отточки на длинном контексте (LCFT). Объединяя последовательности, включающие 16,384 токена, что является значительным улучшением по сравнению с 4,096 токенами в начальной стадии обучения Llama 2, LCFT дает моделям расширенные возможности. Этот стратегический переход происходит в рамках фазы отточки, избегая необоснованного увеличения затрат на обучение.

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

5) СамообучениеВ области наборов данных Meta AI отправляется в собственное путешествие, составляя экземпляры, связанные с задачами, связанными с кодом. Учитывая ресурсоемкость получения данных от аннотаторов или через обратную связь от людей, особое внимание уделяется самообучению. Область задач на кодирование, основанная на понимании профессиональных разработчиков, становится полотном, на котором рисуется этот инновационный подход.

Результаты

Для оценки Code Llama Meta AI провела два широко признанных кодовых бенчмарка: HumanEval и Mostly Basic Python Programming (MBPP). Бенчмарк HumanEval систематически оценивает способности модели в автодополнении кода через docstring, в то время как бенчмарк MBPP анализирует способность модели переводить описания в исполняемый код. Тщательное исследование бенчмарков дало просветительские результаты: Code Llama превзошел открытые модели больших языковых моделей (LLM) и даже превзошел своего предшественника, Llama 2. Например, в случае Code Llama 34B, получены впечатляющие результаты – 53,7% в бенчмарке HumanEval и 56,2% в бенчмарке MBPP. Эти результаты являются самыми высокими среди сопоставимых передовых решений, ставя Code Llama 34B на уровень заметных возможностей ChatGPT.

Кредит изображения: Meta AI

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