НаноПоток: К Оптимальной Пропускной Способности Обслуживания Больших Языковых Моделей.
NanoFlow: Towards Optimal Large Language Model Serving Throughput
August 22, 2024
Авторы: Kan Zhu, Yilong Zhao, Liangyu Zhao, Gefei Zuo, Yile Gu, Dedong Xie, Yufei Gao, Qinyu Xu, Tian Tang, Zihao Ye, Keisuke Kamahori, Chien-Yu Lin, Stephanie Wang, Arvind Krishnamurthy, Baris Kasikci
cs.AI
Аннотация
Растущее использование Больших Языковых Моделей (LLM) привело к всплеску спроса на системы обслуживания планетарного масштаба, где десятки тысяч GPU непрерывно обслуживают сотни миллионов пользователей. В результате пропускная способность (при разумных ограничениях задержки) стала ключевым показателем, определяющим производительность систем обслуживания. Для увеличения пропускной способности были исследованы различные методы межустройственного параллелизма (например, данных, тензоров, конвейерный), однако существующие методы не учитывают одновременное использование различных ресурсов в пределах одного устройства, что приводит к недоиспользованию и неоптимальной производительности.
Мы предлагаем NanoFlow, новую обслуживающую структуру, которая использует внутриустройственный параллелизм, перекрывая использование ресурсов, включая вычисления, память и сеть в пределах одного устройства через координацию операций. Для использования внутриустройственного параллелизма NanoFlow вводит два ключевых новшества: Во-первых, NanoFlow разбивает запросы на нано-партии на уровне операций, что разрывает зависимость последовательных операций в выводе LLM и позволяет перекрытие; затем, для извлечения выгоды из перекрытия, NanoFlow использует конвейер на уровне операций с планированием исполнения блоков, который разделяет функциональные блоки устройства и одновременно выполняет различные операции в каждом блоке. NanoFlow автоматизирует настройку конвейера с помощью алгоритма поиска параметров, что позволяет легко портировать NanoFlow на различные модели. Мы реализуем NanoFlow на GPU NVIDIA и оцениваем пропускную способность обслуживания от начала до конца на нескольких популярных моделях, таких как LLaMA-2-70B, Mixtral 8x7B, LLaMA-3-8B и т. д. С практическими нагрузками NanoFlow обеспечивает увеличение пропускной способности в 1,91 раза по сравнению с передовыми системами обслуживания, достигая от 59% до 72% оптимальной пропускной способности для портированных моделей.
English
The increasing usage of Large Language Models (LLMs) has resulted in a
surging demand for planet-scale serving systems, where tens of thousands of
GPUs continuously serve hundreds of millions of users. Consequently, throughput
(under reasonable latency constraints) has emerged as a key metric that
determines serving systems' performance. To boost throughput, various methods
of inter-device parallelism (e.g., data, tensor, pipeline) have been explored.
However, existing methods do not consider overlapping the utilization of
different resources within a single device, leading to underutilization and
sub-optimal performance.
We propose NanoFlow, a novel serving framework that exploits intra-device
parallelism, which overlaps the usage of resources including compute, memory,
and network within a single device through operation co-scheduling. To exploit
intra-device parallelism, NanoFlow introduces two key innovations: First,
NanoFlow splits requests into nano-batches at the granularity of operations,
which breaks the dependency of sequential operations in LLM inference and
enables overlapping; then, to get benefit from overlapping, NanoFlow uses an
operation-level pipeline with execution unit scheduling, which partitions the
device's functional units and simultaneously executes different operations in
each unit. NanoFlow automates the pipeline setup using a parameter search
algorithm, which enables easily porting NanoFlow to different models. We
implement NanoFlow on NVIDIA GPUs and evaluate end-to-end serving throughput on
several popular models such as LLaMA-2-70B, Mixtral 8x7B, LLaMA-3-8B, etc..
With practical workloads, NanoFlow provides 1.91x throughput boost compared to
state-of-the-art serving systems achieving 59% to 72% of optimal throughput
across ported models.Summary
AI-Generated Summary