Veni AI
Εκπαίδευση Μοντέλων

Οδηγός Εκπαίδευσης Μοντέλων: Fine-Tuning και Transfer Learning

Πλήρης τεχνικός οδηγός για τεχνικές λεπτορύθμισης LLM, LoRA, QLoRA, μεθόδους PEFT και προσαρμογή εταιρικών μοντέλων AI.

Veni AI Technical Team11 Ocak 20256 dk okuma
Οδηγός Εκπαίδευσης Μοντέλων: Fine-Tuning και Transfer Learning

Fine-Tuning και Transfer Learning: Οδηγός Εκπαίδευσης Μοντέλων

Το fine-tuning είναι η διαδικασία προσαρμογής προεκπαιδευμένων μοντέλων για συγκεκριμένα tasks ή πεδία. Με τις σωστές στρατηγικές fine-tuning, μπορούν να επιτευχθούν αυξήσεις απόδοσης έως και 40% σε εταιρικές λύσεις AI.

Βασικές Αρχές Transfer Learning

Το transfer learning είναι η μεταφορά γνώσης που αποκτήθηκε σε ένα task σε ένα άλλο task.

Πλεονεκτήματα του Transfer Learning

  1. Αποδοτικότητα Δεδομένων: Καλό αποτέλεσμα με λιγότερα δεδομένα
  2. Εξοικονόμηση Χρόνου: Πολύ ταχύτερο από εκπαίδευση από το μηδέν
  3. Μείωση Κόστους: Λιγότεροι υπολογιστικοί πόροι
  4. Απόδοση: Αξιοποίηση προεκπαιδευμένης γνώσης

Pre-training vs Fine-tuning

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

Full Fine-Tuning

Ενημέρωση όλων των παραμέτρων του μοντέλου.

Πλεονεκτήματα

  • Μέγιστη ικανότητα προσαρμογής
  • Υψηλότερη δυνητική απόδοση

Μειονεκτήματα

  • Υψηλή απαίτηση μνήμης
  • Κίνδυνος catastrophic forgetting
  • Ξεχωριστό αντίγραφο μοντέλου για κάθε task

Απαιτήσεις Υλικού

Μέγεθος ΜοντέλουGPU Memory (FP32)GPU Memory (FP16)
7B28 GB14 GB
13B52 GB26 GB
70B280 GB140 GB

Parameter-Efficient Fine-Tuning (PEFT)

Fine-tuning με ενημέρωση μόνο ενός μικρού μέρους των παραμέτρων.

Πλεονεκτήματα PEFT

  • Αποδοτικότητα Μνήμης: Μείωση πάνω από 90%
  • Ταχύτητα: Γρηγορότερη εκπαίδευση
  • Modularity: Ένα βασικό μοντέλο, πολλαπλά adapters
  • Catastrophic Forgetting: Ελαχιστοποιημένος κίνδυνος

LoRA (Low-Rank Adaptation)

Η πιο δημοφιλής μέθοδος PEFT.

LoRA Theory

Ενημέρωση του weight matrix προσεγγιστικά με low-rank matrices:

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 Configuration

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 Hyperparameters

Rank (r):

  • Χαμηλό (4-8): Απλά tasks, λίγα δεδομένα
  • Μεσαίο (16-32): Γενική χρήση
  • Υψηλό (64-128): Πολύπλοκη προσαρμογή

Alpha:

  • Γενικά alpha = 2 × r

Target Modules:

  • Attention layers: q_proj, k_proj, v_proj, o_proj
  • MLP layers: gate_proj, up_proj, down_proj

QLoRA (Quantized LoRA)

Συνδυασμός LoRA + 4-bit quantization.

Χαρακτηριστικά QLoRA

  1. 4-bit NormalFloat (NF4): Προσαρμοσμένη quantization μορφή
  2. Double Quantization: Quantizing quantization constants
  3. Paged Optimizers: Διαχείριση overflow μνήμης GPU

Σύγκριση Μνήμης QLoRA

Μέθοδος7B Model70B Model
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Προσθέτει μαθήσιμα prefixes στα input embeddings: 21

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

1 2### Prompt Tuning 3 4Μάθηση soft prompts: 5

[SOFT_PROMPT] + "Actual input text"

1 2### Adapter Layers 3 4Προσθήκη μικρών δικτύων μεταξύ των transformer layers: 5

Attention → Adapter → LayerNorm → FFN → Adapter → LayerNorm

1 2### (IA)³ - Infused Adapter 3 4Πολλαπλασιασμός activations με learned vectors: 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}

Ποιότητα Δεδομένων

Χαρακτηριστικά Καλών Δεδομένων:

  • Ποικιλία (diverse examples)
  • Συνέπεια (consistent format)
  • Ακρίβεια (accurate labels)
  • Επαρκής ποσότητα (συνήθως 1K-100K examples)

Data Augmentation

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)

Στρατηγικές Εκπαίδευσης

Επιλογή Hyperparameters

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

Αξιολόγηση και Επικύρωση

Metrics

Perplexity:

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

BLEU/ROUGE: Ποιότητα παραγωγής κειμένου

Task-specific: Accuracy, F1, custom metrics

Εντοπισμός Overfitting

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

Deployment

Model Merging

Συγχώνευση LoRA adapter στο base model:

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

Multi-Adapter Serving

Πολλαπλά adapters με ένα μόνο base model:

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

Λύση: Περισσότερα δεδομένα, regularization, early stopping

4. Κακή Γενίκευση

Λύση: Αύξηση ποικιλίας δεδομένων, ποικιλία οδηγιών

Συμπέρασμα

Η προσαρμογή μέσω fine-tuning είναι ο πιο αποτελεσματικός τρόπος για να προσαρμόσετε προεκπαιδευμένα μοντέλα στις ανάγκες μιας επιχείρησης. Ισχυρές προσαρμογές μπορούν να επιτευχθούν ακόμη και με περιορισμένους πόρους χρησιμοποιώντας μεθόδους PEFT όπως LoRA και QLoRA.

Στη Veni AI, παρέχουμε υπηρεσίες συμβουλευτικής και υλοποίησης για έργα enterprise fine-tuning. Επικοινωνήστε μαζί μας για τις ανάγκες σας.

İlgili Makaleler