/finetune.lab/kerakoll-selector

./kerakoll-selector

phase=7-doneheartbeat=updated=2026-04-14 21:00:16 UTC
// research
loading_research...
// phase.json
{
  "phase": "7-done",
  "substep": {
    "3-sanity": "done"
  },
  "winner_checkpoint": "iter_0000400",
  "eval_metrics": {
    "baseline_url_pct": 60,
    "winner_url_pct": 100,
    "winner_lang_pct": 95,
    "winner_struct_pct": 100,
    "winner_lat_s": 11.3
  },
  "updated_at": "2026-04-14T21:00:16Z",
  "deployed": "ollama: kerakoll-selector:v1",
  "gguf_size_gb": 8
}
// progress.md
Phase 2c cleanup done: 794 train / 89 eval (clean, lang-filtered), 2026-04-14 18:25 UTC
## Phase 6 done: kerakoll-selector:v1 in Ollama, 8.0GB q8_0 GGUF
// decision.md
# Decision — Gate 1 (auto-closed by Vitalik)

**Date:** 2026-04-14T17:34Z
**Selected dataset:** synthetic generated from MasterWorks teacher (gpt-5.4-mini on mw.ainmid.com) + 770 Kerakoll SKU SQL + 4380 knowledge chunks
**Selected model:** `mlx-community/gemma-4-e4b-it-4bit` (per research-models.md)

## Rationale
- Public HF datasets для Kerakoll product selection не существуют — Гермес's 1a search был тупиковым изначально.
- Собственные данные MasterWorks (SQLite `/opt/masterworks/data/masterworks.db` + chat-engine.js) — лучший источник. Teacher = текущий рабочий gpt-5.4-mini ответ → student = Gemma 4 E4B LoRA.
- Модель Gemma 4 E4B зафиксирована по прямому требованию Лёхи (~4B класс).
- Auto-closed gate — Лёха дал full autonomy ("делай чё хочешь") с hard deadline "завтра утром модель должна быть".

## Target pipeline
1. Phase 2 (prepare): Артём генерирует 2000-3000 synthetic Q→A examples на HU/RU/EN через teacher + SQL → `prepared.parquet`
2. Phase 3 (sanity): 5 overlay examples
3. Phase 4 (train): LoRA rank 32 alpha 64, 2 stages (grounding + task)
4. Phase 5 (eval): 50 Павлов-curated queries, сравнение с baseline
5. Phase 6 (export): Ollama tag `kerakoll-selector:v1`

**Hard deadline:** 2026-04-15 08:00 MSK (user wakeup).
// spec.md
# Fine-tune project: kerakoll-selector

## Исходная идея
Fine-tune Gemma 4 E4B под подбор продуктов Kerakoll для MasterWorks Hungary (дистрибьютор). Модель принимает описание задачи клиента (тип работ, основание, площадь, условия) и возвращает рекомендацию продуктов Kerakoll с расходом на м2, обоснованием и ссылками на masterworks.hu. Языки: HU (primary), RU, EN. Референс: существующий chat-engine на mw.ainmid.com работает через gpt-5.4-mini + SQL продуктовой БД.

## Статус
- **Создан:** 2026-04-14T13:02:21Z
- **Фаза:** 1-research
- **Slug:** `kerakoll-selector`
- **Путь:** `/Users/alphamachine/Projects/finetune-lab/projects/kerakoll-selector`

## Цель
Заменить platform-dependent API (OpenAI codex для gpt-5.4-mini) на локальную fine-tuned модель, которая:
1. По описанию строительной задачи клиента подбирает оптимальную комбинацию Kerakoll продуктов (клей / затирка / грунтовка / гидроизоляция)
2. Возвращает количество с учётом расхода на м2, формат ответа включает markdown ссылки на `masterworks.hu/products/<handle>`
3. Понимает 3 языка: HU (основной рынок), RU (Лёха + русскоязычные клиенты), EN (fallback)
4. Не галлюцинирует продукты — только из каталога MasterWorks (770 SKU)

## Задача для модели
- **Тип:** generation (structured markdown output с ссылками)
- **Входы:** свободный текст клиента о строительной задаче + опциональный RAG контекст из product DB
- **Выходы:** markdown ответ по формату:
  ```
  Для [задачи] рекомендую:

  ## 🏗 Лучший выбор
  ### [Product Name](https://masterworks.hu/products/handle)
  - Цена: X HUF
  - Расход: Y кг/м²
  - Почему подходит: ...

  ## 🔧 Альтернатива
  ...
  ```
- **Язык:** multi (HU primary, RU, EN) — определяется по языку запроса клиента

## Целевая модель (заполнит research-моделей)
**Приоритет: ~4B параметров** (по решению Лёхи). Research должен проверить подходит ли и предложить альтернативы если нет:
- **Приоритет A (предпочтительно):** Gemma 4 E4B (базовый instruct или abliterated вариант типа `huihui-ai/Huihui-gemma-4-E4B-it-abliterated`)
- **Приоритет B (если 4B не тянет задачу):** Gemma 4 E8B (8B) — 2x вес, но лучше на multilingual
- **Приоритет C (fallback):** Qwen 2.5 3B / 4B — если Gemma плохо идёт на венгерский

**Критерии проверки Артёмом в research:**
- Baseline на multilingual MMLU (HU/RU/EN) — готовая модель до fine-tune
- Проверка MLX compatibility (приоритетно safetensors + mlx-community/)
- Context length ≥ 8K (влезут product catalog chunks)
- Instruction-following quality на русском и венгерском

## Датасеты (заполнит research-датасетов)
Возможные источники (Hermes уточнит):

**Собственные данные MasterWorks (доступны на mw-vps):**
- История чатов из SQLite (`/opt/masterworks/data/masterworks.db` — chat sessions)
- Product catalog: 770 Kerakoll SKU + variants с handle, price, description, image_url
- Knowledge chunks: 4380 технических записей из Kerakoll documentation (таблицы совместимости, расход, характеристики)

**Открытые датасеты (Hermes найдёт):**
- Construction/building Q&A на HU/RU/EN
- Multilingual instruction tuning для HU/RU (Alpaca translations, Belebele)
- Technical manuals для клеев/затирок/гидроизоляции

**Synthetic generation:**
- Сгенерировать диалоги используя текущий chat-engine на gpt-5.4-mini с 770 продуктами — получим 2-5K training examples с правильным форматом и обоснованиями. Это ключевой trick: наш baseline gpt-5.4-mini **становится teacher** для локальной модели.

## Training plan
- **Метод:** LoRA (rank 32, alpha 64 — проверенные в ClickGemma v2)
- **Stages:** 2
  - Stage 1 (grounding): обучение на product knowledge и RAG формате — модель привыкает к формату каталога, названиям, ссылкам
  - Stage 2 (task): обучение на dialogues с правильными ответами — multi-turn conversation с ответами в формате markdown
- **Hardware:** Mac Studio M3 Ultra (96GB) через MLX-VLM
- **Время:** 2-4 часа на stage при ~5-10K examples

## Success metrics
- **Baseline:** gpt-5.4-mini через текущий chat-engine на 20-50 тестовых запросах (mix HU/RU/EN)
  - Метрики: product_id match с expert answer, language consistency, markdown format valid, URL valid
- **Target после fine-tune (4B):**
  - Product_id precision@3 ≥ 75% (baseline от gpt-5.4-mini минус небольшой gap)
  - Language match = 100%
  - Zero hallucinated products
  - Response latency: <3s на Mac Studio / <10s на Ollama VPS
- **Target если 4B не тянет — пересматриваем на 8B**
- **Eval dataset:** 50 hand-curated запросов от Павла (owner MasterWorks) с expert answers

## Gates
- [ ] Gate 1: research датасетов + моделей одобрен (Лёха)
- [ ] Gate 2: sanity check пройден (Лёха видит sample outputs)
- [ ] Gate 3: eval прошёл target (Лёха одобряет deploy)

## Ссылки
- Research датасетов: `research-datasets.md`
- Research моделей: `research-models.md`
- Решение Лёхи: `decision.md`
- Прогресс: `progress.md`
- **MasterWorks БД:** `ssh mw-vps /opt/masterworks/data/masterworks.db` (SQLite, 770 products + 4380 knowledge chunks)
- **MasterWorks chat-engine (база промптов):** `ssh mw-vps /opt/masterworks/src/chat-engine.js`
- **Kerakoll Expert skill (taxonomy):** `/home/clawdbot/.openclaw/workspace/skills/kerakoll-expert/SKILL.md`
// files [24]
  • ./.artem-prompt.txt
  • ./.hermes-prompt.txt
  • ./Modelfile
  • ./RELEASE.md
  • ./SPEC.md
  • ./adapters
  • ./data
  • ./decision.md
  • ./eval
  • ./eval.py
  • ./eval_raw.json
  • ./eval_report.md
  • ./fused
  • ./generate_dataset.py
  • ./idea.txt
  • ./logs
  • ./phase.json
  • ./progress.md
  • ./research-datasets.md
  • ./research-models.md
  • ./sanity_report.md
  • ./scripts
  • ./training.log
  • ./venv

/Users/alphamachine/Projects/finetune-lab/projects/kerakoll-selector