9 Commits
Author SHA1 Message Date
zeekayandHanzo Dev c1785b9793 Workflows ask for the runner label that exists
One label per runner, spelled <os>-<arch>; the aliases were removed.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-16 01:52:23 -07:00
zeekayandHanzo Dev b1d4123496 runs-on names a machine, not a purpose
The purpose-prefixed labels (hanzo-build-*, hanzo-deploy-*, hanzo-docs-build-*)
are retired in favour of the bare <os>-<arch> every runner already advertises.

They were not a capability, only a habit, and the habit cost builds: papers asked
for hanzo-build-linux-amd64, no online runner offered it, and two idle
linux-amd64 runners sat beside the queue while the build simply never ran. The
lux tree lost three days to lux-linux-amd64 the same way.

What a job is FOR is the workflow's name. runs-on is the machine it needs.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-15 11:47:46 -07:00
zeekayandHanzo Dev 8af28614f7 runs-on names a machine, not a purpose
The purpose-prefixed labels (hanzo-build-*, hanzo-deploy-*, hanzo-docs-build-*)
are retired in favour of the bare <os>-<arch> every runner already advertises.

They were not a capability, only a habit, and the habit cost builds: papers asked
for hanzo-build-linux-amd64, no online runner offered it, and two idle
linux-amd64 runners sat beside the queue while the build simply never ran. The
lux tree lost three days to lux-linux-amd64 the same way.

What a job is FOR is the workflow's name. runs-on is the machine it needs.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-15 11:36:43 -07:00
zeekayandHanzo Dev f310c6db24 The Apple leg asked for a label the runners do not advertise
runs-on named hanzo-build-macos-arm64. RUNNERS.md registers the Apple pool as
hanzo-build-darwin-arm64 (with metal, m4max and dbc alongside it), and a job
asking for a label nobody carries is accepted and queued rather than refused —
so this leg has been sitting in a queue while its sibling job, on a registered
label, ran and made the repo look like it had CI.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-02 02:25:32 -07:00
zeekayandHanzo Dev 1563b90d51 Dockerfile.cuda: the CUDA version is a build arg
GB10 (sm_121) needs CUDA 13 headers; H100 stays on 12.6.3 by default.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-01 11:07:06 -07:00
zeekayandHanzo Dev df832f2104 gym 0.1.1: cached decoding, gym synth, gym trainjob
Rollouts go through a KV cache (prompt prefilled once per group, one decode
step per token); cached logits match the full forward to 1e-4. GRPO runs end
to end on Metal — a mixed group at step 5 gives reward 0.75, loss −0.032,
gradient norm 1.19 — after the clipping reduction stopped going through f64,
which Metal does not have.

gym synth ports Data Designer's core: sampler, expression and LLM columns
(text, structured, judge) generated per row in dependency order against any
OpenAI-compatible endpoint, validators that drop or regenerate, jsonl or
parquet out.

gym trainjob is the Kubeflow TrainJob entry for the hosted fine-tuning API:
the broker's env contract becomes a Config; METHOD=lora is served, qlora and
full are refused by name. Dockerfile.cuda and image.yml build
ghcr.io/hanzoai/gym on the forge runners.

84 tests.

Co-authored-by: Hanzo Dev <[email protected]>
v0.1.1
2026-09-01 10:49:00 -07:00
zeekayandHanzo Dev 680408a1ef gym: a runnable example — Qwen3-0.6B LoRA on a 32-row chat set
Verified on Metal: loss 0.155 → 0.052 over three steps, PEFT adapter written.

Co-authored-by: Hanzo Dev <[email protected]>
v0.1.0
2026-09-01 02:33:42 -07:00
zeekayandHanzo Dev dd4556ec1c gym: LoRA SFT and GRPO on hanzo-ml, end to end
model: one trainable Llama-family decoder (Qwen3 with q/k norm, Llama) built
from differentiable hanzo-nn primitives, LoRA on the projections the config
names, PEFT adapter save/load/merge; logits match hanzo-transformers to 1e-4.
data: chat_template / alpaca / completion with Axolotl's label semantics
(dummy-render turn spans, train_on_eos), jsonl/json/parquet, HF datasets and
split grammar, seeded shuffle, validation tail, GRPO prompts, collate.
train: chunked masked cross-entropy, warmup + cosine/linear/constant,
accumulation, global-norm clipping, AdamW, checkpoints, eval.
grpo: the hanzo-training core ported unchanged in its math, with LmPolicy
over CausalLm (batched masked scoring), exact/numeric/format/length/http
verifiers.

61 tests. gradient_checkpointing, QLoRA, full fine-tune, multi-GPU and the
DPO family are rejected at config load rather than approximated.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-01 02:28:36 -07:00
zeekayandHanzo Dev 5c3f360de5 gym: skeleton — Axolotl-shaped config, CausalLm contract, hub snapshot, CLI
Co-authored-by: Hanzo Dev <[email protected]>
2026-08-30 21:52:56 -07:00