config = LoraConfig(r=16, lora_alpha=32, target_modules=["q_proj", "v_proj"], lora_dropout=0.05, bias="none", task_type="CAUSAL_LM"); trainer = SFTTrainer(model=model, train_dataset=dataset, peft_config=config); trainer.train()Внешне — абсолютно стандартный сетап для файнтюна 7-миллиардной LLM через LoRA. Этот конфиг мы накатили на кластер A100, чтобы парсить неструктурированные спецификации от поставщиков железа в эталонную номенклатуру. Что здесь не так? С гиперпараметрами всё отлично. Проблема в том, что этого кода вообще не должно было существовать.
Именно так начинается типичная история про то, как мы слили 2 месяца и GPU-бюджет на fine-tune модели, которую заменили 20 строками правил: когда не нужно дообучать модель, её всё равно тащат в продакшен. Задача казалась сложной: тысячи кривых наименований, сокращения, опечатки. Внутренняя ML-команда завелась мгновенно: развернём LLaMA, дообучим на исторических логах, получим state-of-the-art инференс без облаков. Звучит солидно. Инвесторам продаётся на ура.
Смета факапа оказалась предельно конкретной. Аренда железа 8xA100 на сером рынке РФ 2026 года под эксперименты и финальный ран — 1.8 млн рублей. Зарплата двух сеньоров за два месяца — ещё около 1.6 млн. Итог: 3.4 миллиона рублей ради того, чтобы выкатить тяжелый пайплайн, который намертво резервирует память и даёт 87% Exact Match на тестовой выборке.
Прозрение случилось за день до деплоя. Бекендер, уставший ждать медленный эндпоинт, от скуки накидал fallback-механизм: словарь синонимов, дистанция Левенштейна и жёсткий regexp на извлечение артикулов. 20 строк на Python.
Скрипт отработал за 40 миллисекунд на одном ядре CPU. Exact Match составил 86.5%.
Дельта в 0.5% — это статистический шум. Мы сожгли время и железо ради прироста, который лежит в пределах доверительного интервала.
Когда не нужно дообучать модель: ловушка стимулов и экономика TCO
Почему мы вообще полезли в LLM? Из-за системной ловушки стимулов. Никто в индустрии не награждает за регекспы. Внутренние разработчики хотят «крутой стек», чтобы повысить капитализацию резюме. Подрядчики — чтобы раздуть чек. Выбрать fine-tune или правила для многих интеграторов больше не вопрос: нейронка — это 1000 часов по рейту сеньора, а эвристика — день работы. Индустрия построена на том, чтобы продавать оверинжиниринг ML под видом цифровой трансформации.
Суровая реальность такова, что стоимость дообучения модели — это только аванс. Дальше бьёт TCO (Total Cost of Ownership). Добавьте сюда постоянный жор GPU на инференсе: в реалтайме LLM не бывает бесплатной, на ребре нагрузки (p99) генерация токенов упирается в пропускную способность памяти, и вам приходится масштабировать кластер. Плюс версионирование датасетов и неизбежный дрейф данных. Если у вас изменился формат артикулов, в правиле вы меняете один паттерн. С нейронкой вы собираете новый датасет и перезапускаете пайплайн.
Модель оправдана только тогда, когда цена ошибки критически высока, частота обновления логики минимальна, а данных столько, что правила начинают ломаться под собственным весом. Во всех остальных случаях сначала пишется тупой детерминированный код.
5 маркеров: нужен ли ИИ для задачи
Как понять, что команда пилит хайп за ваши деньги? Вот 5 признаков того, что вам впаривают оверинжиниринг там, где он противопоказан:
- Нет дешевого baseline. Если вам предлагают нейросеть, но до этого никто не пробовал решить задачу словарями, бустингом на табличке (LightGBM/CatBoost) или классической эвристикой — вас разводят.
- Игнорируется статзначимость. Прирост метрики подаётся как абсолют: «Модель даёт 92%, а правило 89%». При объёме тестовой выборки в 200 строк разницы между ними нет вообще.
- TCO инференса съедает выгоду. Если содержание локального GPU-сервера для разбора чеков стоит дороже, чем зарплата десяти операторов в регионах, ИИ здесь не нужен.
- Логика бизнеса меняется быстрее, чем переобучается модель. Если правила игры обновляются раз в неделю, ML-команда будет вечно догонять реальность.
- Требуется 100% интерпретируемость. Модель — это вероятностная машина. Если вам нужно железно объяснить аудитору, почему заявка отклонена на конкретном этапе бизнес-процесса, LLM вам только навредит.
У нас в Morana Labs процесс устроен иначе. Пресейл-аудит часто начинается с того, что мы сами отговариваем клиента от нейронок и режем смету. Если задачу можно закрыть табличным ML или регуляркой за неделю — мы сделаем это и пойдём дальше. Индустриальный ИИ катится в бой только там, где детерминированные алгоритмы гарантированно захлёбываются, а дельта точности бьёт бейзлайн настолько, что кратно перекрывает косты на железо. Всё остальное — это карго-культ, за который платит бизнес.