An Easy-to-use, Scalable and High-performance Agentic RL Framework based on Ray (PPO & DAPO & REINFORCE++ & VLM & TIS & vLLM & Ray & Async RL)
This report presents the forensic synthetic code analysis of OpenRLHF/OpenRLHF, a Python project with 9,788 GitHub stars. SynthScan v2.0 examined 16,697 lines of code across 91 source files, recording 191 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 14.8 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 191 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openrlhf/utils/vlm_utils.py | 68 | def process_prompt_with_images( | CODE |
| LOW | openrlhf/utils/seqlen_balancing.py | 153 | def get_seqlen_balanced_partitions(seqlen_list: List[int], k_partitions: int, equal_size: bool): | CODE |
| LOW | openrlhf/utils/seqlen_balancing.py | 171 | def _check_and_sort_partitions(partitions): | CODE |
| LOW | openrlhf/utils/seqlen_balancing.py | 234 | def get_minimum_num_micro_batch_size(total_lengths, max_tokens_per_gpu, ring_attn_size, ds_tensor_parallel_size): | CODE |
| LOW⚡ | openrlhf/utils/math_utils.py | 175 | def _strip_properly_formatted_commas(expr: str) -> str: | CODE |
| LOW | openrlhf/utils/math_utils.py | 200 | def _inject_implicit_mixed_number(step: str) -> str: | CODE |
| LOW | openrlhf/utils/math_utils.py | 278 | def count_unknown_letters_in_expr(expr: str) -> int: | CODE |
| LOW | openrlhf/utils/loss_utils.py | 54 | def _optimizer_step_loss_norm(masks, dp_group, dp_size, gas): | CODE |
| LOW | openrlhf/utils/loss_utils.py | 80 | def iter_grad_accum_global_norm(data_iter, strategy, accumulated_gradient, mask_fn): | CODE |
| LOW | openrlhf/utils/distributed_util.py | 1 | def torch_dist_barrier_and_cuda_sync(): | CODE |
| LOW | openrlhf/utils/distributed_util.py | 13 | def stateless_init_process_group(master_address, master_port, rank, world_size, device): | CODE |
| LOW | openrlhf/utils/deepspeed/deepspeed_utils.py | 121 | def get_optimizer_grouped_parameters( | CODE |
| LOW | openrlhf/models/ring_attn_utils.py | 9 | def patch_transformers_for_ring_flash_attn(): | CODE |
| LOW | openrlhf/models/ring_attn_utils.py | 32 | def reset_ring_attn_position_ids(start, end, packed_seq_lens): | CODE |
| LOW | openrlhf/models/ring_attn_utils.py | 72 | def get_tensor_in_current_ring_attn_rank(tensors: list[torch.Tensor] | torch.Tensor, ring_attn_group, pad_id): | CODE |
| LOW | openrlhf/models/model.py | 21 | def get_llm_for_sequence_regression( | CODE |
| LOW⚡ | openrlhf/models/actor.py | 298 | def gradient_checkpointing_enable(self, gradient_checkpointing_kwargs={"use_reentrant": False}): | CODE |
| LOW⚡ | openrlhf/models/actor.py | 301 | def gradient_checkpointing_disable(self): | CODE |
| LOW⚡ | openrlhf/models/actor.py | 304 | def print_trainable_parameters(self): | CODE |
| LOW | openrlhf/trainer/sft_trainer.py | 215 | def save_logs_and_checkpoints(self, args, global_step, step_bar, logs_dict=None, client_states=None): | CODE |
| LOW | openrlhf/trainer/rm_trainer.py | 214 | def save_logs_and_checkpoints(self, args, global_step, step_bar, logs_dict={}, client_states={}): | CODE |
| LOW | openrlhf/trainer/ppo_trainer.py | 197 | def restore_best_checkpoint_state(self, checkpoint_states) -> None: | CODE |
| LOW | openrlhf/trainer/ppo_trainer.py | 383 | def save_logs_and_checkpoints(self, global_step: int, logs_dict=None, client_states=None) -> None: | CODE |
| LOW | openrlhf/trainer/dpo_trainer.py | 223 | def save_logs_and_checkpoints(self, args, global_step, step_bar, logs_dict=None, client_states=None): | CODE |
| LOW | openrlhf/trainer/ppo_utils/samples_generator.py | 199 | def _dispatch_prompts_to_vllm( | CODE |
| LOW | openrlhf/trainer/ppo_utils/samples_generator.py | 247 | def _process_response_into_experience(self, response, **generate_kwargs) -> Experience: | CODE |
| LOW | openrlhf/trainer/ppo_utils/experience_maker.py | 238 | def compute_advantages_and_returns(self, experiences: List[Experience]) -> List[Experience]: | CODE |
| LOW | openrlhf/trainer/ppo_utils/experience_maker.py | 333 | def get_advantages_and_returns( | CODE |
| LOW | openrlhf/trainer/ppo_utils/experience.py | 256 | def remove_padding_in_sequences(items: List[Experience]) -> List[Experience]: | CODE |
| LOW | openrlhf/trainer/ppo_utils/length_penalty.py | 61 | def apply_stop_properly_penalty( | CODE |
| LOW | openrlhf/trainer/ray/vllm_engine.py | 179 | def get_num_unfinished_requests(self) -> int: | CODE |
| LOW | openrlhf/trainer/ray/ppo_actor.py | 494 | def init_model_from_pretrained(self, strategy: DeepspeedStrategy, pretrain, max_steps=None, vllm_engines=None): | CODE |
| LOW | openrlhf/trainer/ray/ppo_critic.py | 189 | def init_model_from_pretrained(self, strategy: DeepspeedStrategy, pretrain, max_steps): | CODE |
| LOW | openrlhf/trainer/ray/utils.py | 20 | def ray_noset_visible_devices(env_vars=os.environ): | CODE |
| LOW | openrlhf/trainer/ray/launcher.py | 60 | def init_model_from_pretrained(self, *args, **kwargs): | CODE |
| LOW | openrlhf/trainer/ray/launcher.py | 106 | def init_model_from_pretrained(self, strategy: DeepspeedStrategy, pretrain): | CODE |
| LOW | openrlhf/trainer/ray/launcher.py | 159 | def init_model_from_pretrained(self, strategy: DeepspeedStrategy, pretrain): | CODE |
| LOW | openrlhf/trainer/ray/launcher.py | 292 | def async_init_model_from_pretrained( | CODE |
| LOW⚡ | tests/test_ray_env_vars.py | 140 | def test_tokenizers_parallelism_default(self): | CODE |
| LOW⚡ | tests/test_ray_env_vars.py | 146 | def test_ray_zero_copy_default(self): | CODE |
| LOW⚡ | tests/test_ray_env_vars.py | 161 | def test_nccl_debug_user_info(self): | CODE |
| LOW⚡ | tests/test_ray_env_vars.py | 165 | def test_nccl_debug_user_trace(self): | CODE |
| LOW⚡ | tests/test_ray_env_vars.py | 169 | def test_tokenizers_parallelism_user_false(self): | CODE |
| LOW⚡ | tests/test_ray_env_vars.py | 173 | def test_ray_zero_copy_user_disabled(self): | CODE |
| LOW⚡ | tests/test_ray_env_vars.py | 177 | def test_multiple_user_overrides(self): | CODE |
| LOW⚡ | tests/test_ray_env_vars.py | 198 | def test_ray_init_not_called_when_initialized(self): | CODE |
| LOW | tests/test_loss_aggregation.py | 47 | def test_token_mean_aggregation_matches_verl_dp_average(): | CODE |
| LOW | tests/test_loss_aggregation.py | 61 | def test_seq_mean_token_mean_aggregation_matches_verl_dp_average(): | CODE |
| LOW | tests/test_loss_aggregation.py | 86 | def test_loss_batch_info_excludes_fully_masked_sequences(): | CODE |
| LOW | tests/test_loss_aggregation.py | 97 | def test_policy_loss_token_mean_aggregation_matches_full_batch(): | CODE |
| LOW | tests/test_loss_aggregation.py | 127 | def test_policy_kl_metric_uses_policy_ratio_when_vllm_correction_is_enabled(): | CODE |
| LOW | tests/test_loss_aggregation.py | 151 | def test_grad_accum_global_norm_matches_global_token_mean_over_window(): | CODE |
| LOW | tests/test_loss_aggregation.py | 183 | def test_grad_accum_global_norm_differs_from_per_microbatch_when_uneven(): | CODE |
| LOW | tests/test_loss_aggregation.py | 196 | def test_policy_kl_metric_is_not_clamped(): | CODE |
| LOW⚡ | examples/python/vlm_multiturn_agent.py | 42 | def get_screenshot_from_environment(): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_ray_env_vars.py | 126 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_ray_env_vars.py | 128 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_ray_env_vars.py | 153 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_ray_env_vars.py | 155 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_ray_env_vars.py | 190 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_ray_env_vars.py | 192 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | examples/python/vlm_multiturn_agent.py | 37 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | examples/python/vlm_multiturn_agent.py | 39 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/python/vlm_multiturn_agent.py | 69 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/python/vlm_multiturn_agent.py | 71 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/python/vlm_multiturn_agent.py | 177 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/python/vlm_multiturn_agent.py | 179 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openrlhf/datasets/__init__.py | 1 | CODE | |
| LOW | openrlhf/datasets/__init__.py | 2 | CODE | |
| LOW | openrlhf/datasets/__init__.py | 3 | CODE | |
| LOW | openrlhf/utils/math_utils.py | 6 | CODE | |
| LOW | openrlhf/utils/__init__.py | 1 | CODE | |
| LOW | openrlhf/utils/__init__.py | 1 | CODE | |
| LOW | openrlhf/utils/__init__.py | 2 | CODE | |
| LOW | openrlhf/utils/__init__.py | 2 | CODE | |
| LOW | openrlhf/utils/deepspeed/__init__.py | 1 | CODE | |
| LOW | openrlhf/models/__init__.py | 1 | CODE | |
| LOW | openrlhf/models/__init__.py | 2 | CODE | |
| LOW | openrlhf/models/__init__.py | 2 | CODE | |
| LOW | openrlhf/models/__init__.py | 2 | CODE | |
| LOW | openrlhf/models/__init__.py | 2 | CODE | |
| LOW | openrlhf/models/__init__.py | 2 | CODE | |
| LOW | openrlhf/models/__init__.py | 2 | CODE | |
| LOW | openrlhf/models/__init__.py | 2 | CODE | |
| LOW | openrlhf/models/__init__.py | 2 | CODE | |
| LOW | openrlhf/models/__init__.py | 12 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/__init__.py | 1 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/__init__.py | 1 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/__init__.py | 1 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/__init__.py | 1 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/__init__.py | 2 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/__init__.py | 2 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/__init__.py | 3 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/__init__.py | 3 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/__init__.py | 3 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/__init__.py | 4 | CODE | |
| LOW | openrlhf/trainer/ray/__init__.py | 2 | CODE | |
| LOW | openrlhf/trainer/ray/__init__.py | 2 | CODE | |
| LOW | examples/python/agent_func_openai_server_executor.py | 16 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openrlhf/datasets/prompts_dataset.py | 26 | CODE | |
| LOW | openrlhf/datasets/utils.py | 10 | CODE | |
| LOW | openrlhf/utils/vlm_utils.py | 30 | CODE | |
| LOW | openrlhf/utils/math_utils.py | 25 | CODE | |
| LOW | openrlhf/utils/math_utils.py | 285 | CODE | |
| LOW | openrlhf/utils/math_utils.py | 372 | CODE | |
| LOW | openrlhf/utils/math_utils.py | 26 | CODE | |
| LOW | openrlhf/utils/agent.py | 202 | CODE | |
| LOW | openrlhf/utils/deepspeed/deepspeed.py | 507 | CODE | |
| LOW | openrlhf/utils/deepspeed/deepspeed.py | 537 | CODE | |
| LOW | openrlhf/utils/deepspeed/deepspeed.py | 683 | CODE | |
| LOW | openrlhf/models/model.py | 21 | CODE | |
| LOW | openrlhf/models/utils.py | 10 | CODE | |
| LOW | openrlhf/models/actor.py | 76 | CODE | |
| LOW | openrlhf/models/actor.py | 221 | CODE | |
| LOW | openrlhf/trainer/sft_trainer.py | 215 | CODE | |
| LOW | openrlhf/trainer/sft_trainer.py | 246 | CODE | |
| LOW | openrlhf/trainer/ppo_trainer_async.py | 100 | CODE | |
| LOW | openrlhf/trainer/rm_trainer.py | 214 | CODE | |
| LOW | openrlhf/trainer/rm_trainer.py | 245 | CODE | |
| LOW | openrlhf/trainer/dpo_trainer.py | 223 | CODE | |
| LOW | openrlhf/trainer/dpo_trainer.py | 254 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/samples_generator.py | 140 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/experience_maker.py | 238 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/experience.py | 184 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/experience.py | 219 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/experience.py | 123 | CODE | |
| LOW | openrlhf/trainer/ppo_utils/length_penalty.py | 61 | CODE | |
| LOW | openrlhf/trainer/ray/ppo_actor.py | 155 | CODE | |
| LOW | examples/python/agent_func_openai_server_executor.py | 241 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openrlhf/datasets/utils.py | 62 | except Exception as e: | CODE |
| LOW | openrlhf/utils/vlm_utils.py | 63 | except Exception as e: | CODE |
| LOW | openrlhf/utils/math_utils.py | 38 | except Exception: | CODE |
| LOW | openrlhf/utils/math_utils.py | 66 | except Exception: | CODE |
| LOW | openrlhf/utils/math_utils.py | 130 | except Exception: | CODE |
| LOW⚡ | openrlhf/utils/math_utils.py | 160 | except Exception: | CODE |
| LOW⚡ | openrlhf/utils/math_utils.py | 167 | except Exception: | CODE |
| LOW | openrlhf/utils/math_utils.py | 190 | except Exception: | CODE |
| LOW | openrlhf/utils/math_utils.py | 248 | except Exception: | CODE |
| LOW | openrlhf/utils/math_utils.py | 311 | except Exception: | CODE |
| LOW | openrlhf/utils/math_utils.py | 361 | except Exception: | CODE |
| LOW | openrlhf/utils/utils.py | 47 | except Exception: | CODE |
| LOW | openrlhf/utils/agent.py | 298 | except Exception as e: | CODE |
| LOW | openrlhf/utils/agent.py | 347 | except Exception as e: # pragma: no cover - defensive | CODE |
| LOW | examples/python/agent_func_openai_server_executor.py | 47 | except Exception: | CODE |
| LOW | examples/python/agent_func_openai_server_executor.py | 218 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | README_zh.md | 481 | --vllm.sync_backend nccl \ | COMMENT |
| LOW | openrlhf/utils/seqlen_balancing.py | 1 | # Copied from https://github.com/volcengine/verl/blob/468adf22c43b744348051fccd7a5d830c6c3c36a/verl/utils/seqlen_balanci | COMMENT |
| LOW | openrlhf/utils/deepspeed/deepspeed.py | 141 | # ``optim`` defaults to the strategy-wide setting but can be overridden per-model | COMMENT |
| LOW | openrlhf/utils/deepspeed/deepspeed.py | 301 | # sets are silently dropped. ns_steps / nesterov are NOT configurable via | COMMENT |
| LOW | examples/scripts/train_nonrl_slurm.sh | 1 | #!/bin/bash | COMMENT |
| LOW | examples/scripts/train_vlm_math_hybrid_engine.sh | 1 | #!/bin/bash | COMMENT |
| LOW | examples/scripts/train_vlm_math_hybrid_engine.sh | 81 | --ds.enable_sleep | COMMENT |
| LOW | examples/scripts/train_vlm_math_hybrid_engine.sh | 101 | # Images in the dataset should be a list of paths/URLs. | COMMENT |
| LOW | examples/scripts/train_prorlv2_math_hybrid_engine.sh | 1 | #!/bin/bash | COMMENT |
| LOW | examples/scripts/train_prorlv2_math_hybrid_engine.sh | 81 | COMMENT | |
| LOW | examples/scripts/train_prorlv2_math_hybrid_engine.sh | 101 | # Truncated sample rewards are scaled by this coefficient (0.0 = zero reward for truncated) | COMMENT |
| LOW | examples/scripts/train_ppo_ray_slurm.sh | 1 | #!/bin/bash | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | openrlhf/utils/agent.py | 78 | # Initialize tracking variables | COMMENT |
| MEDIUM | openrlhf/models/utils.py | 112 | # The following code is equivalent to: | COMMENT |
| MEDIUM | openrlhf/trainer/ray/vllm_engine.py | 248 | # Create a big placement group to ensure that all engines are packed | COMMENT |
| MEDIUM | openrlhf/trainer/ray/utils.py | 5 | # This function is used to get the bundle indices of a placement group | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openrlhf/datasets/__init__.py | 5 | __all__ = ["PromptDataset", "RewardDataset", "SFTDataset"] | CODE |
| LOW | openrlhf/utils/vlm_utils.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | openrlhf/utils/__init__.py | 4 | __all__ = [ | CODE |
| LOW | openrlhf/utils/distributed_sampler.py | 9 | __all__ = ["DistributedSampler"] | CODE |
| LOW | openrlhf/utils/distributed_sampler.py | 138 | def set_epoch(self, epoch: int, consumed_samples=0) -> None: | STRING |
| LOW | openrlhf/utils/deepspeed/__init__.py | 3 | __all__ = [ | CODE |
| LOW | openrlhf/models/__init__.py | 14 | __all__ = [ | CODE |
| LOW | openrlhf/models/utils.py | 10 | def set_z3_leaf_modules(model: nn.Module, detect_hybrid: bool = True) -> None: | CODE |
| LOW | openrlhf/trainer/ppo_utils/__init__.py | 6 | __all__ = [ | CODE |
| LOW | openrlhf/trainer/ray/__init__.py | 4 | __all__ = [ | CODE |
| LOW | examples/python/agent_func_gem_multiturn.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/python/agent_func_openai_server_executor.py | 33 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openrlhf/utils/agent.py | 246 | # Check if response was truncated (hit max_tokens length limit) | COMMENT |
| LOW | openrlhf/trainer/ppo_utils/samples_generator.py | 281 | # Check if response was truncated (hit max_tokens limit, finish_reason == "length") | COMMENT |
| LOW | openrlhf/trainer/ray/launcher.py | 330 | # Check if all kwargs parameters are iterable | COMMENT |
| LOW | examples/python/agent_func.py | 47 | # Check if episode is done | COMMENT |
| LOW | examples/python/agent_func_gem_multiturn.py | 113 | # Check if episode is done | COMMENT |
| LOW | examples/scripts/ckpt_ds_zero_to_universal.sh | 10 | # Set CKPT_PATH to the first argument and shift it out so that "$@" contains the extra arguments. | COMMENT |
| LOW | examples/scripts/ckpt_ds_zero_to_universal.sh | 20 | # Check if the latest tag exists. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openrlhf/utils/deepspeed/deepspeed_utils.py | 7 | CODE | |
| LOW | openrlhf/models/model.py | 21 | CODE | |
| LOW | openrlhf/models/loss.py | 121 | CODE | |
| LOW | openrlhf/models/actor.py | 76 | CODE | |
| LOW | openrlhf/models/actor.py | 221 | CODE | |
| LOW | openrlhf/trainer/ray/ppo_actor.py | 39 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 41 | - [🎯 Design Paradigm](#design-paradigm-agent-based-execution) - Unified agent-based execution pipeline | CODE |
| MEDIUM | openrlhf/trainer/ppo_utils/samples_generator.py | 264 | # Truncate everything to the configured context window. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | examples/scripts/train_prorlv2_math_hybrid_engine.sh | 13 | # ProRL v2 achieves state-of-the-art performance among 1.5B reasoning models | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openrlhf/datasets/sft_dataset.py | 89 | def process_data(self, data): | CODE |
| LOW | openrlhf/datasets/reward_dataset.py | 101 | def process_data(self, data): | CODE |