Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
3690dc0
feat(inference): add Dynamo backend configuration
biswapanda Jul 3, 2026
c58de96
feat(inference): launch Dynamo disaggregated workers
biswapanda Jul 3, 2026
7c1a61d
feat(orchestrator): administer Dynamo inference workers
biswapanda Jul 3, 2026
908705d
fix(config): stop injecting response-only token flag
biswapanda Jul 3, 2026
770b568
fix(client): preserve native admin routing
biswapanda Jul 3, 2026
7510010
fix(dynamo): preserve weight update failures
biswapanda Jul 3, 2026
beaec34
refactor(inference): isolate Dynamo runtime boundaries
biswapanda Jul 5, 2026
c6fab8f
refactor(inference): keep process environment canonical
biswapanda Jul 5, 2026
5ce8959
refactor(inference): remove redundant process wrappers
biswapanda Jul 5, 2026
69986cc
refactor(inference): derive worker port evidence
biswapanda Jul 5, 2026
1ac4298
test: update Dynamo topology fixtures
biswapanda Jul 9, 2026
04eeceb
fix(dynamo): enforce runtime topology contracts
biswapanda Jul 9, 2026
0d22c2b
fix(dynamo): close topology and readiness gaps
biswapanda Jul 9, 2026
4a8a185
fix(dynamo): classify readiness and fixed pools
biswapanda Jul 9, 2026
f5a9d56
fix(dynamo): fail fast on discovery contracts
biswapanda Jul 10, 2026
66c40e4
fix(dynamo): make policy updates fail closed
biswapanda Jul 10, 2026
3ece154
fix(dynamo): harden policy update transactions
biswapanda Jul 10, 2026
f077fbf
fix(orchestrator): adapt policy markers to TraceTask
biswapanda Jul 11, 2026
d5e8bdf
feat(k8s): render Dynamo graph deployments
biswapanda Jul 5, 2026
4d710d1
test: update DynamoGraph topology fixtures
biswapanda Jul 9, 2026
6940e64
fix(k8s): pin DynamoGraph runtime resources
biswapanda Jul 9, 2026
c75e4e5
fix(k8s): mount Dynamo chat template
biswapanda Jul 9, 2026
bdae79e
fix(k8s): enforce Dynamo release contracts
biswapanda Jul 9, 2026
16a6ffd
fix(k8s): preserve operator runtime contracts
biswapanda Jul 10, 2026
7a24d56
fix(k8s): bind rendered Dynamo identities
biswapanda Jul 10, 2026
5608d98
fix(k8s): bind generated workload contracts
biswapanda Jul 10, 2026
657c8fb
fix(k8s): bind generated runtime contract
biswapanda Jul 10, 2026
f271e9e
fix(k8s): allow direct GPU resource scheduling
biswapanda Jul 10, 2026
449ccca
fix(k8s): realize DGD PVC mounts in pod specs
biswapanda Jul 10, 2026
be5b75c
fix(k8s): select Grove-managed RL frontend
biswapanda Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/training.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ A condensed view of the knobs you'll most often tune. For trainer-side paralleli
|---|---|
| `orchestrator.batch_size` | Tasks per trainer step. |
| `orchestrator.group_size` | Rollouts generated per task. |
| `orchestrator.max_off_policy_steps` | How many distinct policies may have contributed to one rollout before it's discarded (default 8). The main off-policy dial on long agentic rollouts — bump for throughput, lower for tighter on-policyness. Watch `errored_rollouts` and `mismatch_kl/all/mean` when tuning. |
| `orchestrator.max_off_policy_steps` | On the vLLM admin backend, how many distinct policies may contribute to one rollout before it is discarded (default 8). Dynamo instead drains all live-policy/eval requests before mutating weights, so this setting does not apply to Dynamo runs. |
| `[orchestrator.algo]` | Training algorithm — its `type` names it (`grpo` default, `max_rl`, `opd`, `opsd`, `sft`, `echo`). See [Algorithms](#algorithms). |
| `[[orchestrator.train.env]]` | Training environments. List multiple tables for multi-env training; weight them via `ratio`. See [Configuration § Environments](configuration.md#environments-orchestratortrainenv). |
| `[[orchestrator.eval.env]]` + `orchestrator.eval.interval` | Eval environments and cadence (default every 100 steps). |
Expand Down
28 changes: 28 additions & 0 deletions k8s/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,34 @@ helm install my-exp ./prime-rl \
--set config.secrets.name=prime-rl-secrets
```

### Generated DynamoGraph deployments

`dynamo-dgd` produces internally consistent Helm values for Dynamo disaggregated inference. The source SHAs, image tag, and image digest are caller-supplied evidence: the renderer checks that they agree, but it does not authenticate source or image provenance. Verify those inputs through the release process before rendering and protect the generated values from modification.

Chart-managed mode requires explicit runnable controller commands; the renderer supplies safe execution defaults of one replica and `autoStart: true` and refuses to emit a sleeper deployment:

```bash
uv run dynamo-dgd inference.toml \
--release-name my-exp \
--namespace my-namespace \
--image "$IMAGE@$IMAGE_DIGEST" \
--image-digest "$IMAGE_DIGEST" \
--prime-sha "$PRIME_SHA" \
--dynamo-sha "$DYNAMO_SHA" \
--output-dir ./artifacts \
--gpu-architecture arm64 \
--gpu-product NVIDIA-GB200 \
--gpu-node-pool prime-gpu \
--orchestrator-command 'uv run orchestrator @ /app/configs/debug/orch.toml --output-dir /data/outputs' \
--trainer-command 'uv run trainer @ /app/configs/debug/rl/train.toml --output-dir /data/outputs'

helm install my-exp ./prime-rl \
--namespace my-namespace \
-f ./artifacts/dynamo-helm-values.json
```

Use `--external-controller` when another system runs orchestration and training; generated values then render no controller StatefulSets. Generated releases are limited to 41 characters so every derived Kubernetes Service name remains valid. The image tag must contain the first 12 characters of both caller-supplied source SHAs, and the digest must match `--image-digest`.

## Uninstalling

```bash
Expand Down
36 changes: 36 additions & 0 deletions k8s/prime-rl/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,42 @@ Expand the name of the chart.
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Resolve the immutable image reference generated for DGD, with the native chart
repository/tag remaining as the fallback for statefulset mode.
*/}}
{{- define "prime-rl.image" -}}
{{- if .Values.image.reference -}}
{{- .Values.image.reference -}}
{{- else -}}
{{- printf "%s:%s" .Values.image.repository .Values.image.tag -}}
{{- end -}}
{{- end }}

{{/*
Reuse a supplied shared claim or derive the chart-managed claim name.
*/}}
{{- define "prime-rl.storageClaimName" -}}
{{- default (printf "%s-shared-data" .Release.Name) .Values.storage.existingClaim -}}
{{- end }}

{{- define "prime-rl.inferenceUrls" -}}
{{- if eq .Values.inference.mode "dynamoGraph" -}}
{{- printf "http://%s-frontend.%s.svc.cluster.local:8000/v1" .Release.Name .Values.namespace -}}
{{- else -}}
{{- $releaseName := .Release.Name -}}
{{- $namespace := .Values.namespace -}}
{{- $port := int .Values.inference.service.port -}}
{{- $replicas := int .Values.inference.replicas -}}
{{- $urls := list -}}
{{- range $i := until $replicas -}}
{{- $url := printf "http://%s-inference-%d.%s-inference-headless.%s.svc.cluster.local:%d/v1" $releaseName $i $releaseName $namespace $port -}}
{{- $urls = append $urls $url -}}
{{- end -}}
{{- $urls | join "," -}}
{{- end -}}
{{- end }}

{{/*
Create a default fully qualified app name.
*/}}
Expand Down
Loading