Veni AI
Тренування моделей

Тонке налаштування та трансферне навчання: посібник з тренування моделей

Комплексний технічний посібник з методів тонкого налаштування LLM, LoRA, QLoRA, PEFT та кастомізації корпоративних AI‑моделей.

Veni AI Technical Team11 Ocak 20256 dk okuma
Тонке налаштування та трансферне навчання: посібник з тренування моделей

Тонке налаштування та Transfer Learning: Посібник з навчання моделей

Тонке налаштування — це процес адаптації попередньо навчених моделей для конкретних завдань або доменів. За допомогою правильних стратегій тонкого налаштування можна досягти підвищення продуктивності до 40% у корпоративних AI-рішеннях.

Основи Transfer Learning

Transfer Learning — це перенесення знань, отриманих в одному завданні, до іншого завдання.

Переваги Transfer Learning

  1. Ефективність використання даних: Хороші результати за меншої кількості даних
  2. Економія часу: Значно швидше, ніж навчання з нуля
  3. Зменшення витрат: Менше обчислювальних ресурсів
  4. Продуктивність: Використання вже набутого знання

Попереднє навчання vs Тонке налаштування

1Pre-training: 2- Large, general dataset (TBs) 3- Learning general language/task understanding 4- Training takes months 5- Cost in millions of dollars 6 7Fine-tuning: 8- Small, domain-specific dataset (MB-GB) 9- Specific task adaptation 10- Training takes hours-days 11- Cost in thousands of dollars

Повне тонке налаштування

Оновлення всіх параметрів моделі.

Переваги

  • Максимальна здатність до адаптації
  • Найвищий потенціал продуктивності

Недоліки

  • Високі вимоги до пам’яті
  • Ризик катастрофічного забування
  • Окрема копія моделі для кожного завдання

Вимоги до обладнання

Розмір моделіGPU пам’ять (FP32)GPU пам’ять (FP16)
7B28 GB14 GB
13B52 GB26 GB
70B280 GB140 GB

Parameter-Efficient Fine-Tuning (PEFT)

Тонке налаштування з оновленням лише невеликої частини параметрів.

Переваги PEFT

  • Ефективність пам’яті: Зменшення на 90%+
  • Швидкість: Швидше навчання
  • Модульність: Одна базова модель, кілька адаптерів
  • Катастрофічне забування: Мінімізований ризик

LoRA (Low-Rank Adaptation)

Найпопулярніший метод PEFT.

Теорія LoRA

Оновлення вагової матриці приблизно за допомогою матриць низького рангу:

1W' = W + ΔW = W + BA 2 3Where: 4- W: Original weight matrix (d × k) 5- B: Low-rank matrix (d × r) 6- A: Low-rank matrix (r × k) 7- r: Rank (typical: 8-64)

Економія параметрів

1Original: d × k parameters 2LoRA: r × (d + k) parameters 3 4Example (d=4096, k=4096, r=16): 5Original: 16.7M parameters 6LoRA: 131K parameters 7Savings: ~127x

Налаштування LoRA

1from peft import LoraConfig, get_peft_model 2 3config = LoraConfig( 4 r=16, # Rank 5 lora_alpha=32, # Scaling factor 6 target_modules=[ # Which layers to apply 7 "q_proj", 8 "k_proj", 9 "v_proj", 10 "o_proj" 11 ], 12 lora_dropout=0.05, 13 bias="none", 14 task_type="CAUSAL_LM" 15) 16 17model = get_peft_model(base_model, config)

Гіперпараметри LoRA

Rank (r):

  • Низький (4-8): Прості завдання, мало даних
  • Середній (16-32): Загальне використання
  • Високий (64-128): Складна адаптація

Alpha:

  • Зазвичай alpha = 2 × r

Target Modules:

  • Шари Attention: q_proj, k_proj, v_proj, o_proj
  • Шари MLP: gate_proj, up_proj, down_proj

QLoRA (Quantized LoRA)

Комбінація LoRA + 4-бітної квантизації.

Особливості QLoRA

  1. 4-bit NormalFloat (NF4): Спеціальний формат квантизації
  2. Подвійна квантизація: Квантизація констант квантизації
  3. Paged Optimizers: Керування переповненням GPU пам’яті

Порівняння пам’яті QLoRA

МетодМодель 7BМодель 70B
Full FT (FP32)28 GB280 GB
Full FT (FP16)14 GB140 GB
LoRA (FP16)12 GB120 GB
QLoRA (4-bit)6 GB48 GB

Реалізація QLoRA

1from transformers import BitsAndBytesConfig 2import torch 3 4bnb_config = BitsAndBytesConfig( 5 load_in_4bit=True, 6 bnb_4bit_use_double_quant=True, 7 bnb_4bit_quant_type="nf4", 8 bnb_4bit_compute_dtype=torch.bfloat16 9) 10 11model = AutoModelForCausalLM.from_pretrained( 12 "meta-llama/Llama-2-7b-hf", 13 quantization_config=bnb_config, 14 device_map="auto" 15) 16## Інші методи PEFT 17 18### Prefix Tuning 19 20Додає навчальні префікси до вхідних ембеддінгів: 21

Input: [PREFIX_1, PREFIX_2, ..., PREFIX_N, token_1, token_2, ...]

1 2### Prompt Tuning 3 4Навчання м’яких промптів: 5

[SOFT_PROMPT] + "Actual input text"

1 2### Adapter Layers 3 4Додавання невеликих мереж між шарами трансформера: 5

Attention → Adapter → LayerNorm → FFN → Adapter → LayerNorm

1 2### (IA)³ - Infused Adapter 3 4Множення активацій на навчувані вектори: 5

output = activation × learned_vector

1 2## Підготовка даних 3 4### Формати даних 5 6**Instruction Format:** 7```json 8{ 9 "instruction": "Summarize this text", 10 "input": "Long text...", 11 "output": "Summary..." 12}

Chat Format:

1{ 2 "messages": [ 3 {"role": "system", "content": "You are a helpful assistant"}, 4 {"role": "user", "content": "Question..."}, 5 {"role": "assistant", "content": "Answer..."} 6 ] 7}

Якість даних

Характеристики якісних даних:

  • Різноманітність (різні приклади)
  • Послідовність (єдиний формат)
  • Точність (коректні мітки)
  • Достатній обсяг (зазвичай 1K–100K прикладів)

Аугментація даних

1# Paraphrasing 2augmented_data = paraphrase(original_data) 3 4# Back-translation 5translated = translate(text, "tr") 6back_translated = translate(translated, "en") 7 8# Synonym replacement 9augmented = replace_synonyms(text)

Стратегії тренування

Вибір гіперпараметрів

1training_args = TrainingArguments( 2 learning_rate=2e-4, # Typical for LoRA 3 num_train_epochs=3, 4 per_device_train_batch_size=4, 5 gradient_accumulation_steps=4, 6 warmup_ratio=0.03, 7 lr_scheduler_type="cosine", 8 fp16=True, 9 logging_steps=10, 10 save_strategy="epoch", 11 evaluation_strategy="epoch" 12)

Learning Rate

  • Full fine-tuning: 1e-5 - 5e-5
  • LoRA: 1e-4 - 3e-4
  • QLoRA: 2e-4 - 5e-4

Regularization

1# Weight decay 2weight_decay=0.01 3 4# Dropout 5lora_dropout=0.05 6 7# Gradient clipping 8max_grad_norm=1.0

Оцінювання та валідація

Метрики

Perplexity:

PPL = exp(average cross-entropy loss) Lower = better

BLEU/ROUGE: якість генерації тексту

Task-specific: Accuracy, F1, спеціальні метрики

Виявлення перенавчання

1Train loss ↓ + Validation loss ↑ = Overfitting 2 3Solutions: 4- Early stopping 5- More dropout 6- Data augmentation 7- Fewer epochs

Розгортання

Об’єднання моделей

Об’єднання LoRA adapter з базовою моделлю:

merged_model = model.merge_and_unload() merged_model.save_pretrained("merged_model")

Multi-Adapter Serving

Кілька адаптерів з однією базовою моделлю:

1from peft import PeftModel 2 3base_model = AutoModelForCausalLM.from_pretrained("base") 4model_a = PeftModel.from_pretrained(base_model, "adapter_a") 5model_b = PeftModel.from_pretrained(base_model, "adapter_b")

Enterprise Fine-Tuning Pipeline

1┌─────────────┐ ┌─────────────┐ ┌─────────────┐ 2│ Data │────▶│ Training │────▶│ Evaluation │ 3│ Preparation │ │ (LoRA/QLoRA)│ │ & Testing │ 4└─────────────┘ └─────────────┘ └──────┬──────┘ 56 ┌─────────────┐ ┌──────▼──────┐ 7 │ Production │◀────│ Model │ 8 │ Deployment │ │ Registry │ 9 └─────────────┘ └─────────────┘

Поширені проблеми та рішення

1. Out of Memory

Рішення: QLoRA, gradient checkpointing, зменшення batch size

2. Catastrophic Forgetting

Рішення: нижчий learning rate, replay buffer, elastic weight consolidation

3. Overfitting

Рішення: більше даних, регуляризація, early stopping

4. Poor Generalization

Рішення: збільшення різноманітності даних, різноманітності інструкцій

Висновок

Fine-tuning є найефективнішим способом адаптувати попередньо натреновані моделі до потреб бізнесу. Потужні кастомізації можуть бути виконані навіть за обмежених ресурсів за допомогою PEFT-методів, таких як LoRA та QLoRA.

У Veni AI ми надаємо консультаційні та імплементаційні послуги для корпоративних проєктів fine-tuning. Звертайтесь до нас для задоволення ваших потреб.

İlgili Makaleler