购物网站怎么经营,江门那里做公司网站好,沈阳市住房和城乡建设局网站首页,龙海网站建设在《微调实操三:人类反馈对语言模型进行强化学习(RLHF)》中提到过第三阶段有2个方法,一种是是RLHF, 另外一种就是今天的DPO方法, DPO通过直接优化语言模型来实现对其行为的精确控制#xff0c;而无需使用复杂的强化学习#xff0c;也可以有效学习到人类偏好#xff0c;DPO相…在《微调实操三:人类反馈对语言模型进行强化学习(RLHF)》中提到过第三阶段有2个方法,一种是是RLHF, 另外一种就是今天的DPO方法, DPO通过直接优化语言模型来实现对其行为的精确控制而无需使用复杂的强化学习也可以有效学习到人类偏好DPO相较于RLHF更容易实现且易于训练效果更好.
1、DPO VS RLHF DPO 是一种自动微调方法它通过最大化预训练模型在特定任务上的奖励来优化模型参数。与传统的微调方法相比DPO 绕过了建模奖励函数这一步而是通过直接在偏好数据上优化模型来提高性能。相对RLHF两阶段而言具有多项优越性:
(1)简单性DPO更容易实施和培训使其更易于使用。
(2)稳定性不易陷入局部最优保证训练过程更加可靠。
(3)效率与RLHF 相比, DPO 需要更少的计算资源和数据使其计算量轻。
(4)有效性实验结果表明DPO在情感控制、摘要和对话生成等任务中可以优于 RLHF 。
并不是说DPO没有奖励模型, 而是利用同个阶段训练建立模型和强化学习, 在 DPO 中目标函数是优化模型参数以最大化奖励的函数。除了奖励最大化目标外还需要添加一个相对于参考模型的 KL 惩罚项以防止模型学习作弊或钻营奖励模型。
2、trl库
TRLTransformer Reinforcement Learning是一个全面的库专为使用强化学习训练变换器语言模型而设计。它包含多种工具可以支持从监督式微调SFT开始通过奖励建模RM阶段最终达到近端策略优化PPO阶段和DPO。此库 transformers框架无缝集成。所以未来在人工智能领域transformers必学. 3、实操
3.1 数据集
采用《微调实操三:人类反馈对语言模型进行强化学习(RLHF)》 阶段中训练奖励模型的数据集
3.2 合并指令微调的模型
!python /kaggle/working/MedicalGPT/merge_peft_adapter.py --model_type bloom \
--base_model merged-pt --lora_model outputs-sft-v1 --output_dir merged-sft/3.3 DPO训练脚本 # dpo training
%cd /kaggle/working/autoorder
!ls
!git pull
!pip install -r algorithm/llm/requirements.txt
!pip install Logbook
import os
os.environ[RUN_PACKAGE] algorithm.llm.train.dpo_training
os.environ[RUN_CLASS] DPOTraining
print(os.getenv(RUN_PACKAGE))
!python main.py \--model_type bloom \--model_name_or_path ./merged-sft \--train_file_dir /kaggle/working/MedicalGPT/data/reward \--validation_file_dir /kaggle/working/MedicalGPT/data/reward \--per_device_train_batch_size 3 \--per_device_eval_batch_size 1 \--do_train \--do_eval \--use_peft True \--max_train_samples 1000 \--max_eval_samples 10 \--max_steps 100 \--eval_steps 10 \--save_steps 50 \--max_source_length 128 \--max_target_length 128 \--output_dir outputs-dpo-v1 \--target_modules all \--lora_rank 8 \--lora_alpha 16 \--lora_dropout 0.05 \--torch_dtype float16 \--fp16 True \--device_map auto \--report_to tensorboard \--remove_unused_columns False \--gradient_checkpointing True \--cache_dir ./cache \--use_fast_tokenizer