🚀 LLaVA-Saiga-8b
LLaVA-Saiga-8b是一个基于视觉语言模型(VLM),它依托于IlyaGusev/saiga_llama3_8b
模型,并在原始的LLaVA设置下进行训练。该模型主要适配俄语,但也支持英语。
🚀 快速开始
LLaVA-Saiga-8b模型可以通过transformers
API轻松使用。以下是具体的使用示例:
import requests
from PIL import Image
from transformers import AutoProcessor, AutoTokenizer, LlavaForConditionalGeneration
model_name = "deepvk/llava-saiga-8b"
model = LlavaForConditionalGeneration.from_pretrained(model_name)
processor = AutoProcessor.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
url = "https://www.ilankelman.org/stopsigns/australia.jpg"
img = Image.open(requests.get(url, stream=True).raw)
messages = [
{"role": "user", "content": "<image>\nОпиши картинку несколькими словами."}
]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(images=[img], text=text, return_tensors="pt")
generate_ids = model.generate(**inputs, max_new_tokens=30)
answer = tokenizer.decode(generate_ids[0, inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(answer)
使用时,在文本中使用<image>
标签指向图片,并遵循多轮对话的聊天模板。该模型能够在没有图片的情况下进行聊天,也可以在对话中处理多张图片,但这种情况尚未经过充分测试。
由于该模型的格式,它可以直接在流行的框架中使用。例如,你可以使用lmms-eval来测试模型,具体细节请参阅“结果”部分。
💻 使用示例
基础用法
import requests
from PIL import Image
from transformers import AutoProcessor, AutoTokenizer, LlavaForConditionalGeneration
model_name = "deepvk/llava-saiga-8b"
model = LlavaForConditionalGeneration.from_pretrained(model_name)
processor = AutoProcessor.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
url = "https://www.ilankelman.org/stopsigns/australia.jpg"
img = Image.open(requests.get(url, stream=True).raw)
messages = [
{"role": "user", "content": "<image>\nОпиши картинку несколькими словами."}
]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(images=[img], text=text, return_tensors="pt")
generate_ids = model.generate(**inputs, max_new_tokens=30)
answer = tokenizer.decode(generate_ids[0, inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(answer)
高级用法
使用时,在文本中使用<image>
标签指向图片,并遵循多轮对话的聊天模板。该模型能够在没有图片的情况下进行聊天,也可以在对话中处理多张图片,但这种情况尚未经过充分测试。
🔧 技术细节
训练过程
为了训练这个模型,我们遵循了原始的LLaVA管道,并复用了haotian-liu/LLaVA
框架。
模型的训练分为两个阶段:
- 使用来自
ShareGPT4V
的预训练数据来训练适配器。
- 指令微调包括训练大语言模型(LLM)和适配器,为此我们使用了以下数据:
整个训练过程在8个A100 80GB的GPU上进行了3 - 4天。
评估
模型的性能使用lmms-eval
框架进行评估:
accelerate launch -m lmms_eval --model llava_hf --model_args pretrained="deepvk/llava-saiga-8b" \
--tasks gqa-ru,mmbench_ru_dev,gqa,mmbench_en_dev --batch_size 1 \
--log_samples --log_samples_suffix llava-saiga-8b --output_path ./logs/
评估结果
注意:对于MMBench,我们没有使用OpenAI API来查找生成字符串中的量词。因此,该分数类似于GQA基准测试中的精确匹配分数。
📄 许可证
本项目采用Apache-2.0许可证。
📚 引用
@misc{liu2023llava,
title={Visual Instruction Tuning},
author={Liu, Haotian and Li, Chunyuan and Wu, Qingyang and Lee, Yong Jae},
publisher={NeurIPS},
year={2023},
}
@misc{deepvk2024llava-saiga-8b,
title={LLaVA-Saiga-8b},
author={Belopolskih, Daniil and Spirin, Egor},
url={https://huggingface.co/deepvk/llava-saiga-8b},
publisher={Hugging Face}
year={2024},
}