项目介绍:LLaVa-1.6-34B-HF
背景与概述
LLaVa-1.6-34B-HF 是一个旨在增强图像文本到文本生成的项目。它是LLaVA项目的一个改进版本,聚焦于改善光学字符识别(OCR)与常识推理。该项目的名称来源于LLaVa-NeXT模型,该模型由多位研究者提出,致力于在多模态聊天机器人应用中结合大型预训练语言模型与视觉编码器。
模型描述
LLaVa-1.6-34B-HF改进了先前的LLaVA-1.5模型,主要通过以下几个方面:
- 融合了Mistral-7B和Nous-Hermes-2-Yi-34B模型以获得更好的商用许可证以及双语支持。
- 使用了更为多样化和高质量的数据集。
- 提升了图像输入的动态高分辨率。
主要用途及限制
该模型主要用于图像描述生成、视觉问答以及多模态聊天机器人等任务。用户可以访问模型中心进行更多探索。
如何使用
以下为模型使用示例:
from transformers import LlavaNextProcessor, LlavaNextForConditionalGeneration
import torch
from PIL import Image
import requests
processor = LlavaNextProcessor.from_pretrained("llava-hf/llava-v1.6-34b-hf")
model = LlavaNextForConditionalGeneration.from_pretrained("llava-hf/llava-v1.6-34b-hf", torch_dtype=torch.float16, low_cpu_mem_usage=True)
model.to("cuda:0")
url = "https://github.com/haotian-liu/LLaVA/blob/1a91fc274d7c35a9b50b3cb29c4247ae5837ce39/images/llava_v1_5_radar.jpg?raw=true"
image = Image.open(requests.get(url, stream=True).raw)
conversation = [
{
"role": "user",
"content": [
{"type": "text", "text": "What is shown in this image?"},
{"type": "image"},
],
},
]
prompt = processor.apply_chat_template(conversation, add_generation_prompt=True)
inputs = processor(images=image, text=prompt, return_tensors="pt").to("cuda:0")
output = model.generate(**inputs, max_new_tokens=100)
print(processor.decode(output[0], skip_special_tokens=True))
模型优化
通过bitsandbytes
库进行4位量化
要启用4位量化,确保安装bitsandbytes
并使用CUDA兼容的GPU设备。代码片段修改如下:
model = LlavaNextForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=torch.float16,
low_cpu_mem_usage=True,
+ load_in_4bit=True
)
使用Flash-Attention 2以加速生成
安装flash-attn
后,调整代码片段如下:
model = LlavaNextForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=torch.float16,
low_cpu_mem_usage=True,
+ use_flash_attention_2=True
).to(0)
引用信息
如果需要引用该项目,可使用以下BibTeX格式:
@misc{liu2023improved,
title={Improved Baselines with Visual Instruction Tuning},
author={Haotian Liu and Chunyuan Li and Yuheng Li and Yong Jae Lee},
year={2023},
eprint={2310.03744},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
通过以上信息,用户可以更好地理解和利用LLaVa-1.6-34B-HF模型实现多模态任务。