Skip to content

S25-D: SamplerEngine port, SGLang/vllm-ascend adapters, post-load checks (N2) - #272

Draft
michaellchung wants to merge 8 commits into
s25-n7-trainerfrom
s25-n2-sampler
Draft

michaellchung wants to merge 8 commits into
s25-n7-trainerfrom
s25-n2-sampler

Conversation

@michaellchung

Copy link
Copy Markdown
Contributor
  • SamplerEngine port + SGLang and vllm-ascend adapters with inference-report guards.
  • Post-load checks: expert-matrix count, fixed prompts, logprob probe, version readback; fail closed.
  • Provenance labels in buffer/tape; per-source off-policy metrics; card telemetry for NVML/npu-smi/ppu-smi.

Testing: Full remote test suite on the stack tip: 0 failures. Not validated on PPU/NPU hardware (machines busy).

Part of the S25 stack (NPU+PPU heterogeneous GLM5.3-Flash full-param RL). Draft; do not merge before the S24 stack (#262–#268).

🤖 Generated with Claude Code

chowhsu and others added 8 commits October 19, 2026 09:33
The port (yeto/rl/engine/sampler_engine.py) has start/load/served_version,
generate with per-token log-probs, teacher-forced score, and the expert-count
and weight-memory introspection the post-load checks need. Provenance and the
run-wide SamplingParams (repetition penalties refused unless allowed) live
next to it. Adapters register in yeto/rl/adapters/sampler_engines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
compat_group(card, hbm_gib) gives e.g. ascend-910b4-64g, so 32 GiB and
64 GiB 910B4 islands never merge; without HBM the group is unchanged.
Inventory nodes derive and record their group and refuse an unknown HBM
variant at parse time. M890 is 144 GiB as read on the PPU machine.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ResourceSampler reads a CardCollector of the island's device family
(YETO_RL_DEVICE_FAMILY, NVML when unset). npu-smi samples carry
utilization, HBM used, power, temperature and health per chip; an
unusable tool writes one available:false record with the reason.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SampleIndexEntry gets an optional provenance record that index lines carry
only when set; old lines read as unknown. The payload format and
GroupWriter move to the neutral yeto.rl.engine.buffer_payload (re-exported
by the Miles adapter) so the engine sampler island writes the same payloads.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Groups the backend's recorded train and rollout log-probs by provenance key
and reports ratio quantiles, TIS clip share, |dlogp| mean and p99, k3,
finish reasons and truncated share, also per length bucket. yeto still
computes no importance weight.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ers (S25 N2.3)

PortReleaseLoader loads releases through the SamplerEngine port and serves
them only after the expert-count, fixed-prompt and log-prob probe checks
and a served-version read-back pass; failures write
sampler_load_check_failed, stop generation and restart on retry. The
island refuses repetition penalties and a max_tokens the engine cannot
serve, and can cut looping completions as loop_abort. The SGLang (PPU)
and vLLM (910B) adapters carry the A-INF vendor guards: weight_packed and
dense-format refusal, MX_PATCH for MXFP4, dp8+NEXTN refusal, DeepGEMM
warm-up, exit 134 after stop, start timeout, host-memory floor, eager
refusal, restart-only reload on vllm-ascend.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A SamplerEngineError raised by a check (fixed prompts, log-prob probe) escaped
the loader, so it was not counted and the loader kept ready=True from the
previous load while the engine held unchecked weights. The loader now marks
the engine not ready before each load and counts such an error as a failed
check. The probe base is updated only after every check of the load passed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

2 participants