February 11

Инференс Mixtral 8x7B для задач NLP на консьюмерских GPU

Большие языковые модели (LLM) состоят из миллиардов параметров, что создает трудности при загрузке их в память GPU для моделирования или тонкой настройки. В этом посте кратко описываются эти проблемы и предлагается решение для загрузки Mixtral 8x7B, одного из лидеров в области автоматизированного обработки естественного языка (NLP) на потребительских GPU, за которым следует использование модели для решения задач НЛП, таких как выделение именованных сущностей (NER), анализ настроений и классификация текста.

https://arxiv.org/abs/2401.04088

https://huggingface.co/mistralai/Mixtral-8x7B-v0.1

Mixtral 8x7B - (high-quality sparse mixture of experts model) открытая по большая языковая модель (LLM) с производительностью, превосходящей GPT-3.5 (которая в настоящее время используется для работы ChatGPT). Mixtral 8x7B - модель смешения экспертов (MoE).

Открытые веса модели и открытый исходный код.

Что такое модели смешения экспертов (MoE)?

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

Mixtral 8x7B использует MoE архитектуру. Вместо плотного слоя она состоит из подслоёв "экспертов" (каждый может быть рассмотрен как специалист). Перед достижением любого специалиста "маршрутизатор" анализирует токены и определяет, какой эксперт лучше подходит для обработки токенов.

Подобно консалтинговой фирме

Mixtral 8x7B похож на команду глубоких специалистов в консалтинговой фирме.

Вместо одного универсального консультанта у него есть 8 специалистов ( "эксперты"), каждый с глубокими знаниями в определенных областях.
Одни могут специализироваться на инженерии данных, в то время как другие могут быть экспертами в области ИИ, MLOps, обработки естественного языка, архитектуры облачных решений, управления данными и т.д.
Токены, получаемые, эквивалентны входящим запросам на консультацию.
После анализа каждого запроса менеджер ( "маршрутизатор") направляет его к лучшему специалисту, способному его обработать.
Таким образом, только соответствующие эксперты работают над каждым запросом. Например, если запрос касается развертывания сложных моделей ИИ, он будет направлен к эксперту по ИИ. Аналогично, запросы об оптимизации сложной цепочки обработки данных будут направлены к эксперту по инженерии данных и т.д.

Веса модели

Большинство LLM состоит из нескольких миллиардов параметров. Весы модели относятся к этим параметрам. Каждый из этих параметров - это десятичное число, например 1,2345. Они хранятся в качестве 16- или 32-разрядных чисел с плавающей запятой, называемых float16 (FP16) или float32 (FP32).
56B или 47B?

"8x7B" в названии модели Mixtral 8x7B может создать впечатление, что это 56-миллиардная модель параметров. Однако это 46,7-миллиардная модель параметров.

Хотя это 46,7-миллиардная модель параметров, он использует только 12,9 миллиарда параметров на токен. По этой причине он обрабатывает входные данные и генерирует выходные данные с той же скоростью и затратами, что и 12,9-миллиардная модель параметров.
VRAM GPU

VRAM, или ВидеоRandom Access Memory, критичен для загрузки весов LLM в GPU для моделирования или тонкой настройки. В качестве высокоскоростного буфера он хранит данные для быстрого доступа во время вычислений, обеспечивая эффективную загрузку и предотвращая проблемы производительности.


Потребительские GPU

В качестве справки приведены некоторые "потребительские" GPU, доступные на момент написания.

Nvidia RTX 4090, 24 GB VRAM
Nvidia RTX 4080, 16 GB VRAM
Nvidia RTX 4070, 12 GB VRAM
Nvidia RTX 3090, 24 GB VRAM
Nvidia RTX 3070, 8 GB VRAM

В сравнении с GPU, доступными через Google Colab (бесплатный тариф) T4, которое имеет 16 GB VRAM.


Промышленные GPU

В качестве справки приведены некоторые данные центров (т.е. "промышленные") GPU.

NVIDIA A100, 80 GB VRAM
NVIDIA H100, 80 - 188 GB VRAM
NVIDIA V100, 32 GB VRAM

Весы модели и VRAM GPU

Несколько практических рекомендаций по объему VRAM GPU, необходимому для загрузки LLM с X миллиардами параметров

4 \* X GB VRAM (если float32)
2 \* X GB VRAM (если float16)

👉 Следующие минимальные требования к памяти GPU для некоторых открытых весовых моделей:

Llama 2 7B модель, 28 GB (30 GB согласно документации NVIDIA).
Llama 2 13B модель, 52 GB
Модель Сокол 40 Б, 80 ГБ
Модель Mixtral 8x7B, 94 ГБ

❌ Ни одна из перечисленных выше моделей не может быть загружена в Google Colab "как есть".

Решение

В этом разделе описывается, как использовать высокопроизводительную Mixtral 8x7B LLM в Google Colab ноутбуке.
Преимущество

Работа была выполнена Денисом Мазуром и Артёмом Елисеевым Московского физико-технического института. Подробнее.
Что было сделано?

Следующее основано на моем чтении их отчета. Любое неверное толкование не является умышленным.

Первоначальная модель была квантована в смешанном режиме точности.
    Была выбрана Half Quadratic Quantization (HQQ). Выбор квантования важен, так как неверный выбор может привести к потере сложности. Поско 

к тому, HQQ уже использовался для Mixtral, он был выбран вместо GPTQ или AWQ.

Квантование 4-битного HQQ для общих слоев внимания и 2- или 3-битного квантования для экспертов.
Была реализована стратегия MoE-специфичного откладывания.
    Исследователи заметы, как языковая модель MoE использует своих экспертов между токенами и определили некоторые паттерны: (i) она повторно использует определенных экспертов для последовательных токенов, и (ii) скрытые состояния ранних слоев уже предвидят, какие эксперты будут использованы в более поздних слоях.
    Исследователи разработали MoE-специфичную стратегию откладывания, которая использует эти паттерны: (i) использует кэш LRU для уменьшения общения между GPU и RAM, что приводит к более быстрому созданию, и (ii) предсказывает, какие эксперты понадобятся заранее, чтобы лучше координировать, когда нужно загружать экспертов на основе вычислений, требуемых этими экспертами.

Краткое объяснение

Для читателей, которые незнакомы со некоторыми из используемых терминов.

Что такое Half Quadratic Quantization? Алгоритм квантования без данных, который поддерживает различные битрейты и может уменьшить объем памяти, используемой ЛЛМ, без потери точности или скорости. Несколько ЛЛМ и моделей визуализации могут быть квантованы с помощью HQQ. К ним относятся Llama 2, Mixtral и OpenCLIP модели из семейства моделей Визуальных Трансформаторов (ViT). Полный список готовых к использованию квантованных моделей.
Что такое LRU-кеш? LRU-кеш похож на маленькую игрушечную коробку. Когда он полон и вы получаете новую игрушку, вы удаляете игрушку, с которой вы не играли самое продолжительное время, чтобы освободить место для новой. Это способы, которыми компьютеры управляют ограниченной памятью, храня релевантную информацию и удаляя более старую, менее используемую информацию.

Использование модели Mixtral 8x7B для задач NLP

После того, как модель Mixtral 8x7B была загружена в память GPU, можно использовать ее для решения различных задач НЛП, таких как выделение именованных сущностей (NER), анализ настроений и классификация текста. Вот несколько примеров, как это можно сделать:

  1. Выделение именованных сущностей (NER)

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

Загрузите предварительно обученную модель Mixtral 8x7B в память GPU.
Преобразуйте входной текст в формат, который может быть использован моделью.
Используйте модель для предсказания типов сущностей для каждого токена в тексте.
Последовательно соедините токены, принадлежащие одной сущности, и назначьте им соответствующий тип сущности.

2. Анализ настроений

Анализ настроений - это задача определения эмоциональной оценки текста. Например, он может быть положительным, отрицательным или нейтральным. Для решения этой задачи можно использовать Mixtral 8x7B следующим образом:

Загрузите предварительно обученную модель Mixtral 8x7B в память GPU.
Преобразуйте входной текст в формат, который может быть использован моделью.
Используйте модель для предсказания настроения для всего текста.

3. Классификация текста

Классификация текста - это задача определения категории, к которой относится текст. Например, он может быть новостью, рецептом или отзывом. Для решения этой задачи можно использовать Mixtral 8x7B следующим образом:

Загрузите предварительно обученную модель Mixtral 8x7B в память GPU.
Преобразуйте входной текст в формат, который может быть использован моделью.
Используйте модель для предсказания категории для всего текста.

Заключение

В этом посте мы рассмотрели, как использовать Mixtral 8x7B для решения задач NLP на небольших GPU. Хотя загрузка больших языковых моделей в память GPU может быть сложной задачей, решение, описанное в этом посте, позволяет использовать высокопроизводительную модель Mixtral 8x7B в Google Colab ноутбуке для решения различных задач NLP.