ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AReaL 实战指南:基于 GSM8K 数据集运行 GRPO 强化学习训练

AReaL 实战指南:基于 GSM8K 数据集运行 GRPO 强化学习训练 AReaL 实战指南基于 GSM8K 数据集运行 GRPO 强化学习训练【免费下载链接】AReaLThe RL Bridge for LLM-based Agent Applications. Made Simple Flexible.项目地址: https://gitcode.com/GitHub_Trending/are/AReaL导读本文以 AReaL 官方教程 docs/en/tutorial/gsm8k_grpo.md 为骨架结合仓库中真实的训练脚本 examples/math/gsm8k_rl.py 与配置文件 examples/math/gsm8k_grpo.yaml 的源码实现完整讲解如何在 GSM8K 数学推理数据集上运行 GRPOGroup Relative Policy Optimization强化学习。读完本文你将掌握 AReaL 的单控制器架构、RTensor 分布式数据流、异步 rollout 三级并发、PPO/GRPO 训练循环与权重同步机制并能够直接复现或改造出属于自己的 GRPO 实验。OverviewAReaL 如何工作AReaLThe RL Bridge for LLM-based Agent Applications的核心设计是single-controller architecture单控制器架构训练脚本作为控制器进程通过 RPC 编排远程的 rollout worker 与 training worker而不像传统框架那样由各节点自主协商协作。这种模式让写一个训练脚本等价于编排一次分布式实验降低了心智负担。单控制器架构从教程的架构示意可以看出控制器进程内部挂载两类子控制器Controller Process (Your Script) │ ├─ RolloutController │ ├─ Manages rollout workers (SGLang/vLLM) │ ├─ Submits prompts to inference workers │ ├─ Collects trajectories │ └─ Returns: RTensor (distributed batch) │ └─ TrainController ├─ Manages training workers (FSDP/Megatron) ├─ Dispatches RTensor via data_parallel_dispatch() ├─ Workers compute forward/backward ├─ Merges results via data_parallel_merge() └─ Returns: loss, metrics一个完整训练步training step的流程分四阶段Rollout Phase采样阶段控制器加载数据并交给RolloutController后者把 rollout 请求调度路由到 rollout workersGPU上。每个 rollout worker 承载一个完整模型可能占用多张 GPU。返回结果是RTensor其数据分片shard存放在 rollout worker 侧控制器只持有元数据metadata避免控制器成为内存瓶颈。Dispatch Phase分发阶段TrainController通过data_parallel_dispatch()分发任务使用FFDFirst Fit Decreasing算法按序列长度在各 worker 间做负载均衡各 training worker 直接向 rollout workers 拉取自己负责的分片。Training Phase训练阶段每个 training worker 独立处理自己的分片支持5D 并行data 数据并行、tensor 张量并行、pipeline 流水线并行、context 上下文并行、expert 专家并行。Weight Sync权重同步将更新后的权重同步给推理 worker可通过 NCCLGPU 直连速度快或磁盘降级兜底完成。RTensor 数据流教程给出了一个 8 GPU 集群的完整数据流示例rollout 占 GPU 0-3训练占 GPU 4-7Rollout Workers (GPUs 0-3) Controller Training Workers (GPUs 4-7) ───────────────────────────── ──────────── ───────────────────────────── Worker 0: Generates 16 samples ├─ Shard 0 stored ────────────┐ Worker 1: Generates 16 samples │ ├─ Shard 1 stored ──────────┐ │ Worker 2: Generates 16 samples │ │ ├─ Shard 2 stored ────────┐ │ │ Worker 3: Generates 16 samples │ │ │ └─ Shard 3 stored ──────┐ │ │ │ │ │ │ │ │ │ │ │ RTensor metadata │ │ │ └─ Controller ─ data_parallel_dispatch() │ │ └───────────┼────────────┬────────────┐ │ └─────────────┼────────────┼────────────┤ └───────────────┼────────────┼────────────┤ │ │ │ ▼ ▼ ▼ Worker 4: Worker 5: Worker 6: Fetch Fetch Fetch Shards 0,1 Shards 2 Shards 3 │ │ │ ├─ Forward ├─ Forward ├─ Forward ├─ Backward ├─ Backward ├─ Backward └─ Grads └─ Grads └─ Grads │ NCCL AllReduce │ Worker 4: Worker 5: Worker 6: Returns Returns Returns RTensor RTensor RTensor │ │ │ └────────────┴────────────┘ │ data_parallel_merge() │ ▼ Controller receives: • loss (scalar) • metrics (dict)关键设计理念控制器只搬运元数据张量数据在 worker 之间直传。训练 worker 通过data_parallel_merge()前的分片映射直接从持有分片的 rollout worker 上拉取数据控制器既不中转张量也不参与 AllReduce因此可以轻松支撑大规模集群。启动实验local / ray / slurm 三种调度后端AReaL 通过可插拔的 scheduler 后端适配不同环境。教程给出的启动命令如下与 docs/en/tutorial/quickstart.md 快速入门一致# Local machine (using subprocesses) python examples/math/gsm8k_rl.py --config examples/math/gsm8k_grpo.yaml scheduler.typelocal # Ray cluster python examples/math/gsm8k_rl.py --config examples/math/gsm8k_grpo.yaml scheduler.typeray # Slurm cluster python examples/math/gsm8k_rl.py --config examples/math/gsm8k_grpo.yaml scheduler.typeslurm其中scheduler.type指定调度后端。AReaL 调度器自动处理 worker 放置placement、资源分配resource allocation与生命周期管理lifecycle management对应实现位于 areal/infra/scheduler 与 areal/infra/launcherlocal/ray/slurm 三种 launcher。单控制器模式如何工作训练脚本Training Script实验入口点如examples/math/gsm8k_rl.py运行在控制器节点上。控制器职责Controller Responsibilities通过scheduler.create_workers()创建 worker 进程HTTP 或 Ray server通过scheduler.create_engine()创建引擎实例如RemoteSGLangEngine、FSDPEngine通过 RPC 分发工作并用 PyTorch 分布式原语做协调。关键配置Key Configurationscheduler.type决定使用哪种后端local/ray/slurm。每个引擎的backend字段如rollout.backend、actor.backend决定各引擎的 GPU 分配与并行策略。backend字符串采用引擎名:d数字p数字t数字的格式例如示例配置中的sglang:d4p1t1与fsdp:d4p1t1分别表示 SGLang 推理引擎4 路数据并行与 FSDP 训练引擎4 路数据并行p1/t1为流水线与张量并行维度。配置文件与 CLI 覆盖配置文件是 YAML 文件字段定义来源于 areal/api/cli_args.py。AReaL 基于 Hydra 解析配置见parse_cli_args中对hydra_compose的调用因此支持命令行点号路径覆盖无需改动 YAML 即可实验新参数# Example: change model and attention backend python examples/math/gsm8k_rl.py \ --config examples/math/gsm8k_grpo.yaml \ scheduler.typelocal \ actor.pathQwen/Qwen3-1.7B \ sglang.attention_backendtriton在训练脚本中配置解析只需一行config, _ load_expr_config(args, GRPOConfig) config: GRPOConfig注意GRPOConfig在 areal/api/cli_args.py 中定义为PPOConfig的占位子类用于向后兼容因此 GRPO 实验实际使用完整 PPO 配置体系。全部可用选项见 CLI Reference。训练脚本入口五步启动一个实验examples/math/gsm8k_rl.py 是完整的实验入口其结构为def main(args): # 1. Load config (YAML CLI overrides) config, _ load_expr_config(args, GRPOConfig) tokenizer load_hf_tokenizer(config.tokenizer_path) # 2. Prepare datasets (loaded on controller) train_dataset get_custom_dataset(splittrain, dataset_configconfig.train_dataset, tokenizertokenizer) valid_dataset get_custom_dataset(splittest, dataset_configconfig.valid_dataset, tokenizertokenizer) # 3. Define workflow configuration (imported on workers) workflow_kwargs dict( reward_fnareal.reward.gsm8k.gsm8k_reward_fn, gconfigconfig.gconfig, tokenizerconfig.tokenizer_path, ) # 4. Train with PPOTrainer with PPOTrainer(config, train_datasettrain_dataset, valid_datasetvalid_dataset) as trainer: trainer.train( workflowareal.workflow.rlvr.RLVRWorkflow, workflow_kwargsworkflow_kwargs, )要点数据集在控制器上加载再由控制器分发给 workers保证数据切分的一致性workflow 以 import 字符串指定如areal.workflow.rlvr.RLVRWorkflow使远端 worker 可以动态实例化无需在 worker 侧维护同一套 Python 对象PPOTrainer封装了全部基础设施scheduler、controllers、workers。源码提示当前仓库中的 examples/math/gsm8k_rl.py 已将 workflow 升级为高层 APIareal.workflow.openai.math_agent.MathAgent并附带了temperature/top_p/max_tokens/max_completion_tokens等生成超参与 eval 温度 0.6 的设置。底层原理与教程讲解的RLVRWorkflow一致下文仍以RLVRWorkflow展开低层 API 的机制解析。PPOTrainer基于控制器的训练编排areal/trainer/rl_trainer.py 中的PPOTrainer是全部训练的编排核心它初始化 scheduler并为 actorpolicy/critic与 rollout workers 创建对应的控制器。控制器架构PPOTrainer (Controller Process) │ ├── actor: PPOActorController (TrainController) │ ├── scheduler.create_workers() → Training workers │ ├── Remote engines: FSDPPPOActor instances │ └── APIs: compute_logp(), compute_advantages(), ppo_update() │ ├── rollout: RolloutController │ ├── scheduler.create_engine() → Inference workers (SGLang/vLLM) │ ├── BatchTaskDispatcher → Async workflow execution │ └── API: prepare_batch() → Returns batch tensors │ └── ref: PPOActorController (optional) └── Frozen reference model for KL penalty关键模式引擎通过as_controller(config, scheduler)将自己包装进控制器由控制器统一负责 worker 创建、RPC 分发与结果合并。ref控制器是可选的冻结参考模型用于 KL 惩罚示例配置中ref.optimizer: null即冻结不更新。Rollout生成训练数据Workflow 规范与动态导入在examples/math/gsm8k_rl.py中workflow 以字符串传入trainer.train()以便在远端 worker 上动态 importtrainer.train( workflowareal.workflow.rlvr.RLVRWorkflow, workflow_kwargs{ reward_fn: areal.reward.gsm8k.gsm8k_reward_fn, gconfig: config.gconfig, tokenizer: config.tokenizer_path, }, )RLVRWorkflow单轮奖励学习areal/workflow/rlvr.py 中的RLVRWorkflowSingle-turn reward learning workflow定义了提示 → 训练样本的转换流程。每个 trajectory 依次经过Tokenize input对 messages 应用 chat templateapply_chat_template支持enable_thinking开关Generate response调用推理引擎SGLang/vLLM生成Compute reward将生成结果与标准答案对比得到奖励Build training sample构造 tensor dict包含input_ids完整序列prompt completionloss_maskprompt token 为 0completion token 为 1logprobs生成时的对数概率versions每个 token 对应的模型版本prompt 为 -1turn_ids轮次编号prompt 为 -1completion 为 0rewards标量奖励从源码看RLVRWorkflow.arun_episode()正是按此顺序构造样本先生成单条响应engine.agenerate(req)一次一个样本、n_samples1再解码计算奖励最后以 batch dim 为 1 的 tensor 字典返回。GSM8K 奖励函数基于 math_verify 的二元判定areal/reward/gsm8k.py 中的gsm8k_reward_fn(prompt, completions, prompt_ids, completion_ids, answer, **kwargs)返回二元奖励答案正确为 1.0否则为 0.0。其底层通过 areal/reward/init.py 中的MathVerifyWorker调用math_verify库完成解析与比对使用ExprExtractionConfig(try_extract_without_anchorTrue)LatexExtractionConfig()分别抽取标准答案与模型回答默认精度precision6位有效数字采用concurrent.futures线程池实现线程安全的 5 秒超时避免signal.alarm()在主线程限制超时或异常统一返回 0.0保证 reward 信号永不阻塞训练流程。异步 Rollout 收集三级并发AReaL 的 rollout 是完全异步的通过三个层面的并发实现生成与训练重叠。三进程架构Controller Process Worker Process (RPC Server) GPU Process ────────────────── ─────────────────────────── ─────────── RolloutController Flask HTTP Server (CPU) SGLang/vLLM │ │ │ └─ BatchTaskDispatcher /call endpoint Inference (background thread) │ Engine │ └─ Engine Thread │ ├─ submit task 1 └─ RemoteInfEngine │ │ (HTTP POST) └─ submit() ──────────────│ │ Generate ├─ submit task 2 tokens │ (HTTP POST) │ │ │ ├─ submit task 3 HTTP Callback ──────────────┘ │ (trajectory) │ ┌─────────────┘ └─ collect ──────┘ Meanwhile (on different GPUs)... TrainController Training Worker │ │ └─ ppo_update(batch) ────────── Forward/Backward Key: Generation and training happen SIMULTANEOUSLY on different GPUs三级并发详解Level 1 —— 控制器线程BatchTaskDispatcher实现位于 areal/infra/workflow_executor.py运行在后台线程通过 HTTP 持续向 workers 提交 rollout 请求以 round-robin 方式向各 rollout worker 提交任务维护2 个 inflight batch以隐藏网络/排队延迟非阻塞提交后立刻返回task_id。正因如此虽然代码看起来是同步编排但rollout 与训练在 AReaL 中是同时进行的。Level 2 —— Worker RPC Server每个 rollout worker 在CPU上运行一个 Flask HTTP 服务器areal/infra/rpc/rpc_server.py以多线程 Flask 接受并发 HTTP 请求Engine thread串行处理引擎操作保证 NCCL 兼容性将请求路由到RemoteInfEngine由后者把工作排队交给 SGLang/vLLM。Level 3 —— GPU 子进程SGLang/vLLM 作为独立的 GPU 子进程运行由backend.launch_server()启动与 RPC server 分离维护自己的请求队列通过 continuous batching连续批处理并发处理多个生成请求轨迹完成后通过 HTTP 回调通知。请求流代码骨架# 1. Controller calls prepare_batch batch rollout.prepare_batch( dataloader, workflowareal.workflow.rlvr.RLVRWorkflow, workflow_kwargsworkflow_kwargs, ) # 2. RolloutController delegates to BatchTaskDispatcher # Background thread submits tasks: for data in dataloader: task _RemoteRolloutTaskInput(data, workflow, workflow_kwargs, task_id) dispatcher.submit_task_input(task) # Non-blocking HTTP POST # 3. Worker RPC server receives HTTP POST /call (methodsubmit) # Engine thread executes: workflow_instance import_from_string(workflow)(**workflow_kwargs) task_id workflow_executor.submit(data, workflow_instance) # Returns immediately (non-blocking) # 4. WorkflowExecutor (on worker) runs in background: result await workflow_instance.arun_episode(engine, data) # Sends HTTP callback to controller with trajectory # 5. Controller collects results # BatchTaskDispatcher waits for batch_size accepted trajectories results dispatcher.wait_results(batch_size) return concat_padded_tensors(results) # Shape: [batch_size, seq_len]陈旧度控制Staleness Controlareal/infra/staleness_manager.py 中的StalenessManager限制并发 inflight 请求防止训练权重更新过快导致采样数据过旧max_concurrent_rollouts最大 inflight 轨迹数max_head_offpolicyness拒绝由过旧权重生成的样本示例配置设为 2版本追踪每个 token 都打上生成时所用模型的版本标签versions字段训练侧据此判断策略偏差。Training控制器-Worker 模式训练采用标准的 controller-worker 模式控制器通过 RPC 向训练 workers 分发算法操作workers 处理各自数据分片结果合并回控制器。TrainController分发机制areal/infra/controller/train_controller.py 提供核心 RPC 分发_dispatch_inputs()用 FFD 负载均衡将 batch 切分给各 workerRPC 调用每个 worker 收到自己的分片、处理并返回结果_merge_results()从数据并行 workers 的结果中重建完整输出。RTensor 数据流示例Controller Worker 0 Worker 1 │ │ │ ├─ RTensor (metadata) ──────┼─────────────────────────┤ │ • Shards 0,1,2,3 │ │ │ │ │ ├─ dispatch() ──────────── │ │ │ • Worker 0: Shards 0,1 │ │ │ • Worker 1: Shards 2,3 │ │ │ │ │ │ ├─ Fetch Shards 0,1 │ │ │ from rollout workers │ │ │ ├─ Fetch Shards 2,3 │ │ │ from rollout workers │ │ │ │ ├─ compute_logp() ├─ compute_logp() │ │ │ │ ├─ RTensor (result) ├─ RTensor (result) │─ merge() ────────────────┴─────────────────────────┘ │ • Reconstruct ordering │ • Return unified RTensor └─ batch[logp] result核心设计控制器只处理 RTensor 元数据workers 直接从 rollout workers 拉取真实张量从而避免控制器内存开销。训练 Worker算法实现在 areal/trainer/ppo/actor.py 中FSDPPPOActor实现了 GRPO/PPO 算法主要算法方法compute_logp(batch)对模型做前向传播计算序列的对数概率compute_advantages(batch)做奖励/优势归一化组级或 batch 级。示例配置中reward_norm.mean_level/std_level均为group组级group_size即gconfig.n_samples4而adv_norm为 batch 级这正是 GRPO 按组归一化奖励的标准做法ppo_update(batch)策略更新包含 mini-batch 训练与梯度累积将 batch 切分为 mini-batchesppo_n_minibatches计算 PPO lossclipped surrogate objective 可选 KL 惩罚执行反向传播与优化器 step。示例配置中 GRPO 相关训练参数包括eps_clip: 0.4裁剪阈值、reward_scaling: 10.0/reward_bias: -0.5奖励整形、kl_ctl: 0.0不使用额外 KL 项因为奖励已整形、recompute_logprob: true、use_decoupled_loss: true解耦损失、rejection_sampling.metric: ratio / upper: 5.0以及optimizerAdamlr6e-6weight_decay0.017梯度裁剪 1.0warmup 0.001。并行度与 GPU 分配每个引擎的backend字段决定 GPU 分配。教程给出 8 卡示例rollout.backendsglang:d4 actor.backendfsdp:d4, n_gpus8 Rollout Workers: Training Workers: GPU 0: SGLang GPU 4: FSDP rank 0 ─┐ GPU 1: SGLang GPU 5: FSDP rank 1 ├─ Data Parallel GPU 2: SGLang GPU 6: FSDP rank 2 │ (DP size 4) GPU 3: SGLang GPU 7: FSDP rank 3 ─┘ │ NCCL AllReduce for gradients每个 worker 处理自己的分片随后通过 NCCL AllReduce 同步梯度。训练循环trainer.train()编排完整循环实现在 areal/trainer/rl_trainer.py 的train方法中从源码看其会先计算max_steps total_train_epochs * steps_per_epochfor global_step in range(start_step, max_steps): # 1. Rollout rollout_batch self.actor.prepare_batch(train_dataloader, workflow, workflow_kwargs) # 2. Compute log-probs and advantages if config.actor.should_compute_prox_logp(): rollout_batch[prox_logp] self.actor.compute_logp(rollout_batch) if self.ref: rollout_batch[ref_logp] self.ref.compute_logp(rollout_batch) adv_batch self.actor.compute_advantages(rollout_batch) # 3. PPO update self.actor.ppo_update(adv_batch) self.actor.step_lr_scheduler() # 4. Weight sync self.rollout.pause() self.actor.update_weights(weight_update_meta) self.actor.set_version(global_step 1) self.rollout.set_version(global_step 1) self.rollout.resume()所有算法操作都是控制器方法调用内部自动分发到远端 workers。权重同步每步训练结束后更新后的权重必须同步到推理 workers。AReaL 支持两种传输方式传输方式NCCL 传输推荐基于 NCCL broadcast 的 GPU 直连通信速度更快但占用更多 GPU 显存要求训练与推理 GPU 不重叠且位于同一通信后端。示例配置中actor.weight_update_mode: xccl即用于指定权重更新通信方式。磁盘传输Disk-based保存到共享存储再由推理服务器加载适用于 NCCL 不可用或机器不在同一通信后端的场景。权重更新流程PPOTrainer.train()中的权重同步遵循如下模式完整实现在 areal/trainer/rl_trainer.py 的 train 循环中暂停 rollout 服务器将所有 inflight 生成中断并回调到 rollout 客户端如RemoteSGLangEngine按配置方式NCCL 或磁盘传输权重更新版本追踪供陈旧度管理使用恢复 rollout以更新后的权重重新计算 KV cache 继续采样。监控与工具链PPOTrainer自动编排 checkpoint、评估与指标追踪等工具训练过程中无需手动干预。Checkpoint两套互补机制组件用途格式配置项areal/utils/saver.py 的Saver导出用于评估/部署HuggingFace 格式config.saverareal/utils/recover.py 的RecoverHandler故障后恢复训练DCP分片config.recoverSaver生成 HuggingFace 兼容的 checkpoint可用transformers加载或发布到 HF Hub每次保存创建新目录示例配置freq_epochs: 1即每轮保存一次RecoverHandler保存完整训练状态模型、优化器、dataloader、RNG用于容错。checkpoint 与后端绑定加载时要求相同的并行配置每次保存会覆盖旧 checkpoint示例配置默认mode: disabled可开启并按freq_secs: 3600周期保存两者都在trainer.train()中自动调用。细节见 Checkpointing Reference。评估Evaluationareal/utils/evaluator.py 的Evaluator在验证集上周期性执行评估通过config.evaluation配置示例中evaluator.freq_epochs: 1由trainer.train()自动调用。评估使用的 workflow 可在训练脚本中单独指定如当前示例脚本以温度 0.6 的MathAgent作为 eval workflow。指标追踪双组件体系AReaL 的指标系统由两部分组成areal/utils/stats_tracker.py 的stats_tracker针对不同场景优化两种统计范式流式指标Streaming用于 rollout workersworkflow 逐条记录标量如reward由控制器跨 workers 聚合批量指标Batch用于训练按 batch 记录带布尔 mask 的张量统计再跨数据并行 rank 做 all-reduce。# Rollout metrics (streaming) - in workflows stats_tracker.get(rollout).scalar(reward0.8, num_turns3) # Training metrics (batch) - in PPO actor stats_tracker.denominator(n_valid_tokensloss_mask.bool()) stats_tracker.stat(advantagestensor, denominatorn_valid_tokens)areal/utils/stats_logger.py 的StatsLogger在 rank 0 上将聚合指标发送到日志后端Weights Biases、SwanLab、TensorBoard。每个训练步PPOTrainer收集各组件指标并提交# areal/trainer/rl_trainer.py stats self.actor.export_stats() # Training metrics stats.update(self.rollout.export_stats()) # Rollout metrics self.stats_logger.commit(epoch, step, global_step, stats) # → wandb/tensorboard示例配置中stats_logger.wandb.mode: disabled可按需开启。完整 API 见 Metrics Tracking Reference。配置文件逐字段速查gsm8k_grpo.yaml完整配置见 examples/math/gsm8k_grpo.yaml关键字段一览配置块关键字段示例值含义顶层experiment_name/trial_namegsm8k-grpo/trial0实验与试验命名顶层seed1随机种子顶层total_train_epochs10总训练轮数clustern_nodes/n_gpus_per_node1/8集群规模schedulertypenullCLI 覆盖调度后端rolloutbackendsglang:d4p1t1推理引擎与并行度rolloutmax_concurrent_rollouts256最大并发轨迹数rolloutmax_head_offpolicyness2允许的最大策略偏差gconfign_samples4每组采样数GRPO 组大小gconfigmax_new_tokens/max_tokens1024/2048生成长度上限gconfigtemperature/greedy1.0/false采样温度actorbackendfsdp:d4p1t1训练引擎与并行度actorpathQwen/Qwen2.5-1.5B-Instruct基座模型actoroptimizer.lr6.00e-6学习率actoreps_clip0.4PPO 裁剪阈值actorreward_norm/adv_normgroup/batchGRPO 组级归一化refscheduling_strategycolocation: actor参考模型与 actor 共置sglang/vllmcontext_length/max_model_len32768推理上下文长度train_datasetbatch_size/path256/openai/gsm8k训练数据saver/recover/evaluatorfreq_*freq_epochs: 1保存/恢复/评估频率stats_loggerwandb.modedisabled日志后端开关perf_tracerenabledfalse性能追踪开关其中gconfig.n_samples4与actor.reward_norm.group_size4相互呼应是 GRPO 按组group做奖励归一化的关键配置mb_spec.max_tokens_per_mb10240与packing_algorithm: ffd控制 micro-batch 打包同样采用 FFD 策略。下一步学习路径掌握本教程后可以继续探索以下进阶主题教程TutorialsEvaluation评估训练好的模型Training Large MoE Models通过 Megatron 集成扩展到大模型示例见 examples/math/gsm8k_grpo_megatron.yamlAgentic RL构建使用工具和任意 agentic 框架的智能体。自定义指南Customization GuidesCustom Datasets接入自己的数据源Custom Workflows用自定义奖励函数构建 agentic/RLVR workflows。【免费下载链接】AReaLThe RL Bridge for LLM-based Agent Applications. Made Simple Flexible.项目地址: https://gitcode.com/GitHub_Trending/are/AReaL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表