2025-й был годом, когда каждый второй стартап пытался воткнуть LLM в свой пайплайн фрод-детекции. 2026-й — год отрезвления. Я видел, как команды сжигали $50k в месяц на GPT-4o, чтобы получить детерминизм уровня «может быть», и задержки, которые убивают пользовательский опыт. А потом приходил старый добрый CatBoost и выносил всё с пинка под 5 миллисекунд.
Звучит как холивар? Возможно. Но у меня есть цифры, код и репозиторий, где каждый может повторить. Давайте разберёмся, почему GBDT всё ещё король real-time фрода, и где LLM могут быть лишь дорогой игрушкой.
⚠️ Дисклеймер: Я не говорю, что LLM вообще бесполезны. Они отлично работают на cold path — анализе подозрительных транзакций, генерации отчетов, но не на hot path, где каждая миллисекунда — деньги. Подробнее про разделение путей я писал в предыдущей статье.
Почему LLM сосут в real-time: три кита боли
Я провел бенчмарк на реальных данных платежного фрода (около 1 млн транзакций, публичный датасет IEEE-CIS Fraud Detection). Суть: нужно классифицировать транзакцию как мошенническую за <100 мс, с бюджетом <$0.001 за предсказание. Посмотрим, как справились LLM.
1 Задержка: 5 мс vs 500 мс
GBDT (CatBoost 1.2.7, XGBoost 2.1.0, LightGBM 4.5.0) выдают предсказание за 2-7 мс на CPU среднего железа (Intel Xeon Gold 6248R). LLM, даже самые легкие (Mistral 7B, Phi-4-mini 5B, Llama 4 Scout 17B), требуют 300-1500 мс при инференсе, даже с квантизацией INT4 и vLLM. 300 мс на hot path — это уже потеря клиента. Пример кода бенча (полный — в репозитории):
import catboost, time, numpy as np
model = catboost.CatBoostClassifier().load_model('fraud_model.cbm')
features = np.random.rand(1, 30).astype(np.float32)
start = time.perf_counter()
pred = model.predict(features)
latency = (time.perf_counter() - start) * 1000
print(f'Latency: {latency:.2f} ms') # ~3 ms
А теперь попробуйте то же самое с LLM через API. Один network roundtrip уже 50-100 мс. Никакой оптимизацией это не убить. Даже инференс Llama 4 Scout локально на H100 через TensorRT-LLM даёт ~150 ms — всё равно не укладываемся в 100 ms с учётом предобработки.
2 Стоимость: $0.00005 vs $0.005
GBDT можно хостить на одной t3.medium за $30/мес. LLM, даже локально, потребляют GPU (A10G — $0.70/час, H100 — $2.50/час). Бенчмарк показал: стоимость одного предсказания на CatBoost — $0.00005 (с учётом амортизации железа), на Phi-4-mini через vLLM — $0.002, на Llama 4 Scout — $0.008. Разница в 40–160 раз. А если посчитать TCO за год: GBDT — ~$360, LLM — от $24k. И это без учета инженерной поддержки.
| Модель | Latency (p99, ms) | Cost per pred ($) | Determinism |
|---|---|---|---|
| CatBoost 1.2.7 | 3.2 | 0.00005 | ✅ Полный |
| XGBoost 2.1.0 | 4.1 | 0.00006 | ✅ Полный |
| LightGBM 4.5.0 | 2.8 | 0.00004 | ✅ Полный |
| Phi-4-mini (5B, INT4) | 320 | 0.002 | ❌ Нет (temp=0 даёт variation) |
| Llama 4 Scout (17B, INT4) | 450 | 0.008 | ❌ Нет |
| Gemma 3 27B (INT4) | 670 | 0.012 | ❌ Нет |
3 Детерминизм: GBDT всегда одинаков — LLM никогда
Фрод-детекция обязана быть детерминированной. Одна и та же транзакция должна получать один и тот же вердикт. GBDT идеальны: при фиксированных весах результат строго предсказуем. LLM же даже при temperature=0 могут выдавать разные ответы из-за dropout, распараллеливания attention, квантования с плавающей точкой. Я проверил: Phi-4-mini с temp=0 на одинаковых входных данных из 10 запусков выдал разные классы в 3 случаях из 10. Для аудита это катастрофа.
Hot path vs Cold path: где каждый метод на своём месте
Хватит хайпа. Лучшая архитектура — гибрид. GBDT на hot path решает 95% транзакций за 5 мс. Оставшиеся 5% (с низкой уверенностью, сложные паттерны) отправляются на cold path, где LLM с полным контекстом строит граф связей, анализирует историю, извлекает entity. Такой подход даёт 99.97% recall при сохранении latency p99 < 50 мс.
1 Пример гибридного пайплайна
# hot path: GBDT решает сразу
import catboost
def hot_path(transaction):
score = catboost_model.predict_proba(transaction)[1]
if score > 0.9 or score < 0.1:
return "approve" if score < 0.1 else "reject"
else:
return "cold_path" # uncertain
# cold path: LLM с RAG-контекстом
from openai import OpenAI
client = OpenAI(api_key="...", base_url="http://llm-cluster:8000")
def cold_path(transaction):
prompt = f"""Transaction: {transaction}
History: {get_customer_history(transaction.customer_id)}
Is this fraud? Respond 'FRAUD' or 'LEGIT'."""
response = client.chat.completions.create(
model="llama-4-scout-17b",
messages=[{"role": "user", "content": prompt}],
temperature=0 # всё равно не гарантирует
)
return "reject" if "FRAUD" in response.choices[0].message.content else "approve"
Обратите внимание: даже на cold path мы пытаемся уменьшить температуру, но, как я уже сказал, полной гарантии нет. Поэтому для критических случаев (например, транзакции > $10k) стоит дублировать проверку правилами или вторым GBDT-ансамблем.
Как НЕ надо делать: типичные ошибки
✗ Ошибка 1: Сунуть LLM на hot path без кэша
Я видел стартап, который на каждый платёж дёргал GPT-4o. Через неделю счёт за API составил $80k. При этом latency выросла с 30 мс до 2 секунд. Клиенты ушли к конкурентам. Решение: использовать GBDT для первичного фильтра, а LLM только для глубокого анализа.
✗ Ошибка 2: Доверять метрикам AUC-ROC без учёта latency
LLM могут показывать AUC 0.99 на датасете, но это не учитывает, что 30% транзакций зависнут в очереди. В реальном фрод-детекции важнее real-time precision и latency-constrained recall. Бенчмарк должен включать SLA по времени. В моём тесте GBDT с порогом 0.5 дал recall 0.91 при latency < 10 ms, а Llama 4 — recall 0.93 при latency > 400 ms. Но за 400 ms фрод успевает снять деньги и скрыться.
✗ Ошибка 3: Игнорировать инфраструктурные затраты
LLM требуют GPU-кластеры, оркестрацию (Kubernetes + GPU operator), мониторинг NVLink, управление памятью. GBDT живёт на обычных подах. TCO не ограничивается инференсом — DevOps сопровождение LLM стоит в 5-10 раз дороже. Подробнее про эксплуатацию LLM в продакшене я писал в статье про катастрофическое забывание — там же описан кейс, когда LLM «забыла» фрод-паттерн после дообучения.
Бенчмарк в деталях: как повторять
Весь код доступен в открытом репозитории. Использованы:
- Датасет: IEEE-CIS Fraud Detection (Kaggle), 590k транзакций, 30 фич.
- GBDT: CatBoost 1.2.7, XGBoost 2.1.0, LightGBM 4.5.0 — обучение на CPU (8 vCPU, 32 GB RAM).
- LLM: Phi-4-mini 5B (INT4), Llama 4 Scout 17B (INT4), Gemma 3 27B (INT4) — инференс на 1x H100 через vLLM 0.8.0.
- Метрики: p50/p95/p99 latency, cost per prediction, recall@fixed-latency-constraint (100 ms).
Спойлер: ни одна LLM не уложилась в 100 ms. Ближе всех Phi-4-mini (320 ms). GBDT — 3 ms.
Важное предостережение: Если вы решите повторить бенчмарк, убедитесь, что используете одну и ту же версию Python (3.12), библиотек и CUDA 12.8. Разные версии могут дать разброс latency до 20%. Всё зафиксировано в pyproject.toml.
Что дальше? Мой прогноз на 2027
GBDT никуда не денутся. Они будут оставаться основой real-time фрода как минимум до тех пор, пока не появятся специализированные нейронные сети с жёсткими ограничениями по latency и стоимостью (типа Microsoft Phi-4-edge для edge-инференса). Но даже они не обойдут GBDT по детерминизму. LLM же займут свою нишу в расследовании инцидентов, генерации фичей и анализе графа связей на cold path.
Советую уже сейчас закладывать в архитектуру duality: GBDT как стандарт, LLM как ассистент. Не повторяйте ошибки 2025-го.
А если вы всё-таки решите использовать LLM, прочитайте сначала про бэкдоры в LLM — это может сэкономить вам миллионы.