可以 batch 推理吗?chatglm貌似可以,visualglm该如何做呀?
def test_batch_generation(self):
model, tokenizer = get_model_and_tokenizer()
sentences = [
"你好",
"介绍一下清华大学"
]
parameters = [(False, 2048, 1),
(False, 64, 1),
(True, 2048, 1),
(True, 64, 1),
(True, 2048, 4)]
expected_out_sentences = [
['你好 你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。',
'介绍一下清华大学 清华大学是中国著名的综合性大学,位于北京市海淀区双清路30号,其历史可以追溯到1911年创建的清华学堂,1925年更名为清华学校,1937年抗日战争全面爆发后南迁长沙,1946年迁回清华园。新中国成立后,清华学校更名为清华大学。\n\n清华大学是中国最顶尖的大学之一,在工程、科学、技术、经济、管理等领域都有很高的学术声誉和影响力。学校拥有世界一流的教学设施和科学研究平台,有多个学院和研究中心,包括工程学院、自然科学学院、人文学院、社会科学学院、经济管理学院、法学院、美术学院、医学院、器学院等。\n\n清华大学的本科生招生始于2000年,实行全面二孩政策后,本科生招生规模不断扩大。截至2022年,清华大学共有本科生近3万人,研究生近2万人,其中国际学生占比约为10%。清华大学的本科生教育注重通识教育和个性化培养,强调实践、创新、国际化和综合素质。'],
[
'你好 你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。',
'介绍一下清华大学 清华大学是中国著名的综合性大学,位于北京市海淀区双清路30号,其历史可以追溯到1911年创建的清华学堂,1925年更名为清华学校,1937年抗日战争全面爆发后南迁长沙,1946年迁回'
],
[
'你好 你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。',
'介绍一下清华大学 清华大学是中国著名的综合性研究型大学,位于北京市海淀区双清路 30 号,其溯源于 1911 年创建的清华学堂, 1925 年更名为清华学校, 1937 年秋抗日战争全面爆发后闭校。1949 年 10 月开学复校,成为我国第一个社会主义大学生活了的高校。截至 2023 年,清华学校共管辖 2 个学院、13 个系,有本科专业 60 个,研究生专业 190 个。'
],
[
'你好 你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。',
'介绍一下清华大学 清华大学是中国著名的综合性研究型大学,位于北京市海淀区双清路 30 号,其溯源于 1911 年创建的清华学堂, 1925 年更名为清华学校, 1937 年秋抗日战争全面爆发后'
],
[
'你好 你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。',
'介绍一下清华大学 清华大学是中国著名的综合性研究型大学,位于北京市海淀区双清路30号,其历史可以追溯到1911年创建的清华学堂,1925年更名为清华学校,1937年抗日战争全面爆发后南迁长沙,与北京大学、南开大学组建国立长沙临时大学,1938年迁至 昆明改名为国立西南联合大学,1946年迁回北京。新中国成立后,清华学校更名为清华大学。'
]
]
for (do_sample, max_length, num_beams), expected_output_sentence in zip(parameters, expected_out_sentences):
set_random_seed(42)
inputs = tokenizer(sentences, return_tensors="pt", padding=True)
inputs = inputs.to(torch_device)
outputs = model.generate(
**inputs,
do_sample=do_sample,
max_length=max_length,
num_beams=num_beams
)
batch_out_sentence = tokenizer.batch_decode(outputs, skip_special_tokens=True)
print(batch_out_sentence)
self.assertListEqual(expected_output_sentence, batch_out_sentence)
https://huggingface.co/THUDM/chatglm-6b/blob/619e736c6d4cd139840579c5482063b75bed5666/test_modeling_chatglm.py#L120
理论上也可以,但是暂未实现,需要给image和text之间加入pad,并且修改对应的position_ids和mask
理论上也可以,但是暂未实现,需要给image和text之间加入pad,并且修改对应的position_ids和mask
sat 库 autoregressive_sampling.py 的 filling_sequence() 实现里第一句就是 assert len(seq.shape)=1,不支持 batch,库也不太方便改
这里有一个例子:https://github.com/THUDM/SwissArmyTransformer/blob/main/examples/chatglm/chat.py
sat的模型也可以对接huggingface的generation实现batch推理
这里有一个例子:https://github.com/THUDM/SwissArmyTransformer/blob/main/examples/chatglm/chat.py
sat的模型也可以对接huggingface的generation实现batch推理
哇哦谢谢。请问该如何把自己finetune的模型转成huggingface格式呀?感觉就差一步了
不需要转成huggingface格式,你读一下我给你的链接
@XaviLv hello,你batch预测现在可以成功执行吗,能分享下代码吗,谢谢