Skip to content

fix(customizer): disable RL/DPO backend pending nmp-rl-training CVE r…#869

Merged
albcui merged 4 commits into
mainfrom
disable-rl-customizer-backend/albcui
Jul 23, 2026
Merged

fix(customizer): disable RL/DPO backend pending nmp-rl-training CVE r…#869
albcui merged 4 commits into
mainfrom
disable-rl-customizer-backend/albcui

Conversation

@albcui

@albcui albcui commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

…emediation

The nmp-rl-training image currently has unresolved Critical/High CVEs. Until they are fixed and re-QA'd, drop the RL (DPO) customization backend as a reversible feature flag so users cannot trigger RL jobs or accidentally pull the vulnerable image. Commenting the nemo-rl plugin's contributor + jobs entry points removes RL from the customizer router, CLI, and plugin SDK; with no route or job registration, no RL job can be launched, and it is not re-enablable via a runtime env var.

  • plugins/nemo-rl/pyproject.toml: comment both entry-point blocks (the flag)
  • skills: scrub RL/DPO from SKILL.md + shared references; delete the two RL-only reference files; drop RL cases from tests.json
  • docs: remove the DPO customization tutorial and its notebook-viewer registrations
  • openapi: regenerate the customizer plugin spec (RL schemas/paths removed)

Plugin code, services/rl, and the Dockerfiles are intentionally left intact so the image can still be built to test the CVE fix and re-enabling is a one-step revert (uncomment + uv sync + make refresh-openapi).

Summary by CodeRabbit

  • Documentation
    • Removed the DPO/NeMo-RL end-to-end customization tutorial and multiple RL-specific reference pages; refreshed NeMo Customizer docs, dataset formats, conversion notes, reporting, and troubleshooting to focus on SFT + LoRA (automodel + Unsloth).
  • API Changes
    • Replaced customization v2 workspace “RL jobs” endpoints with “Unsloth jobs” endpoints, including updated operation naming and job/result/log/status schemas.
  • Behavior Changes
    • Notebook viewer/validation updated to align with distillation customization; temporarily disabled NeMo-RL integration so NeMo Customizer is SFT + LoRA only.
  • Tests
    • Removed RL/DPO-related NeMo Customizer submit tests.
  • Chores
    • Refreshed exported dependency requirements/lock hashes.

@github-actions github-actions Bot added the fix label Jul 23, 2026
@albcui
albcui marked this pull request as ready for review July 23, 2026 18:28
@albcui
albcui requested review from a team as code owners July 23, 2026 18:28
@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Changes

Customization scope reduction

Layer / File(s) Summary
Unsloth API contract
plugins/nemo-customizer/openapi/openapi.yaml
RL job routes and schemas are replaced with Unsloth routes, Automodel schemas, and revised platform job contracts.
RL runtime registration
plugins/nemo-rl/pyproject.toml, pyproject.toml, third_party/requirements-main.txt
RL entry points and default plugin inclusion are disabled, and exported dependencies are updated.
Customizer skill scope
plugins/nemo-customizer/README.md, plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/*
Skill guidance, references, and tests now cover Automodel and Unsloth SFT/LoRA workflows without RL/DPO content.
Tutorial and notebook removal
docs/customizer/tutorials/*, docs/fern/components/NotebookViewer.tsx, docs/fern/scripts/validate-notebook-viewer.mjs, docs/troubleshooting/customizer.mdx
The DPO tutorial notebook and page are removed, notebook mappings are updated, and storage troubleshooting points to model requirements.

Possibly related PRs

Suggested reviewers: anubhutivyas

🚥 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 matches the PR’s main change: disabling the RL/DPO backend pending CVE remediation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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 disable-rl-customizer-backend/albcui

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: 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`:
- Around line 48-49: Insert a blank line between the backend comparison table
and the following “nemo-customizer” paragraph in SKILL.md, ensuring the
paragraph is rendered as normal Markdown text rather than as another table row.
- Around line 354-356: Split the merged table entries into separate rows in the
documentation table: keep the troubleshooting/job fixture row ending after the
minimal automodel and unsloth fixture entries, then add a distinct Live JSON
schema row; likewise separate the minimal unsloth fixture row from the
integrations fixture row. Preserve the existing values and table column
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: bf7a103c-ca9d-482d-a0a4-ada42fa9ba2f

📥 Commits

Reviewing files that changed from the base of the PR and between d206ae9 and 2c643e9.

📒 Files selected for processing (19)
  • 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/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
💤 Files with no reviewable changes (8)
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/rl-kubernetes-runtime.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters-rl.md
  • docs/customizer/tutorials/dpo-customization-job.mdx
  • docs/troubleshooting/customizer.mdx
  • docs/fern/components/NotebookViewer.tsx
  • docs/fern/scripts/validate-notebook-viewer.mjs
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/tests.json

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

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor
Suite Lines Covered Line Rate Branch Rate
Unit Tests 27150/34858 77.9% 62.2%
Integration Tests 15967/33570 47.6% 20.0%

@albcui
albcui force-pushed the disable-rl-customizer-backend/albcui branch from 2c643e9 to df87685 Compare July 23, 2026 19:04

@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: 1

🤖 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/openapi/openapi.yaml`:
- Around line 395-400: Preserve the existing
`/apis/customization/v2/workspaces/{workspace}/rl/jobs*` routes as deprecated
aliases while adding the new `/unsloth/jobs` endpoint and its related routes.
Mark the legacy operations as deprecated in the OpenAPI contract and retain
equivalent behavior and schemas during the transition.
🪄 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: 392b5c30-5815-4f5a-92b5-6ea427ca882f

📥 Commits

Reviewing files that changed from the base of the PR and between 2c643e9 and df87685.

📒 Files selected for processing (20)
  • 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
💤 Files with no reviewable changes (8)
  • docs/troubleshooting/customizer.mdx
  • docs/customizer/tutorials/dpo-customization-job.mdx
  • docs/fern/scripts/validate-notebook-viewer.mjs
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters-rl.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/customizer/tutorials/dpo-customization-job.ipynb
  • docs/fern/components/NotebookViewer.tsx
🚧 Files skipped from review as they are similar to previous changes (6)
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hf-conversion.md
  • plugins/nemo-rl/pyproject.toml
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/troubleshooting.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/dataset-formats.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/reporting.md

Comment thread plugins/nemo-customizer/openapi/openapi.yaml

@anubhutivyas anubhutivyas 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.

I think we still publish the rl training image, do we also need to remove it from .github/workflows/release.yaml and docker-bake.hcl?

Comment thread plugins/nemo-rl/pyproject.toml
@albcui

albcui commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

I think we still publish the rl training image, do we also need to remove it from .github/workflows/release.yaml and docker-bake.hcl?

I think it's okay to leave them in. The entrypoint is removed, so there's no way to leverage the images.

@albcui
albcui requested a review from anubhutivyas July 23, 2026 20:18
@albcui
albcui enabled auto-merge July 23, 2026 20:18
albcui added 3 commits July 23, 2026 16:24
…emediation

The nmp-rl-training image currently has unresolved Critical/High CVEs. Until they are fixed and re-QA'd, drop the RL (DPO) customization backend as a reversible feature flag so users cannot trigger RL jobs or accidentally pull the vulnerable image. Commenting the nemo-rl plugin's contributor + jobs entry points removes RL from the customizer router, CLI, and plugin SDK; with no route or job registration, no RL job can be launched, and it is not re-enablable via a runtime env var.

- plugins/nemo-rl/pyproject.toml: comment both entry-point blocks (the flag)
- skills: scrub RL/DPO from SKILL.md + shared references; delete the two RL-only reference files; drop RL cases from tests.json
- docs: remove the DPO customization tutorial and its notebook-viewer registrations
- openapi: regenerate the customizer plugin spec (RL schemas/paths removed)

Plugin code, services/rl, and the Dockerfiles are intentionally left intact so the image can still be built to test the CVE fix and re-enabling is a one-step revert (uncomment + uv sync + make refresh-openapi).

Signed-off-by: Albert Cui <[email protected]>
Signed-off-by: Albert Cui <[email protected]>
@albcui
albcui force-pushed the disable-rl-customizer-backend/albcui branch from e658cab to dad40c6 Compare July 23, 2026 20:24

@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: 1

🤖 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`:
- Around line 105-111: Update the execution-profile selection instructions
around the provider checks to also validate the selected profile’s backend. Only
choose automodel or unsloth when the profile uses the Docker backend; if a GPU
profile is backed by kubernetes_job, volcano_job, or any non-docker backend,
stop and report that GPU customization requires a Docker-backed profile.
🪄 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: b286dd9b-fd30-41c9-8e48-5fe514857467

📥 Commits

Reviewing files that changed from the base of the PR and between c2db1d8 and dad40c6.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (22)
  • 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
  • third_party/requirements-main.txt
💤 Files with no reviewable changes (9)
  • docs/customizer/tutorials/dpo-customization-job.mdx
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/rl-kubernetes-runtime.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters-rl.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/tests.json
  • docs/troubleshooting/customizer.mdx
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • docs/fern/components/NotebookViewer.tsx
  • pyproject.toml
  • docs/fern/scripts/validate-notebook-viewer.mjs
🚧 Files skipped from review as they are similar to previous changes (9)
  • plugins/nemo-customizer/README.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/troubleshooting.md
  • 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
  • plugins/nemo-rl/pyproject.toml
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/dataset-formats.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/reporting.md
  • plugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/hyperparameters.md
  • plugins/nemo-customizer/openapi/openapi.yaml

@albcui
albcui disabled auto-merge July 23, 2026 20:44
Signed-off-by: Albert Cui <[email protected]>
@albcui
albcui force-pushed the disable-rl-customizer-backend/albcui branch from 2204e69 to 705c851 Compare July 23, 2026 21:24
@albcui
albcui enabled auto-merge July 23, 2026 21:33
@albcui
albcui added this pull request to the merge queue Jul 23, 2026
Merged via the queue into main with commit 774dac1 Jul 23, 2026
60 checks passed
@albcui
albcui deleted the disable-rl-customizer-backend/albcui branch July 23, 2026 21:50
AnuradhaKaruppiah pushed a commit to AnuradhaKaruppiah/nemo-platform that referenced this pull request Jul 24, 2026
NVIDIA-NeMo#869)

* fix(customizer): disable RL/DPO backend pending nmp-rl-training CVE remediation

The nmp-rl-training image currently has unresolved Critical/High CVEs. Until they are fixed and re-QA'd, drop the RL (DPO) customization backend as a reversible feature flag so users cannot trigger RL jobs or accidentally pull the vulnerable image. Commenting the nemo-rl plugin's contributor + jobs entry points removes RL from the customizer router, CLI, and plugin SDK; with no route or job registration, no RL job can be launched, and it is not re-enablable via a runtime env var.

- plugins/nemo-rl/pyproject.toml: comment both entry-point blocks (the flag)
- skills: scrub RL/DPO from SKILL.md + shared references; delete the two RL-only reference files; drop RL cases from tests.json
- docs: remove the DPO customization tutorial and its notebook-viewer registrations
- openapi: regenerate the customizer plugin spec (RL schemas/paths removed)

Plugin code, services/rl, and the Dockerfiles are intentionally left intact so the image can still be built to test the CVE fix and re-enabling is a one-step revert (uncomment + uv sync + make refresh-openapi).

Signed-off-by: Albert Cui <[email protected]>

* address comments and uv sync

Signed-off-by: Albert Cui <[email protected]>

* fix lint

Signed-off-by: Albert Cui <[email protected]>

* fix lint

Signed-off-by: Albert Cui <[email protected]>

---------

Signed-off-by: Albert Cui <[email protected]>
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