HyperParallel-RL 功能导航图
每行记录配置或入口 → 执行分支 → 数据/指标 → 代表测试。本文对应当前仓库实现;配置与合同变化时更新相关行, 内部实现调整但合同与入口未变时无需扩写。架构边界见 RL 架构。
路径约定:rl/、examples/ 相对 hyper_parallel/rl/;tests/、hyper_parallel/ 相对仓库根目录。
文件.py::Class.method 或 文件.py::function 指明实现符号。测试列是代表覆盖,不是所有场景均已通过的声明。
UT 包含 CPU 计算与 mock;真实模型、通信和数值效果需执行对应 ST。
目录校验器只校验 AGENTS 清单,本文的路径、符号和语义需另外核查。
1. 配置、模型与支持范围
| 功能 | 配置或入口 | 实现分支 | 数据或指标 | 代表测试 |
|---|---|---|---|---|
| 运行镜像 | 默认统一镜像;启动脚本及 RL_ST_*_IMAGE 可覆盖 |
镜像下载与校验 | 同一镜像包含 RL 基础依赖、Codex CLI 和 DeepSeek Harness | — |
| 配置校验与运行配置 | YAML 顶层字段 | rl/config.py::validate_config、rl/config.py::build_runtime_config |
主项目 TrainerConfig |
tests/ut/rl/trainer/test_config_runtime.py |
| 模型身份与 Qwen3 加载 | model.registry_name、model.name、model.weights_path |
rl/roles/model_setup.py::resolve_model、hyper_parallel/rl/rl/roles/qwen3_builder.py::Qwen3AutoModel |
ModelRegistration;checkpoint 身份仅接受 Qwen3 dense |
tests/ut/rl/trainer/test_qwen3_master.py、tests/ut/rl/trainer/test_config_runtime.py::test_removed_model_families_fail_before_runtime_construction |
| 训练拓扑边界 | train.accelerator.dp_shard、tp、dp_replicate、cp、pp、ep |
rl/config.py::_trainer_topology、rl/config.py::_validate_trainer_ep |
TP1/TP2;正整数 FSDP 分片数;其余维度固定为 1 | tests/ut/rl/trainer/test_config_runtime.py::test_training_topology_is_checked_for_all_engines、tests/ut/rl/trainer/test_config_runtime.py::test_dense_runtime_rejects_expert_parallelism |
2. 算法、目标与策略角色
| 功能 | 配置或入口 | 实现分支 | 数据或指标 | 代表测试 |
|---|---|---|---|---|
| GRPO | algorithm.name=grpo |
rl/algorithm/loss.py::GRPOAlgorithm.build_targets、rl/algorithm/loss.py::GRPOAlgorithm.compute_actor_loss |
分组优势;train/policy_loss、train/kl_loss |
tests/ut/rl/algorithm/test_algorithm_registry.py、tests/ut/rl/algorithm/test_algorithm_loss.py |
| PPO | algorithm.name=ppo、algorithm.gamma、algorithm.gae_lambda |
rl/algorithm/loss.py::PPOAlgorithm.build_targets、rl/algorithm/loss.py::PPOAlgorithm.compute_actor_loss、rl/algorithm/loss.py::PPOAlgorithm.compute_critic_loss |
advantages、returns;critic/value_loss |
tests/ut/rl/algorithm/test_algorithm_loss.py、tests/ut/rl/trainer/test_ppo_targets.py |
| 分组优势与 GAE | 由算法选择 estimator | rl/algorithm/advantage.py::GroupRelativeAdvantageEstimator.estimate、rl/algorithm/advantage.py::GAEAdvantageEstimator.estimate |
TargetOutput |
tests/ut/rl/algorithm/test_algorithm_advantage.py |
| PPO bootstrap 与优势归一化 | rollout 终止状态、Critic 最后一个 token 的值 | rl/dataset/batch_builder.py::get_bootstrap_values、rl/dataset/batch_builder.py::ExperiencePreparer.prepare |
冻结的旧 values、bootstrap、returns、loss mask | tests/ut/rl/trainer/test_ppo_targets.py::TestPPOTargets.test_gae_bootstrap_and_observation_gap、tests/ut/rl/data/test_experience_preparer.py |
| Actor 重算 | 日志诊断或 consistency.enabled=true |
rl/trainer.py::SyncTrainer._prepare_experience、rl/roles/policy/actor.py::Actor.compute_log_probs |
Actor logprobs 用于诊断;训练 old_log_probs 保持 rollout 来源 | tests/ut/rl/policy/test_policy_compute.py、tests/ut/rl/consistency/test_consistency.py |
| Actor 更新 | train.micro_batch_size、train.response_mini_batch_size、train.policy_update_epochs |
rl/roles/policy/actor.py::Actor.update、rl/roles/policy/actor.py::Actor.forward_backward |
ActorUpdateMetrics;train/gradient_norm、train/optimizer_steps |
tests/ut/rl/policy/test_policy_update.py |
| Reference | 内置 GRPO/PPO 的角色需求;algorithm.kl_coef=0 不移除 Reference |
rl/trainer.py::SyncTrainer._build_models_and_optimizers、rl/roles/policy/actor.py::Actor.__init__ |
冻结模型;ExperienceBatch.reference_log_probs |
tests/ut/rl/policy/test_actor_roles.py、tests/ut/rl/trainer/test_trainer_orchestration.py |
| PPO Critic | train.critic.weights_path、optimizer、micro_batch_size、response_mini_batch_size、update_epochs |
rl/roles/policy/critic.py::build_value_model、rl/roles/policy/critic.py::Critic.compute_values、rl/roles/policy/critic.py::Critic.update |
价值头已接入;CriticUpdateMetrics、critic/value_loss、critic/optimizer_steps |
tests/ut/rl/trainer/test_ppo_value_model.py、tests/ut/rl/policy/test_policy_update.py |
3. Rollout 与 Agentic
| 功能 | 配置或入口 | 实现分支 | 数据或指标 | 代表测试 |
|---|---|---|---|---|
| vLLM 生成 | rollout.engine=vllm |
rl/roles/rollout/registry.py::build_rollout_engine、rl/roles/rollout/vllm.py::VLLMGenerationEngine.generate |
GenerationResult;rollout/generated_tokens、rollout/tokens_per_second |
tests/ut/rl/rollout/test_vllm_runtime.py |
| Native / Hyper Qwen3 | rollout.vllm.model_implementation 为 native 或 hyper |
rl/roles/model_setup.py::resolve_vllm_model、rl/roles/rollout/vllm_plugin.py::register_hyper_models、rl/roles/rollout/consistency_models/qwen3/model.py::HyperQwen3ForCausalLM |
两种模型实现共享生成及权重更新控制合同 | tests/ut/rl/rollout/test_qwen3_adapter.py、tests/ut/rl/rollout/test_vllm_plugin.py |
| 服务拓扑与设备 | rollout.vllm.deployment、data_parallel_size、tensor_parallel_size、visible_devices |
rl/config.py::_validate_vllm_basics、rl/roles/rollout/topology.py::resolve_vllm_rollout_topology |
共享服务;colocated/disjoint 的设备与训练规模约束 | tests/ut/rl/rollout/test_rollout_topology.py、tests/ut/rl/trainer/test_config_runtime.py |
| 运行容量 | rollout.vllm.max_model_len、max_num_seqs、max_num_batched_tokens |
rl/config.py::resolve_vllm_automatic_limits、rl/config.py::_validate_vllm_limits |
自动解析容量并校验约束 | tests/ut/rl/trainer/test_config_runtime.py |
| GSM8K 环境与奖励 | agentic.module_path=examples.gsm8k.agent、agentic.environment=gsm8k_tools |
rl/agentic/envs/environment.py::load_agentic_module、examples/gsm8k/agent.py::build_gsm8k_environment、examples/gsm8k/agent.py::compute_gsm8k_reward |
Trajectory.reward;reward/mean、reward/accuracy |
tests/ut/rl/agentic/agentic_ut.py 验证通用合同;真实 GSM8K 奖励/学习证据见 hyper_parallel/rl/tests/st/test_rl_st.py |
| 内部交互与工具 | agentic.runner=internal、agentic.max_turns |
rl/agentic/core/session.py::AgentSession、rl/agentic/tools/executor.py::ToolExecutor |
带版本的 EpisodeContext、Trajectory 与工具结果 | tests/ut/rl/agentic/agentic_ut.py、tests/ut/rl/rollout/test_worker.py |
| Codex 程序 | agentic.runner=codex、agentic.codex.* |
rl/roles/rollout/worker.py::CodexRolloutManager、rl/agentic/codex/、rl/agentic/core/program_runner.py |
程序生成轨迹、token/logprob 与策略版本 | tests/ut/rl/agentic/agentic_ut.py;NPU case codex-agent |
| DeepSeek 程序 | agentic.runner=deepseek、agentic.deepseek.* |
rl/roles/rollout/worker.py::DeepSeekRolloutManager、rl/agentic/ds_harness/、rl/agentic/core/program_runner.py |
Agent Harness 接入,模型仍按 Qwen3 dense 边界校验 | tests/ut/rl/agentic/agentic_ut.py;NPU case deepseek-agent |
4. 权重同步与发布
| 功能 | 配置或入口 | 实现分支 | 数据或指标 | 代表测试 |
|---|---|---|---|---|
| 策略选择 | rollout.vllm.weight_sync.strategy、bucket_size_mb |
rl/roles/weight_sync/config.py::resolve_weight_sync_config、rl/roles/weight_sync/transfer.py::build_weight_transfer |
默认 full_gather;weight_sync/configured_full_gather、weight_sync/configured_direct_reshard |
tests/ut/rl/weight_sync/test_weight_sync_strategy.py |
| 完整参数 full-gather | strategy=full_gather |
rl/roles/weight_sync/transfer.py::FullGatherStrategy、rl/roles/weight_sync/packed_weight.py::build_packed_weight_buckets |
整参数逐桶物化;桶大小不是大参数的绝对内存上限 | tests/ut/rl/weight_sync/test_packed_weight.py、tests/ut/rl/weight_sync/test_weight_sync_transport.py |
| Direct reshard | strategy=direct_reshard |
rl/roles/weight_sync/transfer.py::DirectReshardStrategy、rl/roles/weight_sync/layout.py |
源/目标布局、交集与传输计划 | tests/ut/rl/weight_sync/test_direct_reshard.py、tests/ut/rl/weight_sync/test_weight_sync_transport.py |
| 设备传输 | deployment=colocated 或 disjoint |
rl/roles/weight_sync/ipc.py、rl/roles/weight_sync/hccl.py |
colocated→IPC;disjoint→HCCL | tests/ut/rl/weight_sync/test_weight_sync_transport.py、tests/ut/rl/weight_sync/test_weight_sync_worker.py |
| 版本提交与失败 | PolicySnapshot |
rl/trainer.py::SyncTrainer._publish_policy、rl/roles/weight_sync/transfer.py::WeightPublisher.publish、rl/roles/weight_sync/sync.py::ActorRolloutWeightSync.prepare_for_rollout |
核对提交版本;policy/version;异常向上传播,无自动 fallback |
tests/ut/rl/weight_sync/test_weight_sync_transaction.py、tests/ut/rl/trainer/test_trainer_orchestration.py::test_trainer_publication_releases_training_state_before_rollout_wake |
5. 一致性门禁
| 功能 | 配置或入口 | 实现分支 | 数据或指标 | 代表测试 |
|---|---|---|---|---|
| 更新前一致性 | consistency.enabled=true |
rl/trainer.py::SyncTrainer._prepare_experience、rl/consistency/gates.py::validate_pre_update_consistency |
策略版本、有效 action token;training/pre_update_exact_valid、training/pre_update_exact_tokens |
tests/ut/rl/consistency/test_gates.py、tests/ut/rl/consistency/test_consistency.py |
| Qwen3 Ascend 配方 | consistency.enabled、rollout.vllm.batch_invariant |
rl/consistency/qwen3_dense.py::configure_consistency_profile、rl/roles/rollout/vllm_plugin.py::register_hyper_models |
HYPER_RL_CONSISTENCY_PROFILE 与指定模型/运行环境 |
tests/ut/rl/trainer/test_config_runtime.py、tests/ut/rl/rollout/test_vllm_runtime.py |
| 更新后诊断 | 一致性配方开启时 | rl/consistency/gates.py::measure_post_update_old_policy_mismatch |
更新后参数与旧 rollout 的差异;不要求学习更新后仍 bit-exact | tests/ut/rl/consistency/test_gates.py |
6. 数据、训练、保存与观测
| 功能 | 配置或入口 | 实现分支 | 数据或指标 | 代表测试 |
|---|---|---|---|---|
| 同步主循环 | train.max_steps |
rl/trainer.py::SyncTrainer.train、rl/trainer.py::SyncTrainer._train_step |
RLTrainerState;train/global_step |
tests/ut/rl/trainer/test_trainer_orchestration.py |
| 退出与初始化失败清理 | Trainer 初始化失败或训练退出 | rl/process_cleanup.py::cleanup_processes、rl/process_cleanup.py::destroy_process_group |
服务关闭、生命周期状态复位、进程组与缓存释放 | tests/ut/rl/trainer/test_process_cleanup.py、tests/ut/rl/trainer/test_trainer_orchestration.py |
| Parquet prompt 数据 | data.train_path、data.test_path |
rl/dataset/data_source.py::PromptDataset、rl/dataset/data_source.py::build_prompt_records |
PromptRecord 与批次 |
tests/ut/rl/data/test_data_source.py |
| 经验与目标 | rollout 结果、Reference、可选 Critic | rl/dataset/batch_builder.py::build_experience_batch、rl/dataset/batch_builder.py::ExperiencePreparer.prepare |
ExperienceBatch 的 mask、old_log_probs、advantages、returns |
tests/ut/rl/data/test_contracts.py、tests/ut/rl/data/test_experience_preparer.py |
| 保存与恢复 | train.checkpoint.save_steps、save_final、load_path |
rl/checkpoint.py::RLCheckpointManager、rl/trainer.py::SyncTrainer.train |
角色模型/优化器/调度器、数据进度、global_step、RNG;恢复后重新发布策略 | tests/ut/rl/trainer/test_checkpoint.py、tests/ut/rl/trainer/test_ppo_targets.py::TestPPOCheckpoint.test_both_roles_survive_resume |
| 评估 | evaluation.enabled;保存边界和最终保存调度 |
rl/evaluation.py::Evaluator.run、rl/trainer.py::SyncTrainer._complete_step |
validation/ 指标及样本表 |
tests/ut/rl/utils/test_evaluation.py、tests/ut/rl/trainer/test_trainer_orchestration.py |
| 指标与记录 | logging.backends、logging.log_steps、logging.wandb.* |
rl/utils/monitoring/metrics.py::build_training_metrics、rl/utils/monitoring/tracker.py |
train/、critic/、reward/、rollout/、policy/、weight_sync/ |
tests/ut/rl/utils/test_monitoring_metrics.py、tests/ut/rl/utils/test_monitoring_tracker.py |
| 学习证据门 | train.learning_gate.enabled |
rl/utils/monitoring/metrics.py::enforce_learning_gate |
奖励差异、有限且非零的梯度等检查;不保证算法收敛 | tests/ut/rl/utils/test_monitoring_metrics.py |
7. ST 配方与覆盖边界
tests/common/rl_st_cases.py 中的 CASES 和 prepare_config 是 UT/ST 共用的配置来源。
tests/ut/rl/trainer/test_config_runtime.py::test_all_st_recipes_pass_production_validation 只证明配方通过配置校验,
不证明训练已执行。hyper_parallel/rl/tests/st/test_rl_st.py::test_rl_system 才是实际 NPU 入口,
hyper_parallel/rl/tests/st/st_runtime.py 负责运行和恢复阶段,hyper_parallel/rl/tests/st/st_evidence.py 检查结果。
| 配方组 | case 名称 | 关注内容 |
|---|---|---|
| Dense GRPO | dense-tp2-direct |
训练、Actor 发布、拓扑与传输 |
| 一致性 | dense-tp2-consistency-full |
指定配方下的更新前一致性与版本 |
| 程序 Agent | codex-agent、deepseek-agent |
外部程序轨迹与训练衔接 |
| 保存恢复 | checkpoint-resume |
分阶段保存、恢复与继续训练 |
| PPO | ppo-tp1-full |
Actor/Critic 更新 |
真实 RL ST 保留在 RL 子项目中,暂不由主项目 tests/torch/ 门禁收集;需显式执行并准备模型、数据、镜像和设备。
运行条件见 ST 说明,PPO 验证边界见
PPO 文档,bit-exact 的条件见
训练推理一致性。
当前不包含 MoE/EP、自动策略 fallback,也不包含旧独立 streaming-full-gather 模块。