заглушки PowerInfer: быстрая модель большого языка, работающая с графическим процессором потребительского уровня - Unite.AI
Свяжитесь с нами:

Artificial Intelligence

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

mm
обновленный on

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

В этой статье мы обсудим PowerInfer, высокоскоростной механизм вывода LLM, разработанный для стандартных компьютеров с одним графическим процессором потребительского уровня. Структура PowerInfer стремится использовать высокую локальность, присущую LLM-выводу, характеризующуюся степенным распределением активаций нейронов. Это означает, что в любой момент времени небольшая подгруппа «горячих» нейронов постоянно активна при всех входных сигналах, в то время как остальные, называемые «холодными» нейронами, активируются в зависимости от конкретных входных данных или требований. Этот подход позволяет платформе PowerInfer снизить вычислительную мощность, необходимую генеративному ИИ для получения желаемых результатов.

Мы подробно углубимся в структуру PowerInfer, изучим ее методологию, конвейер и результаты практического применения. Давай начнем.

PowerInfer: быстрая модель большого языка с графическим процессором потребительского уровня

Генеративные модели большого языка, такие как ChatGPT и DALL-E, известны своими сложными задачами по генеративной обработке и обработке естественного языка. Из-за высоких вычислительных требований эти модели обычно развертываются в центрах обработки данных с современными графическими процессорами. Потребность в такой высокой вычислительной мощности ограничивает их развертывание центрами обработки данных, подчеркивая необходимость развертывания больших языковых моделей на более доступных локальных платформах, таких как персональные компьютеры.

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

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

Чтобы удовлетворить сложные требования к памяти генеративной среды искусственного интеллекта, существующие решения используют такие методы, как выгрузка и сжатие модели. Такие методы, как дистилляция, обрезка и квантование, уменьшают размер модели, но все еще слишком велики для графических процессоров стандартного уровня в персональных компьютерах. Разгрузка модели, которая разделяет модель на уровне преобразователя между ЦП и графическими процессорами, позволяет выполнять распределенную обработку слоев в памяти ЦП и графического процессора. Однако этот метод ограничен медленным соединением PCIe и ограниченными вычислительными возможностями процессоров, что приводит к высокой задержке вывода.

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

Процесс вывода в больших языковых моделях демонстрирует высокую локальность: каждая итерация активирует ограниченное количество нейронов. Платформа PowerInference стремится использовать эту локальность, управляя небольшим количеством горячих нейронов с помощью графического процессора, в то время как центральный процессор обрабатывает холодные нейроны. Он предварительно выбирает и загружает горячие нейроны в графический процессор и идентифицирует активированные нейроны во время выполнения. Этот подход сводит к минимуму дорогостоящую передачу данных PCIe, позволяя графическим и центральным процессорам независимо обрабатывать назначенные им нейроны.

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

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

Архитектура и методология

На следующем рисунке представлена ​​архитектура платформы PowerInfer, состоящая из автономных и онлайн-компонентов, находящихся в стадии разработки. 

Благодаря различиям, наблюдаемым в свойствах местности среди разных большие языковые моделиАвтономный компонент профилирует разреженность активации структуры LLM, позволяя ей различать горячие и холодные нейроны. С другой стороны, на автономном этапе механизм вывода загружает два типа нейронов как в ЦП, так и в графический процессор, таким образом обслуживая запросы LLM во время выполнения с низкой задержкой. 

Автономный этап: решатель политик и профилировщик LLM

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

Онлайн-фаза: механизм вывода LLM Neuron Aware

После успешного выполнения автономного этапа платформа переходит к выполнению онлайн-этапа. На третьем этапе процесса онлайн-движок назначает горячие и холодные нейроны соответствующим процессорам перед обработкой пользовательских запросов, в зависимости от выходных данных автономного решателя политики. Во время выполнения и на шаге 4 онлайн-движок управляет вычислениями графического процессора, создавая исполнители процессора и графического процессора, которые представляют собой потоки, выполняющиеся на стороне процессора. Затем двигатель прогнозирует активированные нейроны и пропускает неактивированные нейроны. Активированные нейроны затем предварительно загружаются в графический процессор для обработки. Тем временем ЦП вычисляет и передает результаты своим нейронам для интеграции с графическим процессором. Онлайн-движок способен концентрироваться на отдельных строках и столбцах нейронов в матрицах, поскольку он использует операторы, учитывающие редкие нейроны, как на центральных, так и на графических процессорах. 

Адаптивные предикторы разреженности

Основная концепция снижения вычислительной нагрузки с помощью механизма онлайн-вывода в среде PowerInfer заключается в том, что он обрабатывает только те нейроны, которые, по его прогнозам, будут активированы. Традиционно на каждом уровне преобразователя структура использует два разных предиктора для прогнозирования активации нейронов в блоках MLP и самообслуживания, в результате чего вычисление вывода ограничивается нейронами, которые, по прогнозам, будут активными. Однако разработать эффективные предикторы для локального развертывания сложно, поскольку ограниченный объем ресурсов затрудняет баланс между размером модели и точностью прогнозирования. Поскольку эти предикторы часто используются платформой для прогнозирования активных нейронов, их необходимо хранить в графическом процессоре, чтобы обеспечить более быстрый доступ. Однако платформы обычно используют большое количество предикторов, которые занимают значительный объем памяти, даже тот, который необходим для хранения параметров LLM. 

Более того, размер предикторов обычно определяется двумя факторами: внутренней асимметрией и разреженностью слоев LLM. 

Чтобы оптимизировать эти факторы, платформа PowerInfer использует итеративный метод обучения для каждого предиктора на уровне преобразователя без фиксированного размера. На первом этапе этого метода обучения размер базовой модели устанавливается на основе профиля разреженности модели, а размер модели корректируется итеративно с учетом асимметрии внутренней активации для поддержания точности. 

Размещение и управление нейронами

Как упоминалось ранее, в то время как компонент автономного решения политики определяет политику размещения нейронов, компонент онлайн-системы вывода загружает модель в память графического процессора и процессора в соответствии с сгенерированной политикой. Для каждого слоя, который может иметь или не иметь несколько весовых матриц, платформа PowerInfer назначает каждый нейрон либо ЦП, либо ГП в зависимости от того, активирован ли нейрон в горячем режиме. Обеспечение точного расчета сегментированных нейронов в определенной последовательности имеет важное значение для получения точных результатов. Чтобы решить эту проблему, платформа PowerInfer генерирует две таблицы нейронов: одну, расположенную в графическом процессоре, и одну, расположенную в памяти процессора, причем каждая таблица сопоставляет отдельные нейроны с их исходным положением в матрице. 

Нейрон-ориентированный оператор

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

Политика размещения нейронов

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

Результаты и реализация

Чтобы продемонстрировать возможности обобщения платформы PowerInfer на устройствах с различными аппаратными конфигурациями, эксперименты проводятся на двух разных персональных компьютерах: один оснащен процессором Intel i9-13900K, графическим процессором NVIDIA RTX 4090 и хост-памятью 192 ГБ, а другой работает на базе Intel. Процессор i7-12700K, графический процессор NVIDIA RTX 2080Ti и 64 ГБ оперативной памяти. 

Комплексная производительность платформы PowerInfer сравнивается с llama.cpp с размером пакета 1 и настройками развертывания по умолчанию. Затем платформа выбирает подсказки из наборов данных ChatGPT и Alpaca, учитывая изменчивость длины, наблюдаемую при вводе и выводе реальных диалогов. На следующем рисунке показана скорость генерации для разных моделей. 

Как можно заметить, платформа PowerInfer генерирует 8.32 токена в секунду и достигает 16 токенов, генерируемых в секунду, тем самым значительно превосходя инфраструктуру llama.cpp. Кроме того, по мере увеличения количества выходных токенов производительность платформы PowerInfer также улучшается, поскольку фаза генерации существенно влияет на общее время вывода. 

Кроме того, как видно на изображении выше, платформа PowerInfer превосходит платформу llama.cpp на ПК низкого уровня с пиковой скоростью генерации 7 токенов в секунду и средней скоростью генерации токенов 5 токенов в секунду. 

Изображение выше демонстрирует распределение нагрузки нейронов между графическим процессором и процессором для двух платформ. Как видно, фреймворк PowerInfer существенно увеличивает долю нагрузки на нейроны графического процессора — с 20 до 70 %. 

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

Заключение

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

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