LLM под капотом: архитектура и механика выбора модели

Выбор LLM сегодня - как покупка автомобиля, когда каждая марка выпускает модели с названиями вроде “Model-7B” или “Model-70B”. Продавцы гордо называют цифры: ‘У нас 93% на MMLU!’ - звучит как ‘двигатель 4.0 с расходом 16л’. Но что это значит для ваших конкретных задач?

Как и при выборе машины, важно понимать назначение:

  • для ежедневных городских поездок нужны одни модели,
  • для дальних путешествий - другие,
  • для перевозки тяжёлых грузов - третьи.

Одни LLM похожи на спортивные купе - быстрые, эффектные, но прожорливые. Другие - на надёжные седаны: без лишнего блеска, зато универсальные и экономичные. А есть и тяжёлые грузовики - медленные, но способные справиться с большими нагрузками.

Написал этот справочник после того, как выбирал LLM для своих проектов. В процессе накопились ответы на практические вопросы: что означают бенчмарки, как оценить требования к железу, какую архитектуру выбрать для конкретных задач. Этот справочник призван помочь ‘заглянуть под капот’ современных языковых моделей и выбрать именно то, что подходит вашему проекту. Здесь - базовые концепции, практические критерии и конкретная система принятия решений.

Основные термины и понятия

Базовые концепции

Parameters (Параметры) - количество обучаемых весов в нейронной сети. Измеряется в миллионах (M) или миллиардах (B). Больше параметров обычно означает лучшее понимание сложных задач, но требует больше вычислительных ресурсов.

Token (Токен) - базовая единица текста для модели. Примерно 1 токен = 0.75 слова в английском языке, 0.5-0.6 слова в русском. Важно для подсчета стоимости API и планирования ресурсов.

Context Window (Контекстное окно) - максимальное количество токенов, которое модель может обработать за один раз. Современные модели поддерживают от 8K до 200K+ токенов. Определяет, сколько текста модель “помнит” в рамках одного диалога.

Embedding (Эмбеддинг) - числовое представление текста в виде векторов, которое модель использует для внутренних вычислений. Позволяет модели работать с семантическим смыслом слов и фраз.

Prompt (Промпт) - входной текст или инструкция, которую вы даете модели. Качество промпта сильно влияет на качество ответа.

Perplexity (Перплексия) - метрика “растерянности” модели. Чем ниже, тем лучше модель предсказывает следующий токен. Используется для сравнения качества моделей на одном датасете.

Процесс обучения

Pre-training (Предобучение) - базовое обучение модели на огромных текстовых корпусах для предсказания следующего слова.

Fine-tuning (Файн-тюнинг) - дообучение готовой модели на специфичных данных для конкретной задачи.

PEFT (Parameter-Efficient Fine-Tuning) - методы дообучения только части параметров модели для экономии ресурсов.

LoRA (Low-Rank Adaptation) - популярный метод PEFT, добавляющий небольшие матрицы к существующим слоям.

RLHF (Reinforcement Learning from Human Feedback) - обучение модели на основе человеческих оценок качества ответов для повышения полезности и безопасности.

Few-shot learning (Обучение на нескольких примерах) - способность модели решать задачи, видя всего несколько примеров в промпте. Zero-shot - решение задач вообще без примеров, только по описанию.

Технические аспекты работы

Inference (Инференс) - процесс получения ответа от обученной модели (в отличие от training).

Batching (Батчинг) - одновременная обработка нескольких запросов для повышения эффективности.

Streaming (Стриминг) - поочередная отдача токенов по мере генерации (как в ChatGPT) вместо ожидания полного ответа.

Latency (Задержка) - время отклика модели на запрос (от отправки промпта до получения ответа). Критично для интерактивных приложений.

Throughput (Пропускная способность) - количество токенов, которое модель может обработать в секунду. Важно для высоконагруженных систем.

Memory footprint (Потребление памяти) - объем оперативной памяти, занимаемый моделью при работе. Отличается от размера файла модели на диске.

Архитектурные элементы

Attention/Self-attention (Внимание/Само-внимание) - механизм, позволяющий модели “обращать внимание” на разные части входного текста при генерации каждого нового токена.

Layers/Heads (Слои/Головы внимания) - структурные элементы трансформера. Layers (слои) - это последовательно расположенные блоки трансформера, каждый содержит механизмы self-attention и feed-forward сети. Heads (головы внимания) - это параллельные вычислительные потоки внутри каждого слоя attention, позволяющие модели одновременно фокусироваться на разных аспектах входных данных.

Пользовательские концепции

Hallucination (Галлюцинации) - генерация ложной, выдуманной или недостоверной информации моделью. Модель может “галлюцинировать” факты, цитаты, ссылки.

Процесс генерации

Temperature (Температура) - параметр, контролирующий предсказуемость ответов модели от 0 до 2. При генерации каждого следующего слова модель выбирает из нескольких вариантов:

  • 0.1-0.3: детерминированные, предсказуемые ответы
  • 0.7-1.0: сбалансированная креативность
  • 1.5+: высокая креативность, но возможна несвязность

Top-p (Nucleus Sampling) - альтернатива temperature. Выбирает токены из топ-X% вероятностей. 0.9 означает выбор из 90% наиболее вероятных вариантов.

Типология архитектур и применений

Архитектурные типы

Decoder-only (Generative Models)

  • Принцип: предсказание следующего токена
  • Архитектура: трансформер с маскированным self-attention
  • Примеры: GPT семейство, LLaMA семейство, Claude, Mistral
  • Применение: генерация текста, диалоги, творчество, код

Encoder-only (Understanding Models)

  • Принцип: создание контекстуальных представлений текста
  • Архитектура: двунаправленный трансформер
  • Примеры: BERT семейство, RoBERTa, DeBERTa
  • Применение: классификация, поиск, анализ тональности, эмбеддинги

Encoder-Decoder (Sequence-to-Sequence)

  • Принцип: преобразование одной последовательности в другую
  • Архитектура: комбинация encoder + decoder с cross-attention
  • Примеры: T5 семейство, BART, mT5
  • Применение: перевод, саммаризация, редактирование текста

Специализированные архитектуры

Mixture of Experts (MoE)

  • Принцип: активация только части параметров для каждого запроса
  • Примеры: Mixtral семейство, Switch Transformer
  • Преимущества: высокое качество при относительно низких вычислительных затратах

Multimodal Models

  • Принцип: обработка текста + изображений/аудио
  • Примеры: GPT-4V, Claude-3, CLIP, Whisper
  • Применение: анализ изображений, генерация по описанию

Принципы выбора архитектуры

ЗадачаРекомендуемая архитектураПочему
Чат-бот, генерация контентаDecoder-onlyЕстественная генерация, диалоговые способности
Классификация документовEncoder-onlyЛучшее понимание контекста, эффективность
Перевод, саммаризацияEncoder-DecoderОптимизация для преобразования текста
Поиск по семантикеEncoder-onlyКачественные эмбеддинги
Анализ кодаСпециализированные DecoderОбучение на кодовых датасетах

Основные форматы моделей и технические аспекты

Сравнение популярных форматов хранения

ФорматОписаниеПреимуществаНедостаткиКогда использовать
PyTorch (.pt, .pth)Стандартный формат PyTorch для сохранения моделей и данных. Может содержать весы, архитектуру модели, состояния оптимизатора и произвольный Python код. Основной формат для исследований и обученияПолная совместимость с PyTorchБольшой размер, может содержать кодРазработка, эксперименты
SafeTensorsБезопасный формат для хранения только весов модели без исполняемого кода. Разработан Hugging Face для быстрой и безопасной загрузки. Поддерживает lazy loading и memory mappingБыстрая загрузка, только данные весовМеньше поддержки в старых инструментахПродакшн, обмен моделями
GGUFСпециализированный формат для эффективного inference на CPU и GPU. Поддерживает встроенную квантизацию и оптимизации для llama.cpp. Предназначен для локального запуска больших моделейОптимизация, встроенная квантизацияСпецифичный форматДеплой на устройствах
ONNXОткрытый формат для обмена моделями между разными фреймворками. Позволяет использовать модели, обученные в PyTorch, в TensorFlow, TensorRT и других системах. Ориентирован на продакшн inferenceПоддержка разных фреймворковНе все операции поддерживаютсяИнтеграция в существующие системы

Примечание: SafeTensors обеспечивает безопасность тем, что содержит только тензорные данные без исполняемого кода, в отличие от PyTorch формата.

Квантизация и оптимизация

Квантизация - процесс уменьшения точности представления весов модели (например, с 16-bit до 4-bit) для снижения размера и ускорения работы. Позволяет запускать большие модели на менее мощном железе с минимальной потерей качества.

ТипРазмер от оригиналаСкоростьКачествоРекомендации
FP16100%БазоваяМаксимальноеКогда ресурсы не ограничены
Q8~50%+20-30%99% от оригиналаБаланс качества и размера
Q4_K_M~25%+40-60%95-98% от оригиналаРекомендуемый для большинства задач
Q4_K_S~23%+50-70%92-95% от оригиналаКогда размер критичен
Q3_K_M~19%+60-80%88-92% от оригиналаТолько при жестких ограничениях

Примеры расчета требований к железу

Базовая формула для оценки RAM:

  • Модель в FP16: размер_модели × 2 байта + 20% буфер
  • Модель в Q4: размер_модели × 0.5 байта + 20% буфер

Практические примеры для разных классов моделей:

  • Модель 7B в FP16: ~14GB RAM + буфер = ~17GB
  • Модель 7B в Q4: ~4GB RAM + буфер = ~5GB
  • Модель 70B в Q4: ~40GB RAM + буфер = ~48GB

Варианты размещения:

  • Только GPU: быстрый inference, но ограничено VRAM
  • Только CPU: медленный inference, но можно использовать всю системную память
  • Гибридный режим: часть слоев на GPU, часть на CPU для экономии VRAM

Важно: это приблизительные оценки. Реальное потребление может отличаться в зависимости от реализации и дополнительных оптимизаций.

Расшифровка метрик и бенчмарков

Как интерпретировать основные метрики

MMLU (Massive Multitask Language Understanding) Тестирует эрудицию модели по академическим дисциплинам: от элементарной математики до философии и права.

Как читать результаты:

  • 25% = случайность (модель просто угадывает из 4 вариантов)
  • 40-50% = базовое понимание отдельных тем
  • 60-70% = хорошее понимание для большинства практических задач
  • 80%+ = уровень современных топовых моделей
  • 90%+ = исключительные результаты (редко достигаются)

📊 Актуальные рейтинги: HuggingFace Open LLM Leaderboard | LMSYS Chatbot Arena

ARC (AI2 Reasoning Challenge) Проверяет научные знания и способность к логическим рассуждениям.

ARC-Easy (элементарная наука):

  • 60-70% = базовый уровень
  • 80%+ = хорошие результаты
  • 90%+ = отличные результаты

ARC-Challenge (сложные научные задачи):

  • 30-40% = базовый уровень
  • 50-60% = хорошие аналитические способности
  • 70%+ = уровень топовых моделей

HellaSwag (здравый смысл) Проверяет понимание контекста и житейской логики.

Интерпретация результатов:

  • 40-50% = минимальное понимание контекста
  • 60-70% = приемлемое понимание для простых задач
  • 80%+ = хорошее понимание здравого смысла
  • 90%+ = близко к человеческому уровню (~95%)

GSM8K (математические рассуждения) Текстовые математические задачи уровня средней школы.

Уровни качества:

  • 20-30% = может решать простейшие задачи
  • 50-60% = справляется с базовой арифметикой
  • 70-80% = хорошие навыки пошагового решения
  • 85%+ = уровень специализированных моделей

TruthfulQA (правдивость) Содержит вопросы-ловушки и распространенные заблуждения.

Особенности интерпретации:

  • 30-40% = типичный результат для больших моделей
  • 50%+ = хорошая калибровка между знанием и уверенностью
  • 60%+ = отличные результаты (сложно даже для топ-моделей)

Парадокс: более “умные” модели часто показывают худшие результаты, так как генерируют правдоподобные, но ложные ответы вместо честного “не знаю”.

HumanEval (программирование) Генерация Python функций по описанию с проверкой через автотесты.

Уровни навыков:

  • 10-20% = может генерировать синтаксически корректный код
  • 30-50% = решает простые алгоритмические задачи
  • 60-70% = хороший уровень для помощи в программировании
  • 80%+ = близко к экспертному уровню

📊 Свежие результаты кодинга: BigCode Leaderboard

Практические рекомендации по анализу бенчмарков

Смотреть на профиль, не на одну цифру - модель может быть сильной в математике (GSM8K 85%), но слабой в программировании (HumanEval 45%). Выбор делать под свои задачи.

Учитывать размер модели - модель 7B с 65% MMLU может быть практичнее модели 70B с 75% для ваших ресурсов.

Учитывать переобучение на бенчмарках - новые модели могли “видеть” эти тесты во время обучения. Всегда дополнительно тестировать на своих данных.

Обращать внимание на соотношения - если модель показывает 90% на MMLU, но 30% на TruthfulQA, она может “галлюцинировать” факты с высокой уверенностью.

Тестировать самостоятельно - создать набор из 10-20 задач для своей области и сравнить кандидатов на реальных примерах.

Decision Framework: как выбрать модель

Как подойти к выбору модели

Фильтр 1: Технические ограничения Оценить доступные вычислительные ресурсы:

  • <8GB RAM → модели 1-3B класса
  • 8-16GB RAM → модели 7-8B класса
  • 32GB+ RAM → модели 13-70B класса
  • Есть GPU → приоритет VRAM, рассмотреть квантизацию
  • Требования к скорости inference → меньшие модели или специализированные форматы

Фильтр 2: Тип задачи Выбрать архитектуру под вашу основную задачу:

  • Генерация (чат, контент, код) → Decoder-only модели
  • Анализ/классификация → Encoder модели
  • Преобразование текста → Encoder-Decoder модели
  • Мультимодальные задачи → специализированные мультимодальные модели

Фильтр 3: Требования к качеству Определить минимально приемлемый уровень:

  • Базовые задачи, прототипы → модели 7B класса достаточно
  • Сложные рассуждения, продакшн → модели 13B+ класса
  • Критически важные задачи → модели 70B+ класса или API решения
  • Экспериментальные задачи → можно начать с меньших моделей

Фильтр 4: Специализация Учесть особенности вашей области:

  • Код → Code-специализированные модели
  • Многоязычность → модели с качественной поддержкой вашего языка
  • Безопасность и этика → модели с RLHF обучением
  • Научные задачи → модели, показывающие хорошие результаты на ARC
  • Конкретная предметная область → поищите fine-tuned варианты

Базовый чек-лист факторов

Технические факторы:

  • Размер контекстного окна подходит для ваших данных
  • Поддерживаемые языки включают нужные
  • Формат модели совместим с вашей инфраструктурой
  • Производительность соответствует требованиям

Правовые и этические факторы:

  • Лицензия позволяет планируемый тип использования
  • Нет ограничений на область применения
  • Модель прошла фильтрацию на безопасность

Практические факторы:

  • Есть документация и примеры использования
  • Активное сообщество и поддержка
  • Доступны файн-тюнинг инструменты при необходимости

Как создать собственную систему оценки

Шаг 1: Определить критические метрики для вашей области

  • Создать тестовый набор из 20-50 примеров реальных задач
  • Включить edge cases и сложные сценарии
  • Определить критерии оценки качества ответов

Шаг 2: Сравнить 2-3 кандидата

  • Выбрать модели разных размерных классов
  • Протестировать на одинаковых промптах
  • Измерить не только качество, но и скорость отклика

Шаг 3: Учесть практические аспекты

  • Стоимость inference (для API) или требования к железу
  • Простота интеграции в существующую систему
  • Возможности кастомизации и дообучения

Частые ошибки при выборе

“Больше ≠ лучше” - модель 70B не всегда лучше модели 7B для конкретной задачи. Иногда специализированная маленькая модель работает лучше универсальной большой.

Игнорирование бенчмарков специализации - высокий MMLU не гарантирует хорошую генерацию кода. Лучше смотреть релевантные метрики.

Недооценка инфраструктурных требований - следует учитывать не только размер модели, но и скорость inference, особенно для продакшена.

Выбор по хайпу - новейшая модель не всегда лучший выбор. Проверенные модели часто надежнее для продакшена.

Игнорирование лицензий - некоторые модели имеют ограничения на коммерческое использование или требуют особых условий распространения.


Полезные ресурсы

Актуальные бенчмарки и рейтинги:

Технические ресурсы:

Образовательные материалы:

Инструменты для сравнения:

0%