Использование qLoRA для тонкой настройки моделей с повторной настройкой задач без катастрофического забывания кейс-стади с LLaMA2(-chat)

Использование qLoRA для настройки моделей без катастрофического забывания кейс-стади с LLaMA2(-chat)

Узнайте, как внедрить знания в модели, оптимизированные для конкретных целей, сохраняя их специфичность для задачи

Фото от StableDiffusionXL на Amazon Web Services

О чем это и почему это важно?

Большие языковые модели (LLM), такие как Claude от Anthropic или LLaMA2 от Meta, продемонстрировали впечатляющие возможности в различных задачах обработки естественного языка. Однако их знания и навыки, специфичные для задачи, остаются относительно общими — если вы хотите выполнять более специализированные, связанные с определенной областью задачи, требующие явных знаний, вам нужно найти способы внедрения знаний в модели и обучения их задачно-специфичному поведению. Приложения, работающие на основе LLM, должны правильно функционировать в целевой области, предоставлять точные ответы вместо галлюцинаций и обеспечивать безопасность, конфиденциальность и соответствие контента.

Эти сложности обычно обозначаются как “три H” — помощь, честность и безопасность. Преодоление этих сложностей оказалось особенно важным при разработке приложений на основе FM высокого качества. Существует несколько вариантов внедрения областных знаний в основные модели:

Иллюстрация от автора
  • Исходные знания: Вы можете динамически предоставлять знания с помощью инженерии подсказок и генерации на основе примеров или контекста. Этот вариант представлен относительно простыми способами, такими как нулевая или небольшая подсказка. Однако существуют и более сложные подходы к интеграции внешних источников знаний. Внедрение знаний через динамическое компонирование подсказок и, следовательно, первоисточников, путем получения информации из различных внешних “инструментов” (генерация с учетом поиска, поисковые системы баз данных, поисковые системы хранилищ данных, системы реального времени через REST-интерфейсы и другие) становится все более популярным.
  • Параметрические знания: Вы можете обновлять параметры модели непосредственно путем тонкой настройки. Таким образом, предобученные веса модели настраиваются на более маленький (по сравнению с предобучением) набор данных, специфичный для области, и соответственно к базе знаний или задаче, связанной с этой областью.

Как объясняет Хайко Хотц в своем блоге, выбор правильного подхода (или их комбинации) имеет свои преимущества и недостатки. В этом блоге мы сосредоточимся на параметрическом подходе и продемонстрируем, как настроить модель LLaMA2 с использованием параметрически эффективной тонкой настройки (PEFT) на Amazon SageMaker.

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

Поскольку для многих актуальных случаев использования LLM задачно-специфичные модели являются полезными, мы также покажем, что предложенную настройку можно применять также к моделям, таким как LLaMA2-chat, которые уже прошли задачно-специфичную тонкую настройку, не теряя своей специфичности для задачи (например, следование инструкциям, разговорное поведение и т. д.).

Пройдя через этот рабочий процесс по внедрению знаний, мы предоставляем практическое руководство по настройке основных моделей под ваши конкретные потребности.

Модель

Модели LLaMA2 были выпущены в июле 2023 года вместе с исследовательской публикацией. В статье Туврон и др. указывают, что LLaMA2 представляет собой “совокупность предварительно обученных и тонко настроенных больших языковых моделей (LLM) с числом параметров от 7 миллиардов до 70 миллиардов. Наши тонко настроенные LLM, называемые Llama 2-Chat, оптимизированы для диалоговых случаев использования. Наши модели превосходят модели чатов с открытым исходным кодом на большинстве тестовых подходов, и на основе наших оценок по помощи и безопасности со стороны людей могут быть подходящей альтернативой закрытым моделям”.

Как указано, модели LLaMA2 поставляются в трех размерах: 7B, 13B и 70B. Они доступны как модели полного завершения, так и оптимизированные для диалоговых случаев использования. Предварительно обученные на примерно 2 триллиона токенов, они поддерживают контекстные длины до 4096 токенов. Тонкая настройка для диалоговых случаев использования была выполнена с использованием более 100 тысяч примеров и дальнейшей оптимизации с использованием более 1 миллиона обучающих образцов, представляющих предпочтения людей.

В рамках AWS модели LLaMA2 могут быть развернуты так же легко, как одним щелчком с помощью SageMaker JumpStart или получены из хаба моделей HuggingFace через AWSxHuggingFace LLM DLC.

Настройка

Настройка использует передачу обучения для эффективного внедрения специализированных знаний в основную модель, такую ​​как LLaMA2. Процесс включает обновление весов модели путем продолжения предварительного обучения на специфических для области данных, сохраняя при этом общую архитектуру сети без изменений. В отличие от полного предварительного обучения, требующего обширных наборов данных и вычислительных ресурсов, настройка является высокоэффективной по объему выборки и вычислениям. Параметрически эффективные методы настройки (PEFT), такие как подход (q)LoRA, позволяют легкое внедрение специализированных знаний в общую языковую модель, такую ​​как LLaMA2, с минимальными накладными расходами.

При речи о настройке существуют два различных подхода:

  1. Путем настройки только декодера архитектуры LLaMA2 на специализированных корпусах с использованием его собственного авторегрессивного моделирования языка (CLM), мы можем внедрить специализированные навыки или конкретный язык или словарь (например, медицинские термины/речь) в LLM, сохраняя его общие лингвистические возможности.
  2. С другой стороны, путем использования задаче-специфических корпусов модель может быть настроена на конкретную задачу, например, следование за инструкциями или разговорное поведение.

Модели используют самообучающийся подход, оптимизируя функцию потерь, специфичную для языковой моделирования (LM). Модели, использующие только декодер, такие как LLaMA2, связаны с подходом к причинно-следственному моделированию языка (CLM) с однонаправленным контекстом. Проще говоря, это означает, что они обучены предсказывать следующий токен в авторегрессивном режиме на основе предыдущих токенов в качестве семантического контекста.

Как уже упоминалось выше, методы PEFT позволяют легкое внедрение специализированных знаний в LLM с минимальными накладными расходами, поскольку обновляется только подмножество параметров модели. Подходы низкоранговой адаптации (LoRA) или квантованной низкоранговой адаптации (QLoRA) замораживают веса предварительно обученной модели и вводят обучаемые матрицы декомпозиции ранга в каждый слой архитектуры Трансформера, что существенно сокращает количество обучаемых параметров для последующих задач. Если вы хотите углубиться в LoRA, рекомендую ознакомиться с блогом Мариано Кампа.

Сценарий

26 июля AWS объявила о различных функциях в области генеративного искусственного интеллекта на конференции AWS Summit NYC. Чтобы поделиться дополнительными деталями, были опубликованы несколько блог-постов:

· Агенты для Amazon Bedrock

· Сопоставление сущностей AWS entity resolution

· Роль векторных хранилищ в приложениях генеративного искусственного интеллекта

· Векторный движок для Amazon OpenSearch Serverless

· Тетрадка AWS Glue Studio, разработанная Amazon CodeWhisperer

· Amazon EC2 P5

Учитывая дату обрезки знаний LLaMA2, к сожалению, эта модель в ее чистом виде не сможет предоставить никакой информации об этих объявлениях. Мы хотим изменить это, используя настройку, чтобы внедрить это знание в основную модель (FM) и повысить ее знания для выполнения этой задачи.

Поскольку нашей целью не является настройка модели на конкретную задачу, а просто внедрение специализированных знаний в определенной области, мы можем использовать классический подход на основе моделирования языка (CLM) (вариант 1 в предыдущем разделе). Филипп Шмид описывает в своем очень подробном блоге, как настраивать модели LLaMA2 с использованием QLoRA, однако он фокусируется на задаче-специфической (инструкционной) настройке. Мы возьмем его образцы кода, опубликованные с блогом, в качестве отправной точки и адаптируем код соответствующим образом.

Чтобы быть ответственными в использовании ресурсов, мы проведем настройку моделей LLaMA2–13b и LLaMA2–13b-chat. Настройка версий 7b и 70b будет работать соответственно с настроенной конфигурацией кластера обучения (см. в блоге Филиппа). После самой настройки мы развернем базовые модели вместе с настроенными моделями и проведем сравнение их производительности на высоком уровне.

Затем мы проделаем пошаговую инструкцию по настройке моделей. Если вы хотите получить доступ к полному кодовому репозиторию, вы можете найти его здесь.

Загрузка данных

Для загрузки данных мы используем инструмент WebBaseLoader от LangChain для загрузки массива веб-сайтов, идентифицируемых по их URL.

Лицензионное соглашение и вход HuggingFace

Accepting licensing agreement for LLaMA2 models

Перед тем, как мы сможем приступить к подготовке данных и обучению, нам необходимо принять лицензионное соглашение моделей LLaMA2. Это включает регистрацию на веб-сайте Meta с адресом электронной почты, соответствующим вашей учетной записи HuggingFace.

Затем мы аутентифицируемся в хабе HuggingFace из нашего среды выполнения.

Подготовка данных

Сначала мы выполняем некоторую предобработку на исходных веб-сайтах. В реальном сценарии больше внимания можно уделить этому этапу. В демонстрационных целях мы ограничиваемся простым удалением всех более крупных объединений пробелов, чтобы получить связный и плавный корпус текста. Затем мы загружаем список документов в набор данных HuggingFace.

На следующем шаге мы токенизируем наш корпус текста, чтобы он мог быть обработан моделью LLM. Для этого мы используем загруженный из хаба HuggingFace токенизатор LLaMA2. После объединения в пакеты в соответствии с контекстным окном модели (2048 токенов) загруженный токенизатор может быть использован для токенизации созданных пакетов.

Затем мы сохраняем набор данных на S3 для использования в рамках задания обучения.

Обучение

Теперь мы можем запустить задание обучения Amazon SageMaker для выполнения скрипта донастройки QLoRA CLM на основе предобработанных данных.

Гиперпараметры и скрипт обучения адаптированы из блог-поста Philipp. Единственное исключение – количество выполняемых эпох обучения, где с 20 мы выбираем относительно большое количество эпох. Это объясняется тем, что наш набор данных для обучения довольно маленький (~32 тыс. токенов). В реальных сценариях использования рекомендуется донастройка с использованием больших наборов данных. Сам скрипт обучения можно найти здесь.

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

Конфигурация задания обучения, например, конфигурация кластера обучения, также адаптированы из блог-поста Philipp.

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

Развертывание

Два базовых моделя LLaMA2–13b и LLaMA2–13b-chat могут быть удобно развернуты с помощью SageMaker JumpStart. В этом блог-посте приведены подробные инструкции по этому поводу.

Два донастроенных модели можно развернуть, используя AWSxHuggingFace LLM DLC. Для этого мы указываем параметр model_data класса HuggingFaceModel путь s3 к артефактам модели. Затем мы можем указать переменную окружения HF_MODEL_ID, установленную в контейнере хостинга, на путь к модели по умолчанию в DLC (“/opt/ml/model”).

Тестирование

После развертывания всех четырех моделей мы хотим проверить их производительность на примере вопроса. В блог-посте об объявлении инстансов Amazon EC2 P5 указано: “Инстансы P5 предоставляют 8 x NVIDIA H100 Tensor Core GPU с 640 ГБ памяти GPU высокой пропускной способности, процессоры AMD EPYC 3-го поколения, 2 ТБ оперативной памяти и 30 ТБ локального хранилища NVMe. Инстансы P5 также предоставляют 3200 Гбит/с агрегированной пропускной способности сети с поддержкой GPUDirect RDMA, что позволяет снизить задержку и обеспечивает эффективную производительность масштабирования путем обхода ЦП при межузловом взаимодействии”.

Мы формулируем следующий вопрос: “Что такое инстансы Amazon EC2 P5? Какие виды GPU они оснащены?” Ответы моделей чата таковы при конфигурации вывода max_new_tokens = 200, top_p = 0.9, temperature = 0.01:

  • LLaMA2–13b-chat: “Amazon Elastic Compute Cloud (EC2) P5 – это тип инстанса, который предоставляет высокопроизводительные вычислительные ресурсы для приложений, требующих интенсивной вычислительной мощности. Эти инстансы оснащены графическими процессорами NVIDIA Tesla V100, которые предназначены для машинного обучения, научных моделирований и других высокопроизводительных вычислительных задач.\n\nГрафические процессоры NVIDIA Tesla V100 в инстансах P5 основаны на архитектуре Volta и предлагают ряд функций, которые делают их идеально подходящими для требовательных задач, включая:\n\n* 5120 ядер CUDA для высокопроизводительных вычислений\n* 640 тензорных ядер для ускорения глубокого обучения и других матричных вычислений\n* 16 ГБ памяти GDDR6 для быстрой передачи данных и обработки\n* Поддержка графических библиотек и фреймворков NVIDIA, таких как CU…”
  • LLaMA2–13b-chat-nyc-finetuned: “Инстансы Amazon EC2 P5 – это инстансы общего назначения, которые обеспечивают экстремальную производительность для приложений, требующих сложной графической обработки и сложных моделей машинного обучения. Они работают на графических процессорах NVIDIA H100 Tensor Core и процессорах AMD EPYC третьего поколения. Графические процессоры H100 обеспечивают 640 ГБ памяти GPU высокой пропускной способности, позволяя выполнять самые требовательные приложения с огромными наборами данных в режиме реального времени. Инстансы P5 также предоставляют 2000 ГБ оперативной памяти высокой скорости, которая позволяет обрабатывать огромные объемы данных в памяти без доступа к диску. Это уменьшает время обработки и улучшает время отклика. Вы можете использовать эти инстансы для таких приложений, как компьютерное зрение, видеокодирование, анализ генома и обучение языковой модели.”

Мы четко видим, что в то время как базовая модель фантазирует о типе GPU (V100), донастроенная модель дает нам правильный ответ (H100). Мы также видим, что с помощью qLoRA мы можем сохранить задачно-дообученную природу базовой модели и тем самым смягчить катастрофическое забывание. Это означает, что мы можем внедрять знания в LLM, не выполняя полноценного инструкционного/чат-дообучения после этого, просто используя соответствующую модель, дообученную для задачи, как базовую модель. Причина, по которой это работает, заключается в природе LoRA, где большая часть каждого слоя нейронной сети остается нетронутой, в то время как слои расширяются.

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

Мы формулируем следующий вопрос: «Экземпляры Amazon EC2 P5 оснащены графическими процессорами типа» Модели завершения отвечают следующим образом с конфигурацией вывода max_new_tokens = 200, top_p = 0.9, temperature = 0.01:

  • LLaMA2–13b: «NVIDIA Tesla V100.\nNVIDIA Tesla V100 – это графический процессор, разработанный для высокопроизводительных вычислений. Он основан на архитектуре NVIDIA Volta и оснащен 32 ГБ памяти HBM2. V100 способен обеспечивать производительность до 100 терафлопсов и предназначен для использования в центрах обработки данных и суперкомпьютерах.\nNVIDIA Tesla V100 – мощный графический процессор, разработанный для высокопроизводительных вычислений. Он основан на архитектуре NVIDIA Volta и оснащен 32 ГБ памяти HBM2. V100 способен обеспечивать производительность до 100 терафлопсов и предназначен для использования в центрах обработки данных и суперкомпьютерах.\nNVIDIA Tesla V1…»
  • LLaMA2–13b-nyc-finetuned: «NVIDIA A100 – для вычислительно интенсивных нагрузок, таких как генеративное искусственное интеллект, высокопроизводительные вычисления (HPC) и анализ данных. Экземпляры P5 идеально подходят для обучения и выполнения вывода в моделях с триллионами параметров и для выполнения анализа данных на обширных наборах данных. Они обеспечивают 8 раз больше памяти GPU и 64 раза больше производительности в операциях с плавающей запятой (FLOPs) по сравнению с экземплярами P4.\nВы можете использовать экземпляры P5 в Amazon Elastic Container Service (ECS) с наиболее распространенными инструментами и фреймворками для контейнеров, такими как Docker, PyTorch, TensorFlow, Jupyter Notebook, R Studio и Venv, или вы можете использовать экземпляры P5 через Amazon Elastic MapReduce (EMR) или Amazon DeepSense с фреймворками и инструментами ML и AI, предоставленными Amazon, или другими компаниями. Чтобы упростить создание приложений генеративного искусственного интеллекта на экземплярах P5, …»

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

Заключение

В заключение, в этом блоге рассматривается важный процесс внедрения специализированных знаний в большие языковые модели (LLM), такие как LLaMA2, с акцентом на необходимости решения проблем, связанных с полезностью, честностью и безопасностью при разработке приложений, использующих LLM, соответствующего качества для предприятий. Основное внимание уделяется параметрическому подходу к дообучению, который эффективно внедряет узкую экспертизу в базовые модели, не нарушая их общие языковые возможности.

В статье подчеркивается процесс дообучения LLaMA2 с использованием техник дообучения с эффективными параметрами, таких как подход qLoRA, и показывается, как этот процесс может быть проведен на платформе Amazon SageMaker. Применяя этот подход, практики могут адаптировать LLaMA2 к конкретным областям, обеспечивая актуальность моделей даже за пределами их исходных тренировочных данных.

Статья также подчеркивает универсальность этого подхода, показывая, что его можно применять к моделям, таким как LLaMA2-chat, которые уже прошли дообучение для конкретных задач. Это открывает возможности внедрения знаний в LLM без необходимости проведения обширного инструкционного или чат-дообучения, сохраняя их специфичность для задачи.