OFA-Sys / gsm8k-ScRel

Codes and Data for Scaling Relationship on Learning Mathematical Reasoning with Large Language Models
https://arxiv.org/abs/2308.01825
215 stars 16 forks source link

关于源码的一些细节问题 #7

Closed Haskely closed 1 year ago

Haskely commented 1 year ago

1. special tokens 设置问题:

https://github.com/OFA-Sys/gsm8k-ScRel/blob/f4d01761ec03d88a39486399c4617d29ee1dca7f/train.py#L43-L45 这三行,为什么把 eos bos unk 都设置为 eos;而 https://github.com/OFA-Sys/gsm8k-ScRel/blob/f4d01761ec03d88a39486399c4617d29ee1dca7f/train_llama_30b_65b.py#L51-L53 以及 https://github.com/OFA-Sys/gsm8k-ScRel/blob/f4d01761ec03d88a39486399c4617d29ee1dca7f/train_llama2_70b.py#L51-L53 就是不一样的。为什么7b,13b 模型 与 30b,65b,70b 模型之间需要有这种差异,还是随意指定的?

2. 数据集处理问题:

https://github.com/OFA-Sys/gsm8k-ScRel/blob/f4d01761ec03d88a39486399c4617d29ee1dca7f/group_test_7b_13b.py#L109-L110 以及 https://github.com/OFA-Sys/gsm8k-ScRel/blob/f4d01761ec03d88a39486399c4617d29ee1dca7f/test.py#L109-L110 会对数据做出这种操作,把 token ids 截取后 100 个拼一下用意是什么?我实在无法理解。

https://github.com/OFA-Sys/gsm8k-ScRel/blob/f4d01761ec03d88a39486399c4617d29ee1dca7f/single_inference_30b.py#L114-L115 以及 https://github.com/OFA-Sys/gsm8k-ScRel/blob/f4d01761ec03d88a39486399c4617d29ee1dca7f/single_inference_65b.py#L113-L114 却没有这种操作?这也是 7b,13b 模型 与 30b,65b,70b 模型之间需要有差异吗?

GanjinZero commented 1 year ago

代码有些历史原因……llama 7/13b用的是最老的alpaca代码训练的;后面训的时候我们fix了这个问题。 self.input_ids = data_dict["input_ids"] + data_dict["input_ids"][-100:] 这个的原因是多机器预测的时候为了DDP方便,确保每个显卡获得的样本id和他的显卡顺序是对齐的。如果不加这个,样本数不能整除显卡数,就需要操作些额外的细节。single_inference不涉及ddp,所以不需要。