Масштабирование LLM в Production: Практическое Руководство

Использование API для интеграции LLM

Интеграция больших языковых моделей (LLM) в кодовую базу может быть достигнута различными способами, но использование API, совместимого с OpenAI, настоятельно рекомендуется для production-развертываний. Этот подход обеспечивает гибкость в адаптации к быстро меняющемуся ландшафту моделей. Модели, считавшиеся передовыми всего несколько месяцев назад, могут быстро устареть.

С начала бума в области искусственного интеллекта, начавшегося с ChatGPT в 2022 году, интерфейс API OpenAI стал де-факто стандартом для подключения приложений к LLM. Этот стандарт позволяет разработчикам создавать приложения с использованием доступных ресурсов, таких как начало работы с Mistral 7B в Llama.cpp на ноутбуке и плавный переход к API-серверам Mistral AI для production-развертывания. Это исключает привязку к одной модели, механизму логического вывода или поставщику API.

Облачные сервисы логического вывода предоставляют капиталоемкий (capex) способ масштабирования развертываний AI. Эти сервисы устраняют необходимость в управлении оборудованием и конфигурации моделей, вместо этого предоставляя API для интеграции приложений.

В дополнение к предложениям API от крупных разработчиков моделей, растущее число стартапов в области инфраструктуры AI предлагают логический вывод как услугу для моделей с открытыми весами. Эти поставщики различаются по своим подходам. Некоторые, как SambaNova, Cerebras и Groq, используют специализированное оборудование или методы, такие как спекулятивное декодирование, для ускорения логического вывода, но предлагают меньший выбор моделей. Другие, такие как Fireworks AI, поддерживают развертывание пользовательских точно настроенных моделей с использованием адаптеров Low Rank Adaptation (LoRA). Разнообразие экосистемы AI требует тщательного исследования, прежде чем приступать к работе с конкретным поставщиком.

Вопросы развертывания LLM на собственной инфраструктуре

В ситуациях, когда облачные подходы невозможны из-за конфиденциальности, нормативных ограничений или уже существующей инфраструктуры (например, компания уже инвестировала в GPU-серверы), необходимо развертывание на собственной инфраструктуре. Это может представлять несколько проблем. Вот некоторые общие вопросы, которые возникают:

  • Выбор модели: Подходящая модель зависит от конкретного варианта использования. Модель, предназначенная для чат-бота службы поддержки клиентов, будет иметь другие требования, чем модель, используемая для генерации с дополненным извлечением или в качестве помощника по коду. Рекомендуется потратить время на работу с поставщиками API, чтобы определить модель, отвечающую потребностям.
  • Требования к оборудованию: Определение необходимого оборудования имеет решающее значение, поскольку графические процессоры дороги и их может быть трудно приобрести. Сама модель может дать представление об оборудовании, необходимом для ее запуска. Более крупные модели требуют больше оборудования. Примерную оценку минимального объема памяти GPU можно рассчитать, умножив количество параметров (в миллиардах) на 2 ГБ для моделей, обученных с 16-битной точностью. Для 8-битных моделей требуется 1 ГБ на миллиард параметров. Методы сжатия моделей, такие как квантование, могут уменьшить это до 512 МБ на миллиард параметров. Это нижний предел. Дополнительная память необходима для обслуживания модели для нескольких пользователей одновременно из-за кэша ключ-значение, который действует как кратковременная память модели. Матрица поддержки Nvidia предлагает рекомендации по графическим процессорам, необходимым для запуска различных моделей.
  • Резервирование: В дополнение к определению размера оборудования для модели необходимо учитывать резервирование. Один узел GPU уязвим к сбоям, поэтому важно развернуть две или более системы для обеспечения отказоустойчивости и балансировки нагрузки.
  • Методы развертывания: LLM можно развертывать и обслуживать в production с использованием различных методов: на bare metal с балансировщиками нагрузки, виртуальных машинах или контейнерах в Docker или Kubernetes. Kubernetes упрощает крупномасштабные развертывания за счет автоматизации создания контейнеров, сети и балансировки нагрузки.

Kubernetes для развертывания LLM

Kubernetes абстрагирует большую часть сложности, связанной с крупномасштабными развертываниями, за счет автоматизации создания контейнеров, сети и балансировки нагрузки. Многие предприятия уже внедрили и понимают Kubernetes. Nvidia, Hugging Face и другие предпочитают контейнерные среды с Nvidia Inference Microservices (NIM) и Hugging Face Generative AI Services (HUGS), предварительно настроенные для общих рабочих нагрузок и развертываний.

Механизмы логического вывода

Доступны различные механизмы логического вывода для запуска моделей, включая Ollama и Llama.cpp, которые совместимы с широким спектром оборудования. Для масштабирования моделей часто используются библиотеки, такие как vLLM, TensorRT LLM, SGLang и PyTorch. В этом руководстве основное внимание уделяется развертыванию моделей с использованием vLLM, поскольку он поддерживает широкий выбор популярных моделей и предлагает широкую поддержку и совместимость с Nvidia, AMD и другим оборудованием.

Подготовка среды Kubernetes

Настройка среды Kubernetes для работы с GPU требует дополнительных драйверов и зависимостей по сравнению с типичной настройкой Kubernetes. Процесс настройки будет отличаться для оборудования AMD и Nvidia.

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

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

  • Сервер или рабочая станция как минимум с одной поддерживаемой платой AMD или Nvidia GPU
  • Свежая установка Ubuntu 24.04 LTS

Зависимости Nvidia

Настройка среды K3S с ускорением Nvidia требует установки драйверов CUDA Fabric Manager и драйверов Headless Server. Установите серверные утилиты Nvidia для отладки проблем с драйверами.

В первую очередь, необходимо добавить репозиторий CUDA в список источников пакетов. Затем обновить список пакетов и установить последние версии драйверов CUDA. Установка Fabric Manager также является важным шагом, поскольку он обеспечивает связь и координацию между графическими процессорами в системе. Драйверы Headless Server необходимы для запуска графических приложений без подключенного монитора, что типично для серверных сред. Для упрощения отладки рекомендуется установить серверные утилиты Nvidia, которые предоставляют полезные инструменты для диагностики проблем с драйверами.

Установка драйверов CUDA: