Дообчання 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
    1197
  • 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 методом повного дотонування

Повне дотонування — метод навчання, де оновлюються всі параметри мовної моделі, а не тільки шари адаптерів (як у LoRA). Це найпотужніший інструмент спеціалізації, що дає найвищу якість, але потребує значних обчислювальних ресурсів та ретельного управління навчанням.

Коли повне дотонування виправдане

Повне дотонування вибирають не за замовчуванням, а при наявності конкретних причин:

Недостатня якість LoRA/QLoRA: якщо після оптимізації LoRA-параметрів розрив від базової лінії залишається суттєвим, повне дотонування може дати додаткове поліпшення на 3–8% за метриками.

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

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

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

Технічні аспекти повного дотонування

Вимоги до пам'яті

Для повного дотонування моделі з N параметрами в bf16:

  • Параметри моделі: 2N bytes
  • Градієнти: 2N bytes (bf16) або 4N bytes (fp32)
  • Оптимізатор (AdamW): 8N bytes (fp32 моменти)
  • Активації: залежить від розміру батча та довжини послідовності

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

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 при повному дотонуванні

Для повного дотонування, графік learning rate критичний:

Warmup: перші 5–10% кроків lr зростає з 0 до цільового значення. Запобігає ранньому вибуху градієнтів.

Cosine decay: плавне зменшення lr до 10% від пікового значення до кінця навчання.

Цільові значення: для повного дотонування на спеціалізованому наборі даних — 1e-5 до 5e-5. Для CPT — 1e-5 або нижче.

Катастрофічне забування: повне оновлення ваг може знищити загальні знання моделі. Пом'якшується: низьким lr, буфером replay (змішування з загальними даними), EWC (Elastic Weight Consolidation).

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

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

Чому повне дотонування, а не LoRA: специфічна мова нормативних предписань (юридичні конструкції, посилання на нормативи), нові символьні паттерни (коди форм, нормативні формули). LoRA r=64 дав F1=0.79, повне дотонування — 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 (повне дотонування)
  • ROUGE-L для предписань: 0.61 → 0.74
  • Час тренування: 14 годин на 8×A100

Вимоги до інфраструктури для повного дотонування

Модель 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 тижнів