新闻详情

新闻详情

首页 / 资讯中心 / 详情

LLM微调-训练自己的R1模型

发布时间:2026/11/15 14:05:59来源:尧图网络
LLM微调-训练自己的R1模型
目录一、准备工作二、GRPO强化学习总结在 模型蒸馏介绍 里了解了模型蒸馏的过程就是用 SFT/GRPO的方法让学生模型能学习到教师模型的能力从而使学生模型的能力得到大的提升并且在LLM微调-训练垂类问答模型 里面学习了SFT模型微调。SFT监督学习需要给到固定格式的数据让大模型快速的学习到基础知识。GRPO强化学习则是给出问题标准答案通过奖励函数的引导让大模型自己去推理从而提升大模型的推理能力。一、准备工作1数据准备GSM8KGrade School Math 8K是一个高质量的小学数学应用题数据集主要用于评估和训练人工智能模型 在数学推理和多步问题解决方面的能力 https://huggingface.co/datasets/openai/gsm8k2环境准备由于我这次选的模型是Qwen2.5-7B根据LLM微调-工作准备中提到的显存估算方法本机跑不了这个模型按三倍估算需要21G需要租用服务器。AutoDL里面选一个RTX 4090并开机。​复制SSH点这个小加号把复制的内容填到弹出的框中就会出现一行内容我马赛克的地方​右键选这两个都行吧会再弹出一个框让输密码复制SSH登录里面的密码填入进去。​​二、GRPO强化学习1加载模型和配置Lora这两步和之前学习过的步骤一样不再多讲# # Step 1: 模型加载启用vLLM快速推理 # import unsloth from unsloth import FastLanguageModel import torch max_seq_length 1024 # 可以增加以获得更长的推理轨迹 lora_rank 32 # 更大的rank让模型更智能但训练更慢 model, tokenizer FastLanguageModel.from_pretrained( model_name/root/autodl-tmp/models/Qwen/Qwen2___5-7B-Instruct, max_seq_lengthmax_seq_length, load_in_4bitTrue, fast_inferenceTrue, # 启用vLLM快速推理 max_lora_ranklora_rank, gpu_memory_utilization0.6, # 显存不足时可降低 ) # # Step 2: LoRA配置 # model FastLanguageModel.get_peft_model( model, rlora_rank, target_modules[ q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj, ], lora_alphalora_rank, use_gradient_checkpointingunsloth, random_state3407, )3GSM8K数据准备# # Step 3: GSM8K数据准备 # import re from datasets import load_dataset, Dataset # 系统提示词定义推理输出格式 SYSTEM_PROMPT Respond in the following format: reasoning ... /reasoning answer ... /answer def extract_xml_answer(text: str) - str: 从XML格式文本中提取答案 answer text.split(answer)[-1] answer answer.split(/answer)[0] return answer.strip() def extract_hash_answer(text: str) - str | None: 从####标记文本中提取答案 if #### not in text: return None return text.split(####)[1].strip() def get_gsm8k_questions(splittrain) - Dataset: 加载GSM8K数据集 data load_dataset(/root/autodl-tmp/datasets/gsm8k, main)[split] data data.map(lambda x: { prompt: [ {role: system, content: SYSTEM_PROMPT}, {role: user, content: x[question]} ], answer: extract_hash_answer(x[answer]) }) return data dataset get_gsm8k_questions()get_gsm8k_questions函数读取gsm8k/main里面的数据提取question/answer字段批量的拼接提示词。4设计奖励函数# # Step 4: 奖励函数设计 # def correctness_reward_func(prompts, completions, answer, **kwargs) - list[float]: 正确性奖励检查答案是否正确权重最高 responses [completion[0][content] for completion in completions] q prompts[0][-1][content] extracted_responses [extract_xml_answer(r) for r in responses] print(- * 20, fQuestion:\n{q}, f\nAnswer:\n{answer[0]}, f\nResponse:\n{responses[0]}, f\nExtracted:\n{extracted_responses[0]}) return [2.0 if r a else 0.0 for r, a in zip(extracted_responses, answer)] def int_reward_func(completions, **kwargs) - list[float]: 整数奖励检查答案是否为整数 responses [completion[0][content] for completion in completions] extracted_responses [extract_xml_answer(r) for r in responses] return [0.5 if r.isdigit() else 0.0 for r in extracted_responses] def strict_format_reward_func(completions, **kwargs) - list[float]: 严格格式奖励完全符合XML格式 pattern r^reasoning\n.*?\n/reasoning\nanswer\n.*?\n/answer\n$ responses [completion[0][content] for completion in completions] matches [re.match(pattern, r) for r in responses] return [0.5 if match else 0.0 for match in matches] def soft_format_reward_func(completions, **kwargs) - list[float]: 宽松格式奖励基本符合XML格式 pattern rreasoning.*?/reasoning\s*answer.*?/answer responses [completion[0][content] for completion in completions] matches [re.match(pattern, r) for r in responses] return [0.5 if match else 0.0 for match in matches] def count_xml(text) - float: 计算XML标签完整性得分 count 0.0 if text.count(reasoning\n) 1: count 0.125 if text.count(\n/reasoning\n) 1: count 0.125 if text.count(\nanswer\n) 1: count 0.125 count - len(text.split(\n/answer\n)[-1]) * 0.001 if text.count(\n/answer) 1: count 0.125 count - (len(text.split(\n/answer)[-1]) - 1) * 0.001 return count def xmlcount_reward_func(completions, **kwargs) - list[float]: XML标签计数奖励 contents [completion[0][content] for completion in completions] return [count_xml(c) for c in contents]GRPO强化学习的答案和推理过程由 AI 自己生成老师只充当判卷角色不对推理过程做示范依靠奖励函数评判 AI 输出好坏。奖励函数可以从不同维度评估 AI 输出correctness_reward_func检查最终答案是否正确int_reward_func检查输出答案是否为整数strict_format_reward_func严格校验输出格式soft_format_reward_func宽松校验输出格式xmlcount_reward_func校验 XML 标签使用是否正确使用 GRPO 算法让模型生成多个候选答案依靠上面的奖励函数自动评估输出质量指引模型往更优的方向优化不需要人工逐条审阅输出结果。5GRPO训练# # Step 5: GRPOTrainer训练 # max_prompt_length 256 from trl import GRPOConfig, GRPOTrainer training_args GRPOConfig( learning_rate5e-6, adam_beta10.9, adam_beta20.99, weight_decay0.1, warmup_ratio0.1, lr_scheduler_typecosine, optimpaged_adamw_8bit, logging_steps1, per_device_train_batch_size1, gradient_accumulation_steps1, num_generations6, # 每个问题生成6个候选答案 max_prompt_lengthmax_prompt_length, max_completion_lengthmax_seq_length - max_prompt_length, max_steps250, save_steps250, max_grad_norm0.1, report_tonone, output_diroutputs, ) trainer GRPOTrainer( modelmodel, processing_classtokenizer, reward_funcs[ xmlcount_reward_func, soft_format_reward_func, strict_format_reward_func, int_reward_func, correctness_reward_func, ], argstraining_args, train_datasetdataset, ) # 开始训练 trainer.train()这部分代码跟SFTTrainer的逻辑差不多参数略有不同。GRPOTrainer训练时还需要传相关的奖励函数。总结GRPOGroup Relative Policy Optimization组相对策略优化是一种用于训练LLM的强化学习算法 是DeepSeek-R1模型的核心技术之一。核心在于通过组内样本的相对奖励来优化策略模型而不是依赖传统的价值函数模型如PPO中的批评家模型。它通过采样一组输出利用这些输出的奖励值来计算相对优势从而简化了训练过程。工作原理• 采样与奖励计算对于每个输入问题GRPO从当前策略中采样一组输出并计算每个输出的奖励值。• 相对优势估计通过将每个输出的奖励值与组内平均奖励值进行比较计算出每个输出的相对优势。• 策略更新根据相对优势GRPO更新策略模型优先 选择相对优势更高的输出。同时它通过KL散度约束来控制策略更新的幅度确保策略分布的稳定性。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉