Frontier LLM Training
~14 мин

Data Curation и Multi-stage Training

Data mixtures, ablation, synthetic data, multi-stage обучение. SmolLM3, Hermes 4, Kimi K2.

Data Curation и Multi-Stage Training — данные важнее архитектуры

Никакое количество вычислений не компенсирует тренировку на плохих данных. Data mixture (смесь данных), quality filtering и multi-stage scheduling определяют финальное поведение модели больше, чем архитектурные улучшения. SmolLM3 использует 3 стадии (8T, 2T, 1.1T токенов), Kimi K2 перефразирует корпуса для разнообразия, Hermes 4 генерирует синтетические данные через графовый pipeline DataForge.

Multi-stage training pipeline: Stage 1 (8T base) → Stage 2 (2T high-quality) → Stage 3 (1.1T reasoning)
SmolLM3: quantity↓ quality↑ по мере продвижения. Лучшие данные — в конце тренировки

Multi-Stage Training — зачем менять данные по ходу

Финальное поведение модели сильно зависит от данных в конце тренировки. Multi-stage training меняет состав данных по ходу обучения: начинаем с большого объёма разнообразных данных, заканчиваем высококачественными целевыми. Сигнал к смене стадии: если бенчмарки выходят на плато — пора вводить качественные данные для этого домена.

📊 SmolLM3 Multi-Stage Pipeline

Stage 1 (8T tokens @ 4K context): 75% en web / 12% multilingual / 10% code / 3% math Stage 2 (2T tokens @ 4K): 40% baseline + 60% curated (FineWeb-Edu + DCLM injection) Stage 3 (1.1T tokens @ 4K): Math reasoning + Code + Distilled CoT from R1/QwQ Для новых стадий: checkpoint ~7T из 11T → 40/60 split baseline/new data

Data Mixture — что и сколько

Для SmolLM3 Stage 1: English web собран из FineWeb-Edu + DCLM в пропорции 60/40 (ablation показал оптимальность). Мультиязычные данные: 5 европейских языков из FineWeb2-HQ (12% микса). Код: The Stack v2 + StarCoder2 — 16 языков, GitHub PRs, Jupyter и Kaggle ноутбуки. Математика: FineMath3+, InfiWebMath3+, MegaMath, OpenMathInstruct. Educationally-filtered Stack-Edu добавляется только на поздних стадиях.

Интересный момент: несмотря на исследования, показывающие что код улучшает языковую модель не только в программировании, HuggingFace наблюдали деградацию на English бенчмарках при рекомендованном количестве кода. Вывод: доверяй своим экспериментам, а не чужим выводам.

Ablation Methodology

  • Architecture ablations → на маленьких моделях (e.g. 1B для 3B target). Быстро и дёшево
  • Data mixture ablations → НА МАСШТАБЕ. Маленькие модели не имеют capacity для разнообразных доменов
  • Annealing ablations → на checkpoints основного run (e.g. 7T из 11T) для определения когда вводить данные
  • Золотое правило: меняй ОДНУ переменную за раз. Multi-variable edits = невоспроизводимые результаты
  • Validation loss для оптимизации proportions часто converge к dataset size distribution — не лучше manual ablations

Token Utility — максимум сигнала из каждого токена

Kimi K2 использует перефразирование данных для увеличения разнообразия. Для текстовых корпусов: промпты с разным стилем и перспективой, chunk-wise генерация для длинных документов, проверка на сохранение смысла. Каждый корпус перефразируется максимум 2 раза. Для математики: перефразирование в стиле «учебных заметок» + перевод на другие языки для дополнительного разнообразия.

# Multi-stage data scheduling — пример конфигурации как в SmolLM3
training_stages = {
    "stage_1": {
        "tokens": "8T",
        "lr": 2e-4,
        "context": 4096,
        "data_mix": {
            "english_web": {"source": "FineWeb-Edu + DCLM", "ratio": 0.60},
            "multilingual": {"source": "FineWeb2-HQ (5 langs)", "ratio": 0.12},
            "code": {"source": "Stack v2 + StarCoder2", "ratio": 0.15},
            "math": {"source": "FineMath3+ + InfiWebMath3+", "ratio": 0.08},
            "science": {"source": "peS2o + Wikipedia", "ratio": 0.05},
        },
    },
    "stage_2": {  # Higher quality, less volume
        "tokens": "2T",
        "lr": 2e-4,
        "context": 32768,  # расширяем контекст через ABF
        "data_mix": {
            "english_web": {"source": "FineWeb-Edu (score>3)", "ratio": 0.40},
            "code": {"source": "Stack-Edu + Kaggle notebooks", "ratio": 0.25},
            "math": {"source": "MegaMath + OpenMathInstruct", "ratio": 0.20},
            "long_docs": {"source": "books + arxiv + long web", "ratio": 0.15},
        },
    },
    "stage_3": {  # Best quality, reasoning focus
        "tokens": "1.1T",
        "lr": "cosine decay to 2e-5",
        "context": 131072,  # YaRN to 128K
        "data_mix": {
            "reasoning": {"source": "OpenMathReasoning + code contests", "ratio": 0.35},
            "code": {"source": "high-quality filtered", "ratio": 0.25},
            "instruction": {"source": "curated instruction pairs", "ratio": 0.20},
            "long_context": {"source": "needle-in-haystack training data", "ratio": 0.20},
        },
    },
}
# Принцип: quantity↓ quality↑ по мере продвижения

Hermes 4 DataForge — граф-based synthetic data

DataForge — генератор синтетических данных на основе графов. Это DAG (направленный ациклический граф), где каждый узел трансформирует данные из одного формата в другой. Случайное блуждание по графу создаёт пары вопрос-ответ с промежуточными трансформациями (например, статья из Wikipedia превращается в рэп-текст, а из него генерируется QA-пара). LLM-as-judge оценивает качество и инструкции, и ответа. Для покрытия доменов используется рекурсивная таксономия — поддомены генерируются автоматически, а листья дерева становятся промптами.

Tool-Use Data (Kimi K2)

Kimi K2 строит способности работы с инструментами через синтетический pipeline: 3K+ реальных MCP-инструментов из GitHub + 20K синтетических (финансовый трейдинг, софт, управление роботами). Процесс: генерация спецификации инструмента, затем генерация агента и задачи (различные системные промпты × комбинации инструментов), затем генерация траектории выполнения. Качество оценивает LLM judge по рубрикам. Это масштабируемый подход к agentic-способностям.

Pre-training Data Sources

  • FineWeb2 — большой open web corpus с quality filtering
  • The Pile — классический open dataset от EleutherAI
  • FineMath3+ / InfiWebMath3+ — математический контент с quality threshold
  • MegaMath — масштабный math dataset
  • OpenMathInstruct / OpenMathReasoning — instruction/reasoning math datasets
  • The Stack v2 + StarCoder2 — code данные (16 языков, PRs, notebooks, issues)
  • FineWeb-Edu — educationally-filtered web data (STEM benchmarks)
  • DCLM — common sense reasoning данные

Dedup и Contamination

Hermes 4 делает семантическую дедупликацию через эмбеддинги с порогом косинусного сходства 0.7 + LLM-as-judge для фильтрации неполных и плохо отформатированных сообщений. Contamination checks обязательны — без них метрики врут. Повторные данные вредны: при ограниченном бюджете качественные данные повторяются, снижая обобщающую способность. Баланс: включать и высококачественные, и менее качественные данные в микс.

💡 Takeaway

Data scheduling > architecture tweaks при фиксированном compute. Лучшие данные — в конце тренировки (multi-stage). Ablate data mixtures на масштабе, не на маленьких моделях. Доверяй своим ablations, не чужим. Deduplication и contamination checks — non-optional. Synthetic data (DataForge, rephrasing) расширяет effective dataset при ограниченных высококачественных данных.