Views
No views yet
1git clone https://github.com/HITsz-TMG/Uni-MoE.git
2cd Uni-MoE-21conda create -n uni_moe_2 python=3.11
2conda activate uni_moe_2
3pip install torch==2.5.1 torchaudio==2.5.1 torchvision==0.20.1
4pip install -r requirements.txt
5pip install flash-attn==2.6.0.post1 --no-build-isolation
6pip install clip==1.0@git+https://github.com/openai/CLIP.git@dcba3cb2e2827b402d2701e7e1c7d9fed8a20ef11import torch
2from uni_moe.model.processing_qwen2_vl import Qwen2VLProcessor
3from uni_moe.model.modeling_qwen_grin_moe import GrinQwen2VLForConditionalGeneration
4from uni_moe.qwen_vl_utils import process_mm_info
5from uni_moe.model import deepspeed_moe_inference_utils
6
7processor = Qwen2VLProcessor.from_pretrained("HIT-TMG/Uni-MoE-2.0-Base")
8
9model = GrinQwen2VLForConditionalGeneration.from_pretrained("HIT-TMG/Uni-MoE-2.0-Base", torch_dtype=torch.bfloat16).cuda()
10
11processor.data_args = model.config
12
13messages = [{
14 "role": "user",
15 "content": [
16 {"type": "text", "text": "<audio>\n<image>\nAnswer the question in the audio."},
17 {"type": "audio", "audio": "examples/assets/audio/quick_start.mp3"},
18 {"type": "image", "image": "examples/assets/image/quick_start.jpg"}
19 ]
20}]
21
22texts = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
23texts = texts.replace("<image>","<|vision_start|><|image_pad|><|vision_end|>").replace("<audio>","<|audio_start|><|audio_pad|><|audio_end|>").replace("<video>","<|vision_start|><|video_pad|><|vision_end|>")
24image_inputs, video_inputs, audio_inputs = process_mm_info(messages)
25
26inputs = processor(
27 text=texts,
28 images=image_inputs,
29 videos=video_inputs,
30 audios=audio_inputs,
31 padding=True,
32 return_tensors="pt",
33)
34inputs["input_ids"] = inputs["input_ids"].unsqueeze(0)
35
36inputs = inputs.to(device=model.device)
37
38output_ids = model.generate(
39 **inputs,
40 use_cache=True,
41 pad_token_id=processor.tokenizer.eos_token_id,
42 max_new_tokens=4096,
43 temperature=1.0,
44 do_sample=True
45)
46
47text = processor.batch_decode(output_ids[:, inputs["input_ids"].shape[-1]:], skip_special_tokens=True)[0]
48print(text)
49