Тонкая настройка больших языковых моделей (LLM) позволяет вам настроить базовые модели с открытым исходным кодом для повышения производительности при выполнении задач, специфичных для предметной области. В этом посте мы обсудим преимущества использования блокнотов Amazon SageMaker для точной настройки современных моделей с открытым исходным кодом. Мы используем Тонкая настройка Hugging Face с эффективными параметрами (PEFT) и методы квантования с помощью биты и байты для поддержки интерактивной тонкой настройки очень больших моделей с использованием одного экземпляра ноутбука. В частности, мы покажем, как настроить Сокол-40Б с использованием одного экземпляра ml.g5.12xlarge (4 графических процессора A10G), но та же стратегия работает для настройки еще более крупных моделей на экземплярах ноутбуков p4d/p4de.
Как правило, полноточные представления этих очень больших моделей не помещаются в память одного или даже нескольких графических процессоров. Чтобы поддерживать интерактивную среду ноутбука для точной настройки и выполнения логических выводов на моделях такого размера, мы используем новую технику, известную как Квантованные LLM с адаптерами низкого ранга (QLoRA). QLoRA — это эффективный подход к тонкой настройке, который снижает использование памяти LLM при сохранении стабильной производительности. Hugging Face и авторы упомянутой статьи опубликовали подробный пост в блоге который охватывает основы и интеграцию с библиотеками Transformers и PEFT.
Использование ноутбуков для точной настройки LLM
SageMaker поставляется с двумя вариантами развертывания полностью управляемых ноутбуков для изучения данных и построения моделей машинного обучения (ML). Первый вариант — это быстрый запуск блокнотов для совместной работы, доступных в Amazon SageMaker Studio, полностью интегрированной среде разработки (IDE) для машинного обучения. Вы можете быстро запускать записные книжки в SageMaker Studio, подключать или отключать базовые вычислительные ресурсы, не прерывая свою работу, и даже совместно редактировать и совместно работать над своими записными книжками в режиме реального времени. Помимо создания блокнотов, вы можете выполнять все этапы разработки машинного обучения для создания, обучения, отладки, отслеживания, развертывания и мониторинга ваших моделей в единой панели SageMaker Studio. Второй вариант — это экземпляр блокнота SageMaker, один полностью управляемый вычислительный экземпляр машинного обучения, на котором записные книжки выполняются в облаке, что дает вам больший контроль над конфигурациями записных книжек.
В оставшейся части этого поста мы используем блокноты SageMaker Studio, потому что мы хотим использовать управляемое отслеживание экспериментов TensorBoard SageMaker Studio с поддержкой Hugging Face Transformer для TensorBoard. Однако те же концепции, показанные в примере кода, будут работать на экземплярах записных книжек с использованием conda_pytorch_p310 ядро. Стоит отметить, что том Amazon Elastic File System (Amazon EFS) в SageMaker Studio означает, что вам не нужно выделять предварительно заданный размер тома Amazon Elastic Block Store (Amazon EBS), что полезно, учитывая большой размер весов моделей в LLM.
Использование ноутбуков, поддерживаемых большими экземплярами графического процессора, позволяет быстро создавать прототипы и отлаживать их без запуска контейнеров холодного запуска. Однако это также означает, что вам нужно закрыть экземпляры ноутбуков, когда вы закончите их использовать, чтобы избежать дополнительных затрат. Другие варианты, такие как контейнеры Amazon SageMaker JumpStart и SageMaker Hugging Face, можно использовать для тонкой настройки, и мы рекомендуем вам обратиться к следующим сообщениям о вышеупомянутых методах, чтобы выбрать лучший вариант для вас и вашей команды:
Предпосылки
Если вы впервые работаете с SageMaker Studio, вам сначала необходимо создать домен SageMaker. Мы также используем управляемый экземпляр TensorBoard для отслеживания экспериментов, хотя это необязательно для этого руководства.
Кроме того, может потребоваться запросить увеличение квоты службы для соответствующих приложений SageMaker Studio KernelGateway. Для тонкой настройки Falcon-40B мы используем экземпляр ml.g5.12xlarge.
Чтобы запросить увеличение квоты сервиса, в консоли AWS Service Quotas перейдите к сервисы AWS, Amazon SageMakerи выберите Приложения Studio KernelGateway, работающие на экземплярах ml.g5.12xlarge.
Начать
Пример кода для этого сообщения можно найти в следующем Репозиторий GitHub. Для начала мы выбираем образ Data Science 3.0 и ядро Python 3 из SageMaker Studio, чтобы у нас была последняя среда Python 3.10 для установки наших пакетов.
Устанавливаем PyTorch и необходимые библиотеки Hugging Face и bitsandbytes:
Затем мы устанавливаем путь к среде CUDA, используя установленную CUDA, которая была зависимостью от установки PyTorch. Это необходимый шаг, чтобы библиотека bitsandbytes правильно нашла и загрузила правильный двоичный файл общего объекта CUDA.
Загрузите предварительно обученную базовую модель
Мы используем биты и байты для квантования модели Falcon-40B с 4-битной точностью, чтобы мы могли загрузить модель в память на 4 графических процессорах A10G, используя наивный конвейерный параллелизм Hugging Face Accelerate. Как описано в ранее упомянутом Пост обнимающего лицапоказано, что настройка QLoRA соответствует 16-битным методам точной настройки в широком диапазоне экспериментов, поскольку веса модели хранятся в виде 4-битного NormalFloat, но при необходимости деквантуются до вычисления bfloat16 при прямом и обратном проходах.
При загрузке предварительно обученных весов мы указываем device_map=”auto"
так что Hugging Face Accelerate будет автоматически определять, на какой графический процессор помещать каждый слой модели. Этот процесс известен как модельный параллелизм.
С библиотекой PEFT Hugging Face вы можете заморозить большую часть исходных весов модели и заменить или расширить слои модели, обучив дополнительный, гораздо меньший набор параметров. Это делает обучение намного менее затратным с точки зрения требуемых вычислений. Мы устанавливаем модули Falcon, которые мы хотим настроить, как target_modules
в конфигурации LoRA:
Обратите внимание, что мы корректируем только 0,26% параметров модели, что делает это возможным в разумные сроки.
Загрузите набор данных
Мы используем самсум набор данных для нашей тонкой настройки. Samsum — это коллекция из 16 000 сообщений в стиле мессенджеров с помеченными сводками. Ниже приведен пример набора данных:
На практике вы захотите использовать набор данных, обладающий специфическими знаниями для задачи, для которой вы надеетесь настроить свою модель. Процесс создания такого набора данных можно ускорить с помощью Amazon SageMaker Ground Truth Plus, как описано в разделе Высококачественная человеческая обратная связь для ваших приложений генеративного ИИ от Amazon SageMaker Ground Truth Plus.
Точная настройка модели
Перед тонкой настройкой мы определяем гиперпараметры, которые хотим использовать, и обучаем модель. Мы также можем регистрировать наши показатели в TensorBoard, определив параметр logging_dir
и запрос преобразователя Hugging Face на report_to="tensorboard"
:
Следите за тонкой настройкой
С предыдущей настройкой мы можем отслеживать наши точные настройки в режиме реального времени. Чтобы отслеживать использование графического процессора в режиме реального времени, мы можем запустить nvidia-smi непосредственно из контейнера ядра. Чтобы запустить терминал, работающий в контейнере образа, просто выберите значок терминала в верхней части записной книжки.
Отсюда мы можем использовать Linux watch
команда для многократного запуска nvidia-smi
каждые полсекунды:
На предыдущей анимации мы видим, что веса модели распределяются между 4 графическими процессорами, а вычисления распределяются между ними по мере последовательной обработки слоев.
Для отслеживания показателей обучения мы используем журналы TensorBoard, которые мы записываем в указанную корзину Amazon Simple Storage Service (Amazon S3). Мы можем запустить TensorBoard пользователя домена SageMaker Studio из консоли AWS SageMaker:
После загрузки вы можете указать корзину S3, которую вы указали преобразователю Hugging Face для входа в систему, чтобы просмотреть показатели обучения и оценки.
Оценить модель
После того, как наша модель завершит обучение, мы можем запускать систематические оценки или просто генерировать ответы:
После того, как вы будете удовлетворены производительностью модели, вы можете сохранить модель:
Вы также можете разместить его в выделенной конечной точке SageMaker.
Очистить
Выполните следующие шаги, чтобы очистить ресурсы:
- Выключите экземпляры SageMaker Studio, чтобы избежать дополнительных затрат.
- Закройте приложение TensorBoard.
- Очистите каталог EFS, очистив каталог кеша Hugging Face:
Заключение
Блокноты SageMaker позволяют быстро и эффективно настраивать LLM в интерактивной среде. В этом посте мы показали, как вы можете использовать Hugging Face PEFT с bitsandbtyes для точной настройки моделей Falcon-40B с использованием QLoRA на ноутбуках SageMaker Studio. Попробуйте и дайте нам знать ваши мысли в разделе комментариев!
Мы также рекомендуем вам узнать больше о возможностях генеративного искусственного интеллекта Amazon, изучив SageMaker JumpStart, модели Amazon Titan и Amazon Bedrock.
Об авторах
Шон Морган является старшим архитектором решений машинного обучения в AWS. У него есть опыт работы в области полупроводников и академических исследований, и он использует свой опыт, чтобы помочь клиентам достичь своих целей в AWS. В свободное время Шон является активным участником и сопровождающим с открытым исходным кодом, а также руководителем специальной группы по интересам для надстроек TensorFlow.
Лорен Малленекс — старший архитектор решений AI/ML в AWS. У нее десятилетний опыт работы в сфере DevOps, инфраструктуры и машинного обучения. Она также является автором книги о компьютерном зрении. Другие области ее деятельности включают MLOps и генеративный ИИ.
Филипп Шмид является техническим руководителем в Hugging Face с миссией демократизировать хорошее машинное обучение с помощью открытого исходного кода и открытой науки. Филипп увлечен производством передовых и генеративных моделей машинного обучения ИИ. Он любит делиться своими знаниями об искусственном интеллекте и НЛП на различных встречах, таких как Data Science на AWS, и на своих технических блог.