Обычной отправной точкой для проекта в области ИИ является выбор наиболее мощной доступной модели и применение ее к любой задаче. Это работает в прототипе. В продакшене это одновременно упирается в три ограничения: стоимость, задержку и контроль над данными. Решение заключается в том, чтобы перестать относиться к вашей ИИ-системе как к единой модели и передать ее узкие этапы малым языковым моделям.
Малая языковая модель (SLM) — это компактная языковая модель, обычно имеющая от десятков миллионов до примерно 10 миллиардов параметров, созданная или обученная для выполнения узких задач, таких как классификация, маршрутизация или извлечение данных, быстрее и дешевле, чем большая языковая модель.
Эта публикация продолжает нашу статью о моделях с открытыми весами и задает следующий вопрос: как только они у вас есть, как объединить малые и большие модели для достижения результатов передового уровня?
Что такое малая языковая модель?
Малая языковая модель достаточно компактна, чтобы недорого работать на скромном железе, и достаточно специализирована, чтобы хорошо выполнять одну работу. Четкого ограничения нет. Исследователи из NVIDIA определяют SLM как модель, которая помещается на обычном потребительском устройстве и отвечает достаточно быстро, чтобы обслуживать агент одного пользователя на практике, и отмечают, что по состоянию на 2025 год они отнесли бы к ним большинство моделей с числом параметров менее 10 миллиардов.
Большинство таких моделей не пишут текст. Они выводят метку, оценку или ответ «да/нет». Именно поэтому они намного легче большой языковой модели (LLM).
Понятие «малая» по-прежнему охватывает широкий диапазон. Модель встраивания all-MiniLM-L6-v2 имеет около 23 миллионов параметров, Qwen3-Embedding-0.6B — около 600 миллионов, а Qwen3-Reranker-8B — около 8 миллиардов.
Малые модели — это не новшество
До того как генеративные модели захватили рынок, большая часть языкового ИИ строилась из малых моделей, ориентированных на конкретные задачи, и deepset создала многие из них. Наша модель вопросных ответов roberta-base-squad2 имеет около 125 миллионов параметров и выполняет одну работу: поиск фрагмента текста, отвечающего на вопрос, и ее по-прежнему скачивают сотни тысяч раз в месяц. Несколько поколений передовых моделей не вытеснили ее, и в этом урок: когда этап узок и хорошо определен, малая модель, которая выполняет его точно и дешево, остается разумным выбором задолго до появления более крупных моделей.
Ее дистиллированный аналог, tinyroberta-squad2, работает вдвое быстрее при сопоставимом качестве.
Изменилась не сама идея. Изменилась комбинация: малые модели теперь работают бок о бок с LLM в рамках одной системы, и каждая выполняет ту работу, в которой она сильна.
Малые языковые модели против LLM: в чем разница?
Разница между SLM и LLM сводится к масштабу: LLM — это универсал, способный рассуждать, планировать и писать практически о чем угодно, в то время как малая языковая модель выполняет одну узкую задачу за малую долю стоимости и с меньшей задержкой.
- Размер: SLM имеют от десятков миллионов до примерно 10 миллиардов параметров. Крупные LLM с открытыми весами гораздо масштабнее: у DeepSeek-V3 в общей сложности 671 миллиард параметров, а Llama 3.1 выпускается в версии с 405 миллиардами параметров.
- Вывод: большинство SLM возвращают метку, оценку или короткий фрагмент текста. LLM генерируют текст свободного формата.
- Стоимость за вызов: SLM достаточно дешева, чтобы запускаться при каждом запросе. LLM требует больше вычислительных ресурсов на один вызов, поэтому каждый вызов обычно обходится дороже, а агенты умножают количество вызовов: Anthropic reported отмечает, что агенты используют примерно в 4 раза больше токенов, чем чат, а мультиагентные системы — примерно в 15 раз больше. Если каждый из этих вызовов направляется к наибольшей модели, затраты и время отклика возрастают пропорционально.
- Задержка: SLM отвечают достаточно быстро, чтобы находиться перед каждым запросом. Более крупная модель выполняет больше вычислений для каждого производимого токена, поэтому каждый шаг LLM обычно занимает больше времени.
- Где они работают: SLM помещаются на скромном железе, которым вы управляете. Крупные модели с открытыми весами требуют мощных графических процессоров, а закрытые передовые модели работают на инфраструктуре провайдера.
- В чем их слабость: SLM испытывают трудности за пределами задачи, для которой они были обучены. LLM также работают с повторяющимися задачами, но за каждый вызов вы платите универсальную цену и ждете универсальное время.
Последний пункт является наиболее затратным. Как отмечается в статье о затратах на корпоративный ИИ, многие компании «используют модели уровня PhD для задач уровня стажера». Модели с открытыми весами решают проблему контроля, но они решают проблему стоимости и производительности только тогда, когда вы используете их с умом.
Когда LLM все же побеждает
Используйте большую модель, если задача носит открытый характер, редка или имеет низкий объем:
- Задача носит открытый характер. Сложные рассуждения, многошаговое планирование или творческий синтез из множества источников.
- Запросы редки или непредсказуемы. Для обучения малой модели нужны примеры. Если каждый запрос уникален, в нем нет паттерна для обучения.
- Низкий объем. Тонкая настройка и хостинг модели имеют первоначальные затраты. Эмпирическое правило гласит: если этап запускается всего несколько десятков раз в день, передовая модель вполне может оказаться дешевле в целом.
Даже авторы из NVIDIA отмечают, что экономика «крайне специфична для каждого конкретного случая» и что LLM сохраняют значительные преимущества в сложных многошаговых задачах. Лучшие системы являются смешанными: малые модели справляются с рутинной работой, а крупные модели берут на себя сложные случаи.
Каковы примеры малых языковых моделей?
Примеры малых языковых моделей включают Phi-4-mini, Qwen3-4B, Gemma 3 и SmolLM3 для генерации текста, ModernBERT для классификации, а также Qwen3-Embedding и BGE-M3 для поиска. Они выпускаются в нескольких типах, каждый из которых соответствует определенному этапу в ИИ-системе.
С какими этапами может справиться малая языковая модель?
С большинством из них. Приложение ИИ представляет собой последовательность этапов с разными требованиями, и обычно лишь немногие из них нуждаются в большой модели. Типичный процесс поиска и ответа:
- Понять запрос с помощью классификатора: это вопрос, жалоба или заказ?
- Решить, куда его направить с помощью маршрутизатора: простой поиск или сложный анализ?
- Найти нужную информацию с помощью модели встраивания и ранжировщика.
- Сформулировать ответ на основе собранных данных, что требует возможностей рассуждения большой модели.
- Проверить ответ с помощью верификатора: подтвержден ли он источниками и безопасно ли его отправлять?
Только этап 4 явно требует большой модели. Остальные являются узкими, повторяющимися и четко определенными.
Каждая ИИ-система балансирует между качеством, стоимостью и задержкой, и команды часто воспринимают этот баланс как фиксированный: если вам нужно качество, вы платите за большую и медленную модель. Но если у каждого этапа разные потребности, этот компромисс можно согласовывать шаг за шагом.
Пример: представьте рабочий процесс, в котором на одном этапе каждый входящий документ отправляется большой модели с одним и тем же промптом: «Классифицируйте этот документ как счет, контракт, претензию или другое. Ответьте одним словом». Промпт никогда не меняется, а на выходе получается одна из четырех меток. Этот этап не нуждается в генеративных способностях LLM.
Малый классификатор, обученный на размеченных примерах ваших документов, может обеспечить необходимое качество за малую долю стоимости и работать на инфраструктуре, которую вы контролируете. Так ли это на самом деле, проверяется для каждого рабочего процесса отдельно.
Исследователи NVIDIA отмечают, что в трех популярных опенсорсных агентских фреймворках примерно 40–70% вызовов LLM могут обрабатываться малыми моделями. Они назвали малые модели «достаточно мощными, по своей сути более подходящими и неизбежно более экономичными» для многих агентских задач. Это собственные оценки авторов, а не измеренные результаты, но даже нижняя граница будет означать, что четыре вызова из десяти могут быть перенесены с передовых ценников.
Примеры малых языковых моделей по типам
Большинство из них — это модели с открытыми весами на Hugging Face, а таблица лидеров MTEB независимо сравнивает модели встраивания (embedding models).
Прежде чем делать выбор, проверьте лицензии. Открытые веса не всегда означают коммерческое использование: например, jina-embeddings-v3 выпускается под лицензией CC BY-NC 4.0, которая является некоммерческой.
Что такое обвязка (harness engineering) и какое место в ней занимает RAG?
Обвязка (harness engineering) — это «дисциплина проектирования систем, ограничений и контуров обратной связи, которые окружают ИИ-модель, чтобы сделать ее надежной в продакшене». RAG — это одна из частей такой обвязки: та часть, которая предоставляет модели необходимые ей факты. Малые языковые модели могут использоваться практически в каждой ее части, а одна из частей — маршрутизация — определяет, какая модель обрабатывает тот или иной шаг.
Компоненты обвязки и роль малых моделей
- Инженерия контекста определяет, что модель видит на каждом шаге: инструкции, примеры, историю и определения инструментов. Малая генеративная модель может переписать расплывчатый запрос перед поиском.
- Извлечение (RAG). Дополненная извлечением генерация (RAG) ищет в ваших документах во время запроса и добавляет лучшие фрагменты в промпт, чтобы модель отвечала на основе ваших данных без переобучения. Исследование, сравнивающее извлечение с дообучением, показало, что извлечение неизменно справлялось с добавлением знаний лучше как для информации, которую модель уже видела ранее, так и для совершенно новой информации. Сам поиск выполняется на малых моделях: модель встраивания находит кандидаты, а ранжировщик выбирает лучший.
- Маршрутизация определяет, какой путь и какая модель обрабатывают каждый запрос. Это маршрутизация LLM, и в качестве маршрутизатора обычно выступает небольшой классификатор.
- Проверки и верификация тестируют каждый вывод перед тем, как он передается дальше: является ли он обоснованным, безопасным и имеет ли правильный формат? Верификаторы обоснованности и безопасности — это малые модели, а неудачная проверка может инициировать повторную попытку.
- Инструменты и память позволяют системе действовать и запоминать: инструменты вызывают поиск, API или другие конвейеры, а память сохраняет факты между сеансами. Выбор следующего инструмента — это задача с открытым концом для рассуждений, поэтому большую модель обычно оставляют для этой работы.
Какой рычаг следует задействовать в первую очередь?
Думайте о рычагах как о лестнице, начиная с наименьших усилий:
- Лучшие инструкции и контекст. Инженерия контекста определяет, что попадает в промпт: четкие инструкции, хорошие примеры и правильные данные. Это недорого, хотя более длинные промпты увеличивают затраты и задержки.
- Извлечение. Если модель путает факты, предоставьте ей факты во время запроса.
- Маршрутизация и проверки. Разбейте задачу на шаги, направьте запросы по правильному пути и добавьте верификацию с повторными попытками.
- Внедрение малой модели. Как только шаги станут понятны, поручите узкие задачи малым моделям, подобным тем, что приведены в таблице выше.
- Дообучение (Fine-tuning). Если малая модель близка к нужным результатам, но все еще недостаточно хороша, дообучите ее на примерах вашей задачи. Дообучение — это один из видов пост-обучения, общего термина для всего обучения после создания первой версии модели. Дистилляция, о которой речь пойдет далее, использует выходы большой модели в качестве таких обучающих данных.
Возникает искушение сразу перейти к рычагу 5. Начните с низов: рычаги 1–3 обходятся дешевле, и они облегчают применение рычагов 4 и 5, поскольку задача уже хорошо определена.
Как настроить малую языковую модель: дообучение, дистилляция или и то, и другое?
Вы настраиваете малую языковую модель путем ее дальнейшего обучения на примерах вашей задачи, размеченных вами (дообучение) или созданных более крупной моделью (дистилляция). Каждый вариант меняет что-то свое:
- Промптинг и контекст меняют то, что видит модель; веса остаются прежними.
- Извлечение меняет то, что модель знает во время запроса; веса остаются прежними.
- Дообучение меняет веса с использованием примеров входных данных и желаемых результатов.
- Пост-обучение — это общий термин для всего обучения после создания первой версии модели, включая дообучение.
- Дистилляция — это дообучение, при котором большая модель-«учитель» производит обучающие данные.
Первые два пункта — это изменения обвязки. Последние три меняют саму модель: верхняя ступень лестницы.
Дообучение против RAG: когда дообучение оправдано?
Дообучайте модель, когда она знает факты, но продолжает ошибаться в самой задаче; используйте извлечение, когда ей не хватает фактов. Полезное эмпирическое правило: извлекание дает модели знания, а дообучение прививает ей привычки.
Дообучение оправдано, когда модель постоянно ошибается в формате, тоне или поведении, либо когда вы выполняете одну и ту же узкую задачу в больших объемах. Оно не имеет смысла при отсутствии или изменении фактов: закладывание фактов в модель означает ее переобучение каждый раз при их изменении.
Кроме того, оно стало более доступным, чем раньше. LoRA (low-rank adaptation, низкоранговая адаптация) обучает небольшое дополнение вместо всех параметров модели, а в QLoRA было показано дообучение модели с 65 миллиардами параметров на одном графическом процессоре с 48 ГБ памяти. Пошаговое руководство см. в нашем руководстве по дообучению LLM.
Что такое дистилляция моделей?
Дистилляция моделей — это обучение малой модели-«ученика» на выходах большой модели-«учителя», благодаря чему ученик учится выполнять задачу учителя при значительно меньшем размере. Эта идея была формализована Хинтоном (Hinton), Виньяльсом (Vinyals) и Дином (Dean) и представляет собой самый прямой путь от работающего прототипа LLM к малой языковой модели в продакшене.
DistilBERT сократила размер BERT на 40%, сохранив 97% его языкового понимания и увеличив скорость работы на 60%. Исследователи Google showed обучили модель с 770 миллионами параметров таким образом, что она превзошла модель с 540 миллиардами параметров на контрольной задаче (бенчмарке), превосходя ее по размеру более чем в 700 раз.
Исследователи NVIDIA описывают практический рецепт для агентов:
- Логируйте вызовы моделей вашего агента.
- Группируйте их в повторяющиеся задачи.
- Выберите малую модель для каждой задачи.
- Дообучите ее на залогированных данных.
Два предостережения:
- Проверьте условия использования вашей модели-учителя. Например, правила OpenAI гласят, что вам запрещено «использовать Выходные данные (Output) для разработки моделей, конкурирующих с OpenAI». Использование модели с открытыми весами в качестве учителя позволяет избежать этой проблемы.
- Дообученные модели не переносятся автоматически. Дообученная модель или LoRA-адаптер привязаны к базовой модели, на которой они обучались, поэтому при переходе на новую базовую модель обучение приходится повторять. Что действительно переносится, так это ваши обучающие данные, тестовый набор и обвязка. Рассматривайте их как ценные активы, а саму модель — как заменяемый компонент.
Как узнать, достаточно ли хороша малая языковая модель?
Вы тестируете ее на собственной задаче до того, как от нее начнет зависеть рабочий трафик (продакшн). Создайте тестовый набор на основе вашей реальной задачи: реальные входные данные с ожидаемыми результатами, включая сложные граничные случаи. Для начала обычно достаточно нескольких сотен удачно выбранных примеров, а со временем набор можно расширять.
Тестовый набор выполняет три функции:
- Он показывает, достаточно ли хороша меньшая модель для конкретного шага.
- Он показывает, какая ступень лестницы помогла. Улучшило ли ситуацию качественное извлечение или потребовалось дообучение?
- Он позволяет безопасно менять модели. Когда выходит более качественная или дешевая модель с открытыми весами, запустите ее на том же тестовом наборе. Если она проходит тесты, замените ее.
Тестовый набор работает только в том случае, если остальная часть системы остается стабильной по отношению к заменяемым моделям. Этот стабильный слой и есть обвязка, и именно для нее созданы Haystack и Haystack Enterprise Platform.
Как использовать малые языковые модели и LLM для создания готовой к продакшену ИИ-системы с помощью Haystack?
Вы создаете обвязку (harness) в виде пайплайна, где каждый шаг представляет собой компонент с собственной моделью. Haystack, открытый фреймворк от deepset, содержит компонент для каждой части этой обвязки:
- Контекст: ChatPromptBuilder объединяет инструкции, историю и извлеченные документы в промпт.
- Поиск (Retrieval): ритриверы извлекают документы, а эбеддеры и рангеры могут запускать небольшие модели локально.
- Маршрутизация: роутеры, такие как ConditionalRouter (направляет потоки по заданным вами условиям) и TransformersTextRouter (направляет на основе метки небольшого классификатора).
- Проверки: пайплайны могут работать в цикле с заданным лимитом повторов, поэтому валидатор может отправить ответ обратно генератору для исправления.
- Инструменты и память: компонент Agent позволяет LLM вызывать инструменты в цикле, сохраняя состояние между вызовами до наступления условия выхода.
Haystack Enterprise Platform, созданная на базе Haystack, добавляет визуальный конструктор, управляемый деплоймент, наблюдаемость, контроль доступа и варианты корпоративного развертывания. Ее индексы подготавливают файлы для поиска единожды и могут повторно использоваться в разных пайплайнах, а инструментами агента могут быть пайплайны, функции на Python, серверы MCP или память Mem0.
Платформа не привязана к конкретным моделям: вы можете использовать модели от OpenAI, Anthropic, Google, Amazon Bedrock, Mistral, NVIDIA и других, подключать модели Hugging Face или использовать модели собственного хостинга, а также применять определения пользовательских моделей в разных пайплайнах. Вы можете развернуть платформу самостоятельно в приватном облаке, локально (on-premises) или в закрытом контуре (air-gapped), чтобы файлы, хранилища документов и модели оставались в контролируемой вами инфраструктуре. В изолированных средах вы самостоятельно размещаете свои LLM, а также модели эмбеддингов и ранжирования, и именно здесь небольшие модели приносят максимальную пользу.
Для оценки качества функция Pipeline Evaluation (на этапе бета-тестирования) оценивает реальные сеансы с помощью проверок кодом или метрик на основе LLM-судьи (LLM-as-a-judge), а функция Candidate and Baseline Experiment запускает новую версию пайплайна (например, с меньшей моделью) в сравнении с текущей на одних и тех же тестовых сценариях. AI Operator оценивает службу, опубликованную через Gateway (обе функции находятся в бета-версии), измеряет ее стоимость и качество в сравнении с заданным вами экспериментом и предлагает более дешевые конфигурации при сохранении того же качества — а вы решаете, применять ли их.
Что ждет небольшие языковые модели в будущем?
Модели будут продолжать меняться, но то, как вы строите архитектуру вокруг них, не обязательно должно меняться. Релизы из нашей статьи об открытых весах устареют, как и описанные выше небольшие модели.
Именно поэтому набор тестов важнее любой модели. Команды со стабильной обвязкой, стабильным тестовым набором и возможностью заменять модели могут внедрять каждое новое улучшение по мере его появления, вместо того чтобы перестраивать всё заново.
Вам не нужна передовая модель (frontier model) для каждого шага. ИИ-система представляет собой цепочку шагов, поэтому качество, стоимость и задержку можно настраивать шаг за шагом: небольшие языковые модели берут на себя узкую, повторяющуюся работу по классификации, маршрутизации, ранжированию и проверке, а крупные модели — открытые рассуждения. Используйте сначала дешевые рычаги и оценивайте каждое изменение на основе ваших собственных задач.
Часто задаваемые вопросы
Что такое маршрутизация LLM?
Маршрутизация LLM направляет каждый запрос к модели, которая лучше всего для него подходит — например, простые вопросы к небольшой модели, сложные к большой, а нерелевантные вопросы — к вежливому отказу. Сам роутер обычно представляет собой небольшую модель, такую как Arch-Router, или классификатор, обученный на ваших собственных маршрутах.
Является ли небольшая языковая модель более дешевой, чем LLM?
При каждом вызове — практически всегда, поскольку она меньше и часто работает на более дешевом оборудовании. В целом это зависит от объемов: тонкая настройка и хостинг имеют первоначальные затраты, поэтому для задачи, которая выполняется редко, передовая модель все равно может обойтись дешевле.
Являются ли небольшие языковые модели открытым исходным кодом?
Многие из них выпускаются как модели с открытыми весами на Hugging Face, но лицензии различаются. Некоторые из них, например , не предназначены для коммерческого использования, поэтому проверяйте каждую лицензию перед использованием модели в продакшене.
Может ли небольшая языковая модель полностью заменить LLM?
Вряд ли. Небольшие модели сильны в узких, повторяющихся задачах и слабы за их пределами, поэтому большинство производственных систем сочетают оба подхода: небольшие модели для рутинных шагов и крупную модель для нетривиальных рассуждений.








.png)
.png)
