Skip to main content

add-reward-function

Guide for adding a custom reward function in slime and wiring it through --custom-rm-path (and optional reward post-processing). Use when user wants new reward logic, remote/service reward integration, or task-specific reward shaping.

Zur Installation springen

Quellinformationen

Repository
THUDM/slime
Letzte Quellaktivität
2. März 2026 um 03:01
Erkannte Sprache von SKILL.md
Englisch
Sterne
8.513
Forks
1.263

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
add-reward-function
description
Guide for adding a custom reward function in slime and wiring it through --custom-rm-path (and optional reward post-processing). Use when user wants new reward logic, remote/service reward integration, or task-specific reward shaping.
# Add Reward Function Implement custom reward logic and connect it to slime rollout/training safely. ## When to Use Use this skill when: - User asks to add new reward computation logic - User asks to integrate an external reward service - User asks to customize reward normalization/post-processing ## Step-by-Step Guide ### Step 1: Choose Reward Mode Pick one of these: - Single-sample mode (`--group-rm` disabled): custom function gets one `Sample` - Group/batch mode (`--group-rm` enabled): custom function gets `list[Sample]` `slime.rollout.rm_hub.__init__.py` calls your function via `--custom-rm-path`. ### Step 2: Create Reward Module Create `slime/rollout/rm_hub/<your_rm>.py`. Supported signatures: ```python async def custom_rm(args, sample): return float_reward_or_reward_dict ``` ```python async def custom_rm(args, samples): return list_of_rewards ``` If using group mode, return one reward per sample in input order. ### Step 3: Keep Reward Type Consistent - Return scalar numeric rewards unless your pipeline explicitly uses keyed rewards. - If using reward dicts, ensure downstream `reward_key` / `eval_reward_key` is configured. - Keep exceptions explicit for invalid metadata instead of silently returning zeros. ### Step 4: Optional Reward Post-Processing To customize normalization/shaping before advantage computation, add: ```python def post_process_rewards(args, samples): # return (raw_rewards, processed_rewards) ... ``` Wire with: ```bash --custom-reward-post-process-path <module>.post_process_rewards ``` This hook is consumed in `slime/ray/rollout.py`. ### Step 5: Wire and Validate Use: ```bash --custom-rm-path slime.rollout.rm_hub.<your_rm>.custom_rm ``` ## Common Mistakes - Returning wrong output shape in group mode - Mixing scalar rewards and reward dicts without `reward_key` config - Doing blocking network calls without async handling - Forgetting to validate reward behavior on truncated/failed samples ## Reference Locations - Reward dispatch: `slime/rollout/rm_hub/__init__.py` - Reward post-process hook: `slime/ray/rollout.py` - Customization docs: `docs/en/get_started/customization.md`
Auf GitHub ansehen