UADetox
Переписує образливі українські коментарі чемною літературною мовою і зберігає думку автора. Невеликий класифікатор вирішує, що переписати, а модель на 1,84 ГБ працює на звичайному процесорі.
Приклади
| Коментар | Переказ |
|---|---|
| Ти дебіл, закрий рота | Ти, добродію, помиляєшся, тож помовч-но краще. |
| Та йди ти нахуй зі своїми порадами | Та йди собі, чоловіче добрий, своєю дорогою зі своїми порадами. |
| Пиздець, а не дороги, мер тільки бабло пиляє | Ой лишенько, а не дороги, а мер, бач, тільки гроші розкрадає! |
| Дякую за новину, дуже корисно | Без змін: коментар не образливий. |
Результати
Частка добрих переказів на 1966 коментарях валідаційної вибірки. Як рахуємо — нижче.
| Модель | Розмір | Добрі, % | |
|---|---|---|---|
| Gemma 4 31B, донавчена, з підказкою стилю | 31B | 78,4 | |
| Gemma 4 31B, донавчена | 31B | 73,2 | |
| Gemma 4 26B-A4B, донавчена | 26B | 70,5 | |
| UADetox E2B, для пристрою | 2B | 59,5 |
Без донавчання Gemma 4 E2B дає лише близько 20% добрих переказів.
Як рахуємо
Кожен переказ оцінює LLM-суддя (DeepSeek V4.1 Flash). Він бачить лише коментар і переказ, без еталона, і позначає вади: лишилася образа, втрачено чи змінено зміст, мовні помилки, незграбність, брак літературності, надмірна стилізація.
Переказ добрий, якщо водночас:
- немає лайки чи образ;
- зміст не спотворено, а зі змістом і мовою разом щонайбільше одна дрібна вада;
- стиль бодай трохи літературний і не перевантажений.
Усі моделі оцінено на тих самих коментарях тим самим суддею з однаковими налаштуваннями. Метрика розрізняє якість: еталонні перекази отримують 91,6%, а незмінений коментар чи коментар із видаленою лайкою — близько 0%. Суддя суворіший за людину: на 95 оцінках автора він ставить «добре» приблизно на 15 пунктів рідше, тож наведені цифри радше занижені.
Як навчали
- SFT. LoRA-адаптер на близько 40 тисячах пар «коментар — літературний переказ». Запит — лише сам коментар, без інструкцій.
- Он-політична дистиляція з донавченої 31B. Модель генерує власні перекази, а 31B оцінює кожен їхній токен; модель навчається наближатися до вибору вчителя. Частка добрих не змінилася, але втрата змісту зменшилася на 4,9 п. [−7,2; −2,7].
- Навчання з урахуванням 4-бітного квантування. Адаптер навчали крізь точне округлення Q4_0 злитих ваг, тому злиття з QAT-вагами Gemma майже не шкодить якості.
- Скорочення словника з 262 до 88 тисяч токенів: українські, пунктуація та найчастіші латинські. Модель меншає з 3,35 до 1,84 ГБ і генерує швидше.
Також пробували DPO, відбір найкращих відповідей (RS-SFT), послідовнісну дистиляцію та продовжене передтренування. За правилами, заданими до запуску, приросту вони не дали.
Окремий адаптер чи злиття
| Збірка | Розмір | Генерація, ток/с | Добрі, зміна |
|---|---|---|---|
| Google Q4_0 + окремий LoRA | 3,35 + 0,19 ГБ | 14,5 | −0,3 [−2,3; +1,8] |
| LoRA злито, звичайне навчання | 3,35 ГБ | 15,8 | −4,8 [−6,9; −2,7] |
| LoRA злито, навчання крізь Q4_0 | 3,35 ГБ | 15,8 | −1,4 [−3,6; +0,7] |
| Те саме + скорочений словник | 1,84 ГБ | 20,1 | +0,05 |
Генерація на Hetzner CAX21 (4 ядра ARM), llama.cpp; обидва злиття мають однакову структуру файлу. Зміна якості — порівняно з тією самою моделлю в bf16, для словника — з повною збіркою. Злиття вигідніше окремого адаптера: на 9% швидше, а зі скороченим словником — на 39%. Збірка конвертується в MLX без переквантування (ті самі 4-бітні блоки), тож той самий адаптер працює й на Apple.
Запуск
У Telegram: напишіть боту @uadetoxdevbot, наберіть @uadetoxdevbot і текст у будь-якому чаті або додайте його до групи.
Локально через llama.cpp (близько 4 с на коментар на 4 ядрах ARM):
llama-server -m uadetox_e2b_q4.gguf -c 1024 -t 4 --no-cache-prompt \
--chat-template-kwargs '{"enable_thinking":false}'
curl -s localhost:8080/completion -d '{
"prompt": "<|turn>user\nТи дебіл, закрий рота<turn|>\n<|turn>model\n",
"temperature": 0, "stop": ["<turn|>"]
}' | jq -r .content
Ваги та датасет готуються до публікації.
Обмеження
- Приблизно 6 із 10 переказів бездоганні; найчастіше губляться подробиці.
- Класифікатор добре ловить лайку, але часто пропускає глузування без лайливих слів.
- Стиль навмисне старосвітський («добродію», «бач») і може звучати іронічно.