Open jieheroli opened 5 months ago
经排查,已找到问题。具体如下: 模型类HuggingFaceChatGLM3实例化的时候,generation_kwargs为空。因此给人的假象好像是推理过程do_sample=False,采用greedy search的方式。
但实际的推理过程,调用model类的generate_from_template()方法。这个方法继承自其父类BaseModel。内部调用generate()方法。这个方法是在HuggingFaceChatGLM3中进行了overwrite。在generate()内部又调用了chat()方法,这个chat()方法的定义来自于模型路径中的modeling_chatglm.py文件。此文件在运行过程中动态加载。其中定义了前述的chat()方法。 这个方法的方法签名,见下述代码:
def chat(self, tokenizer, query: str, history: List[Tuple[str, str]] = None, role: str = "user",
max_length: int = 8192, num_beams=1, do_sample=True, top_p=0.8, temperature=0.8, logits_processor=None,
**kwargs):
可见,实际上推理时,还是启用了采样策略。这是导致评测结果不稳定的根本原因。
先决条件
问题类型
我正在使用官方支持的任务/模型/数据集进行评估。
环境
重现问题 - 代码/配置示例
重现问题 - 命令或脚本
重现问题 - 错误信息
其他信息
【改动】我只把模型加载地址改为了本地加载,而不是从互联网下载。
【几个观察】 1.执行几次相同的命令后,在outputs/default/的不同时间戳目录下发现配置文件是一样的,除了workdir。 2.在在outputs/default/的不同时间戳目录下对同一问题的预测结果有差异。