Views
No views yet
TextVQA, DocVQA.| Model name | cogvlm2-llama3-chat-19B-int4 | cogvlm2-llama3-chat-19B |
|---|---|---|
| GPU Memory Required | 16G | 42G |
| System Required | Linux (With Nvidia GPU) | Linux (With Nvidia GPU) |
| Model | Open Source | LLM Size | TextVQA | DocVQA | ChartQA | OCRbench | MMMU | MMVet | MMBench |
|---|---|---|---|---|---|---|---|---|---|
| CogVLM1.1 | ✅ | 7B | 69.7 | - | 68.3 | 590 | 37.3 | 52.0 | 65.8 |
| LLaVA-1.5 | ✅ | 13B | 61.3 | - | - | 337 | 37.0 | 35.4 | 67.7 |
| Mini-Gemini | ✅ | 34B | 74.1 | - | - | - | 48.0 | 59.3 | 80.6 |
| LLaVA-NeXT-LLaMA3 | ✅ | 8B | - | 78.2 | 69.5 | - | 41.7 | - | 72.1 |
| LLaVA-NeXT-110B | ✅ | 110B | - | 85.7 | 79.7 | - | 49.1 | - | 80.5 |
| InternVL-1.5 | ✅ | 20B | 80.6 | 90.9 | 83.8 | 720 | 46.8 | 55.4 | 82.3 |
| QwenVL-Plus | ❌ | - | 78.9 | 91.4 | 78.1 | 726 | 51.4 | 55.7 | 67.0 |
| Claude3-Opus | ❌ | - | - | 89.3 | 80.8 | 694 | 59.4 | 51.7 | 63.3 |
| Gemini Pro 1.5 | ❌ | - | 73.5 | 86.5 | 81.3 | - | 58.5 | - | - |
| GPT-4V | ❌ | - | 78.0 | 88.4 | 78.5 | 656 | 56.8 | 67.7 | 75.0 |
| CogVLM2-LLaMA3 (Ours) | ✅ | 8B | 84.2 | 92.3 | 81.0 | 756 | 44.3 | 60.4 | 80.5 |
| CogVLM2-LLaMA3-Chinese (Ours) | ✅ | 8B | 85.0 | 88.4 | 74.7 | 780 | 42.8 | 60.5 | 78.9 |
1import torch
2from PIL import Image
3from transformers import AutoModelForCausalLM, AutoTokenizer
4
5MODEL_PATH = "THUDM/cogvlm2-llama3-chat-19B-int4"
6DEVICE = 'cuda' if torch.cuda.is_available() else 'cpu'
7TORCH_TYPE = torch.bfloat16 if torch.cuda.is_available() and torch.cuda.get_device_capability()[
8 0] >= 8 else torch.float16
9
10tokenizer = AutoTokenizer.from_pretrained(
11 MODEL_PATH,
12 trust_remote_code=True
13)
14model = AutoModelForCausalLM.from_pretrained(
15 MODEL_PATH,
16 torch_dtype=TORCH_TYPE,
17 trust_remote_code=True,
18 low_cpu_mem_usage=True,
19).eval()
20
21text_only_template = "A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. USER: {} ASSISTANT:"
22
23while True:
24 image_path = input("image path >>>>> ")
25 if image_path == '':
26 print('You did not enter image path, the following will be a plain text conversation.')
27 image = None
28 text_only_first_query = True
29 else:
30 image = Image.open(image_path).convert('RGB')
31
32 history = []
33
34 while True:
35 query = input("Human:")
36 if query == "clear":
37 break
38
39 if image is None:
40 if text_only_first_query:
41 query = text_only_template.format(query)
42 text_only_first_query = False
43 else:
44 old_prompt = ''
45 for _, (old_query, response) in enumerate(history):
46 old_prompt += old_query + " " + response + "\n"
47 query = old_prompt + "USER: {} ASSISTANT:".format(query)
48 if image is None:
49 input_by_model = model.build_conversation_input_ids(
50 tokenizer,
51 query=query,
52 history=history,
53 template_version='chat'
54 )
55 else:
56 input_by_model = model.build_conversation_input_ids(
57 tokenizer,
58 query=query,
59 history=history,
60 images=[image],
61 template_version='chat'
62 )
63 inputs = {
64 'input_ids': input_by_model['input_ids'].unsqueeze(0).to(DEVICE),
65 'token_type_ids': input_by_model['token_type_ids'].unsqueeze(0).to(DEVICE),
66 'attention_mask': input_by_model['attention_mask'].unsqueeze(0).to(DEVICE),
67 'images': [[input_by_model['images'][0].to(DEVICE).to(TORCH_TYPE)]] if image is not None else None,
68 }
69 gen_kwargs = {
70 "max_new_tokens": 2048,
71 "pad_token_id": 128002,
72 }
73 with torch.no_grad():
74 outputs = model.generate(**inputs, **gen_kwargs)
75 outputs = outputs[:, inputs['input_ids'].shape[1]:]
76 response = tokenizer.decode(outputs[0])
77 response = response.split("<|end_of_text|>")[0]
78 print("\nCogVLM2:", response)
79 history.append((query, response))@misc{wang2023cogvlm,
title={CogVLM: Visual Expert for Pretrained Language Models},
author={Weihan Wang and Qingsong Lv and Wenmeng Yu and Wenyi Hong and Ji Qi and Yan Wang and Junhui Ji and Zhuoyi Yang and Lei Zhao and Xixuan Song and Jiazheng Xu and Bin Xu and Juanzi Li and Yuxiao Dong and Ming Ding and Jie Tang},
year={2023},
eprint={2311.03079},
archivePrefix={arXiv},
primaryClass={cs.CV}
}