Введение​

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

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

Размер больших моделей НЛП увеличивается | Источник

Таким образом, настройка и вывод LLM стали более дорогостоящими и трудоемкими. И по этой причине их развертывание стало более сложным.

В этом документе мы рассмотрим различные проблемы в упрощенной форме, чтобы дать представление о том, что следует учитывать при запуске LLM в производство.

Сложность LLM при развертывании​

  • Высокие вычислительные ресурсы, такие как графические процессоры. (либо мощный графический процессор, такой как A100 и H100, либо несколько графических процессоров)​
  • Большой объем памяти и емкости для хранения (большой размер модели)​
  • Масштабирование может быть сложным и дорогостоящим в условиях большого трафика.​
  • Возможны задержки: стоимость (вычисления) и точность, точность и задержка, стоимость и пропускная способность.
  • Стратегии развертывания, откаты, AB/Testing при необходимости.​
  • Конфиденциальность и безопасность.​
  • Управление версиями модели (см. статью на neptune.ai)​
  • Потребление энергии приводит к большому углеродному следу (не является экологически безопасным)

Распараллеливание модели

Тензорный параллелизм или параллелизм блочной модели:

Тензоры здесь представляют: параметры модели или промежуточные активации.

  • Модель делится по горизонтали на более мелкие фрагменты/блоки, и каждый блок назначается процессору/графическому процессору.
  • Промежуточные результаты или активации передаются между сегментами.
  • Используется в основном, когда модель слишком велика, чтобы поместиться в одно устройство.
  • Входы проходят через блоки последовательно.

Пример. Рассмотрим LLM со 100 блоками и четырьмя графическими процессорами. В блочном параллелизме модели блоки могут быть распределены между графическими процессорами: блоки обработки GPU 1 с 1 по 25, блоки обработки GPU 2 с 26 по 50, блоки обработки GPU 3 с 51 по 75 и блоки обработки GPU 4 с 76 по 100.

Параллелизм модели с токенами/параллелизм данных:

  • Модель реплицируется на разные устройства/графические процессоры.
  • Это работает в основном для больших пакетов входных данных.
  • Данные разбиваются на более мелкие токены и независимо передаются в модель.
  • Затем каждый вывод будет объединен в один.

Конвейерный параллелизм

  • Разделяет LLM на сегменты или этапы, и каждый сегмент работает независимо в конвейерном режиме.
  • Данные передаются последовательно между различными сегментами.
  • Сокращает время вывода за счет непрерывной и перекрывающейся обработки.

Многоуровневый параллелизм:

  • Разные уровни LLM назначаются разным устройствам или процессорам.
  • Каждый уровень/устройство обрабатывает данные независимо.
  • Таким образом, уменьшается использование памяти для каждого процессора.
  • Обработка выполняется параллельно для разных слоев.

Пример. Рассмотрим LLM с 12 слоями и четырьмя графическими процессорами. Уровни можно разделить таким образом, что GPU 1 обрабатывает слои с 1 по 3, GPU 2 обрабатывает слои с 4 по 6, GPU 3 обрабатывает слои с 7 по 9, а GPU 4 обрабатывает слои с 10 по 12.

Гибридный параллелизм

  • Объединяет несколько стратегий параллелизма, например сочетание параллелизма данных и параллелизма моделей или параллелизма данных и параллелизма конвейера.

Фреймворки, которые поддерживают это сегодня

Тензорфлоу и питорч

Широко используемый фреймворк с открытым исходным кодом, поддерживающий оптимизацию и ускорение моделей. Он поддерживает использование графических процессоров и тензорный параллелизм.

Среда выполнения ONNX

Модели LLM необходимо экспортировать в формате ONNX. Он обеспечивает оптимизацию, ускорение и параллельное выполнение.

Обнимающие лица Трансформеры:

Предоставляет инструменты для тонкой настройки, развертывания и вывода LLM. Он также предоставляет высокоуровневый API для логического вывода LLM и эффективной пакетной обработки.

Сервер логических выводов NVIDIA Triton (с пользовательским бэкэндом fasttransformer)

Поддерживает высокопроизводительное развертывание моделей глубокого обучения и LLM. Он также предлагает масштабируемость, балансировку нагрузки, управление версиями моделей.

FasterTransformer содержит реализацию высокооптимизированной версии блока преобразователя, который содержит части кодировщика и декодера. Используя этот блок, вы можете запустить вывод как полных архитектур кодер-декодер, таких как T5, так и моделей только для кодировщика, таких как BERT, или моделей только для декодера, таких как GPT. Он написан на C++/CUDA и опирается на оптимизированные библиотеки cuBLAS, cuBLASLt и cuSPARSELt. Это позволяет построить самый быстрый конвейер логического вывода преобразователя на графическом процессоре. FasterTransformer состоит из двух частей. Первая — это библиотека, которая используется для преобразования обученной модели Transformer в оптимизированный формат, готовый для распределенного вывода. Вторая часть — это серверная часть, которая используется Triton для выполнения модели на нескольких графических процессорах.

Типы графических процессоров

NVIDIA A100:

  • высокая емкость памяти до 40 ГБ на GPU.
  • 64 ядра FP32 CUDA на SM, 8192 ядра FP32 CUDA на полный GPU

NVIDIA H100:

  • Включает специальный Transformer Engine для решения языковых моделей с триллионом параметров.
  • 128 ядер FP32 CUDA на SM, 18432 ядра FP32 CUDA на полный GPU

NVIDIA T4 (настройка с несколькими GPU):

  • эффективные возможности с более низким энергопотреблением по сравнению с высокопроизводительными графическими процессорами, такими как A100.

GCP ТПУ V3:

  • Большой объем памяти до 256 ГБ.
  • Высокая производительность логических выводов благодаря операциям смешанной точности.

Выводы AWS:

  • Разработан специально созданный чип логического вывода для глубокого обучения, предназначенный для обеспечения высокой производительности с малой задержкой для логического вывода LLM.

Церебра CS2:

  • Включает в себя Cerebras Wafer Scale Engine (WSE), который является одним из самых больших и мощных чипов, когда-либо созданных для глубокого обучения.
  • Предлагает параллелизм, объем памяти.
  • предлагает оптимизации специально для LLM, такие как поддержка большого размера модели, параллельная обработка, высокоскоростной доступ к памяти.

Сложность LLM в производстве​

Высокоемкая архитектура, обработка и эксперименты

Неудивительно, что внедрение моделей такого масштаба требует больших затрат. Вычисление больших языковых моделей требует обширной архитектуры для распределения параметров между несколькими механизмами обработки и блоками памяти. Кроме того, затраты на эксперименты будут увеличиваться до такой степени, что вы исчерпаете все свои ресурсы, прежде чем ваша модель будет запущена в производство. ​

Проблемы, связанные с неправильным использованием языка

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

Точная настройка для последующих задач

Большие языковые модели, как правило, точны и эффективны для крупномасштабных данных. Однако может быть сложно переназначить эти модели для конкретных областей и задач. Это перепрофилирование требует тонкой настройки существующих больших языковых моделей для создания меньших моделей для конкретных последующих задач.​‍​Хотя точно настроенные большие языковые модели предлагают те же преимущества в производительности, что и их родительская модель, может потребоваться время, чтобы сделать их правильными. Такие детали, как знание того, какие данные использовать, выбор гиперпараметров и выбор базовых моделей для настройки, имеют решающее значение для этих моделей и в равной степени трудны для понимания. Вам необходимо точно проработать эти детали, чтобы сохранить объяснимость вашей тонко настроенной модели.

Проблемы с оборудованием

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

Рекомендации