Как я за выходные научил ИИ материться по команде, а потом превратил его в кота

Лонгрид про то, как ломается крошечная LLM, почему «первый токен решает всё», и как метрика дважды наврала мне в лицо

Лонгрид про то, как ломается крошечная LLM, почему «первый токен решает всё», и как метрика дважды наврала мне в лицо

Построили модерацию для открытой анонимной мультиязычной стены — дешёвый каскад (regex → классификатор → LLM-судья → fallback), ≈$0 на API. И кто-то попытался обойти его ROT13-джейлбрейком, LLM-судья раскусил закодированную инъекцию, которую keyword-фильтр бы пропустил. Разбор архитектуры, экономики и того, что спросил r/selfhosted.

Запустил pinock.io — бесплатную ленту AI-генерации животных в стиле советских спичечных коробков. Под капотом FLUX.2-klein + кастомная LoRA + двухпроходный «sandwich»-пайплайн.
Получил детальный технический комментарий на r/StableDiffusion с тремя претензиями. Сел и прогнал ablation: 5 вариантов пайплайна × 5 категорий × 3 сида = 75 картинок.
Нашёл дыры в собственном пайплайне — в том числе кириллицу прямо в выходе LoRA (training-set leakage) и полный коллапс LoRA при scale=2.0. Текущий sandwich оказался патчем поверх плохо обученной LoRA, а не правильным решением.
В статье — все картинки, цифры, и почему оба «правильных» совета критика на текущей модели не сработали. Плюс план переобучения на 1500-датасете.