Оптимизация затрат на использование LLM

Материал из Systems analysis wiki
Перейти к навигации Перейти к поиску

Оптимизация затрат на использование больших языковых моделей (LLM) — это комплекс стратегий и технических методов, направленных на снижение вычислительных и финансовых ресурсов, требуемых для обучения, дообучения (fine-tuning) и, в особенности, выполнения (инференса) больших языковых моделей. Актуальность этой области обусловлена огромной стоимостью как разработки, так и эксплуатации LLM.

Например, обучение модели GPT-3 с 175 млрд параметров, по оценкам, стоило около $4,6 млн на облачной GPU-инфраструктуре[1] и потребовало 1,3 млн кВт·ч электроэнергии[2]. Однако основные затраты часто приходятся на этап инференса. По оценкам, ежедневные операционные расходы на поддержку сервиса ChatGPT в начале 2023 года составляли около $700 тыс. (примерно $0,0036 за запрос), что многократно превышает единовременные затраты на обучение[3].

Оптимизация на этапе обучения и выбора модели

Эффективное управление затратами начинается с фундаментальных решений, принимаемых до этапа инференса.

Законы масштабирования: размер модели vs. объём данных

Одним из ключевых прорывов в понимании экономики обучения LLM стали законы масштабирования Chinchilla, представленные исследователями DeepMind в 2022 году. Они показали, что для оптимального использования вычислительного бюджета модель следует обучать на значительно большем объеме данных, чем это делалось ранее[4].

Исторически предполагалось, что производительность растет в основном за счет увеличения числа параметров. Однако исследование Chinchilla продемонстрировало, что модель Chinchilla (70 млрд параметров), обученная на 1,4 трлн токенов, превосходит по качеству гораздо более крупную модель GPT-3 (175 млрд параметров), обученную всего на ~300 млрд токенов[5]. Рекомендованное соотношение — примерно 20 токенов обучающих данных на каждый параметр модели. Этот подход позволяет создавать более компактные и эффективные модели, снижая как затраты на обучение, так и на последующий инференс.

Дообучение (Fine-tuning) и его эффективность

Вместо затратного обучения модели с нуля, всё более распространённой практикой становится дообучение (fine-tuning) уже существующих открытых моделей (например, семейства LLaMA, Falcon). Для дальнейшего снижения затрат применяются методы параметрически эффективного дообучения (Parameter-Efficient Fine-Tuning, PEFT).

Наиболее популярный метод, LoRA (Low-Rank Adaptation), позволяет адаптировать модель, обновляя лишь небольшое число дополнительных параметров. Исследования показывают, что LoRA может сократить затраты на дообучение на десятки процентов (до ~68% в некоторых сценариях) при незначительном влиянии на качество[6].

Сокращение размера модели (Model Compression)

Важнейшим направлением оптимизации является уменьшение физического размера модели при сохранении её производительности.

Дистилляция знаний (Knowledge Distillation)

Дистилляция знаний — это процесс, в котором большая и мощная «учитель»-модель используется для обучения более компактной «студент»-модели. Студент учится имитировать ответы учителя на широком наборе данных, перенимая его «знания». Этот метод позволяет добиться сопоставимого качества на конкретных задачах при значительно меньших затратах. Например, модель DeepSeek-R1 была успешно дистиллирована с 671 млрд до 70 млрд и даже 1,5 млрд параметров с приемлемой потерей качества для многих приложений[7].

Квантование (Quantization)

Квантование — это процесс снижения числовой точности, используемой для представления весов модели. Вместо стандартных 32-битных или 16-битных чисел с плавающей запятой используются 8-битные или даже 4-битные целые числа.

  • 8-битное квантование уменьшает размер модели примерно на 50% при потере точности около 1%.
  • 4-битное квантование уменьшает размер модели на 75%, сохраняя при этом конкурентоспособное качество выводов[7].

При наличии аппаратной поддержки (например, в современных GPU от Nvidia) и программных библиотек (например, TensorRT) квантование может ускорить инференс в 2–4 раза[8].

Оптимизация на этапе инференса

Когда модель обучена и развернута, основная доля расходов связана с её повседневным использованием.

Пакетирование запросов (Batching)

Пакетирование — это объединение нескольких пользовательских запросов в один «батч» для одновременной обработки на GPU. Это значительно повышает утилизацию оборудования и общую пропускную способность. Для LLM, где генерация ответов происходит по одному токену, наиболее эффективным является непрерывное пакетирование (continuous/in-flight batching). Этот метод позволяет динамически добавлять новые запросы в батч по мере того, как другие запросы в нём завершаются, что устраняет простои и максимизирует загрузку GPU[9].

Кэширование ключей и значений (KV Cache)

В трансформерных моделях для генерации каждого нового токена требуется информация обо всех предыдущих токенах. Чтобы избежать экспоненциального роста вычислений, применяется кэширование ключей и значений (KV Cache). Система сохраняет промежуточные результаты вычислений механизма внимания для уже обработанного контекста и повторно использует их, что делает генерацию длинных последовательностей и многоходовых диалогов значительно более эффективной[7].

Оптимизация механизма внимания

Хранение KV-кэша требует значительного объема памяти. Для его уменьшения были разработаны оптимизированные варианты механизма внимания:

  • Multi-Query Attention (MQA): Все головы внимания используют один общий набор ключей и значений.
  • Grouped-Query Attention (GQA): Промежуточный компромисс, где головы внимания разделены на группы, и каждая группа использует общий набор ключей и значений.

Компания Meta успешно применила GQA в моделях LLaMA 2, что позволило значительно повысить эффективность инференса при работе с длинными контекстами без существенной потери качества[10].

Оптимизация инфраструктуры и системной архитектуры

Гибридные системы и Retrieval-Augmented Generation (RAG)

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

Частным и очень эффективным случаем такого подхода является Retrieval-Augmented Generation (RAG). В этой архитектуре LLM может быть относительно компактной, так как для ответа она использует актуальную информацию, полученную из внешней базы знаний (например, из корпоративной документации или поисковой системы). Это не только снижает требования к размеру модели, но и решает проблему галлюцинаций. Развертывание специализированной 70-миллиардной модели с RAG на локальной инфраструктуре может быть в 2–4 раза дешевле, чем использование API GPT-4 в облаке[11].

Примечания

  1. «OpenAI's GPT-3 Language Model: A Technical Overview». Lambda Labs. [1]
  2. «The Energy Footprint of Humans and Large Language Models». Communications of the ACM. [2]
  3. «The Inference Cost Of Search Disruption - Large Language Model Cost Analysis». SemiAnalysis. [3]
  4. Hoffmann, J., et al. (2022). «Training Compute-Optimal Large Language Models». arXiv:2203.15556.
  5. Chow, T. (2024). «Three Kuhnian Revolutions in ML Training». Substack. [4]
  6. «A Study to Evaluate the Impact of LoRA Fine-tuning on the Performance of Non-functional Requirements Classification». arXiv:2503.07927. (2025).
  7. 7,0 7,1 7,2 «LLM Inference Optimization: How to Speed Up, Cut Costs, and Scale AI Models». deepsense.ai. [5]
  8. Jin, H., et al. (2024). «GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers».
  9. «Continuous vs dynamic batching for AI inference». Baseten Blog. [6]
  10. «What is grouped query attention?». IBM. [7]
  11. «Inferencing on-premises with Dell Technologies». Dell Technologies Analyst Paper. [8]