TGViewer
Data Science | Machinelearning [ru] Data Science | Machinelearning [ru] @devsp · 19.8K subscribers
Post #5689 1.59K
⁣Мониторинг и отладка "тихого" дрейфа токенов в LLM-пайплайнах: частотный анализ эмбеддингов без ground truth

LLM-пайплайн внезапно начинает выдавать странные ответы, хотя accuracy не падает и latency не растет. Стандартные метрики молчат, а responses становятся откровенно левыми. Часто виновник — "тихий" дрейф токенов: незаметное смещение распределения эмбеддингов без ground truth. Причины: обновили модель, сменили токенизатор, или входные данные тихо уехали в сторону.

Спектральный анализ эмбеддингов через FFT

Один из рабочих подходов — спектральный анализ без разметки, только статистика. Собираю эмбеддинги из production логов (каждый запрос — вектор 768 или 1024 размерности). Снижаю размерность до 50–100 компонент через PCA — не ради визуализации, а чтобы убрать шум и оставить главное. Для каждой компоненты считаю FFT — получаю спектр мощности. Мониторю сдвиг пиковых частот: например, смотрю отношение энергии в низких частотах (0.1–0.3 Гц) к высоким. В стабильном состоянии спектр держит паттерн: 60% энергии на низких частотах. После обновления пик смещается на 0.5 Гц — это сигнал.

import numpy as np
from scipy.fft import fft

def detect_drift(embeddings_batch, baseline_spectrum, threshold=0.15):
avg_embed = np.mean(embeddings_batch, axis=0)
spectrum = np.abs(fft(avg_embed))[:len(avg_embed)//2]
spectrum = spectrum / np.sum(spectrum)
diff = np.abs(spectrum - baseline_spectrum)
drift_score = np.max(diff)
return drift_score > threshold


Настройка порога и типичная ошибка

Порог подбираю эмпирически: по 95% перцентилю на исторических данных за последнюю неделю или месяц. Метод не требует разметки — только логи эмбеддингов. Но это не серебряная пуля: если дрейф идет плавно, порог придется пересчитывать. Типичная ошибка — считать FFT на полной размерности эмбеддингов без PCA. Шум забивает сигнал, и порог становится бесполезным. Практический совет: проверяйте токенизатор при срабатывании — сравните tokenizer.encode("test") до и после обновления, или смотрите распределение OOV-токенов. Часто причина в изменении частоты редких токенов: Unicode, спецсимволы, эмодзи, которые модель раньше видела редко.

Trade-offs и инженерные ограничения

Метод дешев вычислительно (O(n log n) на батч) и подходит для real-time мониторинга, но не дает ответа "что именно сломалось". Это индикатор для MLOps: сигналит "иди проверь" до того, как пользователи начнут писать в саппорт. Главный trade-off — чувствительность к размеру батча: слишком маленький batch (менее 10 запросов) дает ложные срабатывания из-за шума, слишком большой (более 1000) — задерживает обнаружение на часы. Для production выбираю batch в 50–100 эмбеддингов и частоту проверки раз в минуту.

Вывод: Спектральный анализ эмбеддингов через FFT с PCA-редукцией — дешевый и безразметочный метод для детекции "тихого" дрейфа токенов в LLM-пайплайнах, критически важный до появления жалоб пользователей.
  • ❤ 3
  • 🔥 3
  • 👍 1
More from @devsp
  1. Sep 27, 2026Нейронка живёт у тебя дома — а дотянуться до неё можно откуда угодно Поднимаешь личный LLM…
  2. Sep 27, 2026Нейрочип НТЦ «Модуль»: единственный серийный в стране Разбор единственного серийного нейро…
  3. Sep 27, 2026[Перевод] Промпт-инжиниринг: как лучше общаться с ИИ Что тебе ответит генеративная модель…
  4. Sep 26, 2026Тем, кто только лезет в ML Начинаешь щупать машинное обучение и хочешь нормально въехать в…
  5. Sep 26, 2026NVIDIA тоже подтянулась к тренду: LeetCode-собесы — на выход И весь замес — вокруг трёх те…
  6. Sep 26, 2026От готовых реплик до памяти о контексте: как AI-чаты дошли до нынешнего уровня В первой ча…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →