train_tokenizer代码在train_tokenizer.py
中,用bash step_01.sh
运行,这里使用的是char-based
的方法,后面看时间情况改成使用bpe
的方法(看来是没时间弄了)。
pretrain代码在pretrain.py
中,用bash step_02.sh
运行。
注意:
--train_type pretrain
来指定模型进行预训练。
用python pretrain.py
运行。
注意:
- 在
pretrain.py
代码中自己修改想要评测模型的位置。 - 修改
eval_type
变量来选择是对pretrain
测试还是对sft
测试
用bash step_02.sh
运行。
注意:
--train_type sft
来指定模型进行supervised finetune
。
执行
cd ceval
bash ceval.sh
注意:
- 在
ceval.sh
中修改自己的模型路径和参数。 - 修改了
generate.py
,没懂为什么老师是用logits=logits[0][0]
,不应该是根据最近生成的token获得的词典大小的logits来预测ABCD吗?
- 以上代码都能在我服务器上运行,且看起来效果还不错,如果有问题,可以Q我 or Email
[email protected]
。
- 本次实验更新了
DPO
和Application
; DPO
分别对自己的sft
模型和Qwen
系列模型进行了DPO
更新;Application
选择的是文本分类,直接使用Qwen
系列的模型,分别实现使用zero-shot
的prompt
进行对话生成的文本分类,和直接使用Qwen
Model
代码中的AutoModelForSequenceClassification
进行直接分类训练。
- 分别在
DPO_MyGPT
和DPO_Qwen
文件夹中(训练数据自己准备)
cd DPO_MyGPT 或者 cd DPO_Qwen
训练:
python train.py
测试
python inference.py
- 自己的
sft
模型dpo
后好像训崩了(应该是代码写的依托,但是懒得改了),但是Qwen
模型dpo
后效果very good;
- 在
Text_classification
文件夹中,因为我对数据集也做了一些处理,所以直接传上去了,在toutiao_cat_data
文件夹中; - zero-shot的对话生成进行分类:
cd Text_classification
训练:
python train.py
测试
python inference.py
- 直接使用
Qwen
定制的AutoModelForSequenceClassification
进行文本分类:
cd Text_classification
训练:
python train_v2.py
测试
python inference_v2.py