open-compass/T-Eval

对评测速度和结果的疑问

Opened this issue · 4 comments

我目前使用chatglm3-6b模型进行评测,想要复现Leaderboard (ZH)上的结果,但是评测速度非常慢,而且结果看起来很差。
我使用的是单个H800显卡,meta_template为:

chatglm3_6b = [
    dict(role='system', begin='<|system|>\n', end='\n'),
    dict(role='user', begin='<|user|>\n', end='\n'),
    dict(role='assistant',
         begin='<|assistant|>\n',
         end='<|user|>\n',
         generate=True)
]

还没有跑完,目前的结果:
image
可以看到评测非常慢,而且instruct上的结果看起来很差。
希望作者有时间能帮忙解答一下,非常感谢~

终于跑完了,结果如下:

任务 耗时 结果
instruct json 1小时40分钟 image
review str 8分钟 image
plan json 55分钟 image
plan str 1小时8分钟 image
reason str 4小时51分钟 image
retrieve str 5小时 image
understand str 5小时22分钟 image
RRU json 4小时54分钟 image

可以看到,总共花了差不多24个小时,耗时太长了。
我用utils/convert_results.py代码将结果进行转换后得到:
image
与Leaderboard (ZH)上的结果也相差太大了,这是怎么回事呢?
image
希望作者有时间能帮忙解答一下,非常感谢~

感谢您的反馈

  1. 因为我们function response是用system作为role的,所以在设置模版的时候system应该映射成user的role(后面我们会增加一个role function,这样允许用户自定义function response是什么角色)
  2. 我们近期会优化一下推理代码,一方面是提供一个devset,把数据量降低一点,另一方面加速一下lagent的推理速度,争取1个小时能够推完整个set

感谢作者的回复,如果你们能将Leaderboard中其它模型的meta_template也公开就好了,这样能方便对结果进行复现。
期待作者接下来的工作,将评测耗时给降下来。

@klykq111 我们看了一下这个问题,是chatglm3的tokenizer写的有点问题导致的,它的start,end字符不会呗encode成一个token,所以得走它自己的hf chat接口,我们马上会把相关的代码更新,这个是新测试的instruct的结果

defaultdict(<class 'list'>, {'json_format_metric': 0.9339, 'json_args_em_metric': 0.8186, 'string_format_metric': 0.7822, 'string_args_em_metric': 0.5689})

单卡15min就能推理完~