ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

LLM 生成内在奖励的强化学习:基于 TRL 的 PPO 文本生成实战指南

LLM 生成内在奖励的强化学习:基于 TRL 的 PPO 文本生成实战指南 LLM 生成内在奖励的强化学习基于 TRL 的 PPO 文本生成实战指南【免费下载链接】google-researchGoogle Research项目地址: https://gitcode.com/gh_mirrors/go/google-research本指南以relc/llm-intrinsic-reward项目为核心讲解如何利用 LLM 的批评能力critiqueability为 PPO 强化学习训练生成token/span 级密集内在奖励用于改善文本生成模型在情感控制Sentiment Control、去毒化Detoxification与摘要生成Summarization三类任务上的表现。该项目是 EMNLP 2024 论文Enhancing Reinforcement Learning with Dense Rewards from Language Model CriticDrlc的开源实现详见 relc/README.md读完后你将掌握如何搭建带价值头value head的 PPO 训练流程、如何让 GPT-3.5 等 LLM 充当批评者输出片段级标注并转化为逐 token 奖励、以及三个任务从训练到评估的完整复现命令。项目背景与核心思想在传统的 RLHF/RL 文本生成流程中环境奖励如情感分类器得分、毒性得分、ROUGE 分数通常是序列级的稀疏信号——整段输出只拿到一个标量模型难以知道具体是哪个词、哪段短语导致了奖励偏低训练信号不充分。Drlc 框架的核心思路是借助 LLM 的文本批评能力把稀疏的环境奖励翻译成密集的 token 级内在奖励。整体由两个模型协作参见 sentiment 训练入口 的导入结构策略模型policy model被优化的文本生成模型如 gpt2-large带价值头value head批评模型critic通过 OpenAI API 调用的 LLM默认gpt-3.5-turbo输入任务描述、策略模型输出与环境奖励信号输出正/负情感片段有毒片段等 span 级标注再被解析为逐 token 奖励。具体来说当某条样本的环境外部奖励低于阈值时才将该样本交给 LLM 批评者做标注LLM 返回的片段span与输出中的 token 逐一对齐命中的 token 获得正向/负向内在奖励未命中的 token 奖励为 0。内在奖励叠加在原始环境奖励被转换为 token 级伪奖励之上共同驱动 PPO 优化从而在整个生成过程中提供密集的梯度信号。仓库中trl/目录是基于 TRL 库裁剪的 PPO 实现README 明确说明 part of the implementation is based on TRL包含PPOTrainer、PPOConfig以及价值头模型封装。安装与依赖仓库采用可编辑安装方式见 README.mdpip install -e .核心依赖记录在 requirements.txt 中依赖包说明tqdm训练进度显示transformers模型与分词器加载accelerate分布式训练 / 混合精度peft0.3.0LoRA 微调去毒化的 self-critique 实验使用tyro0.5.7sentiment 脚本的命令行参数解析去毒化任务还需要在.bashrc中配置 Perspective API8 进程、bf16与deepspeed_zero1/2/3.yaml。训练流程总览从环境奖励到 token 级内在奖励以情感控制脚本为例单步训练循环的完整调用链见 ppo-intrinsic-rewards-sentiment.py为构建数据集build_dataset从datasets库加载 IMDB过滤过短评论用LengthSampler将输入截断到 4~10 tokenL112-L150生成响应ppo_trainer.generate按min_new_tokens~max_new_tokens的随机长度采样输出计算环境奖励用lvwerra/distilbert-imdb情感分类 pipeline 对查询响应打分得到序列级标量rewards伪 token 奖励create_pseudo_token_rewards把序列级标量放到序列最后一个 token 上L160-L167这是 TRL 标准 PPO 的做法计算内在奖励仅开启use_instric_reward时get_intrinsic_rewards挑选环境奖励 ≤ 阈值的样本调用 LLM 批评者标注 span解析为逐 token 内在奖励合并奖励并更新内在奖励按位置与伪 token 奖励相加然后ppo_trainer.step(query_tensors, response_tensors, token_rewards)执行 PPO 更新。任务一情感控制Sentiment Control目标是把语言模型引导为生成正面的电影评论。实验代码位于 examples/research_projects/sentiment/。训练 PPO 基线source activate PPOIntrinsic CKPT_DIR$HOME/ppo-intrinsic-reward/ckpts accelerate launch \ --main_process_port 9876 \ --num_machines 1 \ --machine_rank 0 \ --num_processes 2 \ --mixed_precision bf16 \ --multi_gpu \ --dynamo_backend no ppo-intrinsic-rewards-sentiment.py \ --epochs 2 \ --query_dataset imdb \ --min_new_tokens 15 \ --max_new_tokens 20 \ --num_shared_layers 20 \ --save_freq 50 \ --model_save_path $CKPT_DIR/sentiment/ppo_baseline_epoch2_bs16_mbs16 \ --ppo_config.model_name gpt2-large \ --ppo_config.learning_rate 1.41e-5 \ --ppo_config.batch_size 16 \ --ppo_config.mini_batch_size 16 \ --ppo_config.gradient_accumulation_steps 1 \ --ppo_config.target_kl 6.0 \ --ppo_config.kl_penalty kl \ --ppo_config.ppo_epochs 4;训练 PPO 内在奖励在基线命令基础上增加--use_instric_reward以及三个内在奖励相关参数source activate PPOIntrinsic CKPT_DIR$HOME/ppo-intrinsic-reward/ckpts accelerate launch \ --main_process_port 9876 \ --num_machines 1 \ --machine_rank 0 \ --num_processes 2 \ --mixed_precision bf16 \ --multi_gpu \ --dynamo_backend no ppo-intrinsic-rewards-sentiment.py \ --use_instric_reward \ --positive_reward_value 0.5 \ --negative_reward_value -0.5 \ --intrinsic_reward_threshold 10 \ --prompt_file $HOME/ppo-intrinsic-reward/prompts/prompt_sentiment_3shot_v2.txt \ --epochs 2 \ --query_dataset imdb \ --min_new_tokens 15 \ --max_new_tokens 20 \ --num_shared_layers 20 \ --save_freq 50 \ --model_save_path $CKPT_DIR/sentiment/ppo_intrinsic_epoch2_bs16_mbs16 \ --ppo_config.model_name gpt2-large \ --ppo_config.learning_rate 1.41e-5 \ --ppo_config.batch_size 16 \ --ppo_config.mini_batch_size 16 \ --ppo_config.gradient_accumulation_steps 1 \ --ppo_config.target_kl 6.0 \ --ppo_config.kl_penalty kl \ --ppo_config.ppo_epochs 4;测试集评估SST-2对每个中性提示生成 25 条续写用distilbert-base-uncased-finetuned-sst-2-english分类器判定情感source activate PPOIntrinsic MODEL_NAME_OR_PATH$CKPT_DIR/sentiment/ppo_intrinsic_epoch2_bs16_mbs16 PROMPT_PATH./eval_scripts/neutral_prompts.jsonl OUTPUT_FILE./outputs/ppo_intrinsic_neu_prompts.jsonl python eval_sentiment_sst.py \ $MODEL_NAME_OR_PATH \ $PROMPT_PATH \ --output_file $OUTPUT_FILE \ --num_return 25 \ --classifier_path distilbert-base-uncased-finetuned-sst-2-english;困惑度与多样性评估source activate PPOIntrinsic GENERATIONS_FILE./outputs/ppo_intrinsic_neu_prompts.jsonl OUTPUT_FILE./outputs/ppo_intrinsic_neu_prompts_eval.txt echo $OUTPUT_FILE CUDA_VISIBLE_DEVICES0 python eval_perplexity_dist.py \ --generations_file $GENERATIONS_FILE \ --output_file $OUTPUT_FILE;任务二去毒化Detoxification目标防止语言模型生成冒犯性、有害或带偏见的文本。实验代码位于 examples/research_projects/toxicity/该目录还附带 README.md 与数据准备 notebookcreate_offline_data.ipynb。首先在.bashrc中导出 Perspective API 密钥README 明确要求export PERSPECTIVE_API_KEYYOUR_API_KEY训练数据来自allenai/real-toxicity-prompts并只保留毒性得分高于--prompt_toxicity_level0.6的提示词对应源码build_dataset的过滤逻辑见 ppo-intrinsic-rewards-toxicity.py。环境奖励由PerspectiveAPI未配置密钥时回退到facebook/roberta-hate-speech-dynabench-r4-target分类器给出见 L196-L203。训练 PPO 基线source activate PPOIntrinsic CKPT_DIR$HOME/ppo-intrinsic-reward/ckpts accelerate launch \ --main_process_port 9987 \ --num_machines 1 \ --machine_rank 0 \ --num_processes 2 \ --multi_gpu \ --mixed_precision bf16 \ --dynamo_backend no ppo-intrinsic-rewards-toxicity.py \ --perspective_api $PERSPECTIVE_API_KEY \ --model_name gpt2-large \ --model_save_path $CKPT_DIR/toxicity/ppo_baseline_epoch5_bs32_mbs32 \ --epochs 5 \ --prompt_toxicity_level 0.6 \ --output_min_length 10 \ --output_max_length 14 \ --learning_rate 1.41e-5 \ --batch_size 32 \ --mini_batch_size 32 \ --gradient_accumulation_steps 1 \ --ppo_epochs 4;训练 PPO 内在奖励注意此处与情感任务相反命中有毒片段的 token 获得负奖励-0.5未命中得 0因此--positive_reward_value 0.0source activate PPOIntrinsic CKPT_DIR$HOME/ppo-intrinsic-reward/ckpts accelerate launch \ --main_process_port 9987 \ --num_machines 1 \ --machine_rank 0 \ --num_processes 2 \ --multi_gpu \ --mixed_precision bf16 \ --dynamo_backend no ppo-intrinsic-rewards-toxicity.py \ --use_intrinsic_reward \ --prompt_file $HOME/ppo-intrinsic-reward/prompts/prompt_toxicity_3shot_v2.txt \ --positive_reward_value 0.0 \ --negative_reward_value -0.5 \ --intrinsic_reward_threshold 1.0 \ --perspective_api $PERSPECTIVE_API_KEY \ --model_name gpt2-large \ --model_save_path $CKPT_DIR/toxicity/ppo_intrinsic_epoch5_threshold1.0_bs32_mbs32 \ --epochs 5 \ --prompt_toxicity_level 0.6 \ --output_min_length 10 \ --output_max_length 14 \ --learning_rate 1.41e-5 \ --batch_size 32 \ --mini_batch_size 32 \ --gradient_accumulation_steps 1 \ --ppo_epochs 4;Self-Critique 实验Llama-2 PEFT这是 README 提供的另一组实验用meta-llama/Llama-2-7b-chat-hf作为策略模型借助 PEFTLoRA训练并调整阈值到 0.9source activate PPOIntrinsic CKPT_DIR$HOME/ppo-intrinsic-reward/ckpts accelerate launch \ --main_process_port 9999 \ --num_machines 1 \ --machine_rank 0 \ --num_processes 1 \ --mixed_precision bf16 \ --dynamo_backend no ppo-intrinsic-rewards-toxicity-peft.py \ --use_intrinsic_reward \ --prompt_file $HOME/ppo-intrinsic-reward/prompts/prompt_toxicity_3shot_v2.txt \ --positive_reward_value 0.0 \ --negative_reward_value -0.5 \ --intrinsic_reward_threshold 0.9 \ --perspective_api $PERSPECTIVE_API_KEY \ --model_name meta-llama/Llama-2-7b-chat-hf \ --model_save_path $CKPT_DIR/toxicity/ppo_intrinsic_llama2_epoch3_bs16_mbs8 \ --epochs 3 \ --prompt_toxicity_level 0.6 \ --output_min_length 10 \ --output_max_length 14 \ --learning_rate 1.41e-5 \ --batch_size 16 \ --mini_batch_size 8 \ --gradient_accumulation_steps 2 \ --ppo_epochs 4;生成与毒性评估第一步对nontoxic_prompts-10k_test.jsonl中的每个提示生成 N25 条续写采样 2000 条子集source activate PPOIntrinsic LM_DIR$CKPT_DIR/toxicity/ppo_intrinsic_epoch5_threshold1.0_bs32_mbs32 PROMPTS_FILE./eval_scripts/nontoxic_prompts-10k_test.jsonl OUTPUT_FILE./toxicity/outputs/ppo_intrinsic_gens.jsonl echo $OUTPUT_FILE CUDA_VISIBLE_DEVICES0 python decoding.py \ --lm_dir $LM_DIR \ --prompts_file $PROMPTS_FILE \ --output_file $OUTPUT_FILE \ --top_p 0.9 \ --max_length 20 \ --num_returns 25 \ --do_sample \ --batch_size 8 \ --sample_size 2000;第二步调用 Perspective API 评估生成文本毒性8 线程、5000 条样本source activate PPOIntrinsic DATA_FILE./outputs/ppo_intrinsic_gens.jsonl OUTPUT_FILE./outputs/ppo_intrinsic_gens.jsonl python eval_toxicity_perspective.py \ --data_file $DATA_FILE \ --output_file $OUTPUT_FILE \ --sample_size 5000 \ --num_thread 8 \ --save_scores;第三步评估困惑度与多样性source activate PPOIntrinsic GENS_FILE./outputs/ppo_intrinsic_gens.jsonl OUTPUT_FILE./outputs/ppo_intrinsic_gens_eval_results.txt echo $OUTPUT_FILE CUDA_VISIBLE_DEVICES0 python eval_perplexity_dist.py \ --generations_file $GENS_FILE \ --output_file $OUTPUT_FILE;任务三摘要生成Summarization目标为长文本生成简洁连贯的摘要。实验代码位于 examples/research_projects/summarization/其中还包含分析 notebookevaluation_results.ipynb与多组评估曲线图figures/下的rouge_eval_curve.pdf、eval_rouge_pref_curve.pdf、eval_pref_curve.pdf、analysis_bs.pdf、trade_off_trunc.pdf。运行前先安装评估依赖pip install evaluate pip intall nltk训练 PPO 基线ROUGE 奖励策略模型从 SFT 好的gpt2-mediumcheckpointsft_gpt2-medium/checkpoint-1000继续训练source activate PPOIntrinsic CKPT_DIR$HOME/ppo-intrinsic-reward/ckpts accelerate launch \ --main_process_port 8765 \ --num_machines 1 \ --machine_rank 0 \ --num_processes 2 \ --multi_gpu \ --mixed_precision bf16 \ --dynamo_backend no ppo_summ_rouge.py \ --num_shared_layers 12 \ --model_name $CKPT_DIR/summarization/sft_gpt2-medium/checkpoint-1000 \ --model_save_path $CKPT_DIR/summarization/ppo-baseline-rouge \ --epochs 5 \ --output_min_length 30 \ --output_max_length 50 \ --learning_rate 1.41e-5 \ --batch_size 8 \ --mini_batch_size 8 \ --gradient_accumulation_steps 1 \ --ppo_epochs 4 \ --prompt_file $HOME/ppo-intrinsic-reward/prompts/prompt_summ_3shot_rouge_v2.txt;训练 PPO 内在奖励摘要任务额外开启--use_score_scaling对奖励做 running std 缩放见下文 PPOConfig 说明阈值设为 100source activate PPOIntrinsic CKPT_DIR$HOME/ppo-intrinsic-reward/ckpts accelerate launch \ --main_process_port 8765 \ --num_machines 1 \ --machine_rank 0 \ --num_processes 2 \ --multi_gpu \ --mixed_precision bf16 \ --dynamo_backend no ppo_summ_rouge.py \ --use_instric_reward \ --positive_reward_value 0.5 \ --negative_reward_value -0.5 \ --intrinsic_reward_threshold 100 \ --use_score_scaling \ --num_shared_layers 12 \ --model_name $CKPT_DIR/summarization/sft_gpt2-medium/checkpoint-1000 \ --model_save_path $CKPT_DIR/summarization/ppo-intrinsic-rouge \ --epochs 5 \ --output_min_length 30 \ --output_max_length 50 \ --learning_rate 1.41e-5 \ --batch_size 8 \ --mini_batch_size 8 \ --gradient_accumulation_steps 1 \ --ppo_epochs 4 \ --prompt_file $HOME/ppo-intrinsic-reward/prompts/prompt_summ_3shot_rouge_v2.txt;ROUGE 与偏好评估先下载 6B 奖励模型 checkpointCarperAI 的 TLDR 摘要奖励模型再运行评估脚本mkdir rm_checkpoint wget https://huggingface.co/CarperAI/openai_summarize_tldr_rm_checkpoint/resolve/main/pytorch_model.bin -O rm_checkpoint/pytorch_model.binsource activate PPOIntrinsic MODEL$HOME/ppo-intrinsic-reward/ckpts/summarization/ppo-intrinsic-rouge accelerate launch \ --main_process_port 8765 \ --num_machines 1 \ --machine_rank 0 \ --num_processes 1 \ --mixed_precision bf16 \ --dynamo_backend no summ_eval.py \ --model_name $MODEL \ --save_path eval_results/sft_gpt2-medium_bs64_step1000.csv \ --num_samples_to_eval 6000 \ --reward_model_ckpt_path ./rm_checkpoint/pytorch_model.bin \ --output_max_length 50 \ --batch_size 20 \ --rw_batch_size 20 \ --reward_model_device 0;关键参数解析内在奖励相关参数从 sentiment 脚本的ScriptArguments定义ppo-intrinsic-rewards-sentiment.py#L45-L106可整理出参数默认值作用--use_instric_rewardFalse是否开启内在奖励注意 sentiment/summarization 脚本拼写为instrictoxicity 脚本为intrinsic命令中需保持一致--positive_reward_value0.0sentiment 示例中为 0.5命中正面/应保留片段的 token 获得的奖励值--negative_reward_value-1.0命中负面/有毒/应删除片段的 token 获得的奖励值--intrinsic_reward_threshold10.0环境奖励 ≤ 该阈值时才调用 LLM 批评者对低质量输出做事后补救--prompt_file./prompts/prompt_3shot_v3.txtLLM 批评者的 few-shot 标注提示模板路径--num_shared_layersNone参考模型与策略模型共享的层数create_reference_model使用用于计算 KL 惩罚--save_freqNone每 N 步保存一次 checkpoint主进程执行save_pretrained--epochs1数据集遍历轮数PPO 训练超参数情感脚本通过--ppo_config.xxx前缀直接改写PPOConfig字段。核心字段及其默认值来自 trl/trainer/ppo_config.py字段默认值说明learning_rate1e-5Adam 学习率示例中常用 1.41e-5batch_size256每次 PPO 优化的样本数mini_batch_size1每个 mini-batch 优化的样本数示例中与 batch_size 相等gradient_accumulation_steps1梯度累积步数backward_batch_size mini_batch_size × 梯度累积步数且要求batch_size能被其整除__post_init__中exact_div校验ppo_epochs4每批样本上执行的优化轮数target_kl1超过该值 50%即 1.5×时触发 early stopping_early_stopkl_penaltykl可选kllogp 差/abs/mse/full决定 KL 惩罚形式_kl_penaltycliprange/cliprange_value0.2PPO 策略比值裁剪 / 价值裁剪范围vf_coef0.1价值损失系数gamma/lam1/0.95GAE 折扣因子与 λuse_score_scalingFalse是否对奖励做 running std 缩放摘要内在奖励实验开启use_score_normFalse在缩放基础上是否减均值做归一化依赖use_score_scalingscore_clipNone对奖励做 ±clip 截断adap_kl_ctrl/init_kl_coef/target/horizonTrue/0.2/6/10000自适应 KL 控制器参数seed0随机种子初始化价值头前set_seed保证确定性评估log_withNonewandb或tensorboard日志PPO 更新核心在 trl/trainer/ppo_trainer.py 中step()先做前向得到新旧 logprobs 与价值compute_rewards将环境奖励 KL 惩罚展开为逐 token 奖励序列级奖励挂在最后一个非 mask token 上见 L1068-L1101compute_advantages用 GAE 计算优势L1119-L1142loss计算带裁剪的 policy loss 与 value lossL1144-L1231。当平均比值超过ratio_threshold时该 mini-batch 的损失会被清零以避免损失尖峰。内在奖励机制源码剖析1. 选择值得批评的样本get_intrinsic_rewardsppo-intrinsic-rewards-sentiment.py#L199-L279遍历环境奖励只对r.item() args.intrinsic_reward_threshold的样本构造 LLM 查询selected_query_indices, selected_queries [], [] for idx, r in enumerate(rewards): if r.item() args.intrinsic_reward_threshold: selected_query_indices.append(idx) llm_query prompt.format( (batch[query][idx] batch[response][idx]).replace(\n, ) ) selected_queries.append(llm_query)其余样本的内在奖励为空字符串占位。这种条件式批评显著控制了 LLM API 的调用成本。2. 调用 LLM 批评者query_batch_spantrl/extras/openai_scores.py通过OpenAIGenerator并行调用gpt-3.5-turbo使用temperature0.0、max_tokens可配sentiment 用 60返回的是片段文本而非数值def query_batch_span(queries, max_workers2, max_tokens600, api_keyNone): openai_api_key os.environ[OPENAI_API_KEY] if api_key is None else api_key generator OpenAIGenerator( model_name_or_pathgpt-3.5-turbo, api_keyopenai_api_key, num_workersmax_workers, max_tokensmax_tokens, temperature0.0, wait_time1.0, ) responses generator(queries)注意这要求环境变量OPENAI_API_KEY已配置。3. 片段解析为逐 token 奖励sentiment 脚本用parse_intrinsic_rewardsL170-L196把 LLM 返回的[Span 1]: xxx文本用正则清洗后与解码出的 token 列表逐项比对token 出现在片段中则给reward_matching否则给reward_no_matching此处为 0。正面片段与负面片段分别解析后相加positive_intrisic_rewards parse_intrinsic_rewards( llm_pos_responses, batch_tokens, reward_matchingargs.positive_reward_value, reward_no_matching0.0) negative_intrisic_rewards parse_intrinsic_rewards( llm_neg_responses, batch_tokens, reward_matchingargs.negative_reward_value, reward_no_matching0.0) intrisic_rewards add_lists(positive_intrisic_rewards, negative_intrisic_rewards)toxicity 脚本的parse_intrinsic_rewardsppo-intrinsic-rewards-toxicity.py#L90-L132则用正则Toxic Span \d: (.)提取有毒片段对每个 token 检查token in combined_span命中给negative_reward-0.5未命中给positive_reward0.0。4. 合并到 PPO 奖励最后在训练循环中内在奖励与伪 token 奖励按位置累加sentiment L410-L415for tok_rewards, i_rewards in zip(token_rewards, intrisic_rewards): i_rewards i_rewards[1:] # 去掉首 token查询起点 assert len(tok_rewards) len(i_rewards) for tok_i in range(len(tok_rewards)): tok_rewards[tok_i] i_rewards[tok_i]这样每个 token 的最终奖励 环境奖励序列级落在末尾 token KL 惩罚逐 token LLM 内在奖励逐 tokenPPO 因此能定位到具体该褒扬或抑制的词语。5. 提示模板设计三个任务的批评者提示均采用 3-shot 标注指令风格存放在 prompts/ 目录prompt_sentiment_3shot_v2.txt要求标注Identified Positive Text Span与Identified Negative Text Span并给出span 应尽量简洁中性句写 None identified等标注准则末尾以{}占位符接收待标注文本prompt_toxicity_3shot_v2.txt给出毒性的定义仇恨、歧视、威胁、攻击等与最短 span 原则输出格式为Toxic Span N: ...prompt_summ_3shot_rouge_v2.txt及prompt_summ_3shot_rouge_rlhf.txt等面向摘要质量批评。提示工程直接影响奖励的精度示例既教模型哪些词算情感词/毒词也教它哪些情况应回答 None identified从而让 span 解析正则能稳定工作。注意事项与适用范围API 成本与延迟内在奖励依赖外部 LLM 批评intrinsic_reward_threshold越高被批评的样本越多、成本越大从源码看该机制面向的是低奖励样本的精细化反馈阈值需要结合任务奖励分布调节情感任务 10、毒性任务 1.0、摘要任务 100。参数拼写差异sentiment / summarization 脚本使用--use_instric_rewardtoxicity 脚本使用--use_intrinsic_reward照抄命令时注意区分。运行环境示例命令假定名为PPOIntrinsic的 conda 环境已就绪使用accelerate launch以 bf16 混合精度多卡运行toxicity 的 Llama-2 自批评实验为单进程需要可访问 Llama-2 模型权重Hugging Face 授权。适用任务边界仓库演示的三类任务均为文本生成且外部奖励信号可计算、可解释若任务环境奖励无法可靠反映输出质量或无法构造清晰的 span 标注指令则本框架的收益有限。README 注释中还提到了可选的 Question Answer 任务被注释掉可作为扩展方向参考。总体而言relc/llm-intrinsic-reward提供了一个外部稀疏奖励 LLM 密集批评的可复现范本训练脚本、few-shot 提示、PPO 训练器与评估流水线均在本仓库内闭环既适合作为 RLHF 变体的研究基线也可作为接入自定义文本生成任务的起点。【免费下载链接】google-researchGoogle Research项目地址: https://gitcode.com/gh_mirrors/go/google-research创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表