«Лучший градиент — тот, который ты не считал.»
Peer-to-peer файнтюнинг больших языковых моделей без обратного прохода, со стабилизированным моментом и формальной гарантией дифференциальной приватности
Headline · Что это · Quick start · Теоремы · Архитектура · Honest negatives · Цитирование
На Qwen3.5-4B-Base / MathLogicQA / 3 paired seeds D-MeZO-N v2 = combo (адаптивный ρ-clip + drift-reset) робастно бьёт vanilla MeZO — впервые на paper-scale валидации с multi-seed.
|
Loss (mean ± std)
|
Accuracy (для прозрачности, не headline)
|
Подробный разбор — docs/multiseed_analysis.md §22. Сырые JSON-чекпойнты — experiments/diagnostics/.
Сборка четырёх идей в один алгоритм, доказательно сходящийся и доказательно приватный:
| Идея | Источник | Что даёт | |
|---|---|---|---|
| 🧠 | MeZO — оценка градиента двумя forward-проходами | Malladi et al., NeurIPS 2023 | Файнтюнинг LLM без backward → пик памяти ≈ inference |
| 🕸 | Decentralized SGD с doubly-stochastic mixing | Koloskova et al. 2020 | Peer-to-peer без центрального сервера |
| 🚀 | Heavy-ball + adaptive ρ-clip + drift-reset + β-decay | Эта работа (Theorem 3) | Первая гарантия устойчивости ZO heavy-ball (PL-режим) — момент не ломает сходимость |
| 🔐 | Dual-use ρ-clip как L2-sensitivity для Gaussian-mechanism DP | Эта работа (Theorem 4) | (ε = 10, δ = 10⁻³)-DP при utility cost ≈ 6 % |
Independent z_i per client (не shared seed) → variance reduction 1 / n одновременно по обеим компонентам шума: data и direction.
Этот единственный байт изменения в дизайне даёт двойное ускорение конвергенции в federated setting — формальное доказательство в Theorem 2.
# 0. Установка (Python 3.11, uv recommended)
uv pip install -e .
# 1. Day-1 sanity check: MeZO на Qwen3-4B / SST-2
uv run --no-sync python scripts/01_sanity_check_mezo.py \
--config configs/qwen3_4b_sst2.yaml
# 2. Federated D-MeZO-N v2 на Qwen3.5-4B-Base / MathLogicQA (multi-seed paper run)
uv run --no-sync python scripts/local_test_improvements.py \
--model Qwen/Qwen3.5-4B-Base \
--task mathlogicqa \
--seeds 42 43 44 \
--variants vanilla dmezo_n dmezo_n_drift dmezo_n_adaptive_clip dmezo_n_combo
# 3. Тесты (128 / 128 pass)
uv run --no-sync pytest tests/ -v
# 4. Colab Pro+ (RTX PRO 6000 Blackwell)
# откройте notebooks/bootstrap_colab.ipynbWindows + CUDA примечание. torch 2.12+cu130 не пинится в
pyproject.toml. Любойuv syncзатрёт CUDA build на CPU. Использовать толькоuv run --no-sync ....
| # | Setting | Key result | Status |
|---|---|---|---|
| T1 | Convex + momentum + decentralized, ρ-clip, mixing W |
|
✅ Proved |
| T2 | μ-PL + ZO, без момента | Linear |
✅ Proved |
| T3 | μ-PL + heavy-ball + adaptive clip + β-decay 0.9 → 0 | Lyapunov |
✅ first stability guarantee for ZO heavy-ball (PL regime) |
| T4 | T3 + Gaussian noise |
Per-round |
✅ Proved |
Honesty disclaimer. Скорость T3 матчит plain SGD под PL — асимптотического ускорения момент не даёт (согласовано с Bottou–Curtis–Nocedal 2018, T5.1). Эмпирический 3× transient speedup наблюдается, но строгое доказательство — открытый вопрос.
Полные доказательства: docs/theory_rigorous.md.
Plain-language разбор: docs/math_intuition.md.
dmezo/
├── src/dmezo/
│ ├── mezo/ # MeZO step, perturbation invariants, Nesterov state,
│ │ # adaptive ρ-clip, drift-reset, β-decay scheduler
│ ├── federated/ # per-client RNG (independent z_i), mixing topology,
│ │ # consensus (weight_avg | update_share 16 B/round)
│ ├── models/ # HF loaders incl. Qwen3.5 hybrid linear-attention + frozen ViT
│ ├── data/ # SuperGLUE · HellaSwag · MathLogicQA · IID / Dir(α) partitioning
│ └── utils/ # logging, checkpoint, config
├── scripts/ # 30+ entry-point experiments
├── configs/ # 28+ Hydra YAML configs
├── docs/
│ ├── paper_ru.md, paper_en.md # main paper (RU + EN)
│ ├── theory_rigorous.md # full proofs T1–T4
│ ├── math_intuition.md # plain-language explanation
│ ├── 03-algorithm-spec.md # formal pseudocode
│ ├── multiseed_analysis.md # §22 paper-scale 3-seed validation
│ ├── robustness_matrix.md # findings classified by statistical rigor
│ ├── vit_cub200_visual_demo.md # cross-domain check on ViT-Large
│ ├── defense_*.md # defense kit (Bauman MSTU)
│ └── figures/ # 41 PNG figures
├── notebooks/ # Colab-ready: bootstrap_colab.ipynb · vit_flowers_colab.ipynb
├── tests/ # 128 unit tests · ~95 % coverage critical paths
└── experiments/ # outputs (gitignored)
| Модель | Архитектура | Задачи | Где гонялось |
|---|---|---|---|
| Qwen3-0.6B | Full attention | SST-2, batch variance ablation | RTX 5070 Ti локально |
| Qwen3-1.7B | Full attention | SST-2 | Локально |
| Qwen3.5-0.8B | Hybrid linear-attention | SST-2, MathLogicQA | Локально |
| Qwen3-4B | Full attention | SST-2, HellaSwag (rescue) | Colab Blackwell |
| Qwen3.5-4B-Base | Hybrid lin-attn + frozen ViT | MathLogicQA (paper headline), SST-2 grid | Colab Blackwell |
| ViT-Large/21k | Full attention (vision) | CUB-200 head-only | RTX 5070 Ti |
Первая известная проверка федеративного ZO-файнтюнинга на гибридной linear-attention архитектуре (семейство Qwen3.5).
| Метод | Per-round per-client | Для 4B-модели × 1000 раундов × 4 клиентов |
|---|---|---|
| FedAvg | 8 GB (bf16 weights) | ≈ 32 TB |
| FedKSeed (K = 4096, static seed pool) | < 18 KB (reported в Qin et al. 2024: 4096 скаляров float32 + overhead; pool передаётся один раз) | ≈ 72 MB |
D-MeZO-N (update_share) |
16 байт (1 float + 1 int) | ≈ 64 KB |
D-MeZO-N достигает ≈ 5×10⁸× компрессии vs FedAvg (8 GB / 16 bytes = 5×10⁸). Тот же порядок, что у FedKSeed — но добавляет peer-to-peer топологию, доказательство сходимости с моментом и DP-гарантию.
Head-to-head vs FedKSeed (Qwen3.5-4B-Base / MathLogicQA / 3 seeds / 500 rounds / 4 clients): D-MeZO-N v2 beats FedKSeed on loss 3/3 seeds (1.334 ± 0.014 vs 1.466 ± 0.023); D-MeZO-N v2 also beats vanilla MeZO on loss 3/3 seeds (vanilla 1.463 ± 0.023). Accuracy CIs include 0 at n=3 — not significant. Caveat: FedKSeed run at its default K=4096 hyperparameters without parity-tuned lr×β grid search. See head-to-head/summary.txt.
Multi-seed валидированные негативные результаты — публикую вместе с позитивными, чтобы fair:
- v1 (fixed ρ-clip C = 50): 3 / 3 seeds хуже vanilla (+ 7.0 % loss). Adaptive clip обязателен.
- Drift-reset один (B5 без B1): 3 / 3 хуже (+ 6.4 %). Работает только в паре с adaptive clip.
- Look-ahead Nesterov: диверджит в 7× быстрее heavy-ball (R20 vs R140). Dual-channel шум усиливается через два умножения.
- K = 3 multi-direction averaging: при равном compute проигрывает K = 1 (Pareto trade-off, не improvement).
- ε(t) warmup schedules: проигрывают constant ε = 10⁻³ на 16 + ячейках grid-а.
- Асимптотическое ускорение от момента в PL+ZO: запрещено Bottou–Curtis–Nocedal 2018 T5.1.
Каждый — чистая falsification с механистическим объяснением. Полная классификация в docs/robustness_matrix.md.
@misc{sukhatsky2026dmezon,
author = {Sukhatsky, Maxim},
title = {D-MeZO-N: Decentralized Federated MeZO with Nesterov Stabilization},
year = {2026},
url = {https://github.com/Siesher/dmezo}
}MIT (код проекта). Модели — собственные лицензии (Qwen3 / Qwen3.5: Apache 2.0).
Made with 🌀 by @Siesher · Bauman MSTU · 2026