Skip to content

Commit 1dd1c19

Browse files
committed
fix: address review feedback for submit-only migration
Clean up incomplete run→submit search/replace leftovers in docs and author skills, restore critical submit CLI regression tests, and fix invalid submit_remote(sdk=...) examples after rebasing onto main. Signed-off-by: Matt Kornfield <mkornfield@nvidia.com>
1 parent b6222a6 commit 1dd1c19

24 files changed

Lines changed: 170 additions & 114 deletions

File tree

docs/agents/optimization.mdx

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ evaluation result before promotion.
2424
| ------------------- | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
2525
| Model optimization | An agent uses a single frontier model where a smaller model or route split may preserve quality at lower cost | Suggests a model swap or Switchyard random-routing virtual model |
2626
| Skill optimization | The agent uses skills and has an evaluation suite | Suggests running `nemo agents optimize-skills` to improve skill files and keep changes that pass evaluation |
27-
| Prompt optimization | The agent has an optimization config and baseline dataset | Suggests `nemo agents optimize run` for Fabric-backed tuning |
27+
| Prompt optimization | The agent has an optimization config and baseline dataset | Suggests `nemo agents optimize submit` for Fabric-backed tuning |
2828
| New model scan | Difference between the current model list and the previous optimizer snapshot | Suggests evaluating or auditing newly available models |
2929

3030
Optimizer state is stored in the `nemo-agent-optimizer` fileset:
@@ -195,7 +195,7 @@ and keeps the change only when the evaluation result improves.
195195
<Tab title="CLI">
196196

197197
```bash
198-
nemo agents optimize-skills run --spec-file .agent-improver.yml
198+
nemo agents optimize-skills submit --spec-file .agent-improver.yml
199199
```
200200

201201
Set `open_pr: true` in the YAML when you want the loop to prepare a
@@ -230,6 +230,7 @@ What it does under the hood:
230230
<Tab title="Python SDK">
231231

232232
```python
233+
import os
233234
import yaml
234235
from pathlib import Path
235236

@@ -241,6 +242,7 @@ NemoJobScheduler().submit_remote(
241242
OptimizeSkillsJob,
242243
spec,
243244
workspace="default",
245+
base_url=os.environ.get("NMP_BASE_URL", "http://localhost:8080"),
244246
)
245247
```
246248

@@ -273,7 +275,7 @@ nemo files list nemo-agent-telemetry
273275

274276
## Run Prompt and Parameter Tuning
275277

276-
The `nemo agents optimize run` command runs Fabric-backed numeric
278+
The `nemo agents optimize submit` command runs Fabric-backed numeric
277279
optimization through `agents.optimize` (implementation in
278280
`nemo-optimization`). Input must be a Fabric-native agent package
279281
(`schema_version: fabric.agent/v1alpha1`). The golden-path harness is
@@ -294,7 +296,7 @@ After `uv sync --package nemo-agents-plugin` (and activating `.venv`), invoke
294296
<Tab title="CLI">
295297

296298
```bash
297-
nemo agents optimize run \
299+
nemo agents optimize submit \
298300
--optimize-config "$(pwd)/plugins/nemo-optimization/examples/hermes-optimize/optimize-chatonly.yaml" \
299301
--workspace default
300302
```
@@ -306,7 +308,7 @@ Ask your coding agent:
306308

307309
> Run prompt tuning on my deployed agent against this optimization config.
308310
309-
The `agents-optimize` skill suggests `nemo agents optimize run` when the
311+
The `agents-optimize` skill suggests `nemo agents optimize submit` when the
310312
agent has an optimization config and a baseline dataset. Verify it is
311313
installed:
312314

@@ -317,7 +319,7 @@ nemo skills show agents-optimize
317319
What it does under the hood:
318320

319321
- Confirms the agent has a Fabric-native optimization YAML.
320-
- Runs `nemo agents optimize run` (or `submit` for platform jobs).
322+
- Runs `nemo agents optimize submit` (or `submit` for platform jobs).
321323
- Compares results against the evaluation baseline and surfaces deltas
322324
for review.
323325

@@ -349,7 +351,7 @@ result = NemoJobScheduler().submit_remote(
349351
"workspace": WORKSPACE,
350352
},
351353
workspace=WORKSPACE,
352-
sdk=client,
354+
base_url=os.environ.get("NMP_BASE_URL", "http://localhost:8080"),
353355
)
354356
print(result)
355357
```
@@ -376,7 +378,7 @@ export PHISHING_MCP_BIN="$PHISHING_AGENT_ROOT/.venv/bin/email-phishing-analyzer-
376378

377379
# These environment variables are templated into optimize-mcp.yaml.
378380

379-
nemo agents optimize run \
381+
nemo agents optimize submit \
380382
--optimize-config "$(pwd)/plugins/nemo-optimization/examples/hermes-optimize/optimize-mcp.yaml" \
381383
--workspace default
382384
```
@@ -421,7 +423,7 @@ result = NemoJobScheduler().submit_remote(
421423
"workspace": WORKSPACE,
422424
},
423425
workspace=WORKSPACE,
424-
sdk=client,
426+
base_url=os.environ.get("NMP_BASE_URL", "http://localhost:8080"),
425427
)
426428
print(result)
427429
```

docs/anonymizer/cli.mdx

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ This reference covers the `nemo anonymizer` commands exposed by the Anonymizer p
1414
| Command | Source | Description |
1515
|----------------------------------|---------------------------------|--------------------------------------------------------------|
1616
| `nemo anonymizer validate` | Manual Typer command | Validate an `AnonymizerConfig` (and optional `model_configs`).|
17-
| `nemo anonymizer preview submit` | Generated from `NemoFunction` | Local streaming preview. |
1817
| `nemo anonymizer preview submit` | Generated from `NemoFunction` | Remote streaming preview against the plugin service. |
19-
| `nemo anonymizer run submit` | Generated from `NemoJob` | Local job execution in the CLI process. |
2018
| `nemo anonymizer run submit` | Generated from `NemoJob` | Submit an `anonymizer.run` job to the NeMo Platform Jobs worker. |
2119
| `nemo anonymizer run explain` | Generated from `NemoJob` | Print the job key, submit endpoint, and JSON schemas. |
2220

@@ -39,13 +37,9 @@ The command does not accept `data.source`. Input-source validation happens durin
3937

4038
## `nemo anonymizer preview`
4139

42-
Both `preview submit` and `preview submit` take a spec file matching `PreviewRequest`.
40+
`preview submit` takes a spec file matching `PreviewRequest`.
4341

4442
```bash
45-
nemo anonymizer preview submit \
46-
--spec-file /tmp/anonymizer-preview.yaml \
47-
--workspace "${NMP_WORKSPACE:-default}"
48-
4943
nemo anonymizer preview submit \
5044
--spec-file /tmp/anonymizer-preview.yaml \
5145
--workspace "${NMP_WORKSPACE:-default}" \
@@ -60,11 +54,11 @@ nemo anonymizer preview submit \
6054

6155
### Preview source kinds
6256

63-
| Form | `preview submit` | `preview submit` |
64-
|---------------------------------------|---------------|------------------|
65-
| Local path (`/tmp/input.csv`) | yes | no |
66-
| HTTP(S) URL (`https://.../input.csv`) | yes | yes |
67-
| Fileset reference (`fs#path`) | yes | yes |
57+
| Form | `preview submit` |
58+
|---------------------------------------|------------------|
59+
| Local path (`/tmp/input.csv`) | no |
60+
| HTTP(S) URL (`https://.../input.csv`) | yes |
61+
| Fileset reference (`fs#path`) | yes |
6862

6963
### Preview output
7064

@@ -152,7 +146,7 @@ Both preview and run specs use the shared `AnonymizerRequest` shape:
152146
| `data.text_column`| string | no | Defaults to `text`. |
153147
| `data.id_column` | string | no | Optional record identifier column. |
154148
| `data.data_summary` | string | no | Optional short description of the data. |
155-
| `model_configs` | list of Data Designer `ModelConfig` | depends | Required for `preview submit` and `run submit`; optional for `preview submit` and `run submit`. |
149+
| `model_configs` | list of Data Designer `ModelConfig` | depends | Required for `preview submit` and `run submit`. |
156150
| `selected_models` | object with `detection` / `replace` / `rewrite` | no | Role overrides on top of bundled defaults. Requires `model_configs`. |
157151

158152
Preview-only:

docs/data-designer/cli.mdx

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ description: ""
77
---
88
<a id="data-designer-cli"></a>
99

10-
The NeMo Data Designer plugin adds the `nemo data-designer` command group. Use it to execute Data Designer workloads locally in the CLI process or submit them to NeMo Services.
10+
The NeMo Data Designer plugin adds the `nemo data-designer` command group. Use it to submit preview and create workloads to NeMo Services.
1111

1212
## Configuration Sources
1313

@@ -16,6 +16,7 @@ The `preview` and `create` commands accept a configuration source path. The most
1616
```python
1717
import data_designer.config as dd
1818

19+
1920
def load_config_builder() -> dd.DataDesignerConfigBuilder:
2021
model_configs = [
2122
dd.ModelConfig(
@@ -30,41 +31,17 @@ def load_config_builder() -> dd.DataDesignerConfigBuilder:
3031
return config_builder
3132
```
3233

33-
The same configuration source can usually be used with `run` or `submit`. Resource choices determine whether it is compatible with NeMo Services execution; see [Execution Modes](/documentation/design-synthetic-data/execution-modes).
34-
35-
## Run Versus Submit
34+
The same configuration source is used with `submit`. Resource choices determine whether it is compatible with NeMo Services execution; see [Execution Modes](/documentation/design-synthetic-data/execution-modes).
3635

37-
`run` executes the Data Designer workload locally, in the CLI process. This can be fully local, but it is not an offline-only mode. A local run can still use the Files API, Secrets API, and Inference Gateway API from a running NeMo Services cluster when the configuration references the corresponding resources.
36+
## Submit Versus Platform Execution
3837

3938
`submit` sends the workload to NeMo Services. The Data Designer API and Jobs API coordinate execution, job lifecycle, logs, and artifact persistence. The NeMo Services deployment may itself be local or remote.
4039

4140
| Command | Workload execution | NeMo Services required? |
4241
|---------|--------------------|-------------------------|
43-
| `preview submit` | Local CLI process | Optional |
44-
| `create submit` | Local CLI process | Optional |
4542
| `preview submit` | Data Designer API | Yes |
4643
| `create submit` | Jobs worker | Yes |
4744

48-
## Preview Locally
49-
50-
Use local preview for fast iteration:
51-
52-
```bash
53-
nemo data-designer preview submit product_reviews.py --num-records 5
54-
```
55-
56-
The workload runs in your current Python environment. It can use local-only resources, NeMo resources, or both.
57-
58-
## Create Locally
59-
60-
Use local create when you want to generate a larger dataset without submitting work to NeMo Services:
61-
62-
```bash
63-
nemo data-designer create submit product_reviews.py --num-records 1000
64-
```
65-
66-
This executes the plugin job locally. It is useful for development and for workloads that should stay in the local environment.
67-
6845
## Submit Preview to NeMo Services
6946

7047
Submit preview when you want to exercise the Data Designer API path:

docs/evaluator/metrics/llm-as-a-judge.mdx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ LLM-as-a-Judge evaluation sends each dataset row to a judge LLM and parses the j
1717
- **Pre-generated data**: Score existing question-answer pairs or conversations.
1818
- **Custom criteria**: Define range scores, rubric scores, prompt templates, and parser behavior.
1919

20-
NeMo Evaluator supports two execution modes through the Evaluator plugin SDK:
20+
Use the Evaluator plugin SDK to submit durable platform jobs:
2121

2222
| Mode | Use Case | SDK Call |
2323
|------|----------|----------|
24-
| **Durable remote job** | Production workloads that should run as platform jobs | `evaluator.submit(metric=metric, dataset=dataset)` |
24+
| **Platform job** | Durable platform execution with polling and result retrieval | `evaluator.submit(metric=metric, dataset=dataset)` |
2525

2626
## Prerequisites
2727

@@ -127,8 +127,6 @@ result = LocalEvaluator().run_sync(
127127
},
128128
],
129129
)
130-
job.wait_until_done()
131-
result = job.get_result()
132130

133131
for score in result.aggregate_scores.scores:
134132
print(f"{score.name}: mean={score.mean:.2f}, count={score.count}")
@@ -234,8 +232,6 @@ result = LocalEvaluator().run_sync(
234232
],
235233
aggregate_fields=("rubric_distribution", "mode_category"),
236234
)
237-
job.wait_until_done()
238-
result = job.get_result()
239235

240236
print(result.aggregate_scores.model_dump(exclude_none=True))
241237
```
@@ -255,8 +251,6 @@ result = LocalEvaluator().run_sync(
255251
],
256252
aggregate_fields=("std_dev", "variance"),
257253
)
258-
job.wait_until_done()
259-
result = job.get_result()
260254

261255
for score in result.aggregate_scores.scores:
262256
print(f"{score.name}:")

docs/evaluator/metrics/results.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ An `EvaluationResult` contains:
1616
- **Aggregate scores**: `result.aggregate_scores.scores`, with statistics such as mean, min, max, count, NaN count, variance, standard deviation, percentiles, and rubric distributions when applicable.
1717
- **Row scores**: `result.row_scores`, with the original dataset row, generated sample payload, metric scores, request logs, and row-level errors.
1818

19-
## Get Results from a Local Run
19+
## Get Results Inline
2020

2121
```python
2222
from nemo_evaluator_sdk import Evaluator as LocalEvaluator

docs/fern/gated-nav.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
path: ../../safe-synthesizer/about/data-synthesis.mdx
6363
- page: Evaluation
6464
path: ../../safe-synthesizer/about/evaluation.mdx
65-
- page: Host-Local Development
65+
- page: Runtime Environment
6666
path: ../../safe-synthesizer/about/host-local-development.mdx
6767
- page: Overview
6868
path: ../../safe-synthesizer/about/index.mdx

docs/fern/versions/latest.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ navigation:
308308
path: ../../safe-synthesizer/about/evaluation.mdx
309309
- page: Jobs
310310
path: ../../safe-synthesizer/about/jobs.mdx
311-
- page: Local and Subprocess Execution
311+
- page: Runtime Environment
312312
path: ../../safe-synthesizer/about/host-local-development.mdx
313313
- page: Parameters Reference
314314
path: ../../safe-synthesizer/about/reference.mdx

docs/safe-synthesizer/about/host-local-development.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ description: ""
88

99
<a id="host-local-development"></a>
1010

11-
NeMo Safe Synthesizer no longer exposes a host-local workload command. Create synthesis jobs through the platform Jobs API or SDK so scheduling, storage, logs, and artifacts all flow through the supported job path.
11+
Create Safe Synthesizer workloads through the platform Jobs API or SDK so scheduling, storage, logs, and artifacts all flow through the supported job path.
1212

1313
The `nemo safe-synthesizer` CLI still includes runtime utilities for inspecting or preparing the task runtime used by development and job debugging.
1414

docs/safe-synthesizer/getting-started.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Before using NeMo Safe Synthesizer, complete [Setup](/documentation/get-started)
1515

1616
NeMo Safe Synthesizer has the following additional requirements:
1717

18-
- A GPU-capable Jobs backend with enough VRAM for the selected model and dataset.
18+
- A GPU-capable Jobs backend with **80GB+ VRAM** recommended for the selected model and dataset (check with `nvidia-smi` on GPU nodes).
1919
- Sufficient disk space for generated datasets (50GB+ recommended)
2020

2121
For general platform troubleshooting (port conflicts, health checks, and so on), refer to [Setup](/documentation/get-started).

0 commit comments

Comments
 (0)