- Run a systematic hyperparameter search — grid, random, or Bayesian — and find the best configuration.
+ Run a systematic hyperparameter search — grid, random, or Bayesian — and find the best configuration using the Workbench UI or the Vantage SDK.
@@ -19,7 +19,7 @@ A sweep runs many trials, each with a different combination of hyperparameters.
Outcome
@@ -38,6 +38,74 @@ Vantage supports three sweep algorithms:
| **Random** | Large spaces, quick exploration | Samples random combinations from defined ranges |
| **Bayesian** | Expensive training, adaptive search | Uses prior trial results to pick the next combination |
+## Create a sweep in the UI
+
+
+
+
+### Open Sweeps
+
+Click **Workbench** in the left sidebar, then click **Train > Sweeps**.
+
+
+
+
+### Start creation
+
+Click **New sweep**. The **New Hyperparameter Sweep** dialog opens.
+
+
+
+
+### Configure the sweep
+
+Set the following fields:
+
+| Field | What it does |
+|---|---|
+| **Sweep name** | A unique name for the sweep. |
+| **Algorithm** | The search algorithm: grid, random, or the configured Bayesian algorithm. |
+| **Objective type** | `maximize` or `minimize` the objective metric. |
+| **Objective metric** | The metric to optimize, for example `val_auc`. |
+| **Goal** | Optional target value. |
+| **Parameters (JSON)** | The parameter search space as a JSON array of `{ name, type, feasible_space }` objects. |
+| **Parallel trials, Max trials, Max failed** | Trial count limits. |
+| **Runtime name, Runtime kind** | The runtime to execute each trial. |
+| **Compute pool** | Where to run the trials. |
+
+
+
+
+### Advanced configuration (optional)
+
+Expand **Advanced Options** to set:
+
+| Field | What it does |
+|---|---|
+| **Trainer image** | Override the runtime container image. |
+| **Trainer command** | JSON array overriding the container entrypoint. |
+| **Trainer args** | JSON array of argument strings. |
+| **Trainer env** | `KEY=VALUE` environment variables. |
+| **Assignment strategy** | How to pass parameters to the trial: `args` or `env`. |
+| **Parameters per node** | Nodes, CPU, memory, GPU count, and GPU type. |
+| **Metrics collector kind** | How trial metrics are collected. |
+
+
+
+
+### Launch
+
+Click **Launch sweep**.
+
+
+
+
+
+
+Sweeps are in preview. The detail view shows the best trial, a sortable trial table, and accumulated cost. See [Sweep algorithms](/explanation/workbench/sweep-algorithms) for details on each strategy.
+
+
+
## Create a sweep with the SDK
```python
@@ -66,41 +134,31 @@ sweep = client.sweeps.create(
print(f"Sweep started: {sweep.id}")
```
-Success looks like this: the hyperparameter sweep is created, and the individual runs begin executing on the compute cluster.
+Success looks like this: the sweep is launched, trials begin executing on the cluster, and the sweep detail page shows progress.
## Monitor a sweep in the UI
-### Open the Sweeps page
-
-Click **Workbench** in the left sidebar, then click **Sweeps** under the Train section.
-
-
-
-
-### Find your sweep
+### Open the Sweep detail page
-The sweep list shows each sweep with its name, algorithm, objective metric, number of trials, and best metric value so far.
+Click a sweep row in the list to open its detail page.
-### View sweep details
+### Review trial progress
-Click a sweep to view:
- - **Trials** -- each trial's parameters and resulting metric, sorted by objective
- - **Best trial** -- the parameter combination that produced the best result
- - **Presets** -- saved configurations that can seed new sweeps
+The detail page shows:
+ - **Best trial** -- the current leader, with its parameters and metric
+ - **Trial table** -- every trial, sortable by status, parameter, or objective
+ - **Parallel-coordinates chart** -- every parameter on its own axis, lines colored by metric
+ - **Spend so far** -- accumulated cost across all trials
-## Use a sweep preset
-
-Presets are pre-defined configurations for common search patterns. Select an existing preset when creating a sweep to start from a known-good configuration instead of defining every parameter from scratch.
-
## What to do next
diff --git a/docs/how-to-guides/workbench/train/registering-a-model.mdx b/docs/how-to-guides/workbench/train/registering-a-model.mdx
index fda7d87..58dc5d0 100644
--- a/docs/how-to-guides/workbench/train/registering-a-model.mdx
+++ b/docs/how-to-guides/workbench/train/registering-a-model.mdx
@@ -1,28 +1,99 @@
---
-title: "Registering a model"
-description: "Pull a model from HuggingFace, a local path, or a URL into the Vantage registry."
+title: Register a model
+description: Add a model from HuggingFace, S3, a URL, or a local path to the Workbench model registry.
---
-# Registering a model
+# Register a model
-Pull a model from HuggingFace, a local path, or a URL into the Vantage registry.
+The Workbench model registry stores versioned model records that can be deployed to inference endpoints. Register a model when you want a reusable handoff between training, evaluation, and serving.
-Click
Register model. Pick a source, set a name and version, optionally tag with labels and properties.
+
+
+ Add a model to the registry from HuggingFace, S3, a URL, or a local path.
+
-## Source types
+
+
+ Time
+ About 3 minutes, plus transfer time
+
+
+ You will need
+ Model source details and access to the Workbench model registry
+
+
+ Outcome
+ A versioned model available in the catalog
+
+
+
+
+
+
+
+## Open Models
+
+Click **Workbench** in the left sidebar, then click **Catalog > Local**.
+
+
+
+
+## Start registration
+
+Click **Register Model**. The **Register Model** modal opens.
+
+
+
+
+## Set model identity
+
+Enter a **Model name** and **Version**. The default version is `v0.1`.
+
+
+
+
+## Choose a source type
+
+Pick the source that matches where the model artifacts already live.
| Source type | What you provide |
|---|---|
-| **HuggingFace** | Repo ID (e.g. `mistralai/Mistral-7B-v0.3`), revision (default `main`), optional include/exclude glob patterns, optional auth token for gated models. |
-| **Local path** | An absolute path on the Vantage backend pod, typically used by automation, not humans. |
-| **URL** | A single HTTP(S) URL. Good for one-off weights or custom safetensors. |
+| **HuggingFace** | Repo ID, optional revision, optional allow patterns, and optional ignore patterns. |
+| **S3** | S3 URI and optional model-format hint. This is useful for artifacts created by training jobs or sweeps. |
+| **URL** | HTTP(S) URL and optional destination filename. |
+| **Local** | Absolute path on the `vdeployer-web` pod. This is mostly for automation and platform administrators. |
-Registration runs as a background job. You'll see a progress bar in the dialog, and the model lands in the list with status Active when complete.
+
+
+
+## Add metadata
+
+Select **Framework** and **Task**. Expand **Advanced Options** if you want to add a description, base model, destination bucket, destination prefix, or overwrite behavior.
+
+
+
+
+## Register
-Success looks like this: the model is registered in the model catalog, and it can be referenced for deployment or further training.
+Click **Register**.
+
+
+
+
+Success looks like this: Workbench submits the model onboarding request and the model appears in the registry with the version you provided.
-Storage destination defaults to your workspace's S3 bucket and the `models/{name}/{version}/` prefix. Override only if you need a custom layout.
+For gated HuggingFace models, make sure your workspace has the required credential secret configured before deployment. Model registration captures the model record; endpoint deployment still needs access to fetch and serve the weights.
+
+
+
+
+
+## What to do next
+
+- [Deploy an endpoint](/how-to-guides/workbench/serve/deploying)
+- [Submit a training job](/how-to-guides/workbench/train/submitting-a-job)
+- [Models reference](/reference/workbench/models)
diff --git a/docs/how-to-guides/workbench/train/submitting-a-job.mdx b/docs/how-to-guides/workbench/train/submitting-a-job.mdx
index 8b88aea..ee0d44a 100644
--- a/docs/how-to-guides/workbench/train/submitting-a-job.mdx
+++ b/docs/how-to-guides/workbench/train/submitting-a-job.mdx
@@ -1,13 +1,13 @@
---
-title: "Submitting a job"
-description: "Six-step wizard: runtime, sizing, initializers, overrides, output, TTL."
+title: Submit a training job
+description: Launch a training job from a preset or from a custom runtime and sizing configuration.
---
-# Submitting a job
+# Submit a training job
- Walk through the six-step wizard to configure and submit a training job.
+ Launch a Workbench training job from a preset or from a custom runtime, compute, and output configuration.
@@ -17,63 +17,84 @@ description: "Six-step wizard: runtime, sizing, initializers, overrides, output,
You will need
- A Kubernetes cluster with compute pool, a runtime configured
+ A Kubernetes cluster with Workbench enabled and either a training preset or a training runtime
Outcome
- A training job submitted and running
+ A training job queued or running in Workbench
-Six-step wizard: runtime, sizing, initializers, overrides, output, TTL.
+Training jobs run finite ML workloads on Kubernetes compute. The **New Training Job** modal supports two creation modes:
+
+| Mode | Use when |
+|---|---|
+| **Preset** | Your team already has a saved training configuration. This is the fastest and safest path. |
+| **Custom** | You need to choose the runtime, sizing, output destination, trainer overrides, or labels manually. |
-## Pick a runtime
+## Open Training Jobs
-The wizard filters compute pools to those compatible with the runtime's framework.
+Click **Workbench** in the left sidebar, then click **Train > Training > Training Jobs**.
-## Set sizing
+## Start a new job
-Number of nodes, CPU / memory / GPU per node, and processes-per-node (usually `auto` = 1 per GPU).
+Click **New Training Job**. The modal opens with a **Create mode** toggle.
-## Initializers (optional)
+## Choose Preset or Custom mode
+
+For **Preset** mode, select a preset, optional compute pool, job name, and optional TTL. Preset mode derives the runtime and sizing from the selected preset.
-Tell Workbench to fetch a dataset and a base model *before* training starts, from S3, HuggingFace, a PVC, or your model registry. Cuts startup time and avoids cold pulls inside the training loop.
+For **Custom** mode, enter a job name, runtime kind, runtime name, optional compute pool, node count, CPU per node, memory per node, GPUs per node, and optional GPU vendor.
-## Trainer overrides (optional)
+## Configure optional output and overrides
-Custom command, args, env. Useful when the runtime's default entrypoint isn't quite right.
+Use **Override output destination** in Preset mode, or **Trainer overrides** in Custom mode, when you need to change where outputs are written or how the runtime starts your workload.
+
+| Option | What it does |
+|---|---|
+| **Output type** | Use the cluster default, an S3 URI, or a PVC destination. |
+| **Trainer command** | JSON array that overrides the runtime container entrypoint. |
+| **Trainer args** | JSON array of argument strings passed to the trainer. |
+| **Environment** | `KEY=VALUE` pairs passed to the trainer. |
+| **Labels** | `KEY=VALUE` pairs attached to the job for filtering and ownership. |
-## Output destination
+## Launch the job
-Where final checkpoints go: S3 bucket+prefix or a PVC. Defaults to `s3://{workspace}/trainjobs/{name}/`.
+Click **Launch job**.
-## TTL
+## Monitor the job
-How long the completed pods stick around for log retrieval. Defaults: 1d on success, 7d on failure.
+The job appears in the Training Jobs list. Click the row to inspect status, runtime, sizing, logs, output destination, and related Kubernetes resources.
-Success looks like this: the training job is queued, and the job status moves from pending to running on the compute cluster.
+Success looks like this: the training job is created, appears in the list, and moves from pending to running when the requested compute is available.
+
+
+
+Use **Preset** mode unless you need to override the runtime or resource sizing. Presets reduce repeated configuration and help teams submit jobs with known-good settings.
+
+
diff --git a/docs/how-to-guides/workbench/troubleshooting.mdx b/docs/how-to-guides/workbench/troubleshooting.mdx
index c460748..f5cb38a 100644
--- a/docs/how-to-guides/workbench/troubleshooting.mdx
+++ b/docs/how-to-guides/workbench/troubleshooting.mdx
@@ -9,7 +9,7 @@ description: Common Workbench issues and how to resolve them.
Three usual causes:
-1. **No node has the requested GPU.** Check the compute pool's max, if you're at the autoscaler ceiling, the request will queue. The session's **Activity** tab will say "FailedScheduling" if so.
+1. **No node has the requested GPU.** Check the compute pool's max size. If the pool is at the autoscaler ceiling, the request will queue. The session's **Activity** tab will say `FailedScheduling` if so.
1. **Image pull is slow.** First-time pulls of large CUDA images can take 5+ minutes. Subsequent starts on the same node are instant.
1. **PVC binding pending.** If you mounted a brand-new persistent volume, it has to be provisioned. Wait, or check storage status.
@@ -19,22 +19,22 @@ Confirm three things:
1. You're hitting the right URL (the detail page header is canonical).
1. Your Vantage API key is in `Authorization: Bearer …`, not as a query param.
-1. The model finished loading. The endpoint reports Running as soon as one replica is healthy, but big LLMs take a few minutes after that to load weights into GPU memory. The Logs tab will show "model ready" when the inference engine is actually serving.
+1. The model finished loading. The endpoint reports Running as soon as one replica is healthy, but large models take a few minutes after that to load weights into GPU memory. The Logs tab will show `model ready` when the inference engine is actually serving.
## Training job logs are empty
By default the Logs tab streams the trainer master pod. If your master finished early but workers are still going, the master log will be quiet. Use the container/rank dropdown to switch.
-## Pipeline / Sweep limitations
+## Pipeline and sweep limitations
Both tabs are in **Preview**. Today:
-- Pipeline authoring is API-only (Vantage SDK). The UI shows runs and DAGs but doesn't let you author or upload definitions.
-- Sweep creation is API-only. The list and detail views work end-to-end.
+- Pipeline authoring is API-first. The UI shows experiments, pipelines, runs, recurring runs, artifacts, and executions.
+- Sweep creation is available from the UI when algorithms, runtimes, and compute pools are configured. The list and detail views show trials and sweep progress.
- Cost tiles on these tabs may be missing or stale; we're wiring billing into them.
## Cost tiles read $0 or look wrong
Workbench computes spend from compute pool rates × elapsed runtime. If your admin hasn't configured a rate for a pool, that pool's resources will read $0. This is a configuration issue, not a measurement bug, open an admin ticket.
-Success looks like this: the diagnostic identifies the root cause, and applying the recommended fix restores normal workbench operation.
+
diff --git a/sidebars-main.js b/sidebars-main.js
index 40e545c..25bfb8f 100644
--- a/sidebars-main.js
+++ b/sidebars-main.js
@@ -92,12 +92,12 @@ module.exports = {
doc('how-to-guides/workbench/develop/creating-a-preset', 'Create a session preset'),
doc('how-to-guides/workbench/develop/cloud-shell', 'Use Cloud Shell'),
doc('how-to-guides/workbench/develop/remote-desktop', 'Use the Remote Desktop'),
- doc('how-to-guides/workbench/develop/pvc-viewer', 'Browse PVC data'),
- doc('how-to-guides/workbench/develop/manage-services', 'Manage services'),
+ doc('how-to-guides/workbench/develop/pvc-viewer', 'Use PVC Viewer'),
+ doc('how-to-guides/workbench/develop/manage-services', 'Manage user services'),
]),
category('Compute', null, [
doc('how-to-guides/workbench/compute/create-pool', 'Create a compute pool'),
- doc('how-to-guides/workbench/compute/managing-profiles', 'Manage compute profiles'),
+ doc('how-to-guides/workbench/compute/managing-profiles', 'Manage compute pools'),
]),
category('Train', null, [
doc('how-to-guides/workbench/train/configure-runtime', 'Configure a training runtime'),
@@ -114,7 +114,7 @@ module.exports = {
category('Serve', null, [
doc('how-to-guides/workbench/serve/deploying', 'Deploy an endpoint'),
doc('how-to-guides/workbench/serve/autoscaling', 'Configure autoscaling'),
- doc('how-to-guides/workbench/serve/canary-rollouts', 'Run a canary rollout'),
+ doc('how-to-guides/workbench/serve/canary-rollouts', 'Monitor canary rollouts'),
]),
doc('how-to-guides/workbench/observability', 'Use observability'),
doc('how-to-guides/workbench/troubleshooting', 'Troubleshoot Workbench'),