Skip to content

[DRAFT] M6b: rename vllm_model/local_vllm_model (friction #9) — tooling + staged plan - #1672

Draft
wprazuch wants to merge 4 commits into
wprazuch/ng-test-concurrencyfrom
wprazuch/vllm-rename
Draft

[DRAFT] M6b: rename vllm_model/local_vllm_model (friction #9) — tooling + staged plan#1672
wprazuch wants to merge 4 commits into
wprazuch/ng-test-concurrencyfrom
wprazuch/vllm-rename

Conversation

@wprazuch

Copy link
Copy Markdown
Contributor

Draft — this PR is the naming-decision vehicle for M6b. It lands the safe, name-agnostic tooling now; the actual directory rename is staged behind a team naming sign-off (below).

Friction #9 / M6b

Rename the confusingly-named model servers: vllm_modelvllm_endpoint (a remote vLLM endpoint client), local_vllm_modelvllm_server (launches a local vLLM server). ~54 in-tree references (32 + 22).

What's in this PR (safe, tested, name-agnostic)

nemo_gym/model_server_rename.py — a line-based rewriter (the dataset_source_migration.py pattern) that updates the two textual reference forms mechanically:

  1. directory paths in config_paths / dotted overrides: responses_api_models/<old>responses_api_models/<new>;
  2. the server's config key under responses_api_models: (scope-aware — won't touch a same-named key elsewhere).

It deliberately does not touch Python imports or move dirs. 10 unit tests, parameterized by <old> <new> so it works for either rename. Run: python -m nemo_gym.model_server_rename local_vllm_model vllm_server <paths...> [--dry-run].

Why the rename itself is gated (design summary)

A design pass found the rename has 5 reference forms, not 3 — critically Python imports (from responses_api_models.local_vllm_model.app import LocalVLLMModel, used by genrm_model + the server's own app.py/actor/tests) that no config alias fixes. _inherit_from/_copy operate on in-dict keys, not file paths or imports, so there's no single alias mechanism. Backward compat therefore needs a dir move + compat shim dir (old dir kept as a re-export app.py + delegating config + DeprecationWarning) plus the import re-export.

vllm_model is the most-used model server in the repo; a botched rename breaks essentially every eval, and the names are public/released identifiers (v0.3.0 docs, external EFB pins). So the rename should not proceed on individual judgment.

Staged rollout (post naming sign-off)

  1. PoC PR — full mechanism on the lower-risk local_vllm_model → vllm_server only (22 refs, exercises all 5 forms incl. the genrm import): git mv dir, rename inner key + canonical config, add compat shim dir (re-export app.py/actor + delegating config + DeprecationWarning), update Python imports, run this rewriter on the ~8 functional configs, smoke ng_run/ng_test.
  2. Apply to vllm_model → vllm_endpoint once the PoC is proven.
  3. Doc/README sweep via this rewriter (skip frozen fern/versions/v0.2.1,v0.3.0).
  4. Deprecation removal next minor, after external EFB pins migrate.

Asks

  • ✅ Sign off on the names vllm_endpoint / vllm_server (or propose alternatives).
  • Then I'll push the PoC commits onto this branch.

Part of epic #1205 (M6b / friction #9).

…l_vllm_model)

Add nemo_gym.model_server_rename: a line-based rewriter that safely updates the two
textual reference forms a model-server rename touches — config_paths/dotted directory
paths (responses_api_models/<old> -> /<new>) and the server's config key under
responses_api_models: — while deliberately leaving Python imports and the directory
move to the dir-move/compat-shim step. This is the reusable bulk-rewrite tool for the
staged M6b rollout (friction #9), parameterized by old/new so it works regardless of
the final names. The actual dir rename + backward-compat shim is gated on a team
naming decision (see PR description).

Part of epic #1205 (M6b / friction #9).

Signed-off-by: Wojciech Prazuch <wprazuch@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Jun 23, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

wprazuch added 2 commits June 23, 2026 15:45
Rename the local vLLM *server* launcher from `local_vllm_model` to
`vllm_server` (RFC M6b / friction #9). The directory
`responses_api_models/local_vllm_model` is moved to
`responses_api_models/vllm_server`, and textual references are rewritten
via `nemo_gym.model_server_rename`:

- config_paths directory paths (`responses_api_models/<old>` -> `<new>`)
- the `responses_api_models:` config key in functional in-tree configs
  (aalcr, browsecomp, nemotron_3_ultra endpoints, indirect_prompt_injection,
  math_with_judge, xstest) and the moved server's own configs.

Python module-path imports `responses_api_models.local_vllm_model.*` are
updated to `responses_api_models.vllm_server.*` in genrm_model/app.py, the
moved app.py, and the moved tests/test_app.py. Class names
(`LocalVLLMModel*`) and the `local_vllm_model_actor.py` filename are kept to
minimize churn.

A backward-compat shim is left at the old path
(`responses_api_models/local_vllm_model/{__init__,app,local_vllm_model_actor}.py`)
that re-exports from the new location and emits a DeprecationWarning, so
external `import responses_api_models.local_vllm_model.*` keeps working. The
15 model configs are NOT duplicated: external config-PATH pins must migrate
to `responses_api_models/vllm_server/configs/...`.

Signed-off-by: Wojciech Prazuch <wprazuch@nvidia.com>
…erver

Complete the M6b rename (friction #9) for both vLLM model servers, with backward-compat
import shims:

- git mv the two server dirs; rename canonical configs to <new>.yaml; rewrite the inner
  responses_api_models config key, _delete_key directives, config_paths, and ~150 doc/config
  references across the tree (via nemo_gym.model_server_rename, now also _delete_key-aware).
- Update Python module-path imports (responses_api_models.<old> -> .<new>) in the consumers
  of VLLMConverter/VLLMModel (genrm_model, azure_openai_model, local_vllm_model_proxy,
  browsecomp/swe/tau2/harbor agents) and the renamed servers themselves; class names kept.
- Backward-compat shims at the old dir paths (app.py/client.py re-export from the new module +
  DeprecationWarning) so 'import responses_api_models.<old>.*' keeps working.

vllm_model is a remote vLLM *endpoint* client; local_vllm_model launches a local vLLM *server* —
the new names say which. Frozen fern v0.2.1/v0.3.0 docs untouched.

NOTE: external config-PATH pins (e.g. EFB) to responses_api_models/<old>/configs/... are not
covered by the import shim and must migrate; tracked for the deprecation cycle.

Part of epic #1205 (M6b / friction #9).

Signed-off-by: Wojciech Prazuch <wprazuch@nvidia.com>
@wprazuch
wprazuch marked this pull request as ready for review June 23, 2026 14:01
@wprazuch
wprazuch requested a review from a team as a code owner June 23, 2026 14:01
Format-only follow-up: the line-based reference rewrites pushed two files past ruff-format's
wrapping; reformat them to satisfy the lint check. No behavior change.

Signed-off-by: Wojciech Prazuch <wprazuch@nvidia.com>
@wprazuch
wprazuch marked this pull request as draft June 24, 2026 07:43
@ritaneves ritaneves linked an issue Jun 25, 2026 that may be closed by this pull request
1 task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 - Configuration Friction

1 participant