Skip to content

chore(customizer): restore DPO and update DPO config - #943

Merged
anubhutivyas merged 2 commits into
mainfrom
anubhutiv/restore-dpo
Aug 3, 2026
Merged

chore(customizer): restore DPO and update DPO config#943
anubhutivyas merged 2 commits into
mainfrom
anubhutiv/restore-dpo

Conversation

@anubhutivyas

@anubhutivyas anubhutivyas commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Testing:

Verified on new image that training works

========================= Step 2/2 =========================
▶ Taking a training step...
▶ Starting validation at step 2 for `default` set..
/opt/nemo-rl/nemo_rl/data/llm_message_utils.py:573: UserWarning: add_bos_token is True but the tokenizer does not have a BOS token. Skipping BOS token addition.
  warnings.warn(

📊 Validation Results for `default` set:
    • Validation loss: 0.6645
    • Validation sft_loss: 0.0000
    • Validation preference_loss: 0.6645
    • Validation accuracy: 1.0000
    • Validation rewards_chosen_mean: 0.7755
    • Validation rewards_rejected_mean: -0.3986
    • Validation num_valid_samples: 16.0000
    • Validation global_valid_seqs: 32.0000
    • Validation global_valid_toks: 496.0000

  ⏱️  Validation Timing for `default` set:
    • Total validation time: 3.17s
Saving checkpoint for step 2...
(DTensorPolicyWorker[rank=0] pid=16215) Saving tokenizer (or processor) to /var/run/scratch/job/training/checkpoints/tmp_step_2/policy/tokenizer

📊 Training Results:
  • loss: 0.6931
  • sft_loss: 0.0000
  • preference_loss: 0.6931
  • accuracy: 0.0000
  • rewards_chosen_mean: 0.0000
  • rewards_rejected_mean: 0.0000
  • num_valid_samples: 32.0000
  • global_valid_seqs: 64.0000
  • global_valid_toks: 992.0000
  • Training FLOPS: 1.11 TFLOPS (1.11 TFLOPS per rank)

⏱️  Timing:
  • Total step time: 19.01s
  • checkpointing: 10.14s (53.4%)
  • policy_training: 5.60s (29.4%)
  • policy_training/submit_training_futures: 0.00s (0.0%)
  • policy_training/sharding_data: 0.00s (0.0%)
Max number of steps has been reached, stopping training early
2026-07-30 22:46:12,315 - nmp.rl.tasks.training.backends.nemo_rl.ray_bootstrap - INFO - Driver completed with exit code: 0
2026-07-30 22:46:12,315 - nmp.rl.tasks.training.backends.nemo_rl.ray_bootstrap - INFO - [INFO] Cleaning up Ray cluster from RANK 0
[ray_bootstrap] Driver completed with exit code: 0
2026-07-30 22:46:12,315 - nmp.rl.tasks.training.backends.nemo_rl.ray_bootstrap - INFO - Creating termination signal: /tmp/logs/ENDED.platform-job-attempt-DmLEr1SgKTZTofXP7ZZoTD
2026-07-30 22:46:12,316 - nmp.rl.tasks.training.backends.nemo_rl.ray_bootstrap - INFO - Stopping Ray with 20s grace period
2026-07-30 22:46:32,343 - nmp.rl.tasks.training.backends.nemo_rl.ray_bootstrap - WARNING - ray stop did not complete within 20s
2026-07-30 22:46:42,316 - nmp.rl.tasks.training.backends.nemo_rl.ray_bootstrap - WARNING - [WARN] Cleanup timed out. Forcing termination.
2026-07-30 22:46:42,317 - nmp.rl.tasks.training.backends.nemo_rl.backend - INFO - Training completed successfully
2026-07-30 22:46:42,343 - nmp.rl.tasks.training.backends.nemo_rl.ray_bootstrap - INFO - [INFO] Cleanup complete.
2026-07-30 22:46:42,563 - httpx - INFO - HTTP Request: PUT http://nemo-platform-api:8080/apis/jobs/v2/workspaces/default/jobs/rl-6692d1e90f8b/steps/dpo-training/tasks/task-3860dc84-0a20-48e4-9c66-7b03947181ae "HTTP/1.1 200 OK"
2026-07-30 22:46:42,564 - nmp.rl.tasks.training.backends.nemo_rl.backend - INFO - Processing created checkpoint
Using dcp_ckpt_path of Dtensor V1: /var/run/scratch/job/training/checkpoints/step_2/policy/weights
Loading weights: 100%|██████████| 311/311 [00:00<00:00, 2981.40it/s]
Writing model shards: 100%|██████████| 1/1 [00:00<00:00,  2.27it/s]
2026-07-30 22:46:52,707 - nmp.rl.tasks.training.backends.nemo_rl.checkpoints - INFO - Saved HF checkpoint successfully
2026-07-30 22:46:52,768 - nmp.rl.tasks.training.chat_templates - INFO - Applied chat template to output checkpoint
2026-07-30 22:46:52,877 - httpx - INFO - HTTP Request: PUT http://nemo-platform-api:8080/apis/jobs/v2/workspaces/default/jobs/rl-6692d1e90f8b/steps/dpo-training/tasks/task-3860dc84-0a20-48e4-9c66-7b03947181ae "HTTP/1.1 200 OK"
2026-07-30 22:46:52,877 - nmp.rl.tasks.training.runner - INFO - Result written to: /var/run/scratch/job/training/rl_training_result.json
[launcher] 2026/07/30 22:46:54 Process completed successfully.

Summary by CodeRabbit

  • New Features

    • Added DPO preference optimization through the NeMo-RL backend.
    • Added support for submitting, monitoring, canceling, and retrieving DPO jobs on Kubernetes/Ray environments.
    • Added API support for DPO job lifecycle, status, logs, results, and downloads.
  • Documentation

    • Added a complete DPO customization tutorial covering preparation, training, deployment, and evaluation.
    • Expanded guidance for datasets, runtime requirements, integrations, reporting, and troubleshooting.
  • Tests

    • Added coverage for explicit and inferred DPO/RL job-routing scenarios.

@github-actions github-actions Bot added the chore label Jul 28, 2026
@anubhutivyas
anubhutivyas force-pushed the aalgo-414-rl-image/anubhutiv branch 2 times, most recently from 97edbf0 to 51db768 Compare July 29, 2026 21:58
@anubhutivyas
anubhutivyas marked this pull request as ready for review July 30, 2026 06:34
@anubhutivyas
anubhutivyas requested review from a team as code owners July 30, 2026 06:34
@anubhutivyas
anubhutivyas force-pushed the aalgo-414-rl-image/anubhutiv branch from 08ae0fe to be54770 Compare July 30, 2026 19:09
Base automatically changed from aalgo-414-rl-image/anubhutiv to main July 30, 2026 19:40
@anubhutivyas
anubhutivyas force-pushed the anubhutiv/restore-dpo branch from bba9a64 to fe37f44 Compare July 30, 2026 22:47
@github-actions

Copy link
Copy Markdown
Contributor

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: d7353370-927d-4d1b-a7fa-99453af92030

📥 Commits

Reviewing files that changed from the base of the PR and between 19e9826 and 9f4da82.

📒 Files selected for processing (2)
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/dataset-formats.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/dataset-formats.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md

📝 Walkthrough

Walkthrough

Adds the NeMo-RL DPO backend, RL customization API contracts, Kubernetes/Ray routing guidance, typed driver configuration, dependency updates, and an end-to-end HelpSteer3 tutorial with deployment and inference evaluation.

Changes

NeMo-RL DPO integration

Layer / File(s) Summary
RL runtime activation
plugins/nemo-rl/pyproject.toml, services/rl/..., pyproject.toml, pytest.ini, third_party/requirements-main.txt
Activates RL entry points, updates dependency configuration, and validates DPO configuration through MasterConfig.
RL customization API
plugins/nemo-customizer/openapi/openapi.yaml
Adds RL job endpoints and DPO schemas. It retains separate Unsloth endpoints and expands shared job status and result schemas.
Customizer routing and guidance
plugins/nemo-customizer/README.md, plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/*
Routes DPO requests to the Kubernetes/Ray rl backend and documents datasets, runtime requirements, parameters, integrations, reporting, troubleshooting, and workflow tests.
DPO tutorial publication
docs/customizer/tutorials/*, docs/fern/components/NotebookViewer.tsx, docs/fern/components/notebooks/*, docs/fern/scripts/validate-notebook-viewer.mjs, docs/troubleshooting/customizer.mdx
Adds the HelpSteer3 DPO notebook, generated NotebookViewer artifacts, page registration, validation mapping, and Ray node-storage guidance.

Sequence Diagram(s)

sequenceDiagram
  participant Notebook
  participant Platform
  participant RLBackend
  participant RayWorkers
  participant DeploymentGateway
  Notebook->>Platform: Upload preference files and register base model
  Notebook->>RLBackend: Submit RlJobInput
  RLBackend->>RayWorkers: Run DPO training
  Notebook->>RLBackend: Poll status and metrics
  Notebook->>Platform: Create output-model deployment
  Platform->>DeploymentGateway: Start deployment and gateway
  Notebook->>DeploymentGateway: Send chat-completion request
Loading

Possibly related PRs

Suggested reviewers: soluwalana, mckornfield

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the primary changes: restoring DPO support and updating its configuration.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch anubhutiv/restore-dpo

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (1)
plugins/nemo-customizer/README.md (1)

3-3: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

Add the required documentation framing to these Markdown pages.

Each page starts directly with operational/reference content and lacks top-level prerequisites and a final Next Steps section with cross-links.

  • plugins/nemo-customizer/README.md Line 3: add Prerequisites before the overview and Next Steps at the end.
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/dataset-formats.md Lines 3-3: add both sections.
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hf-conversion.md Line 58: add both sections.
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters-rl.md Line 3: add both sections.
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters.md Line 3: add both sections.
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/integrations-setup.md Line 3: add both sections.

As per coding guidelines: Markdown pages must list prerequisites at the top and include a Next Steps section at the end.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/nemo-customizer/README.md` at line 3, Add a top-level Prerequisites
section before the existing content and a final Next Steps section with relevant
cross-links in each affected page: plugins/nemo-customizer/README.md (line 3),
plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/dataset-formats.md
(line 3), hf-conversion.md (line 58), hyperparameters-rl.md (line 3),
hyperparameters.md (line 3), and integrations-setup.md (line 3). Preserve the
existing operational and reference content while ensuring every page follows the
required Markdown structure.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/dataset-formats.md`:
- Line 72: Add the required blank line immediately before the “NeMo-RL (DPO) —
preference data” heading in dataset-formats.md so the heading is separated from
the preceding content and satisfies markdownlint MD022.

In `@plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md`:
- Line 144: Make the max_steps/epochs guidance consistent: in
plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md
lines 144-144 and 170-170, replace the blanket prohibition with wording that
permits the combination only for explicit bounded smoke runs and requires
omitting max_steps in production; update
plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters-rl.md
lines 45-45 to preserve the same semantics.

In `@services/rl/src/nmp/rl/tasks/training/backends/nemo_rl/dpo_driver.py`:
- Line 132: Update the hyperparameter logging call in the DPO driver to pass an
explicit allowlisted or redacted dictionary instead of config.model_dump().
Exclude W&B/MLflow tokens, tracking URIs, and other sensitive resolved
configuration fields while retaining only safe training hyperparameters.

---

Nitpick comments:
In `@plugins/nemo-customizer/README.md`:
- Line 3: Add a top-level Prerequisites section before the existing content and
a final Next Steps section with relevant cross-links in each affected page:
plugins/nemo-customizer/README.md (line 3),
plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/dataset-formats.md
(line 3), hf-conversion.md (line 58), hyperparameters-rl.md (line 3),
hyperparameters.md (line 3), and integrations-setup.md (line 3). Preserve the
existing operational and reference content while ensuring every page follows the
required Markdown structure.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: cac4f9bf-b2df-4f15-9334-f64eef98674c

📥 Commits

Reviewing files that changed from the base of the PR and between 2d25ea0 and fe37f44.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (23)
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • docs/customizer/tutorials/dpo-customization-job.mdx
  • docs/fern/components/NotebookViewer.tsx
  • docs/fern/components/notebooks/dpo-customization-job.json
  • docs/fern/components/notebooks/dpo-customization-job.ts
  • docs/fern/scripts/validate-notebook-viewer.mjs
  • docs/troubleshooting/customizer.mdx
  • plugins/nemo-customizer/README.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/dataset-formats.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hf-conversion.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters-rl.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/integrations-setup.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/reporting.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/rl-kubernetes-runtime.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/troubleshooting.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/tests.json
  • plugins/nemo-rl/pyproject.toml
  • pyproject.toml
  • pytest.ini
  • services/rl/src/nmp/rl/tasks/training/backends/nemo_rl/dpo_driver.py
  • third_party/requirements-main.txt
💤 Files with no reviewable changes (1)
  • pytest.ini

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor
Suite Lines Covered Line Rate Branch Rate
Unit Tests 30234/38242 79.1% 63.7%
Integration Tests 17877/36911 48.4% 20.9%

@albcui albcui left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

make sure to also run make refresh-openapi to regenerate the combined Customizer OpenAPI spec.

Comment thread third_party/requirements-main.txt
@anubhutivyas
anubhutivyas force-pushed the anubhutiv/restore-dpo branch from fe37f44 to aaeab12 Compare August 3, 2026 17:45
Signed-off-by: anubhutiv <anubhutiv@nvidia.com>
@anubhutivyas
anubhutivyas force-pushed the anubhutiv/restore-dpo branch from aaeab12 to 19e9826 Compare August 3, 2026 17:50

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md`:
- Line 57: Update the DPO input documentation to distinguish the canonical
{prompt, chosen, rejected} triple as one supported format rather than the only
format. In
plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md at
lines 57-57, 164-166, 201-204, and 334-337, state that RL accepts all schemas
documented in the reference and remove triple-only workflow language. In
plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/dataset-formats.md
at lines 74-76, identify BinaryPreference as one supported option and link the
shared contract; also allow the documented raw HelpSteer3 and Tulu3 preference
formats.
- Line 168: Update the job-tracking instructions in the Nemo customizer skill to
require capturing the unique identifier returned by rl submit or using a unique
server-side correlation; remove the guidance to select the newest rl-* job from
nemo jobs list. If submission provides no unique identifier, instruct the
workflow to stop rather than polling a potentially unrelated job.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 6a659291-60fc-434e-aefd-5e34f838af25

📥 Commits

Reviewing files that changed from the base of the PR and between fe37f44 and aaeab12.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (23)
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • docs/customizer/tutorials/dpo-customization-job.mdx
  • docs/fern/components/NotebookViewer.tsx
  • docs/fern/components/notebooks/dpo-customization-job.json
  • docs/fern/components/notebooks/dpo-customization-job.ts
  • docs/fern/scripts/validate-notebook-viewer.mjs
  • docs/troubleshooting/customizer.mdx
  • plugins/nemo-customizer/README.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/dataset-formats.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hf-conversion.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters-rl.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/integrations-setup.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/reporting.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/rl-kubernetes-runtime.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/troubleshooting.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/tests.json
  • plugins/nemo-rl/pyproject.toml
  • pyproject.toml
  • pytest.ini
  • services/rl/src/nmp/rl/tasks/training/backends/nemo_rl/dpo_driver.py
  • third_party/requirements-main.txt
💤 Files with no reviewable changes (1)
  • pytest.ini
🚧 Files skipped from review as they are similar to previous changes (19)
  • docs/fern/scripts/validate-notebook-viewer.mjs
  • docs/customizer/tutorials/dpo-customization-job.mdx
  • docs/troubleshooting/customizer.mdx
  • docs/fern/components/NotebookViewer.tsx
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters-rl.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hf-conversion.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/integrations-setup.md
  • plugins/nemo-customizer/README.md
  • pyproject.toml
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/troubleshooting.md
  • plugins/nemo-rl/pyproject.toml
  • docs/fern/components/notebooks/dpo-customization-job.json
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters.md
  • docs/fern/components/notebooks/dpo-customization-job.ts
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/tests.json
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/rl-kubernetes-runtime.md
  • services/rl/src/nmp/rl/tasks/training/backends/nemo_rl/dpo_driver.py
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/reporting.md

Comment thread plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (2)
plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md (2)

168-168: ⚠️ Potential issue | 🟠 Major

Capture the submitted RL job ID.

Selecting the newest rl-* job from nemo jobs list does not correlate the listing with this submission. Concurrent jobs or stale listings can make the workflow poll another job and report the wrong result. Use the ID returned by rl submit or a server-side correlation. Stop if no unique ID is available.

Also applies to: 206-207, 368-374, 451-451

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md`
at line 168, Update the RL submission workflow and its references around rl
submit and poll_customization_job.sh to capture the job ID returned by rl
submit, rather than selecting the newest rl-* entry from nemo jobs list. Require
a unique submitted job ID, stop with an error when it is unavailable, and use
that captured ID for polling and result reporting.

51-57: ⚠️ Potential issue | 🟠 Major

Use the supported preference schemas in the RL instructions.

dataset-formats.md supports BinaryPreference, raw HelpSteer3, and Tulu3. These lines still define RL input as {prompt, chosen, rejected}. This can make the skill reject valid raw datasets. Describe the triple as one supported format and link the reference at each workflow entry.

Also applies to: 115-115, 164-166, 203-204, 336-337

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md`
around lines 51 - 57, Update the RL dataset guidance in SKILL.md so `{prompt,
chosen, rejected}` is presented as one supported preference format rather than
the sole schema. At each RL workflow entry, including the overview and
referenced sections around lines 115, 164–166, 203–204, and 336–337, link to
dataset-formats.md and mention BinaryPreference, raw HelpSteer3, and Tulu3 as
supported inputs.
🧹 Nitpick comments (1)
plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md (1)

332-377: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

Keep the executable skill concise.

Move the full RL command walkthrough, JSON examples, defaults, and worked example to a linked reference. Keep routing, prerequisites, and a short checklist in SKILL.md. This reduces prompt size and prevents duplicated instructions from drifting.

Based on learnings, SKILL.md is an agent skill execution definition, not a rendered documentation page; detailed reference material belongs in linked files.

Also applies to: 409-451

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md`
around lines 332 - 377, Reduce the RL sections in SKILL.md, including the DPO
fast path and the content around the additionally referenced lines, to routing,
prerequisites, and a concise execution checklist. Move the full command
walkthroughs, JSON payloads, defaults, polling details, and worked examples into
an appropriate linked reference file, then link to it from SKILL.md while
preserving links to existing hyperparameter and runtime references.

Source: Learnings

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/dataset-formats.md`:
- Line 3: Add a short Prerequisites section before the dataset format details
and a Next Steps section after the notes in the dataset-formats documentation.
Include links to the related conversion, hyperparameter, and evaluation
references, preserving the existing backend-specific format guidance.

In `@plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md`:
- Around line 201-204: The common upload checklist in SKILL.md must not require
train.jsonl for RL workflows. Update the checklist to make the filename
backend-specific or explicitly exempt the RL branch, ensuring RL uploads use
training.jsonl and validation.jsonl in the single fileset while preserving the
existing requirements for other workflows.

---

Duplicate comments:
In `@plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md`:
- Line 168: Update the RL submission workflow and its references around rl
submit and poll_customization_job.sh to capture the job ID returned by rl
submit, rather than selecting the newest rl-* entry from nemo jobs list. Require
a unique submitted job ID, stop with an error when it is unavailable, and use
that captured ID for polling and result reporting.
- Around line 51-57: Update the RL dataset guidance in SKILL.md so `{prompt,
chosen, rejected}` is presented as one supported preference format rather than
the sole schema. At each RL workflow entry, including the overview and
referenced sections around lines 115, 164–166, 203–204, and 336–337, link to
dataset-formats.md and mention BinaryPreference, raw HelpSteer3, and Tulu3 as
supported inputs.

---

Nitpick comments:
In `@plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md`:
- Around line 332-377: Reduce the RL sections in SKILL.md, including the DPO
fast path and the content around the additionally referenced lines, to routing,
prerequisites, and a concise execution checklist. Move the full command
walkthroughs, JSON payloads, defaults, polling details, and worked examples into
an appropriate linked reference file, then link to it from SKILL.md while
preserving links to existing hyperparameter and runtime references.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 660b1550-e94b-4a75-8b0f-2dad147de67e

📥 Commits

Reviewing files that changed from the base of the PR and between aaeab12 and 19e9826.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (24)
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • docs/customizer/tutorials/dpo-customization-job.mdx
  • docs/fern/components/NotebookViewer.tsx
  • docs/fern/components/notebooks/dpo-customization-job.json
  • docs/fern/components/notebooks/dpo-customization-job.ts
  • docs/fern/scripts/validate-notebook-viewer.mjs
  • docs/troubleshooting/customizer.mdx
  • plugins/nemo-customizer/README.md
  • plugins/nemo-customizer/openapi/openapi.yaml
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/SKILL.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/dataset-formats.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hf-conversion.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters-rl.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/integrations-setup.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/reporting.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/rl-kubernetes-runtime.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/troubleshooting.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/tests.json
  • plugins/nemo-rl/pyproject.toml
  • pyproject.toml
  • pytest.ini
  • services/rl/src/nmp/rl/tasks/training/backends/nemo_rl/dpo_driver.py
  • third_party/requirements-main.txt
💤 Files with no reviewable changes (1)
  • pytest.ini
🚧 Files skipped from review as they are similar to previous changes (20)
  • pyproject.toml
  • plugins/nemo-customizer/README.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/tests.json
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/rl-kubernetes-runtime.md
  • docs/fern/components/NotebookViewer.tsx
  • docs/troubleshooting/customizer.mdx
  • services/rl/src/nmp/rl/tasks/training/backends/nemo_rl/dpo_driver.py
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/troubleshooting.md
  • docs/fern/scripts/validate-notebook-viewer.mjs
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters.md
  • plugins/nemo-rl/pyproject.toml
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/integrations-setup.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hf-conversion.md
  • docs/customizer/tutorials/dpo-customization-job.mdx
  • third_party/requirements-main.txt
  • docs/fern/components/notebooks/dpo-customization-job.ts
  • docs/fern/components/notebooks/dpo-customization-job.json
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/reporting.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters-rl.md

Signed-off-by: anubhutiv <anubhutiv@nvidia.com>
@anubhutivyas
anubhutivyas enabled auto-merge August 3, 2026 19:17
@anubhutivyas
anubhutivyas added this pull request to the merge queue Aug 3, 2026
Merged via the queue into main with commit e1c2c7b Aug 3, 2026
56 checks passed
@anubhutivyas
anubhutivyas deleted the anubhutiv/restore-dpo branch August 3, 2026 19:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants