Skip to content

docs(aorlta): getting-started guide for new users - #610

Merged
vivekkhandelwal1 merged 7 commits into
mainfrom
docs/aorlta-getting-started
Nov 13, 2026
Merged

vivekkhandelwal1 merged 7 commits into
mainfrom
docs/aorlta-getting-started

Conversation

@vivekkhandelwal1

@vivekkhandelwal1 vivekkhandelwal1 commented Nov 12, 2026 •

Copy link
Copy Markdown
Collaborator

The team is going to try AORLTA on their own tasks, so I walked through the README and ADAPTING.md from a fresh clone, the way a new user would. This is the docs half of what came out of that.

  • docs/GETTING-STARTED.md: the steps in order. What a run needs, and what is untested (fewer than 8 GPUs, MI300X/MI355X, models outside the Qwen3.5 family). The CPU tests the way CI runs them. The site file and the job's environment. A score run before a training run, with the times measured on main. Reading the outputs, the settings people change, and what each job exit code and common run stop means.
  • README: don't run the suite with -n auto on a many-core box (it runs out of memory). Only Qwen3.5 works today. The stand-in dataset isn't published and the example pool is too small to run on. --components fake doesn't read the configured pool or checks.

Also:

  • the guide covers running on 1, 2, 4 or 8 GPUs, with memory per GPU measured on MI350X (estimates are labelled), and how to share a node;
  • how to switch models, and what limits that today (Qwen3.5 family only);
  • where checkpoints and adapters go;
  • a "Getting help" section in the README and an AORLTA issue template (label aorlta, which now exists);
  • a pointer from the top-level aorta README, marked early and evolving.

Docs and an issue template only, no code change. Some lines refer to files in #611–#613 (the Q&A configs, the export tool), so this is best merged after them.

How I checked it: on a fresh clone of main I followed the steps and the CPU suite passed in all three parts. I also ran a score run and a 3-iteration stand-in training run on MI350X; the times in the guide come from those runs.

…r needs first

docs/GETTING-STARTED.md puts the steps in order: what a run needs (and what is
untested: fewer GPUs, other GPUs, other models), the CPU tests as CI runs them,
the site file and the job's environment, a score run before a training run,
measured times, reading the outputs, the settings people change, and what each
of the job's exit codes and the common run stops mean.

The README now says the test suite must not run with -n auto on a many-core
machine, that only the Qwen3.5 family works as it stands, that the stand-in
dataset is not published and the example pool is too small to run, and that
the fake components do not read the configured pool or checks.
Copilot AI balanced review requested due to automatic review settings November 12, 2026 17:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The getting-started guide misstates checkout requirements, scoring versus training submissions, the scored-fraction denominator, and where to find failed-iteration diagnostics, leaving readers with misleading setup and troubleshooting guidance.

4 open issues
What changed in this PR

This documentation-only PR adds an onboarding path for AORLTA, from CPU checks through GPU scoring and training, and clarifies current limitations.

Changes:

  • Adds a getting-started guide covering prerequisites, setup, outputs, settings, and troubleshooting.
  • Replaces unrestricted pytest parallelism with bounded test commands.
  • Clarifies model support, dataset availability, and what fake-component runs validate.
File Description
aorlta/​README.md Links the guide and clarifies testing commands and prerequisites.
aorlta/​docs/​GETTING-STARTED.md Adds step-by-step setup, run, and troubleshooting guidance.

Review effort: Balanced

Comment thread aorlta/docs/GETTING-STARTED.md Resolved
Comment thread aorlta/docs/GETTING-STARTED.md Resolved
Comment thread aorlta/docs/GETTING-STARTED.md Resolved
Comment thread aorlta/docs/GETTING-STARTED.md Resolved
Copilot AI balanced review requested due to automatic review settings November 12, 2026 17:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The troubleshooting guidance points to a summary.json that is not written for the stopped iteration instead of the failure diagnostics saved in run_result.json.

4 open issues

Review effort: Balanced

…help, and a pointer from the aorta README

GETTING-STARTED.md: how to place engines, trainer ranks and checks on 1, 2, 4 or
8 GPUs of one node, measured peak memory per GPU (labelled estimates beside
them), how to share a node, how to switch models and what limits that today,
and where checkpoints and adapters go. The README gains a Getting help section
(open an issue with the new AORLTA template, label aorlta; docs feedback as
docs: issues). The top-level README points to aorlta/ as early and evolving.
Copilot AI balanced review requested due to automatic review settings November 12, 2026 23:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The getting-started guide references unshipped configs and an unsupported GPU setting, reports an unreproducible VRAM measurement, and promises an unimplemented checkpoint-to-PEFT export workflow.

7 open issues

Review effort: Balanced

Comment thread aorlta/docs/GETTING-STARTED.md Resolved
Comment thread aorlta/docs/GETTING-STARTED.md Resolved
Comment thread aorlta/docs/GETTING-STARTED.md Resolved
@vivekkhandelwal1
vivekkhandelwal1 marked this pull request as ready for review November 13, 2026 06:48
…nd of the GPU layout

Co-authored-by: Cursor <cursoragent@cursor.com>
Copilot AI balanced review requested due to automatic review settings November 13, 2026 07:50
…t scrolling

Co-authored-by: Cursor <cursoragent@cursor.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread aorlta/README.md Resolved
Copilot AI balanced review requested due to automatic review settings November 13, 2026 07:56
…e or with main

- Every GPU run needs the aorta checkout (AORLTA_AORTA_ROOT): the import pre-flight loads two of its backends
  whatever the profile, and exits 99 without it. Its own row, and out of the stand-in-only environment line.
- The score run and the training run are two submissions; give the training command.
- min_scored_fraction is over the candidates handed to the reward service, not every chain generated (also in the
  README's correctness table).
- A scored_fraction_below_threshold stop writes no summary for the failing iteration: read stop.detail.policy and
  stop.detail.unsettled in run_result.json.
- Name the pull requests that add the worked examples (#613), plugins (#611) and the adapter exporter (#612) where a
  passage depends on them; drop hipk.run.gpus as if it were a config key; a checkpoint is not a PEFT adapter.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@amd-vivekag amd-vivekag left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review summary

Verdict: fix-before-ship

The guide is the right shape: score before train, exit codes, and the GPU layout. A few of the steps a new user would follow do not match the code, and the one-GPU section points at configs this branch does not contain.

Docs only. I checked the claims against the loop, the stand-in parser, and the run job's import preflight.

Findings: 0 High · 5 Medium · 0 Low

Copilot's note that a real job still needs an aorta checkout is right, and so is the stand-in repair edge. The score-vs-train command and the missing summary on a scored-fraction stop are the same kind of mismatch.

Comment thread aorlta/README.md Outdated
subgraph rollout["2-3 generate: TokenSpeed engines at policy v(n-1), K chains per prompt"]
turn["one request per chain and turn, with its own seed"] --> parse{"parse the reply<br/>rollout.parse_adapter"}
parse -- "an answer" --> compile{"compile check<br/>rollout.compile_adapter (none: skipped)"}
parse -- "rejected, a turn left" --> feedback["repair turn<br/>rollout.feedback_template"]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Medium] The stand-in parser never takes this repair edge.

StandinParse returns ParseOutcome("rejected") with no message, and the chain ends no_code_block when rejection is missing, even if a turn is left. A repair turn happens only when the parser fills in rejection (the HIP and Q&A plugins do).

Fix: draw the stand-in edge as "no code block → end", and keep "rejected, a turn left → repair" for a parser that sets rejection. Copilot flagged this too.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in b5f1ee7: a reply rejected with no reason (the stand-in parser's missing code block) now ends the chain in the diagram, and the repair edge is drawn only for a parser that sets rejection.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resolved — confirmed on the current head.

Comment thread aorlta/docs/GETTING-STARTED.md Outdated
| images | built by the job | TokenSpeed at commit `3b684074c0ef79bc8bc00b31cda8dc2850e4b71f` (`git clone https://github.com/lightseekorg/tokenspeed && git -C tokenspeed checkout 3b684074c0ef79bc8bc00b31cda8dc2850e4b71f`, then `TS_SRC=$PWD/tokenspeed`), built by the job from its `docker/Dockerfile.amd`; and the trainer image on top of it from `docker/Dockerfile.trainer`. |
| model | `Qwen/Qwen3.5-4B` at revision `851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a` | The job runs offline, so download it first: `HF_HOME=<cache> hf download Qwen/Qwen3.5-4B --revision 851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a`. `model.base_dir` is the snapshot directory under `<cache>/hub/`. Only the Qwen3.5 family works as it stands: the turn templates use Qwen3.5's control-token ids (`rollout/templates.py`), and the trainer needs transformers' Qwen3.5 linear-attention fast path (`trainer.require_fast_path`). Another Qwen3.5 size, or a fine-tune of it, is the supported change. |
| prompts | a pool of your own | The stand-in configs read a kernel dataset (`kernels.json` and `listings/`) that is not published. `examples/standin-pool/` shows its format but is too small for a run: the stand-in landing check alone picks 40 kernels of 60 to 400 instructions. |
| stand-in check tools | only for the stand-in profiles | `standin-static` runs rocjitsu's `rj_waitcheck` (ROCm/rocm-systems branch `shared/rocjitsu/sanitizers`, built from source, with a libstdc++ that has GLIBCXX_3.4.31); `standin-gpu` adds ConSan (`librocjitsu_dbi_hooks.so` from the same build) and ASan (the ROCm 7.0.2 `*-asan` packages' `lib/asan`), through aorta's sanitizer backends at commit `d22f6116235c05395a0241a83d6f7e952a988454`. None of these is packaged; a task with checks of its own needs none of them. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Medium] A real job still refuses to start without an aorta checkout.

jobs/aorlta-imports-check.py loads aorta.models and aorta.waitcheck for every real run, and the job exits 99 when that fails. A task whose profile never uses those backends still needs AORLTA_AORTA_ROOT.

Fix: say that here. The preflight should load those two modules only when the profile names an aorta adapter (that change is on the run job). Copilot flagged this too.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 7b72c88 (the aorta checkout has its own row and is out of the stand-in-only env line) and b5f1ee7, which says #611 makes the pre-flight load those modules only when the profile names an aorta adapter; that run-job change is on #611, in reply to your thread there.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resolved — confirmed on the current head.

Both are one job, submitted from `aorlta/` with the config committed:

```bash
mkdir -p runs && CONFIG=configs/score-standin.yaml sbatch jobs/aorlta-run.sbatch

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Medium] This is the only command, and it only scores.

configs/score-standin.yaml is orchestrator.mode: score. The paragraph says to train next, and "both are one job" reads as if this submission trains.

Fix: show the training submission too (CONFIG=configs/dev-standin.yaml sbatch jobs/aorlta-run.sbatch). Copilot flagged this too.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 7b72c88: score and train are now two submissions, and the dev-standin.yaml training command follows the score run.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resolved — confirmed on the current head.

Comment thread aorlta/docs/GETTING-STARTED.md Outdated
| `trainer.ranks`, `trainer.devices`, `trainer.lr`, `trainer.micro_batch_tokens` | the LoRA trainer; the LoRA itself is r 16, alpha 32 (`LORA_R`, `LORA_ALPHA` in `orchestrator/wiring.py`) |
| `trainer.max_generation_gap`, `trainer.gap_statistic` | how far the trainer's log-probs may be from the engine's before a sample is left out |
| `orchestrator.iterations`, `orchestrator.run_seed` | the run's length and seed |
| `orchestrator.min_scored_fraction` | the share of an iteration's samples that must be scored before it trains (0.9 by default); after one retry of the unsettled checks, a shortfall stops the run |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Medium] The fraction is over candidates handed to the reward service, not every sample.

A chain an engine lost, or one the leak check quarantined, is not in the denominator (loop.py, handed_over). 18 scored out of 18 handed passes even when the iteration started more chains.

Fix: say "the share of candidates handed to the reward service". Copilot flagged this too.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 7b72c88: it now says the share of candidates handed to the reward service, here and in the README's correctness table.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resolved — confirmed on the current head.

Comment thread aorlta/docs/GETTING-STARTED.md Outdated
seeds. TokenSpeed on AMD defaults to a greedy sampler that ignores temperature and seed; the engines are started
with `sampling_backend: triton`, and this check is what catches it if that ever stops taking effect.
- the round trip is not PROVEN: a weight update did not reach the engines. Nothing is trained or scored.
- the scored fraction is short: too many checks did not settle (look at the counts by reason in the summary). A

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Medium] That stop is raised before the iteration's summary exists.

scored_fraction_below_threshold returns before summary.json is written. The counts by reason are not in a summary for the failed iteration.

Fix: point at run_result.json for the stop, and at the reward service's own log for which checks did not settle. Copilot flagged this too.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 7b72c88: it points at run_result.json, whose stop.detail.policy has the counts before and after the retry and stop.detail.unsettled lists each unsettled check (candidate, leg, reason, worker), so the service log isn't needed for that.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resolved — confirmed on the current head.

Comment thread aorlta/docs/GETTING-STARTED.md Outdated

| GPUs | layout | runs |
|---|---|---|
| 1 | `engines: [0]`, `ranks: 1` (beside the engine), CPU checks | the Q&A example (`configs/qa-*.yaml`, `configs/arith-*.yaml`); measured below |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Medium] These configs, the 187 GiB row, and the PEFT export are not on this branch.

configs/qa-*.yaml, configs/arith-*.yaml and configs/hipk-*.yaml arrive in #613, and tools/export_adapter.py in #612. hipk.run.gpus is a key inside that example's profile, not a run-config key. Merging this guide first sends a reader at files the checkout does not have.

Fix: land this after #612 and #613, or mark those sections as coming with those PRs. Copilot flagged this too.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Marked in 7b72c88: the guide says up front which passages need #611, #612 or #613, each such passage names its PR, and hipk.run.gpus is no longer shown as a config key. That way this one can merge on its own.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resolved — confirmed on the current head.

…e export and compare tools come with #612 and #613

- The README's iteration diagram drew every parse rejection with a turn left as a repair turn. A repair happens only
  when the parser sets a rejection reason (the worked examples' parsers do); standin.parse sets none, so its reply
  with no code block ends the chain (rollout/chain.py, no_code_block).
- The score-run paragraph names tools/export_adapter.py (#612) and tools/eval_compare.py (#613) as additions.
- The aorta checkout row says #611 makes the import pre-flight load aorta's backends only for profiles that use them.
Copilot AI balanced review requested due to automatic review settings November 13, 2026 09:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vivekkhandelwal1

Copy link
Copy Markdown
Collaborator Author

@amd-vivekag your six points are addressed in 7b72c88 and b5f1ee7, with a reply in each thread. Could you take another look?

@amd-vivekag amd-vivekag left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No review comments — approving. The earlier findings are fixed on this head.

@vivekkhandelwal1
vivekkhandelwal1 merged commit dbcfffe into main Nov 13, 2026
27 checks passed
@vivekkhandelwal1
vivekkhandelwal1 deleted the docs/aorlta-getting-started branch November 13, 2026 14:28
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.

3 participants