CoolFace
Modelpublic

Rob1234567/qwen3.5-4b-ariadna-grpo-v1

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes177downloads
Model Card

Qwen3.5-4B Ariadna GRPO v10

GRPO-дообученная модель для объяснения ML-концептов. Основана на qwen3.5-4b-ariadna-sft-v1.

🔗 GGUF (для llama.cpp): qwen3.5-4b-ariadna-grpo-v1-gguf — Q4KM-квантизация и сравнительные бенчмарки v1 vs v10.

Пайплайн: CPT → SFT → GRPO

ЭтапМетодДанныеРезультат
CPTПолный файнтюн, LR=1e-585M токенов (124K концептов arXiv)ariadna-cpt-v1
SFTLoRA r=64, инструкционный форматТе же данные, диалоговый форматariadna-sft-v1
GRPO v10GRPO K=8, 3-уровневый + GRM1000 концептов с эталонными определениямиariadna-grpo-v1

Архитектура GRPO v10

  • —K=8, LR=5e-7, beta=0.01, temperature=1.3, entropy bonus=0.001
  • —3-уровневая награда (по мотивам KAT-Coder-V2.5):
  • —Основная задача (35%): совпадение заголовка + >=2 специфичных термина
  • —Ограничения (20%): краткость, структура, отсутствие мусора
  • —GRM (45%): модельная награда через лог-вероятность эталонного определения
  • —800 шагов на H100 80GB (~9.5 часов)
  • —Итоговая награда: 0.71, GRM-оценка: 0.98
  • —Групповое относительное преимущество с фильтрацией нулевой дисперсии

Оценка: SFT против GRPO

ТестSFTGRPO v3 (без GRM)GRPO v10 (с GRM)
Объяснение (T=0, 10 концептов)18% kw—18% kw (= SFT)
Классификация (T=0, 20 концептов)70%60% (-10 п.п.)—
Агентный харнесс (12 запросов)—58%—*

*GGUF-версия GRPO v10 требовала отладки совместимости с llama.cpp. Прямой тест через transformers подтверждает полную работоспособность.

Ключевой вывод: GRM (модельная награда) обеспечивает качественный сигнал награды, но не является механизмом защиты памяти. Без GRM — -10 п.п. (ручные правила дают нестабильный сигнал). С GRM — качество SFT сохранено на базовых понятиях, но catastrophic forgetting редких терминов сохраняется (−4 п.п. на хард-тесте GGUF).

Системное тестирование GGUF v1 (SFT) против v10 (GRPO) — 2026-07-17

Прямое сравнение через llama-server на 100 вопросах (50 базовых + 50 редких из библиотеки статей).

Базовый тест: 50 фундаментальных терминов ML/AI

МетрикаV1 (SFT)V10 (GRPO)
Осмысленных ответов40/50 (80%)43/50 (86%)
Средняя длина ответа98 слов106 слов
Среднее время ответа2781 мс2584 мс

Хард-тест: 50 редких/специализированных терминов (из библиотеки arXiv-статей)

МетрикаV1 (SFT)V10 (GRPO)
Осмысленных ответов36/50 (72%)34/50 (68%)
Средняя длина ответа74 слов73 слов
Среднее время ответа2712 мс2876 мс

📄 [Отчёт: базовый тест](https://huggingface.co/Rob1234567/qwen3.5-4b-ariadna-grpo-v1-gguf/blob/main/gguf_v1_vs_v10_comparison.pdf) (PDF) 📄 [Отчёт: хард-тест](https://huggingface.co/Rob1234567/qwen3.5-4b-ariadna-grpo-v1-gguf/blob/main/gguf_v1_vs_v10_hard_comparison.pdf) (PDF)

Ключевой инсайт: GRPO улучшает базовые понятия (+6 п.п.) за счёт структурирования ответов, но вызывает катастрофическое забывание редких терминов (−4 п.п.). Механизм: group-relative advantage в GRPO даёт частотным паттернам систематически более высокие преимущества, вытесняя редкие знания. GRM (модельная награда) обеспечивает качественный сигнал, но не является механизмом памяти и не предотвращает forgetting. Баланс между оптимизацией популярных паттернов и сохранением редких — открытая проблема GRPO-посттренинга. Рекомендация: v10 для оперативных запросов, v1 для глубоких доменных вопросов по редким концептам.

Технический отчёт

📄 [GRPO_v10_Technical_Report.pdf](GRPO_v10_Technical_Report.pdf) — полный отчёт:

  • —Курирование данных (Ariadna v4.0, 122K концептов, 14 типов)
  • —Пайплайн CPT → SFT → GRPO
  • —5 итераций GRPO с графиками
  • —Прямые тесты SFT vs GRPO
  • —Анализ отказов (grpo-failure-analysis)
  • —Развёртывание в агентном харнессе Claude Code

Использование

python
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained(
    "Rob1234567/qwen3.5-4b-ariadna-grpo-v1",
    torch_dtype="auto",
    trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(
    "Rob1234567/qwen3.5-4b-ariadna-grpo-v1",
    trust_remote_code=True
)

prompt = "Attention Mechanism — это"
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=80, temperature=0.7)
print(tokenizer.decode(outputs[0]))

GGUF

Квантизация Q4KM (2.6 ГБ) доступна здесь: [qwen3.5-4b-ariadna-grpo-v1-gguf](https://huggingface.co/Rob1234567/qwen3.5-4b-ariadna-grpo-v1-gguf) — с полными результатами сравнительного тестирования v1 (SFT) vs v10 (GRPO).

Код

Скрипты обучения и тесты: github.com/romannekrasovaillm/qwen35-4b-ariadna-grpo