界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
开发与工程 · SKILL.md

nvidia-nemo-rl-testing

nvidia-nemo-rl-testing

【开发与工程】Testing conventions for NeMo-RL. Covers Ray actor coverage pragmas, nightly test requirements, and recipe naming rules.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: nvidia-nemo-rl-testing description: Testing conventions for NeMo-RL. Covers Ray actor coverage pragmas, nightly test requirements, and recipe naming rules. license: Apache-2.0 AND CC-BY-4.0 metadata: when_to_use: Writing or reviewing tests; adding a nightly test; naming a recipe; 'coverage pragma', 'Ray actor test', 'nightly test requirement', 'how to name recipes', during code review of test files. author: NVIDIA

Testing Conventions

Coverage and Ray Actors

For any source file under nemo_rl/*.py that defines a class or function decorated with @ray.remote, add a coverage pragma because these run in separate Ray processes and are not reliably tracked by coverage.

Place # pragma: no cover on the class or def line:

import ray

@ray.remote  # pragma: no cover
class RolloutActor:
    def run(self) -> None:
        ...

@ray.remote  # pragma: no cover
def remote_eval(batch):
    ...

Nightly Tests for New Model Support

When adding support for a new model, add a corresponding nightly test consisting of:

1. Recipe YAML under examples/configs/recipes/

Place in the appropriate domain subdirectory (examples/configs/recipes/llm/ or examples/configs/recipes/vlm/). Name it following the recipe naming rules below.

2. Driver script under tests/test_suites/

Create a shell script in the matching domain (tests/test_suites/llm/ or tests/test_suites/vlm/). Source any common environment (e.g., common.env) and invoke the training entrypoint with uv run ... --config <path-to-yaml>. Match the driver script filename to the YAML base name with .sh.

3. Add to nightly list

Append the driver script path (relative to tests/test_suites/) to @tests/test_suites/nightly.txt.

Recipe Naming Rules

LLM Pattern

<algo>-<model>-<nodes>n<gpus>g-<strategy-and-params>[-modifiers][-long][.vN].(yaml|sh)
  • algo: sft, dpo, grpo, etc.
  • model: llama3.1-8b-instruct, qwen2.5-7b-instruct, etc.
  • nodes/gpus: 1n8g, 4n8g, 8n8g
  • strategy-and-params: fsdp2tp1, tp4pp2, megatron, dtensor2tp1
  • modifiers (optional): sp, actckpt, fp8, noncolocated, quick
  • -long (optional): long-running recipe
  • .vN (optional): version suffix for convergence-impacting changes

Examples:

sft-llama3.1-8b-1n8g-fsdp2tp1-long.yaml
grpo-llama3.1-8b-instruct-1n8g-megatron-fp8.yaml
grpo-qwen2.5-7b-instruct-4n8g-fsdp2tp4sp.v3.yaml

VLM Pattern

vlm_<algo>-<model>-<nodes>n<gpus>g-<strategy>[-modifiers][.vN].(yaml|sh)

Directory Placement

examples/configs/recipes/
  llm/<name>.yaml
  vlm/<name>.yaml

tests/test_suites/
  llm/<name>.sh
  vlm/<name>.sh
  nightly.txt
我的收藏