Модели фундамента Mistral 7B от Mistral AI теперь доступны в Amazon SageMaker JumpStart

Новые модели фундамента Mistral 7B от Mistral AI теперь представлены в Amazon SageMaker JumpStart

Сегодня мы с радостью объявляем, что модели фонда Mistral 7B, разработанные Mistral AI, теперь доступны для клиентов через Amazon SageMaker JumpStart для развертывания с одним щелчком мыши для выполнения вывода. С 7 миллиардами параметров, Mistral 7B может быть легко настроен и быстро развернут. Вы можете попробовать эту модель с помощью SageMaker JumpStart, центра машинного обучения (ML), который обеспечивает доступ к алгоритмам и моделям, чтобы вы могли быстро начать работу с ML. В этом посте мы рассмотрим, как найти и развернуть модель Mistral 7B.

Что такое Mistral 7B

Mistral 7B – это модель фонда, разработанная Mistral AI, поддерживающая английский текст и возможности генерации кода. Она поддерживает различные случаи использования, такие как суммирование текста, классификация, завершение текста и заполнение кода. Для демонстрации простоты настройки модели, Mistral AI также выпустила модель Mistral 7B Instruct для использования в чате, которая получает доработку с использованием различных общедоступных наборов данных о разговорах.

Mistral 7B — это модель-трансформер, которая использует группированный запрос внимания и скользящее окно внимания для достижения более быстрого вывода (низкая задержка) и обработки более длинных последовательностей. Группированный запрос внимания — это архитектура, объединяющая множественные запросы и многоголовое внимание для достижения выходного качества, близкого к многоголовому вниманию, и сравнимой скорости с множественным запросом внимания. Скользящее окно внимания использует слои модели-трансформера, чтобы они выходили за пределы размера окна и увеличивали контекстную длину. Mistral 7B имеет контекстную длину в 8000 токенов, демонстрирует низкую задержку и высокую пропускную способность, а также обладает отличной производительностью по сравнению с более крупными моделями, требуя при этом небольшого объема памяти для модели 7B. Модель предоставляется на условиях лицензии Apache 2.0 для использования без ограничений.

Что такое SageMaker JumpStart

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

Теперь вы можете найти и развернуть Mistral 7B всего в несколько кликов в Amazon SageMaker Studio или программно через SageMaker Python SDK, чтобы получить производительность модели и управление MLOps с помощью функций SageMaker, таких как Amazon SageMaker Pipelines, Amazon SageMaker Debugger или журналы контейнеров. Модель развертывается в защищенной среде AWS и управляется вашими VPC, что помогает обеспечить безопасность данных.

Открытие моделей

Вы можете получить доступ к моделям фонда Mistral 7B через 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 вы можете просматривать решения, модели, блокноты и другие ресурсы. Вы можете найти Mistral 7B в карусели Foundation Models: Text Generation.

Вы также можете найти другие варианты моделей, выбрав Explore all Text Models или выполнить поиск по запросу “Mistral”.

Вы можете выбрать карточку модели, чтобы просмотреть подробную информацию о модели, такую ​​как лицензия, данные, использованные для обучения, и инструкции по использованию. Вы также найдете две кнопки: Deploy и Open notebook, которые помогут вам использовать модель (на следующем снимке экрана показано, как выбрать опцию Deploy).

Развертывание моделей

Развертывание начинается, когда вы выбираете опцию Deploy. Кроме того, вы можете развернуть модель с помощью примерного блокнота, который открывается, когда вы выбираете Open notebook. Примерный блокнот предоставляет полное руководство по развертыванию модели для вывода результатов и очистке ресурсов.

Чтобы развернуть модель с помощью блокнота, мы начинаем с выбора модели Mistral 7B, указанной в model_id. Вы можете развернуть любую выбранную модель на SageMaker с помощью следующего кода:

from sagemaker.jumpstart.model import JumpStartModelmodel = JumpStartModel(model_id="huggingface-llm-mistral-7b-instruct")predictor = model.deploy()

Это развертывает модель на SageMaker с настройками по умолчанию, включая тип экземпляра по умолчанию (ml.g5.2xlarge) и конфигурации VPC по умолчанию. Вы можете изменить эти настройки, указав нестандартные значения в JumpStartModel. После развертывания вы можете выполнять вывод через развернутый эндпоинт SageMaker с помощью предсказателя SageMaker:

payload = {"inputs": "<s>[INST] Hello! [/INST]"}predictor.predict(payload)

Настройка конфигурации развертывания

Модели Mistral используют модель обслуживания Text Generation Inference (TGI версии 1.1). При развертывании моделей с использованием контейнера TGI для глубокого обучения (DLC) можно настроить различные аргументы запуска через переменные среды при развертывании эндпоинта. Для поддержки контекстной длины Mistral 7B моделей в 8 000 токенов, SageMaker JumpStart настроил по умолчанию некоторые из этих параметров: мы установили MAX_INPUT_LENGTH и MAX_TOTAL_TOKENS соответственно в 8191 и 8192. Вы можете просмотреть полный список, проверив свой объект модели:

print(model.env)

По умолчанию SageMaker JumpStart не ограничивает количество одновременных пользователей с помощью переменной среды MAX_CONCURRENT_REQUESTS, которая меньше значения по умолчанию TGI (128). Причина в том, что у некоторых пользователей могут быть типичные рабочие нагрузки с небольшой длиной контекста и высокой конкурентоспособностью. Обратите внимание, что DLC SageMaker TGI поддерживает нескольких одновременных пользователей с помощью скользящей пакетной обработки. При развертывании эндпоинта для вашего приложения вы должны рассмотреть, следует ли ограничивать MAX_TOTAL_TOKENS или MAX_CONCURRENT_REQUESTS до развертывания, чтобы обеспечить наилучшую производительность для вашей нагрузки:

model.env["MAX_CONCURRENT_REQUESTS"] = "4"

Здесь мы показываем, как может отличаться производительность модели для типичной нагрузки на эндпоинт. В следующих таблицах вы можете наблюдать, что запросы малого размера (128 входных слов и 128 выходных токенов) демонстрируют высокую производительность при большом количестве одновременных пользователей, достигая пропускной способности на уровне 1 000 токенов в секунду. Однако, при увеличении количества входных слов до 512, эндпоинт насыщает свою емкость пакетирования – количество одновременных запросов, разрешенных для обработки одновременно, что приводит к плато пропускной способности и значительному ухудшению времени отклика, начиная примерно с 16 одновременных пользователей. Наконец, при запросе эндпоинта с большими входными контекстами (например, 6 400 слов) одновременно несколькими одновременными пользователями, такая платформа пропуска достигается относительно быстро, до того момента, когда вашу учетную запись SageMaker будут ограничивать лимиты времени отклика в 60 секунд для перегруженных запросов.

. пропускная способность (токены/с)
подключенные пользователи 1 2 4 8 16 32 64 128
модель тип экземпляра входные слова выходные токены .
mistral-7b-instruct ml.g5.2xlarge 128 128 30 54 89 166 287 499 793 1030
512 128 29 50 80 140 210 315 383 458
6400 128 17 25 30 35
. p50 задержка (мс/токен)
подключенные пользователи 1 2 4 8 16 32 64 128
модель тип экземпляра входные слова выходные токены .
mistral-7b-instruct ml.g5.2xlarge 128 128 32 33 34 36 41 46 59 88
512 128 34 36 39 43 54 71 112 213
6400 128 57 71 98 154

Задания по выводу и примерам

Mistral 7B

С базовой моделью Mistral 7B можно взаимодействовать, как с любой стандартной моделью генерации текста, где модель обрабатывает входную последовательность и выводит предсказанные следующие слова в последовательности. Вот простой пример с многократным обучением, где модель получает несколько примеров, и конечный ответ генерируется с контекстуальным знанием этих предыдущих примеров:

> InputTweet: "Мне грустно, когда разряжается мой телефон."Настроение: Негативное###Tweet: "У меня был хороший день."Настроение: Положительное###Tweet: "Это ссылка на статью."Настроение: Нейтральное###Tweet: "Это новое музыкальное видео было невероятным."Настроение:> Output - Положительное

Mistral 7B инструкция

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

<s>[INST] {user_prompt} [/INST]

Многотактовое приглашение будет выглядеть следующим образом:

<s>[INST] {user_prompt_1} [/INST] {assistant_response_1} </s><s>[INST] {user_prompt_1} [/INST]

Этот шаблон повторяется для количества ходов в разговоре.

В следующих разделах мы рассмотрим несколько примеров использования модели Mistral 7B Instruct.

Получение знаний

Вот пример получения знаний:

> Input<s>[INST] Какая страна имеет наибольшее количество естественных озер? Ответьте только названием страны. [/INST] > Output1. Канада

Ответы на вопросы с большим контекстом

Чтобы продемонстрировать, как использовать эту модель для поддержки больших длин контекста, следующий пример вставляет текст “Крысы” Роберта Салливана (ссылка) из теста MCAS по чтению и пониманию текста на английском языке 10-го класса в приглашение ввода и задает модели направленный вопрос о тексте:

> Input<s>[INST] Крыса – это грызун, самый распространенный млекопитающее в мире. Rattus norvegicus - один из приблизительно четырехсот различных видов грызунов, и он известен по многим именам, каждое из которых описывает признак или предполагаемый признак или иногда место обитания: земляная крыса, странствующая крыса, сеновалынис, полевая крыса, мигрирующая крыса, домовая крыса, крыса канализации, водяная крыса, портовая крыса, аллейная крыса, серая крыса, коричневая крыса и обычная крыса. Обычная коричневая крыса крупная и крепкая, ее размер от носа до хвоста составляет около шестнадцати дюймов - размер большой взрослой мужской ноги - и весит около фунта, хотя коричневые крысы измерялись учеными и экстриминаторами в двадцать дюймов и до двух фунтов. Коричневую крысу иногда путают с черной крысой, или Rattus rattus, которая меньше и ранее обитала в Нью-Йорке и всех городах Америки, но, с тех пор как Rattus norvegicus вытеснил ее, она сейчас играет второстепенную роль. (Обе породы по-прежнему сосуществуют вместе в некоторых южных прибрежных городах и на Западном побережье, в таких местах, как, например, Лос-Анджелес, где черная крыса обитает на чердаках и в пальмах.) Черная крыса всегда очень темно-серая, почти черная, а коричневая крыса серая или коричневая, с брюшком, которое может быть светло-серым, желтым или даже казалось бы чисто-белым. Одной весной я увидел под Бруклинским мостом рыжеволосую коричневую крысу, которую задавила машина. Как домашние, так и лабораторные крысы - это Rattus norvegicus, но они не являются дикими и, следовательно,

Математика и логика

Модели Mistral также отличаются точностью в математике. Mistral может обрабатывать логику, подобную следующей:

> Ввод<s>[INST] Я купил мороженое для 6 детей. Каждый стакан стоил 1,25 доллара, а я заплатил 10-долларовым купюрой. Сколько долларов я получил сдачи? Сначала объясните, прежде чем ответить. [/INST]> Вывод1. Сначала давайте выясним, сколько стоило мороженое в общей сложности. Поскольку каждый стакан стоил 1,25 доллара, а детей было 6, общая стоимость будет:Общая стоимость = Количество стаканов * Стоимость стаканаОбщая стоимость = 6 * 1,25 доллараОбщая стоимость = 7,50 долларов2. Затем мы вычтем общую стоимость из суммы, заплаченной ($10), чтобы узнать, сколько денег вернули:Возвращенные деньги = Сумма, заплаченная - Общая стоимостьВозвращенные деньги = 10 долларов - 7,50 долларовВозвращенные деньги = 2,50 доллараТаким образом, вы получили 2,50 доллара после покупки мороженого для 6 детей.

Кодирование

Ниже приведен пример задания по кодированию:

> Ввод<s>[INST] В Bash, как вывести список всех текстовых файлов в текущем каталоге (исключая подкаталоги), измененных в последний месяц? [/INST] > Вывод1. Используйте команду `find`, чтобы найти текстовые файлы в текущем каталоге (исключая подкаталоги), измененные в последний месяц. Опция `-type f` указывает, что мы хотим искать только файлы, а не каталоги. Опция `-name "*.txt"` указывает, что мы хотим искать только файлы с расширением `.txt`. Опция `-mtime -30` указывает, что мы хотим искать только файлы, измененные в последние 30 дней (1 месяц).```bashfind . -type f -name "*.txt" -mtime -30```Эта команда выведет список всех текстовых файлов в текущем каталоге (исключая подкаталоги), измененных за последний месяц.

Очистка

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

predictor.delete_model()predictor.delete_endpoint()

Заключение

В этой статье мы показали вам, как начать работу с Mistral 7B в SageMaker Studio и развернуть модель для вывода. Поскольку базовые модели предварительно обучены, они могут помочь снизить затраты на обучение и инфраструктуру и обеспечить настройку для вашего случая использования. Посетите Amazon SageMaker JumpStart прямо сейчас, чтобы начать работу.

Ресурсы