Модель способна превзойти конкурентов, несмотря на то, что она значительно меньше.

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



Кодирование было одной из самых активных областей разработки в пространстве базовой модели. OpenAI открыл шлюзы в это пространство с такими моделями, как Codex, который в конечном итоге превратился в GPT-4. Однако такие компании, как Amazon и Salesforce, также выпустили невероятно качественные работы в этой области. Предпосылкой моделей основы кодирования была возможность предварительно обучить модель на большом количестве наборов данных кода и ожидать, что возможности появятся на разных языках программирования. Количество и размер превыше качества были мантрой первого поколения моделей языка кодирования. Недавно Microsoft Research опубликовала статью с броским заголовком: «Учебники — это все, что вам нужно», которая поставила под сомнение это предположение, создав небольшую модель языка кодирования, обученную исключительно на наборах данных качества учебников. Документ сразу же стал очень популярным в сообществе LLM, учитывая его уникальный подход к обучению LLM, создающий модель, которая была значительно меньше, но не менее эффективна, чем альтернативы.

Демонстрируя важность высококачественных данных, Microsoft Researched приступила к обучению модели с параметрами 1,3 млрд, называемой phi-1, примерно за восемь проходов по маркерам 7 млрд (эквивалентно общему количеству наблюдаемых токенов чуть более 50 млрд). Впоследствии модель подверглась тонкой настройке с использованием менее 200 миллионов токенов. Их процесс предварительной подготовки включал использование данных «учебного качества», включающих как синтетические данные, сгенерированные с использованием GPT-3.5, так и отфильтрованный контент, полученный из Интернета. Однако этап тонкой настройки полагался на данные, «подобные упражнениям из учебника». Несмотря на значительную разницу в размере набора данных и величине модели по сравнению с конкурирующими моделями (как показано в таблице 1), phi-1 Microsoft Research добился впечатляющих результатов. Он достиг точности pass@1 50,6% в тесте HumanEval и 55,5% в тесте Mostly Basic Python Programs (MBPP), что является одним из самых высоких показателей, достигнутых одним LLM.

Наборы данных высокого качества

Центральная предпосылка исследовательской работы отражена в ее названии, подчеркивающем ключевую роль данных обучения качества учебника в их модели. В отличие от предыдущих методологий, которые использовали обычные текстовые источники данных для генерации кода, такие как The Stack (содержащий исходный код из репозиториев с разрешительными лицензиями) и другие веб-наборы данных (включая StackOverflow и CodeContest), Microsoft Research утверждает, что эти источники неадекватно способствовать развитию алгоритмического мышления и навыков планирования. Напротив, их модельная архитектура и методы обучения соответствуют общепринятым практикам.

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

Представляя разочарование и неэффективность, с которыми сталкиваются учащиеся-люди, пытающиеся приобрести навыки кодирования с помощью этих наборов данных, Microsoft Research утверждает, что языковые модели также подвержены влиянию шума, неоднозначности и неполноты данных, что снижает качество и количество связи сигналов. естественный язык и код. Они предполагают, что языковые модели выиграют от обучающего набора, подобного хорошо структурированному «учебнику», характеризующемуся ясностью, автономными примерами, поучительным содержанием и сбалансированным охватом концепций и навыков кодирования.

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

1) отфильтрованный набор данных кодового языка, являющийся подмножеством The Stack и StackOverflow, полученный с помощью классификатора на основе языковой модели, состоящего примерно из 6 миллиардов токенов.

2) синтетический набор данных учебников, содержащий менее 1 миллиарда токенов учебников Python, сгенерированных с помощью GPT 3.5.

3) меньшее синтетическое решение, состоящее примерно из 180 млн токенов упражнений и решений Python.

Отфильтрованный набор данных языка кода

Стремясь разработать эффективную и мощную модель генерации кода, Microsoft Research использовала различные наборы данных и методы. Чтобы создать надежный отфильтрованный набор данных, они начали с использования общедоступных наборов данных кода Python, в частности подмножества Python дедуплицированной версии The Stack и StackOverflow. Эти наборы данных включали в себя ошеломляющее количество из более чем 35 миллионов файлов или образцов, в общей сложности более 35 миллиардов токенов. Чтобы определить образовательную ценность подмножества примерно из 100 000 образцов, Microsoft Research использовала GPT-4. Предложив модели оценить фрагменты кода на предмет их соответствия основным концепциям кодирования, они соответствующим образом аннотировали набор данных. Аннотации служили обучающими данными для классификатора случайного леса, который предсказывал качество файла или образца на основе встраивания выходных данных из предварительно обученной модели codegen.

Синтетический набор данных учебника

В отличие от их широкого использования GPT-3.5 для создания синтетического контента, Microsoft Research экономно использовала GPT-4 для качественных аннотаций в небольшой части образцов The Stack и StackOverflow. Этот подход позволил им использовать GPT-4 как средство облегчения трудоемкой задачи человеческого аннотирования.

Чтобы предоставить синтетический набор данных учебников, Microsoft Research создала учебники Python с использованием GPT-3.5, в результате чего набор данных содержал менее 1 миллиарда токенов. Эти учебники были тщательно разработаны, чтобы предложить высококачественное сочетание текста, насыщенного естественным языком, с вкраплениями соответствующих фрагментов кода. Содержание этих учебников нацелено на темы, которые способствуют развитию навыков рассуждения и базового понимания алгоритмов. Налагая ограничения на темы и целевые аудитории в процессе генерации, они добились разнообразия в наборе данных. Пример синтетически сгенерированного текста учебника иллюстрирует эффективность этого подхода.

Меньший набор данных учебника

Microsoft Research также курировала меньший синтетический набор данных, известный как набор данных CodeExercises, включающий менее 180 миллионов токенов упражнений Python и соответствующих им решений. Каждое упражнение представляло собой функцию, которую требовалось выполнить с помощью строки документации. Целью этого набора данных было обучение модели выполнению задач завершения функций на основе инструкций на естественном языке. Подобно синтетическому набору данных учебника, GPT-3.5 сыграл важную роль в создании этого набора данных. Они обеспечили разнообразие в упражнениях, ограничив имена функций. Для этого набора данных были проведены специальная дезактивация и альтернативные оценки, чтобы он не повторял проблемы, возникшие в тесте HumanEval на этапе тонкой настройки.

Архитектура

Архитектура модели и подход к обучению, используемые Microsoft Research, включали модель преобразователя только для декодера, основанную на реализации FlashAttention многоголового внимания (MHA). Этот дизайн был вдохновлен недавними моделями, такими как CodeGen, PaLM и GPT-NeoX, включающими уровни MHA и MLP в параллельной конфигурации. Модель phi-1 с 1,3 миллиардами параметров состояла из 24 слоев, скрытого измерения 2048, внутреннего измерения MLP 8192 и 32 головок внимания, каждая с размером 64. Напротив, меньшая phi-1 -маленькая модель с 350 миллионами параметров, состоящая из 20 слоев, скрытого размера 1024, внутреннего размера MLP 4096 и 16 головок внимания, каждая размером 64. 32 был реализован, приняв эти архитектурные решения из предыдущей работы, указанной как [NPH+22]. Был использован тот же токенизатор, что и codegen-350M-mono [NPH+22]. В то время как FlashAttention играл ключевую роль, модели не включали другие новые методы, такие как Fill-In-the-Middle (FIM) или Multi-Query-Attention, которые могли бы еще больше повысить производительность и эффективность.

Во время предварительной подготовки и тонкой настройки Microsoft Research объединила соответствующие наборы данных в одномерный массив, используя токен «⟨∣endoftext∣⟩» для разделения файлов. Модели были обучены на последовательности длиной 2048, вырезанной из массива набора данных, с потерей предсказания следующего токена. Они использовали обучение fp16, оптимизатор AdamW, график скорости обучения с линейным разогревом и линейным затуханием, а также внимание и остаточное отсев 0,1. Обучение проводилось на 8 графических процессорах Nvidia-A100 с использованием DeepSpeed. Предварительно обученная базовая модель phi-1-base была получена менее чем за 4 дня обучения. Впоследствии дополнительные 7 часов тонкой настройки на том же оборудовании привели к разработке фи-1.

Во время предварительной подготовки база phi-1 обучалась на наборе данных CodeTextbook, который включал отфильтрованный корпус языков кода и синтетические учебники. Был использован эффективный размер пакета 1024, включая параллелизм данных и накопление градиента. Максимальная скорость обучения была установлена ​​на 1e-3, с разминкой более 750 шагов и уменьшением веса 0,1. Процесс обучения включал в себя в общей сложности 36 000 шагов, при этом контрольная точка на 24 000 шагов служила базовой моделью фи-1. Это соответствует примерно 8 эпохам в наборе данных CodeTextbook, охватывающем чуть более 50 миллиардов обучающих токенов. Примечательно, что, несмотря на относительно небольшой размер и вычислительные требования, эта модель уже достигла точности 29% в тесте HumanEval.

Для тонкой настройки phi-1 был получен путем тонкой настройки базы phi-1 с использованием набора данных CodeExercises. Настройка для тонкой настройки повторяла настройку предварительной подготовки, но имела другие гиперпараметры. Использовался эффективный размер пакета 256, максимальная скорость обучения 1e-4 с 50 шагами прогрева и снижение веса 0,01. Процесс тонкой настройки включал в себя в общей сложности 6000 шагов, при этом наилучшая контрольная точка сохранялась каждые 1000 шагов для оценки и выбора.

Результаты

Исследовательский центр Microsoft оценивал значение phi-1 по различным эталонным показателям. Модель превзошла значительно более крупные модели, такие как StarCoder или Replit.

Очень важным аспектом, на который следует обратить внимание, является влияние тонкой настройки на производительность фи-1.

Работа Microsoft Research над phi-1 подчеркивает глубокое влияние высококачественных данных на улучшение владения языковыми моделями в задачах генерации кода, проводя аналогию с влиянием всеобъемлющего и хорошо составленного учебника на овладение учащимся новым языком. предмет. Благодаря созданию тщательно отобранных данных «качества учебника» они завершили обучение модели, которая превосходит большинство моделей с открытым исходным кодом в известных тестах кодирования, таких как HumanEval и MBPP. Примечательно, что, несмотря на то, что их модель была в десять раз меньше по размеру модели и в 100 раз меньше по размеру набора данных, их модель продемонстрировала исключительную производительность.

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