Сегодня мы рады сообщить, что базовые модели Code Llama, разработанные Meta, доступны клиентам через Amazon SageMaker JumpStart для развертывания одним щелчком мыши и выполнения вывода. Code Llama — это современная модель большого языка (LLM), способная генерировать код и естественный язык кода как из кода, так и из подсказок на естественном языке. Code Llama бесплатен для исследовательского и коммерческого использования. Вы можете опробовать эту модель с помощью SageMaker JumpStart, центра машинного обучения (ML), который предоставляет доступ к алгоритмам, моделям и решениям ML, чтобы вы могли быстро приступить к работе с ML. В этом посте мы расскажем, как обнаружить и развернуть модель Code Llama с помощью SageMaker JumpStart.
Что такое Код Лама
Code Llama — модель, выпущенная компанией Мета Он построен на базе Llama 2 и представляет собой современную модель, предназначенную для повышения производительности разработчиков при выполнении задач по программированию, помогая им создавать высококачественный, хорошо документированный код. Модели демонстрируют современную производительность на Python, C++, Java, PHP, C#, TypeScript и Bash, а также могут сэкономить время разработчиков и повысить эффективность рабочих процессов программного обеспечения. Он поставляется в трех вариантах, разработанных для широкого спектра приложений: базовая модель (Code Llama), специализированная модель Python (Code Llama-Python) и модель следования инструкциям для понимания инструкций на естественном языке (Code Llama-Instruct). ). Все варианты Code Llama выпускаются в трех размерах: параметры 7B, 13B и 34B. Базовые варианты 7B и 13B и инструкции поддерживают заполнение на основе окружающего контента, что делает их идеальными для приложений-помощников по написанию кода.
Модели были разработаны с использованием Llama 2 в качестве основы, а затем обучены на 500 миллиардах токенов кодовых данных, а специализированная версия Python обучена на дополнительных 100 миллиардах токенов. Модели Code Llama обеспечивают стабильные генерации с до 100 000 токенов контекста. Все модели обучаются на последовательностях из 16 000 токенов и демонстрируют улучшения на входных данных при использовании до 100 000 токенов.
Модель доступна под той же общественная лицензия как Llama 2.
Что такое SageMaker JumpStart
С помощью SageMaker JumpStart специалисты по машинному обучению могут выбирать из растущего списка наиболее эффективных базовых моделей. Специалисты по машинному обучению могут развертывать базовые модели на выделенных экземплярах Amazon SageMaker в сетевой изолированной среде и настраивать модели с помощью SageMaker для обучения и развертывания моделей.
Теперь вы можете обнаруживать и развертывать модели Code Llama несколькими щелчками мыши в Amazon SageMaker Studio или программно с помощью SageMaker Python SDK, что позволяет получать производительность модели и элементы управления MLOps с помощью таких функций SageMaker, как Amazon SageMaker Pipelines, Amazon SageMaker Debugger или журналы контейнеров. . Модель развертывается в безопасной среде AWS и под контролем вашего VPC, что помогает обеспечить безопасность данных. Модели Code Llama доступны для обнаружения и могут быть развернуты в регионах Востока США (Северная Вирджиния), Запада США (Орегон) и Европы (Ирландия).
Клиенты должны принять лицензионное соглашение для развертывания SDK SageMaker Model Visa.
Откройте для себя модели
Доступ к базовым моделям Code Llama можно получить через SageMaker JumpStart в пользовательском интерфейсе SageMaker Studio и SageMaker Python SDK. В этом разделе мы рассмотрим, как находить модели в SageMaker Studio.
SageMaker Studio — это интегрированная среда разработки (IDE), которая предоставляет единый визуальный веб-интерфейс, с помощью которого вы можете получить доступ к специально созданным инструментам для выполнения всех этапов разработки ML, от подготовки данных до построения, обучения и развертывания моделей ML. Дополнительные сведения о том, как начать работу и настроить SageMaker Studio, см. на странице Amazon SageMaker Studio.
В SageMaker Studio вы можете получить доступ к SageMaker JumpStart, который содержит предварительно обученные модели, блокноты и готовые решения, в разделе Готовые и автоматизированные решения.
На целевой странице SageMaker JumpStart вы можете искать решения, модели, ноутбуки и другие ресурсы. Модели Code Llama вы можете найти в Базовые модели: генерация текста карусель.
Вы также можете найти другие варианты модели, выбрав Изучите все модели генерации текста или ищите Код Ламы.
Вы можете выбрать карточку модели, чтобы просмотреть сведения о модели, такие как лицензия, данные, используемые для обучения, и способы использования. Вы также найдете две кнопки, Развертывать и Открыть блокноткоторый поможет вам использовать модель.
Развертывать
Когда вы выбираете Развертывать и подтвердите условия, начнется развертывание. Альтернативно вы можете выполнить развертывание с помощью примера записной книжки, выбрав Открыть блокнот. Пример записной книжки, в которой представлены комплексные инструкции по развертыванию модели для вывода и очистки ресурсов.
Чтобы развернуть с помощью блокнота, мы начинаем с выбора соответствующей модели, указанной в model_id
. Вы можете развернуть любую из выбранных моделей в SageMaker с помощью следующего кода:
При этом модель развертывается в SageMaker с конфигурациями по умолчанию, включая тип экземпляра по умолчанию и конфигурации VPC по умолчанию. Вы можете изменить эти конфигурации, указав значения, отличные от значений по умолчанию, в JumpStartМодель. После развертывания вы можете выполнить логический вывод для развернутой конечной точки с помощью предиктора SageMaker:
Обратите внимание, что по умолчанию accept_eula
установлено на false
. Вам нужно установить accept_eula=true
для успешного вызова конечной точки. Поступая так, вы принимаете пользовательское лицензионное соглашение и политику допустимого использования, как упоминалось ранее. Вы также можете скачать лицензионное соглашение.
Custom_attributes
для передачи лицензионного соглашения EULA используются пары ключ/значение. Ключ и значение разделяются знаком =, а пары разделяются знаком ;. Если пользователь передает один и тот же ключ более одного раза, последнее значение сохраняется и передается обработчику сценария (в данном случае используется для условной логики). Например, если accept_eula=false; accept_eula=true
передается на сервер, затем accept_eula=true
сохраняется и передается обработчику сценария.
Параметры вывода управляют процессом генерации текста в конечной точке. Максимальное количество новых токенов относится к размеру выходных данных, генерируемых моделью. Обратите внимание, что это не то же самое, что количество слов, поскольку словарный запас модели не совпадает со словарным запасом английского языка, и каждый токен не может быть словом английского языка. Температура контролирует случайность выходных данных. Более высокая температура приводит к более творческим и галлюцинирующим результатам. Все параметры вывода являются необязательными.
В следующей таблице перечислены все модели Code Llama, доступные в SageMaker JumpStart, а также идентификаторы моделей, типы экземпляров по умолчанию и максимальное поддерживаемое количество токенов (сумма количества входных токенов и количества сгенерированных токенов для всех одновременных запросов), поддерживаемых для каждого из эти модели.
Название модели | Идентификатор модели | Тип экземпляра по умолчанию | Максимальное количество поддерживаемых токенов |
КодLlama-7b | мета-текстгенерация-лама-коделлама-7b | мл.г5.2xбольшой | 10000 |
КодLlama-7b-Instruct | мета-текстгенерация-лама-коделлама-7b-инструкт | мл.г5.2xбольшой | 10000 |
КодLlama-7b-Python | метатекстгенерация-лама-коделлама-7b-python | мл.г5.2xбольшой | 10000 |
КодLlama-13b | мета-текстгенерация-лама-коделлама-13b | мл.г5.12xбольшой | 32000 |
КодLlama-13b-Instruct | метатекстгенерация-лама-коделлама-13b-инструкт | мл.г5.12xбольшой | 32000 |
КодLlama-13b-Python | метатекстгенерация-лама-коделлама-13b-python | мл.г5.12xбольшой | 32000 |
КодLlama-34b | мета-текстгенерация-лама-коделлама-34b | мл.г5.48xбольшой | 48000 |
КодLlama-34b-Инструкция | метатекстгенерация-лама-коделлама-34b-инструкт | мл.г5.48xбольшой | 48000 |
КодLlama-34b-Python | метатекстгенерация-лама-коделлама-34b-python | мл.г5.48xбольшой | 48000 |
Хотя модели Code Llama были обучены на контексте длиной 16 000 токенов, модели показали хорошую производительность даже в больших контекстных окнах. Столбец максимального количества поддерживаемых токенов в предыдущей таблице — это верхний предел поддерживаемого контекстного окна для типа экземпляра по умолчанию. Поскольку модель Code Llama 7B может поддерживать только 10 000 токенов в экземпляре ml.g5.2xlarge, мы рекомендуем развернуть версию модели 13B или 34B, если для вашего приложения требуются более крупные контексты.
По умолчанию все модели работают для задач генерации кода. И базовая модель, и модель инструкций отвечают на задачи заполнения, хотя базовая модель обеспечивает лучшее качество вывода для большинства примеров запросов. Наконец, только инструктирующие модели работают над инструктирующими задачами. В следующей таблице показано, какие модели показали хорошую производительность (хорошая) и среднюю производительность (среднюю) в примерах запросов в демонстрационных блокнотах.
. | Генерация кода | Заполнение кода | Инструкции по коду |
КодLlama-7b | Хороший | Хороший | Н/Д |
КодLlama-7b-Instruct | Хороший | Умеренный | Хороший |
КодLlama-7b-Python | Хороший | Н/Д | Н/Д |
КодLlama-13b | Хороший | Хороший | Н/Д |
КодLlama-13b-Instruct | Хороший | Умеренный | Хороший |
КодLlama-13b-Python | Хороший | Н/Д | Н/Д |
КодLlama-34b | Хороший | Н/Д | Н/Д |
КодLlama-34b-Инструкция | Хороший | Н/Д | Хороший |
КодLlama-34b-Python | Хороший | Н/Д | Н/Д |
Генерация кода
Следующие примеры были запущены на модели CodeLlama-34b-Instruct с параметрами полезной нагрузки. "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9}
:
Наполнение кода
Заполнение кода предполагает возврат сгенерированного кода с учетом окружающего контекста. Это отличается от задачи генерации кода, поскольку в дополнение к префиксному сегменту кода модель также снабжена суффиксом кодового сегмента. При тонкой настройке использовались специальные токены для обозначения начала префикса (<PRE>
), начало суффикса (<SUF>
), и начало середины (<MID>
). Входные последовательности в модель должны быть в одном из следующих форматов:
- префикс-суффикс-средний –
<PRE> {prefix} <SUF>{suffix} <MID>
- суффикс-префикс-средний –
<PRE> <SUF>{suffix} <MID> {prefix}
В следующих примерах используется формат префикс-суффикс-средний в модели CodeLlama-7b с полезной нагрузкой. parameters {"max_new_tokens": 256, "temperature": 0.05, "top_p": 0.9}
:
Инструкции по коду
Meta также предоставила настроенный на инструкции вариант Code Llama. Примеры запросов в этом разделе можно применять только к этим настроенным на инструкции моделям Code Llama, которые представляют собой модели с суффиксом инструкций идентификатора модели. Формат инструкций Code Llama аналогичен формату подсказок чата Llama-2, который мы подробно описали в модели фундамента Llama 2, которая теперь доступна в SageMaker JumpStart.
Простое приглашение пользователя может выглядеть следующим образом:
Вы также можете добавить системное приглашение со следующим синтаксисом:
Наконец, вы можете взаимодействовать с моделью в диалоговом режиме, включив во входные данные все предыдущие запросы пользователя и ответы помощника:
Эти примеры были запущены на модели CodeLlama-13b-Instruct с «параметрами» параметров полезной нагрузки: {"max_new_tokens": 512, "temperature": 0.2, "top_p": 0.9}
:
Очистить
После завершения работы с блокнотом обязательно удалите все ресурсы, созданные в процессе, чтобы прекратить выставление счетов. Используйте следующий код:
Заключение
В этом посте мы показали вам, как начать работу с моделями Code Llama в SageMaker Studio и развернуть модель для генерации кода и естественного языка о коде как из кода, так и из подсказок на естественном языке. Поскольку базовые модели предварительно обучены, они могут помочь снизить затраты на обучение и инфраструктуру, а также обеспечить настройку для вашего варианта использования. Посетите SageMaker JumpStart в SageMaker Studio прямо сейчас, чтобы начать работу.
Ресурсы
Об авторах
Габриэль Синнев является директором по исследованиям в команде Facebook AI Research (FAIR) в компании Meta. До работы в Мете Габриэль работал научным сотрудником в команде Эммануэля Дюпу в Высшей нормальной школе в Париже, занимаясь реверс-инжинирингом процесса овладения речью младенцев. Габриэль получил докторскую степень в области байесовского моделирования применительно к искусственному интеллекту в стратегических играх в реальном времени в Университете Гренобля.
Эйсса Джамиль — партнер-инженер отдела генеративного искусственного интеллекта в Meta.
Доктор Кайл Ульрих — учёный-прикладник в команде Amazon SageMaker JumpStart. Его исследовательские интересы включают масштабируемые алгоритмы машинного обучения, компьютерное зрение, временные ряды, байесовские непараметрические методы и гауссовские процессы. Его докторская степень получена в Университете Дьюка, и он опубликовал статьи в журналах NeurIPS, Cell и Neuron.
Доктор Ашиш Хетан является старшим научным сотрудником Amazon SageMaker JumpStart и помогает разрабатывать алгоритмы машинного обучения. Он получил докторскую степень в Университете Иллинойса Урбана-Шампейн. Он является активным исследователем в области машинного обучения и статистического вывода и опубликовал множество статей на конференциях NeurIPS, ICML, ICLR, JMLR, ACL и EMNLP.
Вивек Сингх — менеджер по продукту в SageMaker JumpStart. Он стремится предоставить клиентам возможность использовать SageMaker JumpStart, чтобы упростить и ускорить процесс машинного обучения для создания приложений генеративного искусственного интеллекта.