--- language: - ru - en license_name: qwen-research license_link: https://huggingface.co/Qwen/Qwen2.5-VL-3B-Instruct/blob/main/LICENSE library_name: transformers pipeline_tag: image-text-to-text base_model: Qwen/Qwen2.5-VL-3B-Instruct datasets: - deepvk/GQA-ru - deepvk/MMBench-ru tags: - multimodal - vision-language - visual-question-answering - vqa - russian - qwen2.5-vl - lora - merged model-index: - name: qwen2.5-vl-gqa-ru-lora-v2 results: - task: type: visual-question-answering name: Visual Question Answering dataset: type: deepvk/GQA-ru name: GQA-ru split: testdev_balanced metrics: - type: exact_match name: Exact Match value: 0.5372462344 - type: bertscore name: BERTScore F1 value: 0.9065163 - task: type: visual-question-answering name: Multiple-choice Visual Question Answering dataset: type: deepvk/MMBench-ru name: MMBench-ru split: dev metrics: - type: accuracy name: Accuracy value: 0.8033248082 --- # Qwen2.5-VL GQA-ru LoRA v2 `qwen2.5-vl-gqa-ru-lora-v2` — русскоязычная visual question answering (VQA) модель на базе [Qwen2.5-VL-3B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-3B-Instruct). Модель дообучена методом LoRA на 20 000 примерах `train_balanced` из [GQA-ru](https://huggingface.co/datasets/deepvk/GQA-ru) для генерации коротких ответов на вопросы по изображениям. Это полная модель: LoRA-адаптер уже объединён с базовыми весами. Отдельно загружать `Qwen/Qwen2.5-VL-3B-Instruct` или подключать PEFT-адаптер не нужно. ## Особенности v2 - лучший Exact Match на GQA-ru среди проверенных в проекте моделей: **0,5372**; - на 21,74 процентного пункта выше базовой Qwen2.5-VL по Exact Match; - оптимальна, если основная задача — короткие свободные ответы на русском языке; - в отличие от v3, LoRA применялась к текстовым attention- и MLP-проекциям, без `qkv` и `proj` vision-модуля. ## Быстрый запуск Установите зависимости: ```bash pip install "transformers>=4.49" accelerate pillow torch ``` Пример инференса: ```python import torch from PIL import Image from transformers import AutoProcessor, Qwen2_5_VLForConditionalGeneration MODEL_ID = "qwen2.5-vl-gqa-ru-lora-v2" # или путь к локальной папке model = Qwen2_5_VLForConditionalGeneration.from_pretrained( MODEL_ID, torch_dtype=torch.bfloat16, device_map="auto", ).eval() processor = AutoProcessor.from_pretrained(MODEL_ID) image = Image.open("image.jpg").convert("RGB") question = "Какого цвета автомобиль?" messages = [{ "role": "user", "content": [ {"type": "image", "image": image}, { "type": "text", "text": ( "Answer the question using only the image. Give a short answer.\n" f"Question: {question}\nAnswer:" ), }, ], }] text = processor.apply_chat_template( messages, tokenize=False, add_generation_prompt=True, ) inputs = processor( text=[text], images=[image], padding=True, return_tensors="pt", ).to(model.device) with torch.inference_mode(): generated_ids = model.generate( **inputs, max_new_tokens=32, do_sample=False, ) generated_ids = generated_ids[:, inputs.input_ids.shape[1]:] answer = processor.batch_decode( generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False, )[0] print(answer.strip()) ``` Для GPU без поддержки BF16 замените `torch.bfloat16` на `torch.float16`. На CPU можно использовать `torch.float32`, но генерация будет значительно медленнее. Модель также понимает обычный русскоязычный промпт, однако выше приведён шаблон, с которым она обучалась. ## Обучение | Параметр | Значение | |---|---:| | Базовая модель | `Qwen/Qwen2.5-VL-3B-Instruct` | | Обучающий сплит | GQA-ru `train_balanced` | | Число примеров | 20 000 | | Epochs | 1 | | Batch size / gradient accumulation | 1 / 8 | | Learning rate | 1e-5 | | Scheduler / warmup | cosine / 0,03 | | LoRA `r` / `alpha` / dropout | 16 / 32 / 0,05 | | LoRA target modules | `q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj` | | Max sequence length | 3072 | | Image pixels, min / max | 200 704 / 802 816 | | Precision | BF16 | | Optimizer / weight decay | AdamW / 0,01 | | Seed | 42 | | Train loss | 0,3871 | | Train runtime | 4 ч 44 мин | Базовые веса были заморожены; во время обучения обновлялись только LoRA-параметры. Использовались gradient checkpointing и seed 42. ## Оценка Модель проверена на полных оценочных сплитах: 12 216 заданиях GQA-ru `testdev_balanced` и 3 910 заданиях MMBench-ru `dev`. В итоговых предсказаниях нет пропущенных идентификаторов, дубликатов или ошибок инференса. | Модель | GQA-ru Exact Match | GQA-ru BERTScore F1 | MMBench-ru Accuracy | |---|---:|---:|---:| | **Qwen2.5-VL GQA-ru LoRA v2** | **0,5372** | **0,9065** | **0,8033** | | Qwen2.5-VL-3B-Instruct | 0,3198 | 0,8064 | 0,7992 | - **Exact Match**: совпадение с эталоном после приведения к нижнему регистру, удаления лишних пробелов и пунктуации. - **BERTScore F1**: семантическое сходство на основе `bert-base-multilingual-cased`. - **MMBench-ru Accuracy**: доля правильно выбранных вариантов ответа. ## Назначение и ограничения Модель предназначена для экспериментального и исследовательского русскоязычного VQA. Она лучше всего подходит для коротких фактических ответов об объектах, их атрибутах и отношениях на изображении. - Модель может ошибаться, галлюцинировать и воспроизводить смещения базовой модели и обучающих данных. - GQA-ru ориентирован на короткие ответы; качество длинных объяснений, OCR, документов, видео и других доменов отдельно не измерялось. - Exact Match не засчитывает корректные синонимы, если они не совпали с эталоном после нормализации. - Различия менее одного процентного пункта на MMBench-ru между вариантами Qwen следует трактовать осторожно. - Не используйте модель как единственный источник для медицинских, юридических, финансовых или иных решений с высокими рисками. ## Лицензия и благодарности Модель распространяется на условиях [Qwen Research License](https://huggingface.co/Qwen/Qwen2.5-VL-3B-Instruct/blob/main/LICENSE). Перед использованием также проверьте условия лицензий GQA-ru и MMBench-ru. - Базовая модель: [Qwen/Qwen2.5-VL-3B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-3B-Instruct) - Данные: [deepvk/GQA-ru](https://huggingface.co/datasets/deepvk/GQA-ru) и [deepvk/MMBench-ru](https://huggingface.co/datasets/deepvk/MMBench-ru) - Код, ноутбуки и полные результаты: [vk-vision-language-vqa](https://github.com/Dezurn/vk-vision-language-vqa)