Дообучение LLM методом Full Fine-Tuning

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Дообучение LLM методом Full Fine-Tuning
Сложный
от 1 недели до 3 месяцев
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    902
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1119
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    853

Дообучение LLM методом Full Fine-Tuning

Full Fine-Tuning — метод дообучения, при котором обновляются все параметры языковой модели, а не только адаптерные слои (как в LoRA). Это максимально мощный инструмент адаптации, дающий наивысшее качество специализации, но требующий значительных вычислительных ресурсов и тщательного управления обучением.

Когда Full Fine-Tuning оправдан

Full FT выбирают не по умолчанию, а при наличии конкретных оснований:

Недостаточное качество LoRA/QLoRA: если после оптимизации LoRA-параметров разрыв с базлайном остаётся существенным, Full FT может дать дополнительные 3–8% по метрикам.

Принципиально новый домен: когда модель нужно обучить на нотации или языке, существенно отличающихся от предобученного распределения (специальные символы, формальные грамматики, уникальная терминология).

Continual Pre-training: добавление нового знания в модель через продолжение предобучения (Continued Pre-Training, CPT), а затем Instruction Tuning.

Изменение архитектурных параметров: расширение словаря (tokenizer), изменение длины контекста через RoPE-масштабирование.

Технические аспекты Full Fine-Tuning

Требования к памяти

Для Full FT модели с N параметрами в bf16:

  • Параметры модели: 2N bytes
  • Градиенты: 2N bytes (bf16) или 4N bytes (fp32)
  • Оптимизатор (AdamW): 8N bytes (fp32 моменты)
  • Активации: зависят от batch size и длины последовательности

Итого — минимум 12N bytes без активаций. Для 7B модели: ~84 GB, для 70B: ~840 GB.

DeepSpeed ZeRO для распределённого обучения

ZeRO (Zero Redundancy Optimizer) разбивает параметры, градиенты и состояния оптимизатора между GPU:

{
  "zero_optimization": {
    "stage": 3,
    "offload_optimizer": {"device": "cpu"},
    "offload_param": {"device": "cpu"},
    "overlap_comm": true,
    "contiguous_gradients": true,
    "reduce_bucket_size": "auto",
    "stage3_prefetch_bucket_size": "auto",
    "stage3_param_persistence_threshold": "auto"
  },
  "bf16": {"enabled": true},
  "gradient_accumulation_steps": 8,
  "gradient_clipping": 1.0,
  "train_micro_batch_size_per_gpu": 2
}

ZeRO Stage 3 с CPU offloading позволяет обучать 7B модель на 4×A100 40GB вместо 8 GPU.

FSDP как альтернатива DeepSpeed

PyTorch Fully Sharded Data Parallel (FSDP) — нативная альтернатива DeepSpeed, лучше интегрированная с экосистемой PyTorch:

from torch.distributed.fsdp import FullyShardedDataParallel as FSDP
from torch.distributed.fsdp.wrap import transformer_auto_wrap_policy
from transformers import LlamaDecoderLayer

fsdp_config = {
    "fsdp": "full_shard auto_wrap",
    "fsdp_config": {
        "fsdp_auto_wrap_policy": "TRANSFORMER_BASED_WRAP",
        "fsdp_transformer_layer_cls_to_wrap": "LlamaDecoderLayer",
        "fsdp_state_dict_type": "FULL_STATE_DICT",
        "fsdp_offload_params": False,
    }
}

Gradient Checkpointing

Снижает потребление памяти активаций за счёт повторного вычисления части forward pass при backward:

model.gradient_checkpointing_enable()
# Снижение памяти активаций ~4× при замедлении обучения ~20%

Управление learning rate при Full Fine-Tuning

При Full FT критически важна схема обучения learning rate:

Warmup: первые 5–10% шагов lr растёт с 0 до целевого значения. Предотвращает ранний взрыв градиентов.

Cosine decay: плавное снижение lr до 10% от пикового значения к концу обучения.

Целевые значения: для Full FT на специализированном датасете — 1e-5 to 5e-5. Для CPT (продолжение предобучения) — 1e-5 или ниже.

Catastrophic Forgetting: полное обновление весов может уничтожить общие знания модели. Митигируется: малым lr, replay буфером (смешивание с общими данными), EWC (Elastic Weight Consolidation).

Практический кейс: Full FT для финансового регулятора

Задача: специализированная модель для ЦБ-аналитики — анализ отчётности банков по форматам XBRL, выявление признаков нарушений пруденциальных нормативов, генерация предписаний.

Почему Full FT, а не LoRA: специфический язык регуляторных предписаний (юридические конструкции, ссылки на нормативы), новые символьные паттерны (коды форм, нормативные формулы). LoRA r=64 давал F1=0.79, Full FT — F1=0.91.

Инфраструктура: 8×A100 80GB, DeepSpeed ZeRO Stage 2, bf16.

Датасет: 6800 примеров (форма отчётности → анализ + предписание).

Параметры обучения: lr=2e-5, warmup_ratio=0.05, cosine decay, 3 эпохи, effective batch size=64.

Результаты:

  • F1 выявления нарушений: 0.79 (LoRA r=64) → 0.91 (Full FT)
  • ROUGE-L для предписаний: 0.61 → 0.74
  • Время обучения: 14 часов на 8×A100

Инфраструктурные требования Full Fine-Tuning

Модель GPU (без offload) GPU (ZeRO Stage 3 + CPU) Время (3 эпохи, 5K примеров)
7B 4×A100 40GB 2×A100 40GB 4–8ч
13B 8×A100 40GB 4×A100 40GB 8–16ч
70B 8×A100 80GB 4×A100 80GB 24–48ч
70B 16×H100 80GB 8×H100 80GB 12–24ч

Сроки проекта

  • Аудит и планирование: 1–2 недели
  • Подготовка инфраструктуры (кластер, DDP/FSDP/DeepSpeed): 1 неделя
  • Подготовка данных: 2–6 недель
  • Обучение и итерации: 2–4 недели
  • Оценка, A/B, деплой: 1–2 недели
  • Итого: 7–15 недель