-
Notifications
You must be signed in to change notification settings - Fork 143
Open
Description
Skywork/eval/文件夹下的evaluate_ceval.py, evaluate_cmmlu.py和evaluate_mmlu.py文件中,获取选项ABCD的概率的关键代码如下:
softval = torch.nn.functional.softmax( torch.tensor( [ logits[tokenizer("A")["input_ids"][-1]], logits[tokenizer("B")["input_ids"][-1]], logits[tokenizer("C")["input_ids"][-1]], logits[tokenizer("D")["input_ids"][-1]], ] ), dim=0, )
以选项A为例:
tokenizer("A")会把“A“认为是一个句子,在”A“前面拼接句子开始标志”_“。因此tokenizer实际上转化的字符为“<s> _A”,得到input_ids=[1, 319]。代码中tokenizer("A")["input_ids"][-1]取得的id是319,对应的字符为“_A”,而真正“A”字符对应的id是:
tokenizer.convert_tokens_to_ids('A')=29909.
BCD选项也存在同样的问题。
评估时的一个full_prompt的例子格式如下:
以下是关于农学的单项选择题,请直接给出正确答案的选项。
题目:肉牛屠宰后,胴体的哪个部位肉质较好
A. 胸
B. 腹
C. 大腿
D. 小腿
答案:C……
题目:羊胴体中,肉质较好的部位是
A. 胸下肉
B. 肩胛肉
C. 后腿肉
D. 小腿肉
答案:C以下是关于农学的单项选择题,请直接给出正确答案的选项。
题目:在农业生产中被当作极其重要的劳动对象发挥作用,最主要的不可替代的基本生产资料是
A. 农业生产工具
B. 土地
C. 劳动力
D. 资金
答案:
根据full_prompt例子的格式,选项应该填在“答案:”后面,不应该另起一行。
因此选择ABCD选项的id时,应该取“A”“B”“C”"D"字符的概率,而不是“_A”,"_B","_C","_D"字符的概率。
Metadata
Metadata
Assignees
Labels
No labels