Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 deletions docs/supported-models.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ Models that are being added are also tracked in issues labeled [new model](https
| Cua-S1 4B 0.2, `text` adapter | [Reference worker](../recipe/cua_s1/text.md) on Transformers and PEFT | Unverified | Validated ([#13](https://github.com/ThinkFlowLab/system1-omni/pull/13)) | Unverified | Python 3.12, the versions in `requirements-text.txt` |
| Cua-S1 4B 0.2, `text` adapter | [Native Rust worker](../recipe/cua_s1/native.md) on the [Qwen3.5 CUDA kernels](../src/backends/cuda/qwen3_5/README.md) | Not supported | Validated on compute capability 8.9 ([#19](https://github.com/ThinkFlowLab/system1-omni/pull/19), [#52](https://github.com/ThinkFlowLab/system1-omni/pull/52)) | Not supported | Compute capability 8.0 or newer, the CUDA toolkit to build, weights merged with `export_text_merged.py` |
| Cua-S1 4B 0.2, `multimodal` adapter | Reference worker on Transformers and PEFT, [`src/frontend/cua_s1.py`](../src/frontend/cua_s1.py); no recipe yet | Not supported | Validated ([#17](https://github.com/ThinkFlowLab/system1-omni/pull/17), [#18](https://github.com/ThinkFlowLab/system1-omni/pull/18)) | Not supported | The state is one PNG or JPEG image; upstream's `weights.lock.json` next to the base weights |
| Cua-S1 4B 0.2, `multimodal` adapter | [Native Rust/CUDA screenshot worker](../recipe/cua_s1/native_screenshot.md) | Preparation checks only; no CPU inference | RTX 4090 / sm_89, native vision and language Graph regressions; [scoped evidence and controls](../recipe/cua_s1/native_vision_graph.md) | Not supported | Verified BF16 language export, original vision checkpoint and FP32 vision adapter, rebuilt ABI 8 CUDA library; one PNG/JPEG and `choice` |
| Cua-S1 4B 0.2, `multimodal` adapter | [Native Rust/CUDA screenshot worker](../recipe/cua_s1/native_screenshot.md) | Preparation checks only; no CPU inference | RTX 4090 / sm_89, native vision and language Graph regressions; [scoped evidence and controls](../recipe/cua_s1/native_vision_graph.md) | Not supported | Verified BF16 language export, original vision checkpoint and FP32 vision adapter, rebuilt ABI 9 CUDA library; one PNG/JPEG and `choice` |
| Valen-Preview-0923 | [Python reference worker](../recipe/valen/reference.md); text state or one inline PNG/JPEG image; `choice` questions | Not supported | Author-run on RTX 5060 Laptop (sm_120, WSL2): one text and one 2×2 PNG request; input and readout parity ≤1e-6 against reference (model outputs not compared). Owner: community. | Not supported | Python 3.12, pinned Valen source/checkpoint, Qwen3.5-2B base, BF16 CUDA |
| Open-Jev-27B-v1.1 | [Native Rust/CUDA worker](../recipe/open_jev/native.md) on the shared Qwen3.5/3.8 executor | Not supported | Validated on H200 (sm_90) for the [74 single-candidate workload](../recipe/open_jev/validation.md) | Not supported | Compute capability 8.0 or newer, CUDA toolkit to build, exported merged weights and trained head |
| Open-Jev-9B | The same [native Rust/CUDA worker](../recipe/open_jev/native.md) | Not supported | Validated on compute capability 8.9 against the reference for [253 requests](../recipe/open_jev/validation-9b.md) | Not supported | Compute capability 8.0 or newer, CUDA toolkit to build, exported merged weights and trained head |
| JEMM / Qwen3.8-27B | [Native Rust/CUDA worker](../recipe/jemm/README.md) | Host checks only; no CPU inference | A800 (`sm_80`) [text and 1–4-image frozen corpus](../src/models/jemm/README.md#validation) | Not supported | Pinned `jemm-native/2` export with BF16 base and unmerged FP32 LoRA, selected untied LM head, cuDNN 9 and additive reference CUDA symbols |
| autotrust/JEV-27B-VL | [Experimental native worker](../recipe/jev_vl/README.md), single-question API | Contract tests only; no CPU inference | H800 frozen-corpus check; [experimental scope and limits](../recipe/jev_vl/validation.md) | Not supported | Pinned merged checkpoint, rebuilt ABI 8 CUDA library; image inputs require offline Transformers preencoding |
| autotrust/JEV-27B-VL | [Experimental native worker](../recipe/jev_vl/README.md), single-question API | Contract tests only; no CPU inference | H800 frozen-corpus check; [experimental scope and limits](../recipe/jev_vl/validation.md) | Not supported | Pinned merged checkpoint, rebuilt ABI 9 CUDA library; image inputs require offline Transformers preencoding |
| CLM-v0.1-8B | [External `clm-serve` recipe](../recipe/clm/README.md) with a CPU stub embeddings server | **Stub-encoder contract checks only** ([#23](https://github.com/ThinkFlowLab/system1-omni/pull/23)); not real Qwen3-8B decisions | Real encoder unverified by the merged recipe | Unverified | Python, upstream CLM and head checkpoint; a real encoder requires a separate embeddings server |
| LFM2.5-350M | [Transformers choice worker](../recipe/lfm2/README.md) | Tiny-model regression tests; full checkpoint unverified | L40S FP16 [recorded execution checks](../recipe/lfm2/RESULTS.md) | Unverified | Python 3.12, [pinned dependencies](../src/models/lfm2/requirements.lock.txt), explicit candidate batch size |
| CLM-v0.1-8B | [Native Rust engine](../src/models/clm/README.md), `clm-run`, in front of a Qwen3-8B `/v1/embeddings` server | Engine-only agreement **4.5e-06** on identical vectors ([#29](https://github.com/ThinkFlowLab/system1-omni/pull/29), [validation](../recipe/clm/native/VALIDATION.md)); contract checks documented ([#23](https://github.com/ThinkFlowLab/system1-omni/pull/23)) | **Validated on compute capability 8.9** ([#29](https://github.com/ThinkFlowLab/system1-omni/pull/29), [validation](../recipe/clm/native/VALIDATION.md)) | Unverified | Rust to build and a separate Qwen3-8B `/v1/embeddings` server for the encoder; the engine itself has no device-specific code |
Expand Down
6 changes: 3 additions & 3 deletions recipe/cua_s1/native.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ The unmerged precision profile has source-pinned A800 80 GB (sm_80), CUDA 13.0
evidence at ABI-8 source `7293c71cfb738504a30ff033ae3567f3368333c1`, plus earlier
cumulative ABI-8 and independent ABI-6 campaigns linked in
[PR #143](https://github.com/ThinkFlowLab/system1-omni/pull/143).
The current branch uses ABI 8. The legacy-readout compatibility fix was separately
The current branch uses ABI 9. The legacy-readout compatibility fix was separately
GPU-tested at `f212c56f23ac750ebfa38f4c72e9fcdc914bf1cd` on the same pinned A800.
See the [source-pinned repair evidence](https://github.com/Levius-Fubuki/system1-omni/releases/tag/cua143-merged-readout-f212c56f-20261015).
The earlier merged path was checked on an RTX 6000 Ada (sm_89) with CUDA 13.2.
Expand Down Expand Up @@ -35,7 +35,7 @@ For the local CUDA Graph experiment, also set `CUA_S1_GRAPH=1`. The first use of
each exact ordered prompt-length vector warms the GEMM plans and captures the forward pass;
later requests replay it with freshly uploaded token ids. Each language mode keeps a separate 64-entry FIFO cache. Growing the scratch allocation clears the captures before freeing
their buffers. Capture adds first-use latency; leave the variable unset to use
the eager control. Rebuild both the worker and CUDA library together (ABI 8).
the eager control. Rebuild both the worker and CUDA library together (ABI 9).
If capture fails, the worker returns the completed eager result and disables
Graph capture/replay for its remaining lifetime, logging the failure to stderr.

Expand All @@ -62,7 +62,7 @@ against the pinned reference. Results remain scoped to that source and artifact.
Merging the adapter, TF32/BF16 GDN intermediates, and different
GEMM reduction policies can change decisions on close or tied options. Re-export
with the command above to use the precision profile. Rebuild worker and library
together: this branch now uses ABI 8, and the precision profile also requires the new optional
together: this branch now uses ABI 9, and the precision profile also requires the new optional
FP32 GDN symbols. No cuDNN or Python is needed at serving time.

The validation scope and tolerances are in
Expand Down
2 changes: 1 addition & 1 deletion recipe/cua_s1/native_screenshot.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ The export refuses an existing output directory. Keep the export and original
weights immutable while serving. `89` targets the validated RTX 4090; choose your
device's supported compute capability when building. Rebuild the CUDA library
and every native consumer together when the ABI changes. This branch requires
ABI 8, including the default host-feature path.
ABI 9, including the default host-feature path.

## Start the worker and frontend

Expand Down
2 changes: 1 addition & 1 deletion recipe/cua_s1/native_vision_graph.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Use the pinned base and multimodal adapter revisions listed in the
[model contract](../../src/models/cua_s1/README.md#pinned-revisions), and the
verified language export produced by `export_multimodal_language.py`. Keep all
checkpoint files immutable during execution. Build the worker and the current
CUDA library together for **ABI 8**. Resident feature validation adds
CUDA library together for **ABI 9**. Resident feature validation adds
`cs1_get_device` and `cs1_bf16_finite`; older libraries are rejected even when
resident features are disabled.

Expand Down
4 changes: 2 additions & 2 deletions recipe/jev_vl/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ The author measured the worker on one H800 80 GB (`sm_90`). A maintainer also
on an earlier revision. These runs do not validate later code changes or maximum
context lengths. Use an allocated GPU on
scheduled hosts. Build the CUDA library and Rust workers from the same revision;
the integrated backend uses **ABI 8** and older libraries must be rebuilt.
the integrated backend uses **ABI 9** and older libraries must be rebuilt.

```sh
src/backends/cuda/qwen3_5/build.sh target/release 90
Expand Down Expand Up @@ -141,7 +141,7 @@ The image-prefix tokenizer check requires the exported checkpoint. First
[restore the frozen corpus](validation.md#restore-the-frozen-corpus).
It uses the corpus's fixed `[1, 60, 60]` grid and synthetic embedding
rows, so it checks token/position splitting rather than the vision encoder.
CUDA kernel tests require an allocated GPU and rebuilt ABI 8 library:
CUDA kernel tests require an allocated GPU and rebuilt ABI 9 library:

```sh
JEV_VL_EXPORT=$PWD/weights/jev-vl-merged \
Expand Down
2 changes: 1 addition & 1 deletion recipe/open_jev/native.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ or an incomplete export. The saved limit defaults to 4096 tokens per candidate;
The CUDA kernels require compute capability 8.0 or newer. The current build
target below is Ada (`89`); pass your GPU's compute capability explicitly.
The CUDA shared library and Rust workers must be rebuilt together for ABI
version 6, which includes vision, CUDA Graph and prefix-continuation entry points.
version 9, which includes vision, CUDA Graph, prefix-continuation and fixed-GEMM entry points.

```sh
src/backends/cuda/qwen3_5/build.sh target/release 89
Expand Down
24 changes: 18 additions & 6 deletions src/backends/cuda/qwen3_5/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,24 @@ The norm, elementwise and q/k preparation kernels round to bfloat16 where Transf
the BF16 rounding of both attention and sigmoid before multiplication. The native
workers use this entry point; the separate operations remain available for kernel
comparisons. Rebuild the library and all native Rust consumers together for
**ABI version 8**, even with resident features disabled. ABI 8 retains the vision,
CUDA Graph, gated attention and prefix-continuation entry points and adds
`cs1_get_device` and `cs1_bf16_finite` for device feature validation. Older
libraries are rejected at load. See the
**ABI version 9**, even with resident features disabled. ABI 9 retains the vision,
CUDA Graph, gated attention and prefix-continuation entry points and ABI 8's
`cs1_get_device` and `cs1_bf16_finite` for device feature validation, and adds the
fixed-algorithm GEMM handle below. Older libraries are rejected at load. See the
[Cua-S1 resident-feature recipe](../../../../recipe/cua_s1/native_vision_graph.md#gpu-resident-vision-features)
for the opt-in path, lifetime contract and regression commands.

cuBLASLt's heuristic picks a GEMM algorithm per M, so a row's result can change with
the number of rows in the call: a prefix and its branch, run separately, round
differently from the same tokens in one pass. `cs1_gemm_create_fixed` returns a handle
that keeps one algorithm per weight shape for every M, the heuristic's first choice at a
reference M among algorithms without split-K, so each row's result is the same whatever
M is and wherever the row sits. cuBLASLt doesn't document this property;
`fixed_gemm_rows_do_not_depend_on_m` checks it, so run it on a new GPU before relying
on it (it passed on sm_89). It is slower for some shapes and faster for others: on an
RTX 6000 Ada, the down and output projections take up to about 4 times as long at small
M without split-K. `cs1_gemm_create` remains the default.

Gated DeltaNet preparation stores converted TF32 operands in three-byte component planes, preserves the original four-term TF32 accumulation, and writes U/W fragments directly as bfloat16. Dynamic shared memory is 72 KiB per block. The [H200 comparison](../../../../benchmarks/gdn/README.md) records complete GDN call latency, numerical checks, and the small end-to-end change measured with the Open-Jev worker from PR #55.

The shared Rust model can pack independent sequences for input and gate/up GEMMs.
Expand All @@ -34,7 +45,8 @@ entry points. Open-Jev uses this path within requests; Cua-S1 keeps single-promp
Prefix continuation retains full-attention KV, three convolution input rows,
and FP32 Gated DeltaNet state at 64-token chunk boundaries. It is used by the
experimental JEV-VL worker; existing full-prefill callers keep their own paths.
ABI 6 adds mandatory copy and prefix entry points after ABI 5 native vision.
ABI 6 adds mandatory copy and prefix entry points after ABI 5 native vision,
and ABI 9 adds the fixed-algorithm GEMM handle.
Rebuild the library and **all** Qwen worker binaries together; older libraries
are rejected. Current-branch GPU regression is required before release.

Expand Down Expand Up @@ -66,7 +78,7 @@ Torch 2.14 cumulative-decay association, and a final BF16 output cast. Each call
starts with zero state; prefix continuation is rejected by the model adapter.
The context drains its last stream before destruction, and is retired before
that stream. Rebuild the library and all consuming workers together for the
current ABI 8, including this optional group. The independent A800 qualification
current ABI 9, including this optional group. The independent A800 qualification
at `27f77e49868d84b091aa804f02ccb4d3474a9a00` used ABI 6; the earlier cumulative
campaign used ABI 8. Neither campaign qualifies the current integrated source.
Builds now link both cuBLAS and cuBLASLt. Every consumer of the rebuilt shared
Expand Down
Loading
Loading