Skip to content

Landing next #286

Open
Open

Description

@ashhart

TensorFold 1.1.1 is the current release. Python serving remains frozen at v0.6.6; new engine work targets Zig on Metal, CUDA and the opt-in backends.

We plan a patch release every day or two. A PR that fails its gates moves to the next one; a listed dependency or planned feature is not a release date or a claim that its checks have passed.

Shipped in 1.1.0

1.1.0 shipped the Qwen CUDA base and shared EXL3 operators, Flash Next CUDA, Gemma 4, Bolt/RADIO video, and Nemotron cache and compatibility fixes. Drama 3 provides native speech with the checked default-voice HTTP subset, credited to @plotarmordev and @drowzeys.

Flash Next on Metal defaults to the single host; explicit parallel counts above one select shared sessions. The separate shared-session cache-count and lone-decode performance repairs remain deferred. Windows remains from source. H3/FastH3 and Qwen-Image ship experimental tools/library components; text encoding and final media processing still use external pipeline pieces.

The GLM-5.3-Flash CUDA pair shipped through #976 with #855, #984, #995, #979 and #1007, including EXL3, media, index rings, packed linears, DFlash2 and kept-state repairs. Thanks to @BobClawblaw and @heitke. A community run on two GB10s at TP=2 now loads and serves the whole ModelOpt NVFP4 checkpoint on 1.1.0, reported in #1040 by @Bizuayeu; scored prompts and more than two ranks remain untested.

Shipped in 1.1.1

1.1.1 also requires a valid Host, checks loopback names and browser origins before routing, and protects routes with configured keys while retaining the documented public exceptions. Key files writable by group or others are refused. Qwen3.8-27B Metal keeps Neural Engine prompt columns off by default because fp16 prompt rows can change replies; TF_ANE_COLUMNS=N is an explicit opt-in.

The Hub fake-IP and validated-endpoint correction, #1037, is integrated and ships in the next app beta. Private and metadata addresses remain refused on the Hub path. Thanks to @samwang0041-star for the report.

Qwen3.8-27B cold prefill at 64K on sm_120 is about 2% slower than 1.1.0 in three reported comparisons. Follow-up work is queued for 1.1.2; this is not a claim that the regression is fixed.

Landing next: 1.1.2

These are planned entries, conditional on their final integrated gates. Ready means ready to carry into the candidate, not released or fully qualified. We will do the rebases and retain contributor credit.

PR State and remaining work
#1028, HIP prompt cancellation, @ThinkOffApp Ready. The credited changes and our regression for both real callback forwards are prepared; integrated cancellation and follow-up-request checks still gate release.
#1034, Windows host tests, @jayleaton One ask open. Keep the macOS socket-pair rank-wire tests working when restricting the unsupported Windows transport, then refresh Mac/Linux host checks. Windows GPU serving and release archives are separate.
#1042, Flash Next ModelOpt recipe, @akol1 carrying @balancedscorpion's measurements One ask open. Supply the concurrent-chat receipt or omit that row. The measurements must remain dated to the pre-1.1.0 build; they are not 1.1.2 results.
#1043, benchmark host identity, @ThinkOffApp Draft, one fix asked. Preserve GPU positions when a reported device name is invalid, then supply the host controls and device receipts.
#1044, HIP drafter refusal, @ThinkOffApp Draft, one wording correction asked. Distinguish refusing an external DFlash2 drafter from the engine's supported native MTP; refusal controls and logs remain required.
#1045, benchmark MTP counters, @ThinkOffApp Draft, one fix asked. Check aggregate counter overflow so valid large counters cannot abort a completed run, with the regression and receipt controls.
#1046, Flash Next CUDA prompt tiles, @Mirrdhyn One ask open. Validate the chunk override before acquiring resources or unwind those resources on refusal. The indexer also affects sparse decode; retain every capture output and qualify prompt, decode, media, rank and session behavior together.
#1047, Qwen CUDA live-row routing, @jschmied One blocking ask open. The wide expert-plan path must honor the live-row count too; padded rows must not affect counts or indexing. Bucket-edge and joint drafting checks are required before carrying it.
#1038, Bolt on Metal, @trickyfalcon Draft. Per-layer top-k and tensor checks, early unsupported-chip refusal, shared operators, RADIO images, corrected fidelity claims and numerical/session receipts remain required. Existing M3 receipts do not qualify M5.
#1055, M1 large-grid simdgroups, @mrv777 Carried onto the 1.1.2 line with credit; host checks pass.
#1057, Super VL one tower pass per image, @plotarmordev Carried. On a GB10, cold one-image TTFT fell 20.3% and two-image 21.8%, with identical tokens.
#1058, Nemotron shared-window side stream, @plotarmordev Carried, held with the #1059 depth fix: count gains 0.4-0.9%, and 4-stream prose lost 2.6% from shallower drafting until that lands.
#1062, Flash Next CUDA structured output and required tool calls, @Mirrdhyn Carried; our GB10 constrained and unconstrained cells are next.
#1064, --thinking-reserve, @BobClawblaw Carried, off by default; served thinking-on cells are next.
#1056, Gemma 4 CUDA norm tails (#1048 step 1), @jschmied Two checker fixes asked before we carry it.
#1066, GLM-5.3-Flash Metal eh_proj tile kernel, @EugeneClaw Asks open: one-line comments, the fallback claim, output hashes against the scalar path, and measured chips for the default.
Fixes from reports #643's late Neural Engine share check (@RS91Dev), #993's GLM CUDA prompt snapshots (@ss-cong; GB10 exact, 4 kept states where 1 fitted), #1059's shared-round depth probe and #1060's NCCL 2.30 minimum (@plotarmordev) are carried; device checks continue.

Flash Next Metal prompt steps for #1032, bounded Metal residency with real idle keepalive work, CUDA per-stream drafting precision and the server's total read budgets and connection cap are prepared for review and integrated checks. #1032 stays open until the prompt-stepping fix ships. The Flash Next Metal startup-admission work for #1039 still needs complete image-memory accounting, failed-load cleanup and known-fitting controls before it is ready. We are also investigating the sm_120 64K regression above; no speed recovery is promised yet.

#1048's Gemma 4 CUDA proposal is accepted, thanks to @jschmied for asking first. Start with the shared CUDA operators; the image path is part of the support bar. Shared attention and optional rounding controls must preserve current callers. This accepts the work, not a completed backend or a guaranteed 1.1.2 landing.

Held for a later 1.1.x

MiMo-V2.6-Flash, #728 and issue #725, is not included in 1.1.1. Its current CUDA path needs a Python-captured Triton kernel set that TensorFold does not ship. Native kernels for its eight Triton launches must come first, then full-model fidelity, draft/plain, resumed/fresh, concurrent/solo, two-rank failure and compiler/resource gates. Thanks to @ajensenwaud, @jayleaton and the common EXL3 contributors.

Living Weights qualification and #1029 remain held as described above. DeepSeek serving waits on #827; there is no release opt-in. Embeddings, mixed Metal rounds, GLM context-parallel prompt work and opt-in FP8 KV remain separate proposals or profiling work, with their own approvals and gates; none is a promised 1.1.2 feature. The separate Flash Next shared-session repairs remain deferred.

#606 is integrated in 1.1.0; #874 is parked pending its author's resumption, and #930 needs the requested corrections. We will keep a clear outcome on every thread: a merge, integration with credit, an explained closure, or an author-agreed pause. #593 and #832 are covered by their released integrations; #847 stays open until DeepSeek's serving gate passes. #840 and this landing tracker stay open.

We merge contributor commits where they fit cleanly and retain their authorship. When integration needs a rewrite, we credit the original contributors by @handle and distinguish the maintainer changes. We will do the rebases for authors and carry small agreed fixes at landing. Please provide the pinned source and checkpoint revisions, reproducible commands, public fixtures, full token hashes, reference comparisons, memory measurements and before/after performance receipts, with failures and skips stated plainly. A changed head needs its affected checks refreshed.

Every integrated candidate must pass host builds on Mac and Linux, the host suites and kernel contract, then drafted/plain, resumed/fresh and concurrent/solo checks for every family and backend it touches. Changed arithmetic needs independent FP64 bounds and teacher-forced fidelity checks. Native image paths need their own processor, tower, embedding splice and cache identity checks; an exceptional temporary refusal must be named explicitly. Shared lanes and drafts stay in the engine, and NVIDIA's checkpoint math stays the default. Privacy, secret and copied-code checks include controls that prove the scanners detect planted findings. Release testing also covers cold prompts, long contexts, memory classes, archives and installation, against 1.1.1, 1.1.0 and the applicable reference server. Only work that passes its gates ships.

The contribution rules and receipt format are in CONTRIBUTING.md; the released capabilities and remaining qualifications are in the changelog.

Activity

  1. pinned this issue on Oct 2, 2026
  2. ashhart commented on Oct 7, 2026

    @ashhart
    OwnerAuthor

    This issue stays open. It is the board for what has landed and what has not.

    On the Zig line in progress, the native server is Metal. It serves Nemotron, Flash Next, GLM-5.3-Flash and the Qwen3.5-2B recipe. Flash Next is one reply at a time and still needs its recorded kernels. Nemotron on CUDA is the command line. The other families, the CUDA server, prompt reuse, and logprobs are not in that server yet. The Python engine stays frozen at 0.6.6.

    A pull request or an issue that names a Zig gap is rewritten on the Zig line. The commit can carry a Co-authored-by line for the person who reported it, using the GitHub noreply address. We will keep this issue updated as families pass their gate. A family that misses stays on the Python line, with an owner and a date, rather than a silent claim that it shipped.

  3. grearjake-star commented on Oct 7, 2026

    @grearjake-star
    Contributor

    Thank you for TensorFold, and for the careful notes on every closed PR. They made it easy to see where each change stands.

    For DGX Spark (GB10) owners who run Flash Next as EXL3 on the CUDA engine, we are carrying that work on in a fork, SparkFold: https://github.com/grearjake-star/TensorFold/tree/spark-exl3

    It starts from 0.6.5 with our closed PRs and the rest of our GB10 changes applied, and it drops the Apple paths so it can stay small and CUDA-only. The package and the tensorfold serve command keep their names. Everything stays Apache-2.0 with your copyright and NOTICE kept, and fixes go back to the Zig engine any time they are useful there.

    Environment: SparkFold 6431c1b (tip e0f3276 changes only docs and offline tools). One DGX Spark (GB10, 128 GB). Qwen3.8-Flash-Next EXL3 4.05 bpw (turboderp 4.05bpw_h6_ng6). --parallel 8 --context 262144, with the settings listed in the README (TF_NGRAM_LOCK=27, TF_SOLO_ROWS=65536, TF_KEEP=16, ...).

    • The numbers below use our trained MTP draft head for 4.05, which is not shipped in the fork; with the pack's own head drafting is slower.
    • They also use TF_EXL3_HC_FP8=1, which changes output bits slightly; drafted still equals serial within that setting.

    Exactness: drafted == serial on every gate run. Each stream under --parallel equals its solo reply (c2/c4/c8: 16/16). The lone stream equals the single-stream reference (16/16).

    Decode, gate (household prompts, 256 tokens, T 0.7), aggregate tok/s:

    lone c2 c4 c8
    63.4 85.4 111.2 145.2

    Decode, thinking off, one full answer at c=1, kept-busy streams at c≥2 (the method of the community board at myllmbox.com; its prompts are not public, so ours are equivalents; measured on our house build, which is this code plus the head above):

    prompt, streams c=1 c=2 c=4 c=8
    code + explanation 69.4 130.0 176.4 217.8
    JSON 110.3 280.5
    long prose 56.1 142.8

    Prompt speed:

    • 6K cold first token: 2.97 s.
    • A 24K prompt arriving beside two decoding streams: first token in 19.3 s, longest gap in those streams 1.12 s.
    • Follow-up turn after a 24K turn: 0.27 s.
    • 128K needle: 3/3, first token 68.7 s.

    Tests: 450 GPU tests pass on the gate; the CPU suite runs 3307 passed, 0 failed, 71 skipped (PIL and tokenizers missing on this box).

    What we did not run: c=16 (the fork serves 8 seats), TP=2, vision, and Macs (out of scope for the fork).

    Written with AI assistance (Claude Code).

  4. ashhart commented on Oct 16, 2026

    @ashhart
    OwnerAuthor

    Thank you, @grearjake-star, for the SparkFold receipts and for spelling out the private MTP head and FP8 setting behind the 63.4 tok/s lone and 145.2 tok/s eight-stream gate.

    The native Flash Next CUDA work is now #869 under #472, and the shared EXL3 work is coordinated in #832. Images and the native draft, resume and concurrency checks remain part of that port. Your fork's measurements will stay attributed to its exact build and settings.

    We'll refresh this board with the 1.0.12 changes and the remaining native work so contributors can find the right place for each follow-up.

    Posted by Ash's AI Assistant Synthena

  5. plotarmordev commented on Oct 17, 2026

    @plotarmordev
    Contributor

    Ash, could #985 join the third wave next to #920–#927? It is stacked on #927 and moves the Drama 3 backbone's full attention to the reference's 64-key softmax tiles (worst row 0.80 to 0.92, KL 0.024 to 0.006). It is testing, not qualified; its body lists the gaps.

  6. ashhart commented on Oct 17, 2026

    @ashhart
    OwnerAuthor

    Thanks @plotarmordev. Releases now go out every day or two, so #985 doesn't need to wait for a wave: it ships in the first release after its three fidelity bars pass (all-row cosine, last-row cosine and relative L2). The worst row going from 0.80 to 0.92 and next-token KL from 0.024 to 0.006 is real progress. We'll capture a frozen reference decode on our hardware so the bars are checked against something fixed. If you already have one, please attach it to #985.

    Posted by Ash's AI Assistant Synthena

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions