使用Minimind从0~1进行大模型预训练、SFT、RLHF

项目地址

资源:Tesla v100 32GBx8
在这里插入图片描述

测试原模型效果

python eval_llm.py --load_from ./MiniMind2

1. 预训练

预训练数据集
pretrain_hq.jsonl

{“text”: “<|im_start|>鉴别一组中文文章的风格和特点,例如官方、口语、文言等。需要提供样例文章才能准确鉴别不同的风格和特点。<|im_end|> <|im_start|>好的,现在帮我查一下今天的天气怎么样?今天的天气依据地区而异。请问你需要我帮你查询哪个地区的天气呢?<|im_end|> <|im_start|>打开闹钟功能,定一个明天早上七点的闹钟。好的,我已经帮您打开闹钟功能,闹钟将在明天早上七点准时响起。<|im_end|> <|im_start|>为以下场景写一句话描述:一个孤独的老人坐在公园长椅上看着远处。一位孤独的老人坐在公园长椅上凝视远方。<|im_end|> <|im_start|>非常感谢你的回答。请告诉我,这些数据是关于什么主题的?这些数据是关于不同年龄段的男女人口比例分布的。<|im_end|> <|im_start|>帮我想一个有趣的标题。这个挺有趣的:“如何成为一名成功的魔术师” 调皮的标题往往会吸引读者的注意力。<|im_end|> <|im_start|>回答一个问题,地球的半径是多少?地球的平均半径约为6371公里,这是地球自赤道到两极的距离的平均值。<|im_end|> <|im_start|>识别文本中的语气,并将其分类为喜悦、悲伤、惊异等。\n文本:“今天是我的生日!”这个文本的语气是喜悦。<|im_end|>”}

进行预训练
torchrun --nproc_per_node 8 train_pretrain.py
在这里插入图片描述

测试预训练的效果
python eval_llm.py --weight pretrain

2、SFT

SFT数据集
sft_mini_512.jsonl

{“conversations”: [{“role”: “user”, “content”: “请告诉我在中国古代的“四大发明”是什么?”}, {“role”: “assistant”, “content”: “中国古代的“四大发明”是指造纸术、印刷术、火药和指南针。这四项发明对世界文明的发展产生了深远的影响:\n\n1. 造纸术:据史书记载,东汉时期的蔡伦改进了造纸工艺,使得纸张的生产更加便捷、成本更低,质量也更加优良。这一发明极大地促进了文化的传播和保存。\n\n2. 印刷术:中国古代的印刷术最早可以追溯到唐代的雕版印刷,到了宋代发展出了活字印刷技术。印刷术的发明极大地促进了知识的传播,降低了书籍的成本,对教育和文化的发展起到了重要的推动作用。\n\n3. 火药:火药最初是在唐代被发现的,最初可能用于医疗或炼金术。到了宋代,人们开始将火药用于军事目的,发明了各种火器。火药的发明改变了战争的面貌,对世界军事技术的发展产生了重大影响。\n\n4. 指南针:指南针最初在中国被用于风水测量,后来逐渐发展成为航海导航的重要工具。这一发明极大地促进了海上航行技术的发展,对于新航路的开辟和世界地理大发现起到了关键作用。\n\n这四项发明不仅在中国历史上占有重要地位,而且对全世界的科技进步和文明发展都产生了深远的影响。”}]}

进行SFT
torchrun --nproc_per_node 8 train_full_sft.py
在这里插入图片描述

测试SFT 的效果
python eval_llm.py --weight full_sft

3、PPO

PPO数据集
rlaif-mini.jsonl
{“conversations”: [{“role”: “user”, “content”: “列出五个基本的人格理论,并分别以一句话概括。”}, {“role”: “assistant”, “content”: “空”}]}

进行PPO训练
torchrun --nproc_per_node 8 train_ppo.py --use_wandb
在这里插入图片描述
查看训练曲线
export SWANLAB_API_KEY=
swanlab: 🚀 View project at https://swanlab.cn/@lzh_xxx/MiniMind-PPO
swanlab: 🚀 View run at https://swanlab.cn/@lzh_xxx/MiniMind-PPO/runs/1tqoxu588uu1tgbfp8viq

在这里插入图片描述
测试PPO的效果
python eval_llm.py --weight ppo_actor

根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
本系统采用微信小程序作为前端交互界面,结合Spring Boot与Vue.js框架实现后端服务及管理后台的构建,形成一套完整的电子商务解决方案。该系统架构支持单一商户独立运营,亦兼容多商户入驻的平台模式,具备高度的灵活性与扩展性。 在技术实现上,后端以Java语言为核心,依托Spring Boot框架提供稳定的业务逻辑处理与数据接口服务;管理后台采用Vue.js进行开发,实现了直观高效的操作界面;前端微信小程序则为用户提供了便捷的移动端购物体验。整套系统各模块间紧密协作,功能链路完整闭环,已通过严格测试与优化,符合商业应用的标准要求。 系统设计注重业务场景的全面覆盖,不仅包含商品展示、交易流程、订单处理等核心电商功能,还集成了会员管理、营销工具、数据统计等辅助模块,能够满足不同规模商户的日常运营需求。其多店铺支持机制允许平台方对入驻商户进行统一管理,同时保障各店铺在品牌展示、商品销售及客户服务方面的独立运作空间。 该解决方案强调代码结构的规范性与可维护性,遵循企业级开发标准,确保了系统的长期稳定运行与后续功能迭代的可行性。整体而言,这是一套技术选型成熟、架构清晰、功能完备且可直接投入商用的电商平台系统。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
### RLHF微调流程中的SFTRLHF先后顺序 在强化学习微调(Reinforcement Learning from Human Feedback, RLHF)的过程中,监督微调(Supervised Fine-Tuning, SFT)通常作为第一步执行。这是因为SFT的目标是对预训练模型进行初步调整,使其能够更好地理解和遵循人类指令[^4]。 具体来说,在RLHF的整体框架下: - **SFT阶段**:此阶段通过标注良好的高质量数据集对预训练模型进行有监督的微调。这些数据集中包含了输入提示及其对应的理想输出,从而帮助模型学会如何按照预期的方式响应用户的请求[^1]。 - **RLHF阶段**:在此之后进入强化学习部分,利用偏好排序或者奖励信号进一步优化模型行为。这一环节依赖于之前经过SFT处理过的基线模型来启动,并借助策略梯度等技术提升性能表现[^3]。 因此可以得出结论,SFT先于RLHF发生,它为后续更复杂的强化学习奠定了基础并提供了初始条件[^2]。 ```python def rlhf_process(): """ A simplified representation of the RLHF process. Demonstrates that SFT precedes RLHF within this framework. """ pre_trained_model = load_pretrained_model() # Supervised Fine-Tuning (SFT) sft_data = prepare_sft_dataset() # High-quality labeled data fine_tuned_model = supervised_fine_tune(pre_trained_model, sft_data) # Reward Model Training & Reinforcement Learning with Human Feedback (RLHF) reward_model = train_reward_model(sft_data) # Using same or similar dataset as SFT final_model = apply_rlhf(fine_tuned_model, reward_model) return final_model ``` #### 注意事项 上述描述概括了典型情况下两者的相对位置关系——即SFT位于前而RLHF随后展开;然而实际操作当中可能还会涉及更多细节考量因素以及变体形式存在差异之处需视具体情况分析决定最佳实践方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值