[TOC]

1.实战Step1:监督微调

wN4IUv

基础语言模型是指只在大规模文本语料中进行了预训练的模型,未经过指令和下游任务微调、以及人类反馈等任何对齐优化。

1.1 任务说明: 使用标定的数据对预训练模型进行微调

启动训练: 通过执行下面的命令,就可以开启模型的训练。 在执行以下命令以开始模型训练之前,请确保设置了 CUDA 并激活了 conda 运行环境

$ python3 train.py --step 1 --deployment-type single_gpu  #单GPU训练
$ python3 train.py --step 1 --deployment-type single_node #多GPU训练
$ python3 train.py --step 1 --deployment-type multi_node  #多Node训练

此步骤主要进行:

模型下载:代码会自动的下载对应的模型,默认情况下模型被存放在 ~/.cache/huggingface/hub/models--facebook--opt-1.3b 数据下载: 此步训练使用了以下数据

Dahoas/rm-static    # 对话(prompt,response,chosen,rejected)
Dahoas/full-hh-rlhf # 对话(prompt,response,chosen,rejected)
Dahoas/synthetic-instruct-gptj-pairwise #对话(prompt,chosen,rejected)
yitingxie/rlhf-reward-datasets  # 对话(prompt,chosen,rejected)
openai/webgpt_comparisons       # 带人工打分的数据,comparisons with human feedback,19,578 comparisons)
stanfordnlp/SHP                 # 18个领域的385k 人类标注数据

模型训练: 模型训练完成之后会被存储在 output/actor-models/1.3b 下面。你可以通过 training.log 文件来查看训练的进度。

评价与测试:

打开文件 run_prompt.sh 添加 baseline 模型,和 finetune 后的模型:

export CUDA_VISIBLE_DEVICES=0 python prompt_eval.py \ --model_name_or_path_baseline facebook/opt-1.3b \ --model_name_or_path_finetune ../../output/actor-models/1.3b 评价程序会调用 prompt_eval.py 来分别输出 baseline 和 finetune 后模型的结果。

要执行此代码,需要切换到 step1_supervised_finetuning 目录下。

$ cd training/step1_supervised_finetuning
$ bash evaluation_scripts/run_prompt.sh

2 实战Step2:Reward模型微调

任务介绍: 在第三步(Step3)中,强化学习阶段需要使用奖励模型。奖励模型会对模型生成的答案进行打分,Step3 的强化训练会根据这些分数对模型进行优化,从而使最终模型生成更高分的答案。奖励模型同样基于预训练模型进行训练,在这里我们使用了 350M 的 opt 模型。

启动训练: 启动训练方法与前面类似: