基于执行反馈的大语言模型指令遵循能力提升方法
AutoIF是一种创新的大语言模型指令遵循能力提升方法。它通过代码执行反馈自动生成和验证指令数据,结合指令增强、验证函数生成和交叉验证等技术合成高质量训练样本。实验结果显示,AutoIF能有效提升不同规模模型的指令遵循表现,为大语言模型指令微调提供了新的研究思路。
董观亭, 卢柯铭, 李成鹏, 夏婷玉, 于博文, 周畅, 周靖人
阿里巴巴集团 Qwen团队
本仓库包含了论文《基于执行反馈的自我对弈:提升大型语言模型的指令跟随能力》中提出的AutoIF方法的核心实现。
AutoIF是首个可扩展且可靠的方法,用于自动生成指令跟随数据并通过代码执行反馈验证其质量。
我们将AutoIF的数据合成过程分为几个步骤,并为每个步骤提供了10-20个样本以便您复现。请记得用您自己的输入替换这些样本。
一般环境设置:
cd ./AutoIF/ pip install -r requirements.txt
首先,我们手写了36条种子指令:
步骤1:种子指令自我指导
将指令与RFT提示词连接。
python 1_RFT.py
请使用监督模型(如GPT-4、Qwen2-72B)进行k次RFT,保存格式为seed_instruction.txt。
步骤2:验证函数和案例生成
使用种子和增强指令生成验证函数和案例。
python 2_verification_funcs_cases_generation.py
请为每个样本生成K个验证函数和案例,保存在eval_func_rft.jsonl中。
步骤3:质量交叉验证
交叉验证验证函数和案例的通过率,以确保高质量指令。
python 3_cross_validation.py
步骤4 & 5:反向翻译
请将验证函数反向翻译为指令,然后使用mDeBERTa进行一致性筛选。
python 4_eval_func_backtranslator.py python 5_eval_func_backtranslator_filter.py
步骤1:查询重构和增强
我们随机将每个查询与ShareGPT的K个查询连接,并使用我们的响应RFT模板重新格 式化:
python 6_concat_sharegpt_query.py
请使用监督模型为每个查询生成k个响应。
步骤2:指令跟随验证
交叉验证验证函数和增强响应的通过率,以获得高质量查询。
python 7_query_vertification.py
在这一步中,我们还将每个样本与一致性评分提示词连接。请使用监督模型对它们进行评分。
步骤3:查询质量验证
最后,我们筛选出得分> 8的样本,并将其保存为LlaMA-Factory的SFT数据格式。
python 8_query_score_filiter.py python 9_sft_data_construction.py
:sparkles:提示: 在我们的论文中,DPO包含两种设置,以下是它们的区别:
请使用上一步生成的评估函数处理您的SFT数据,并将结果格式化为dpo_query_eval_score_results.jsonl。
步骤1:验证函数评分
我们使用相应的验证函数来验证每个响应的通过率。
python 1_dpo_rft_wash.py
步骤2:数据选择
我们使用正样本(准确率>=0.5)和负样本(准确率=0)构建DPO对。
python 2_dpo_data_query_construct.py
构建完成后,您需要按照LlaMA-Factory中的DPO数据格式进行处理。
我们使用LlaMA-Factory v0.6.3版本。感谢他们出色的工作。
:sparkles:提示: 我们两种设置的区别:
(1) SFT训练:
deepspeed --num_gpus=8 train_bash.py \ --deepspeed $deepspeed_zero3_config_path \ --stage sft \ --do_train \ --use_fast_tokenizer \ --flash_attn \ --adam_beta1 0.9 \ --adam_beta2 0.95 \ --model_name_or_path $MODEL_PATH \ --dataset $dataset \ --template $Template \ --finetuning_type full \ --output_dir $OUTPUT_PATH \ --overwrite_cache \ --overwrite_output_dir \ --warmup_steps 20 \ --weight_decay 0.1 \ --per_device_train_batch_size 4 \ --gradient_accumulation_steps 4 \ --ddp_timeout 9000 \ --learning_rate 7e-6 \ --lr_scheduler_type "linear" \ --logging_steps 1 \ --cutoff_len 8192 \ --save_steps 200 \ --num_train_epochs 3.0 \ --plot_loss \ --bf16
(2) DPO训练:
deepspeed --num_gpus 8 train_bash.py \ --deepspeed $deepspeed_zero3_config_path \ --stage dpo \ --do_train \ --model_name_or_path $MODEL_PATH \ --dataset $dataset \ --dataset_dir $DATA_PATH \ --template $Template \ --finetuning_type full \ --output_dir $OUTPUT_PATH \ --overwrite_cache \ --overwrite_output_dir \ --cutoff_len 4096 \ --preprocessing_num_workers 1 \ --per_device_train_batch_size 1 \ --gradient_accumulation_steps 2 \ --lr_scheduler_type cosine \ --logging_steps 10 \ --warmup_ratio 0.1 \ --save_steps 1000 \ --learning_rate 5e-6 \ --num_train_epochs 2.0 \ --max_samples 200000 \ --ddp_timeout 180000000 \ --plot_loss \ --fp16
关于7B和70B模型训练的实现细节,请参考我们的论文。
如果您发现这项工作对您的研究有帮助,请引用它。
@article{董2024自我对弈, 标题={基于执行反馈的自我对弈:提升大型语言模型的指令遵循能力}, 作者={董冠廷 和 陆可明 和 李成鹏 和 夏亭玉 和 余博文 和 周畅 和 周景仁}, 期刊={arXiv预印本 arXiv:2406.13542}, 年份={2024} }
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。