引子
最近在关注多模态大模型,之前4月份的时候关注过CogVLM(CogVLM/CogAgent环境搭建&推理测试-CSDN博客)。模型整体表现还不错,不过不支持中文。智谱AI刚刚开源了GLM-4大模型,套餐里面包含了GLM-4V-9B大模型,模型基于 GLM-4-9B 的多模态模型 GLM-4V-9B。GLM-4V-9B 具备 1120 * 1120 高分辨率下的中英双语多轮对话能力,在中英文综合能力、感知推理、文字识别、图表理解等多方面多模态评测中,GLM-4V-9B 表现出超越 GPT-4-turbo-2024-04-09、Gemini 1.0 Pro、Qwen-VL-Max 和 Claude 3 Opus 的卓越性能。嗯,,,很厉害 ,OK,那就让我们开始吧。
一、环境搭建
1、模型下载
git clone 魔搭社区
2、代码下载
git clone GitHub - THUDM/GLM-4: GLM-4 series: Open Multilingual Multimodal Chat LMs | 开源多语言多模态对话模型
3、安装环境
docker run -it -v /datas/work/zzq/:/workspace --gpus=all pytorch/pytorch:2.0.1-cuda11.7-cudnn8-devel bash
cd /workspace/GLM-4V/GLM-4/composite_demo
pip install -r requirements.txt -i Simple Index
二、代码运行
1、官方代码运行
import torch
from PIL import Image
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained("model/glm-4v-9b", trust_remote_code=True)
query = '描述这张图片'
image = Image.open("longbench.png").convert('RGB')
inputs = tokenizer.apply_chat_template([{"role": "user", "image": image, "content": query}],
add_generation_prompt=True, tokenize=True, return_tensors="pt",
return_dict=True) # chat mode
inputs = inputs.to(device)
model = AutoModelForCausalLM.from_pretrained(
"model/glm-4v-9b",
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=True,
trust_remote_code=True
).to(device).eval()
gen_kwargs = {"max_length": 2500, "do_sample": True, "top_k": 1}
with torch.no_grad():
outputs = model.generate(**inputs, **gen_kwargs)
outputs = outputs[:, inputs['input_ids'].shape[1]:]
print(tokenizer.decode(outputs[0]))
python glm-4v_test_demo.py
哦吼,显存爆了,据传说要32G显存,那老夫就无能为力了。