THUDM / VisualGLM-6B

Chinese and English multimodal conversational language model | 多模态中英双语对话语言模型
Apache License 2.0
4.1k stars 418 forks source link

推理用Huggingface可以得到正常结果,用sat结果不对 #178

Closed GT9505 closed 1 year ago

GT9505 commented 1 year ago

使用readme里调用hf模型的例子

from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/visualglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/visualglm-6b", trust_remote_code=True).half().cuda()
image_path = "/nas/gongtao.gt/xiaohe_dataset/cls_goods/reject_data/all_data/1028/403745671028/cover.jpg"
response, history = model.chat(tokenizer, image_path, "描述这张图片。", history=[])
print(response)
response, history = model.chat(tokenizer, image_path, "这张图片可能是在什么场所拍摄的?", history=history)
print(response)

获得如下结果:

这件蓝色外套,有拉链口袋和透明薄膜覆盖,可以防水、防风、防晒等性能。它是一件时尚又实用的装备,适合各种场合穿着。无论是户外运动还是日常穿搭都可以轻松应对。它的设计简洁大方,既舒适又美观,是不可或缺的好伙伴。
这张照片可能拍摄于户外或公园等地。蓝色的外套具有出色的防护性能和实用性,适合在户外进行各种活动,如跑步、骑行、徒步旅行等等。此外,透明薄膜的覆盖也可以增强服装的视觉效果,使照片更加生动有趣。

使用readme里调用sat模型的例子

import argparse
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
from model import chat, VisualGLMModel
model, model_args = VisualGLMModel.from_pretrained('visualglm-6b', args=argparse.Namespace(fp16=True, skip_init=True))
from sat.model.mixins import CachedAutoregressiveMixin
model.add_mixin('auto-regressive', CachedAutoregressiveMixin())
image_path = "/nas/gongtao.gt/xiaohe_dataset/cls_goods/reject_data/all_data/1028/403745671028/cover.jpg"
response, history, cache_image = chat(image_path, model, tokenizer, "描述这张图片。", history=[])
print(response)
response, history, cache_image = chat(None, model, tokenizer, "这张图片可能是在什么场所拍摄的?", history=history, image=cache_image)
print(response)

获得如下结果:

.
。

请问可能的原因是什么?

此外,由于模型微调是调用sat模型进行微调,直接推理的结果就不对,导致微调结果更不对了。

1049451037 commented 1 year ago

我们最近更新了代码和checkpoint的格式,需要安装最新版的sat,visualglm的代码也要保证最新。

用新版本代码跑旧版本的checkpoint会报错,用旧版本代码跑新版本的checkpoint会出现推理错误。

GT9505 commented 1 year ago

我们最近更新了代码和checkpoint的格式,需要安装最新版的sat,visualglm的代码也要保证最新,然后删掉本地下载的旧版本的checkpoint,再运行

visualglm是最新的,sat版本是0.4.0,需要更新到0.4.1吗?

1049451037 commented 1 year ago

需要,但是你既然能跑起来应该不需要删本地的checkpoint了,应该就是新版的checkpoint。

GT9505 commented 1 year ago

可以了,谢谢~