Views
No views yet
1import requests
2from PIL import Image
3
4import torch
5from transformers import AutoProcessor, AutoModelForVision2Seq, LlavaConfig
6import transformers
7from torch import nn
8
9class LlavaMultiModalProjectorYiVL(nn.Module):
10 def __init__(self, config: "LlavaConfig"):
11 super().__init__()
12 self.linear_1 = nn.Linear(config.vision_config.hidden_size, config.text_config.hidden_size, bias=True)
13 self.linear_2 = nn.LayerNorm(config.text_config.hidden_size, bias=True)
14 self.linear_3 = nn.Linear(config.text_config.hidden_size, config.text_config.hidden_size, bias=True)
15 self.linear_4 = nn.LayerNorm(config.text_config.hidden_size, bias=True)
16 self.act = nn.GELU()
17
18 def forward(self, image_features):
19 hidden_states = self.linear_1(image_features)
20 hidden_states = self.linear_2(hidden_states)
21 hidden_states = self.act(hidden_states)
22 hidden_states = self.linear_3(hidden_states)
23 hidden_states = self.linear_4(hidden_states)
24 return hidden_states
25# Monkey patch of LlavaMultiModalProjector is mandatory
26transformers.models.llava.modeling_llava.LlavaMultiModalProjector = LlavaMultiModalProjectorYiVL
27
28model_id = "BUAADreamer/Yi-VL-34B-hf"
29
30messages = [
31 { "role": "user", "content": "<image>What's in the picture?" }
32]
33image_file = "http://images.cocodataset.org/val2017/000000039769.jpg"
34
35model = AutoModelForVision2Seq.from_pretrained(
36 model_id,
37 torch_dtype=torch.float16,
38 low_cpu_mem_usage=True,
39).to(0)
40processor = AutoProcessor.from_pretrained(model_id)
41
42text = [processor.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=False)]
43images = [Image.open(requests.get(image_file, stream=True).raw)]
44inputs = processor(text=text, images=images, return_tensors='pt').to(0, torch.float16)
45
46output = model.generate(**inputs, max_new_tokens=200)
47output = processor.batch_decode(output, skip_special_tokens=True)
48print(output.split("Assistant:")[-1].strip())1llamafactory-cli webchat \
2--model_name_or_path BUAADreamer/Yi-VL-34B-hf \
3--template yi_vl \
4--visual_inputs