Views
No views yet


1from PIL import Image
2from transformers import AutoTokenizer, AutoModel, AutoImageProcessor, AutoModelForCausalLM
3from transformers.generation.configuration_utils import GenerationConfig
4import torch
5
6import sys
7sys.path.append(PATH_TO_BAAI_Emu3-Chat_MODEL)
8from processing_emu3 import Emu3Processor
9
10# model path
11EMU_HUB = "BAAI/Emu3-Chat"
12VQ_HUB = "BAAI/Emu3-VisionTokenier"
13
14# prepare model and processor
15model = AutoModelForCausalLM.from_pretrained(
16 EMU_HUB,
17 device_map="cuda:0",
18 torch_dtype=torch.bfloat16,
19 attn_implementation="flash_attention_2",
20 trust_remote_code=True,
21)
22
23tokenizer = AutoTokenizer.from_pretrained(EMU_HUB, trust_remote_code=True, padding_side="left")
24image_processor = AutoImageProcessor.from_pretrained(VQ_HUB, trust_remote_code=True)
25image_tokenizer = AutoModel.from_pretrained(VQ_HUB, device_map="cuda:0", trust_remote_code=True).eval()
26processor = Emu3Processor(image_processor, image_tokenizer, tokenizer)
27
28# prepare input
29text = "Please describe the image"
30image = Image.open("assets/demo.png")
31
32inputs = processor(
33 text=text,
34 image=image,
35 mode='U',
36 return_tensors="pt",
37 padding="longest",
38)
39
40# prepare hyper parameters
41GENERATION_CONFIG = GenerationConfig(
42 pad_token_id=tokenizer.pad_token_id,
43 bos_token_id=tokenizer.bos_token_id,
44 eos_token_id=tokenizer.eos_token_id,
45 max_new_tokens=1024,
46)
47
48# generate
49outputs = model.generate(
50 inputs.input_ids.to("cuda:0"),
51 GENERATION_CONFIG,
52 attention_mask=inputs.attention_mask.to("cuda:0"),
53)
54
55outputs = outputs[:, inputs.input_ids.shape[-1]:]
56print(processor.batch_decode(outputs, skip_special_tokens=True)[0])