Views
No views yet
deepvk/llava-saiga-8b,
дообученный методом QLoRA на датасете GQA-ru. Адаптер повышает качество ответов на
визуальные вопросы на русском языке. Работа выполнена в рамках летней практики
VK Education.| Бенчмарк | Базовая модель | С адаптером | VK опубликовано |
|---|---|---|---|
| GQA-ru (exact-match) | 51.61 | 53.15 | 51.44 |
| MMBench-ru (circular) | 55.37 | 56.0 | 56.65 |
default, хотя модель обучалась с full, а
размер патча у процессора не заполняется автоматически. Без них адаптер даёт
неверные ответы или падает.1import torch
2from peft import PeftModel
3from transformers import AutoProcessor, BitsAndBytesConfig, LlavaForConditionalGeneration
4
5BASE = "deepvk/llava-saiga-8b"
6ADAPTER = "Danilius228/llava-saiga-8b-lora-gqa-ru"
7
8quant = BitsAndBytesConfig(
9 load_in_4bit=True,
10 bnb_4bit_quant_type="nf4",
11 bnb_4bit_compute_dtype=torch.bfloat16,
12 bnb_4bit_use_double_quant=True,
13)
14
15model = LlavaForConditionalGeneration.from_pretrained(
16 BASE, quantization_config=quant, dtype=torch.bfloat16, device_map="cuda:0",
17)
18model.eval()
19
20processor = AutoProcessor.from_pretrained(BASE)
21processor.vision_feature_select_strategy = "full" # обязательный фикс
22processor.patch_size = model.config.vision_config.patch_size # обязательный фикс
23
24model = PeftModel.from_pretrained(model, ADAPTER) # подключаем LoRAtransformers==4.57.3. Версия 5.x ломает LLaVA внутри
get_placeholder_mask.| Параметр | Значение |
|---|---|
| Метод | QLoRA (база в NF4, обучаются только адаптеры) |
| Ранг LoRA / alpha / dropout | 16 / 32 / 0.05 |
| Целевые модули | q, k, v, o, gate, up, down проекции языковой части |
| Learning rate | 2e-4, косинусный планировщик, warmup 0.03 |
| Эпохи | 1 |
| Эффективный размер батча | 16 |
| Обучающих примеров | 12 000 (GQA-ru train, seed=42) |
| Оборудование | NVIDIA L4 (Colab Pro) |