Repository navigation
Description
Summary
Consider renaming the policy_-prefixed convention used for model server configuration — the policy_model server ID and the ${policy_base_url} / ${policy_api_key} / ${policy_model_name} env.yaml interpolation variables — to something role-neutral that reads well for evaluation use cases, not just RL training.
Motivation
policy is RL/training jargon ("the policy model" = the model being trained). Two problems:
- It's opaque to non-training users. Only people with an RL background recognize the term. NeMo Gym is heavily used for plain evaluation, where this vocabulary is unfamiliar.
- It's semantically wrong for eval. When you're using a model purely for evaluation (e.g. the new
inference_providerserver, which is explicitly eval-oriented), calling it the "policy model" doesn't make sense — there's no policy being optimized.
This surfaced from review feedback on #1286 / the inference providers docs: the env.yaml keys carry a policy_ prefix (policy_api_key, policy_model_name, policy_base_url) while the server's own config fields (api_key, model, base_url) do not, which is easy to misread. The root cause is that policy_* is a training-flavored name appearing on eval-focused surfaces.
Where it's used
This is a repo-wide convention, not specific to any one server. It appears in 250+ files, including:
- Every model server config:
responses_api_models/{inference_provider,vllm_model,openai_model,azure_openai_model,...}/configs/*.yamluse${policy_base_url}/${policy_api_key}/${policy_model_name}and the top-levelpolicy_modelserver ID. - Hundreds of resources-server and agent configs that reference the
policy_modelserver ID and/or thepolicy_*env vars. - Core library:
nemo_gym/cli.py,nemo_gym/global_config.py. - Agent + resources-server code and tests that hardcode the
policy_modelserver name. - Docs across all versions (
fern/versions/{latest,v0.3.0,v0.2.1}/...) — quickstart, configuration reference, troubleshooting, model-server pages, many benchmark READMEs.
Considerations / open questions
- Breaking change. Existing users'
env.yamlfiles and any external configs usepolicy_*. A rename breaks them unless we provide aliases. - Agent configs hardcode the
policy_modelserver ID by default (agents reference this name) — renaming the server ID is the riskiest part. - Possible approaches:
- Pick a new role-neutral name (e.g.
model,target_model,eval_model,inference_model,main_model, ...) and migrate everything. - Introduce the new names as the documented convention while keeping
policy_*as backward-compatible aliases for a deprecation period. - Leave the internal convention as-is but improve docs so the
policy_term is explained once (centrally) and not surprising on eval-focused pages.
- Pick a new role-neutral name (e.g.
- Needs a single naming decision + a mostly-mechanical migration (grep/replace) with careful handling of the
policy_modelserver ID and thepolicy_model_namevspolicy_modeldistinction (the_namesuffix exists becausepolicy_modelis already the instance ID).
Scope
Out of scope for #1286 (which only adds the inference_provider server). Filing as a standalone proposal so the naming decision can get team buy-in before any large mechanical change.
Activity