Оптимизируйте пропускную способность ИИ-инфраструктуры с помощью GPU

2 просмотров Источник
Оптимизируйте пропускную способность ИИ-инфраструктуры с помощью GPU

В производственных средах Kubernetes несоответствие между требованиями моделей и размером GPU приводит к неэффективности. Легковесные модели автоматического распознавания речи (ASR) или текст-в-речь (TTS) могут требовать всего 10 ГБ видеопамяти, занимая при этом весь GPU в стандартных развертываниях Kubernetes. Поскольку планировщик связывает модель с одним или несколькими GPU и не может легко распределять ресурсы между моделями, дорогостоящие вычислительные ресурсы часто остаются недоиспользованными.

Решение этой проблемы заключается не только в снижении затрат, но и в оптимизации плотности кластера для обслуживания большего числа одновременно работающих пользователей на одном оборудовании высшего класса. В этом руководстве подробно описывается, как реализовать и протестировать стратегии разделения GPU, в частности, NVIDIA Multi-Instance GPU (MIG) и временное разделение, чтобы полностью использовать вычислительные ресурсы.

Используя производственный голосовой ИИ в качестве тестовой среды, мы показываем, как комбинировать модели для максимизации возврата на инвестиции в инфраструктуру, сохраняя при этом более 99% надежности и строгие гарантии задержки. По умолчанию плагин NVIDIA для Kubernetes отображает GPU как целочисленные ресурсы. Подразделение запрашивает nvidia.com/gpu: 1, и планировщик связывает его с физическим устройством.

Большие языковые модели (LLM), такие как NVIDIA Nemotron, Llama 3 или Qwen 7B/8B, требуют выделенных вычислений для поддержания низкого времени до первого токена и высокой пропускной способности. Однако вспомогательные модели в генеративной ИИ-цепочке, такие как модели встраивания, ASR, TTS или защитные механизмы, часто используют лишь часть ресурсов карты. Запуск этих легковесных моделей на выделенных GPU приводит к низкой загрузке и увеличению числа узлов, необходимых для запуска того же количества подов.

Для решения этой проблемы необходимо разорвать 1:1 связь между подами и GPU. Мы оценили две основные стратегии для разделения GPU, поддерживаемые NVIDIA GPU Operator: программное разделение и временное разделение. Временное разделение позволяет нескольким процессам NVIDIA CUDA совместно использовать GPU, чередуя выполнение. Это работает аналогично планировщику CPU: контекст A выполняется, приостанавливается, и выполняется контекст B. В дополнение к временной сегментации, NVIDIA Multi-Process Service (MPS) предлагает альтернативный подход, позволяющий нескольким процессам одновременно делить ресурсы GPU.

Однако в производственной среде оба метода делят один контекст выполнения, что ограничивает изоляцию. MIG физически разделяет GPU на отдельные экземпляры, каждый из которых имеет свою собственную память и кэш. Это обеспечивает строгую качество обслуживания. Консолидируя вспомогательные модели, такие как ASR и TTS, мы можем максимально использовать оборудование, сохраняя при этом отзывчивость и минимальные задержки. Наша гипотеза заключается в том, что консолидация этих рабочих нагрузок на одном GPU сохраняет задержку и колебания, освобождая вычислительные ресурсы для дополнительных экземпляров LLM.

Похожие статьи