Skip to content

feat(gguf): serve GLM-5.3-Flash GGUF checkpoints on glm5-next - #721

Merged
jason-fxz merged 7 commits into
FlashML-org:mainfrom
void-mckenzie:feat/gguf-glm5-next
Oct 20, 2026
Merged

jason-fxz merged 7 commits into
FlashML-org:mainfrom
void-mckenzie:feat/gguf-glm5-next

Conversation

@void-mckenzie

@void-mckenzie void-mckenzie commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Part of #671 (Model Support: glm5-next).

Follows the per-family GGUF adapter pattern established for qwen4exp in #690 (config from KV metadata through the family's own parse_config, checkpoint-leaf to_gguf map, fused() state-dict emission, GGUF expert banks, text-only TP=1).

What

Serves llama.cpp glm5-next GGUFs — unsloth GLM-5.3-Flash-GGUF — on the GGUF quant kind from #690, reusing the existing glm5_next model classes:

  • config: parse_gguf_config builds the text config from the GGUF KV metadata. The writer carries attention.head_count_kv as a per-block list (0 = KDA, 1 = MLA), which encodes the 34/11 hybrid layout directly; the older unsloth glm5next spelling carries it too and stays as an alias. The trailing MTP block (nextn_predict_layers) is dropped exactly like the HF loader drops the MTP layer, and the MLA head widths come from the *_length_mla keys. Metadata the model cannot express — a scalar head_count_kv, non-uniform swiglu_clamp_exp/swiglu_clamp_shexp, indexer types without a full indexer, expert_gating_func other than sigmoid, rotary dims on the main attention — is refused with a clear error, as llama.cpp does.
  • weights: iter_gguf_weights maps every tensor into the glm5_next state dict and undoes the converter transforms: A_log is stored pre-transformed as -exp(A_log) and inverted at load; the MLA kv_b_proj is split per-head as attn_k_b/attn_v_b (k transposed) and re-fused into the dense [H*(nope+v), lora] layout the module's absorption reads, dequantizing when the quant stored it packed; the q|k|v conv kernels concatenate on the channel axis (4-D spellings with a trailing unit dim included, as llama.cpp reads them). The mixed-type fused KDA in_proj (Q8_0 q|k|v + BF16 b|f_a|g_a, as shipped) rides the feat(gguf): run experts whose gate_up and down mix float and quantized types #702 segments.
  • experts: the routed experts load as GGUF expert banks at their shipped per-layer types — unsloth dynamic quants (IQ3_S gate/up + IQ4_XS down with Q8_0 outlier layers) pass through natively.
  • registration: Glm5NextGGUFForCausalLM registered and claimed in the AOT table; embed_tokens takes quant_config so the Q8_0 token_embd serves packed. check_scales (feat(gguf): apply the weight scales of nvfp4 gguf tensors #732) runs at config parse like the llama, qwen3 and gemma4 loaders.

Verified

  • Against unsloth GLM-5.3-Flash-UD-IQ4_XS (5 split shards, sha256-checked against the repo): the full 45-layer engine (RTX 5090 32GB, 40k context, 6 GiB expert slot cache) loads the experts as host banks and serves coherent, correct output over /v1/chat/completions; the tokenizer, eos set and chat template come from the GGUF via the shared loader.
  • Measured, bs=1 on that setup: prefill ≈ 1.9k tok/s steady-state on 8k-token chunks (first-ever chunk pays a one-time Triton autotune), decode ≈ 14-16 tok/s — expert-fetch bound (top-8 of 288 × 43 layers streaming from pinned host banks over PCIe); details in the stats comment below.
  • Config parse field-for-field matches the zai-org/GLM-5.3-Flash config.json through glm5_next.config.parse_config; the state dict matches the constructed model 1042/1042 tensors (names + shapes), re-verified by scripts/gguf_check's dry load on the real file. tok_compare: 0 differing texts vs the HF tokenizer on all 153,725 vocab words and 20k random combos.
  • scripts/gguf_check over every GLM-5.3-Flash GGUF HF search finds (2,118 shards / 107 repos → 784 served-arch files): 267 pass; every failure is on the ignore list, a not-model file (per-layer exports, drafts), or a clear refusal. The common quants from the big repos (unsloth, orcarouter, Maya, huihui-ai, autotrust, ggml-org, GSQ-RCO, AesSedAI) all pass.

Text-only, TP=1 — same status as the other GGUF families. Vision (mmproj sidecar) is a natural follow-up.

@void-mckenzie
void-mckenzie marked this pull request as draft October 16, 2026 18:43
@void-mckenzie

void-mckenzie commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor Author

Test stats & setup

Workload results (bs=1, single RTX 5090):

Test Result
Prompt processing, 29,207-token prompt (4× 8,192 chunks) steady-state ~1.6–1.7k tok/s per chunk (log input throughput: 1599.6 / 1678.1 on the middle chunks); first-ever chunk pays a one-time Triton autotune at the first big prefill shape; whole request 40.6 s incl. tokenizing 103 KB
Decode, coding task (write a SQLite-backed LRU cache module), model-default sampling, 600 tokens 14.3–15.6 tok/s steady-state (log gen throughput, 40-step interval); 44.2 s end-to-end — expert-fetch bound: top-8 of 288 experts × 43 MoE layers streaming from pinned host banks over PCIe into the 6 GiB slot cache
Functional coherent, factually correct chat + code generation via /v1/chat/completions

Model: unsloth GLM-5.3-Flash-IQ4_XS (5 split shards, ~159 GB), arch glm5-next. Geometry: 45 decoder layers (34 KDA linear + 11 DSA NoPE-MLA with kpool-4 indexer) + 1 MTP block (dropped at load), hidden 4096, 288 experts top-8 + 1 shared, mHC×4, vocab 154,880. Quant mix as shipped: experts gate/up IQ3_S + down IQ4_XS with one all-Q8_0 outlier layer, embedding & lm_head Q8_0, kv_b / indexer projections BF16, norms / routers / mHC F32.

Launch: ft serve --gpu 0 --max-seq-len-override 40000 --moe-cache-mem 6GiB --memory-ratio 0.82 → MoE offload (552 expert slots × 11.12 MiB unified cache), radix cache, bf16, TP=1. One serving note: at the default --memory-ratio 0.9 with a 40k window the KV pool leaves the GPU with ~50 MiB free and the first-use Triton autotune (float-expert grouped GEMM) OOMs the worker — 0.82 leaves ~5.5 GiB headroom and is what the numbers above ran with.

Host: Ryzen 9 7950X3D (32 threads), 187 GiB RAM (~130 GiB pinned expert banks), RTX 5090 32 GB (sm_120), driver 580.95.05, CUDA 13.0, Linux 6.8.0-136-generic, shards on a Crucial T500 2 TB NVMe. Stack: Python 3.10.19, torch 2.14.1, triton 3.8, transformers 5.18.0.

@jason-fxz Upstreaming my private branch that I was using for GLM 5.3 Flash GGUF. Rebased to current main to align this branch with the gguf direction chosen by the Repo. I also have a branch up for deepseek v4 privately, if you'd like me to help you finish these gguf ports, let me know :)

@jason-fxz

Copy link
Copy Markdown
Collaborator

Could you first rebase onto the current main? The branch conflicts with it, and these GGUF changes landed since its base:

Then, before this goes further, could you run the GGUF load check on the GLM-5.3-Flash files? It is on the feat/gguf-check-tool branch (no PR yet), under scripts/gguf_check/, and runs against your checkout:

git fetch https://github.com/FlashML-org/FreeToken feat/gguf-check-tool
git checkout FETCH_HEAD -- scripts/gguf_check

# header-only stubs of every GLM-5.3-Flash GGUF on HF (about 15 MB each)
PYTHONPATH=python python scripts/gguf_check/fetch_headers.py ~/gguf-stubs --search GLM-5.3-Flash > fetch.jsonl
# kernel table, once per GPU architecture
PYTHONPATH=python python scripts/gguf_check/probe_kernels.py kernels.json
# CPU only, no weights read
PYTHONPATH=python python scripts/gguf_check/check.py --kernels kernels.json --out glm53.jsonl ~/gguf-stubs

For each file it checks that the config parses, that the model builds and the reader yields exactly its state dict, that the expert banks build with the right shapes, that every ggml type has its kernels, and that the tokenizer and chat template load. README.md has the details.

The bar: the common quants from unsloth, ggml-org, bartowski and others should pass. Every failure should be a clear refusal from the loader or a broken file. Please post the check.py --report glm53.jsonl summary here.

These failures are things we do not serve today, so you can ignore them:

  • IQ1_M: no MMQ kernel, so it fails above 8 tokens per batch
  • TQ1_0 / TQ2_0: no ggml-cuda kernel
  • N is not a valid GGMLQuantizationType: ik_llama.cpp types (IQ2_KT, IQ4_KSS, ...) and the removed Q4_0_4_4 / Q4_0_4_8 / Q4_0_8_8
  • NVFP4 token_embd
  • experts whose gate and up use different ggml types
  • MTP-only draft files
  • tokenizer: no chat template: base models
  • runs past the end of the file: truncated uploads
  • architectures listed under "not checked" (draft models such as dflash, eagle3)

For NVFP4 load: the .scale / .input_scale tensors are handled since #732. Please call check_scales from models/gguf/tensors.py the way the llama, qwen3 and gemma4 loaders do, instead of refusing these files.

@jason-fxz jason-fxz added the gguf label Oct 19, 2026
void-mckenzie added a commit to void-mckenzie/FreeToken that referenced this pull request Oct 20, 2026
check_scales at config parse like the llama, qwen3 and gemma4 loaders
(review on FlashML-org#721): a .scale / .input_scale outside an NVFP4 weight now
fails with a clear error instead of loading silently unread.
@void-mckenzie

Copy link
Copy Markdown
Contributor Author

Hi @jason-fxz , thanks for the review. I've Rebased, check_scales added, and the GGUF load check run. Serving also verified end-to-end
against the real UD-IQ4_XS (sha256-checked against the repo), including the correctness half
(tok_compare vs the HF tokenizer) and a bs=1 benchmark pass.

Rebase & #732

GGUF load check

I could not check every GLM-5.3-Flash file on HF, so I ran it on the usual, most-downloaded ones:
header stubs of every GGUF in the 9 most-downloaded repos (unsloth 942k, orcarouter 487k,
Maya 239k, antirez 61k, huihui-ai 38k, autotrust 38k, bartowski 13k, ggml-org, AesSedAI;
30-day downloads), 70 files, kernel table probed on the RTX 5090: 40/69 files of served architectures pass glm5-next 40/68 llama 0/1 not checked, architecture not served: glm5-next-vision 1

repo result failures
unsloth 11/12 UD-IQ1_M (MMQ kernel gap, ignore list)
BoldingBuilds/orcarouter 4/4
peasantsmith/Maya 4/5 vocab-only sidecar (arch llama, split-naming refusal)
antirez 0/4 3x missing glm5-next.kda.head_dim (his writer omits the key) + vision encoder
huihui-ai 9/10 1x IQ1_M
autotrust 1/1
ggml-org 3/5 2x MTP-only draft files (mtp-*)
bartowski 3/24 21x mixed gate/up expert types (his per-projection K/IQ layouts)
AesSedAI 5/5

Failures, grouped: 21 mixed gate/up expert types, 3 missing kda.head_dim, 2 IQ1_M kernel gap,
2 MTP-only drafts, 1 metadata-only file, 1 vocab sidecar. Every failure is on the ignore list
or a clean refusal.

Not covered

  • experts whose gate and up use different ggml types (all of bartowski's K/IQ range)
  • MTP-only draft files (ggml-org mtp-*)
  • glm5-next-vision (mmproj sidecars) - vision follow-up
  • antirez's writer: no kda.head_dim KV (could fall back to a tensor census like the
    pre-list head_count_kv path, if wanted)
  • IQ1_M above the ignore-list batch size

Fixes the check + serving run caught (on the branch, each with a regression test)

  1. Dynamic quants quantize tensors the reader assumed float: the MLA kv_b halves (Q8_0),
    the mHC mixers, the indexer's wk / weights_proj / compressor gate. kv_b_proj joins the
    spec's unquantized_modules (same shape as qwen3.5's router exemption; glm_moe_dsa keeps
    its kv_b dense for the MLA absorption for the same reason) and float-expecting reads
    dequantize through the vendored gguf-py at load. wq_b keeps serving its checkpoint quant
    packed, per attention.py's split.
  2. The glm5 pre-tokenizer spelling: llama-vocab.cpp maps "glm4" and "glm5" to the same
    CHATGLM4 pre-tokenizer with ignore_merges; the loader now does too. tok_compare before:
    22,840/153,725 vocab words differ from the HF reference; after: 0 everywhere.
  3. MMQ tail padding sized by ggml type and k: pad_rows added one zero row of k columns,
    which only covers the bytes MMQ reads past the last row when k >= half a padding unit (512);
    the KDA f_b/g_b (k = 128, Q8_0) are the first tensors below that and died at the first
    mul_mat. Found serving the real file; the dry load never runs a forward.

Test stats & setup

bs=1, single RTX 5090, on unsloth UD-IQ4_XS:

Test Result
Prompt processing, 53,717-token prompt (8,192 chunks) steady-state ~1.9k tok/s per chunk as the expert slot cache warms (log input throughput 1,545-1,562 cold, 1,886-1,914 warm); first-ever chunk pays a one-time Triton autotune
Decode, coding task, model-default sampling, 600 tokens, 53k context resident 14.4-15.6 tok/s at 542 slots, 16.0-17.1 tok/s at 800 slots - expert-fetch bound
Functional coherent, correct chat + code generation via /v1/chat/completions; tokenizer 0-diff vs the HF reference on all 153,725 vocab words + 20k combos (tok_compare)

Tuned launch (400k context, bigger prefill chunks, more expert slots):
ft serve --gpu 0 --max-seq-len-override 409600 --num-tokens 409600 --moe-cache-size 800 --max-prefill-length 12288
-> prefill ~1.9k tok/s steady (2.8k on slot-warmed chunks), decode 16-17 tok/s with the
full 53k context resident. The knobs trade directly: 12,288-token chunks need ~6 GiB of headroom
for the KDA chunk expansion (16,384 OOMs; 8,192 runs anywhere), and decode tracks the slot count.

Host: Ryzen 9 7950X3D, 187 GiB RAM (~134 GiB pinned expert banks), RTX 5090 32 GB (sm_120),
driver 580.95.05, CUDA 13.0, Linux 6.8.0-136-generic.

@void-mckenzie

Copy link
Copy Markdown
Contributor Author

Follow-up: I let the check run against every GLM-5.3-Flash GGUF HF search finds, -- 2,118 shard files across 107 repos, grouped into split sets, same kernel table:

267/784 files of served architectures pass
  glm5-next        147/201
  glm5next         120/479
not checked, architecture not served: glm5_next 20, dflash 14, clip 4, glm5-next-vision 2

The long tail found one more writer-variant pair, fixed on the branch with regression tests:

  1. Older writer variants: some writers ship the conv kernels 4-D with a trailing unit dim
    -- llama.cpp's glm5-next loader tries that shape before the 3-D one, so trailing unit dims
    are dropped on float reads -- and attention.head_count_kv as the generic scalar (all
    blocks), which is wrong for the hybrid (llama.cpp broadcasts it and then fails tensor
    creation): only the list is trusted and a scalar falls to the tensor-name census. The 4-D
    conv shape alone covers the GSQ-RCO lineage (~57k downloads/month across pfeifferj /
    GCSA-AiLab / taurusduan), all of which now pass.

Failures, grouped (full sweep)

Count Class Bar status
327 per-layer streaming exports (no token_embd) not model files
100 ik_llama / removed ggml types ignore list
21 mixed gate/up expert types ignore list
17 IQ1_M kernel gap ignore list
17 missing kda.head_dim clean refusal (llama.cpp requires the key too)
9 missing swiglu_clamp_exp clean refusal
6 missing attn_q tensors (MTP-ish drafts) not trunk models
7 LoRA / draft exports (no token_embd) not trunk models
4 metadata-only files broken uploads
3 no general.architecture broken uploads
3 glm5_next (underscore) config missing layer_types draft-model exports
2 truncated files broken uploads
1 missing split file broken upload

Nothing crashes and nothing mis-loads silently.

Not covered (additions to the list above)

  • writers that omit kda.head_dim or swiglu_clamp_exp
  • the glm5_next (underscore) arch spelling, 20 files, draft-model exports

@jason-fxz

Copy link
Copy Markdown
Collaborator

Thanks for the rebase and the fixes. I re-checked at 9649143, also merged onto current main (bb15d1d, clean merge):

  • scripts/gguf_check/check.py on the GLM-5.3-Flash stubs I have (all 12 unsloth quants, ggml-org Q2_K_S, two older unsloth glm5next revisions): 14/15 pass. The only failure is UD-IQ1_M (no MMQ kernel, on the ignore list). On the 10-17 head, 11 of these failed at kv_b_proj.
  • The quantized kv_b path is right: real Q8_0 attn_k_b / attn_v_b through _kv_b match the gguf-py dequant reference bit for bit.
  • The pad_rows fix is a real bug on main for any packed tensor with K < 256. Every call site is updated.

Nothing blocking. A few things to clean up before merge:

1. Which public GGUF checkpoint needs the metadata fallbacks? The tensor-name census in _layer_types and the q_b/v_b fallback in _head_dims are for files without the per-block attention.head_count_kv list or the *_length_mla keys. I could not find such a public GGUF checkpoint. Every unsloth upload has both: the first one (2026-08-27, glm5next spelling, unchanged until the 2026-10-05 re-upload) and the current one. So do ggml-org's files and everything llama.cpp has written since #27773. Which public GGUF checkpoint needs these fallbacks? If none does, please remove them and let the missing key fail through need(). Keep the glm5next alias either way, since the old unsloth files use it. For the same reason, please don't add a census for antirez's missing kda.head_dim: llama.cpp requires that key too (ml.get_key(LLM_KV_KDA_HEAD_DIM, ...)), so a clear refusal matches llama.cpp.

2. Refuse metadata the model can't express instead of reading part of it. llama.cpp reads these per layer (src/models/glm5-next.cpp):

  • swiglu_clamp_exp is a per-layer array, and swiglu_clamp_shexp is a separate one. The reader takes clamp[0] and ignores shexp. Raise if the values are not all equal or if shexp differs from exp.
  • attention.indexer.types: False means the layer has no full indexer in llama.cpp. The reader turns it into a made-up "disabled". Raise unless every entry is true.
  • expert_gating_func is never checked. Refuse anything other than sigmoid (2).
  • Make the rope.dimension_count check a NotImplementedError instead of an assert, since asserts disappear under -O.

Every published file has uniform values here (clamp 10 / 10, sigmoid, all-full indexer), so this changes no current file. It turns a future mismatch into an error instead of wrong output.

3. Tests. Please remove tests/models/test_glm5_next_gguf.py and tests/models/test_gguf_tokenizer.py from this PR for now. We'll handle GGUF test coverage separately, across all families.

4. Description and commit message. The PR body and the first commit message still say this PR adds the first_k_dense_replace offset to load_gguf_expert_banks and claims the qwen3.5 GGUF archs. Both are main's now (#725, #707). Please update them so the squash message is accurate.

Nits:

  • In aot_models.py, put the comment on its own line above arch_aliases, as the qwen4exp and gemma4 entries do.
  • _check_supported only wraps check_scales; call check_scales directly.

mukmckenzie and others added 7 commits October 19, 2026 22:31
Adds the llama.cpp glm5-next GGUF reader (unsloth GLM-5.3-Flash-GGUF, both
the glm5-next and the older glm5next arch spellings) on the GGUF quant
kind from FlashML-org#690:

- parse_gguf_config derives the text config from the GGUF KV metadata,
  with per-block attention.head_count_kv laying out the KDA/DSA hybrid,
  the trailing MTP block dropped like the HF loader drops it, and the
  MLA head widths from the *_length_mla keys.
- iter_gguf_weights maps every tensor to the glm5_next state dict and
  undoes the converter transforms: A_log stored as -exp(A_log) is
  inverted, the per-head attn_k_b/attn_v_b pair (k transposed) fuses
  into the dense kv_b_proj layout the MLA absorption reads, and the
  q|k|v conv kernels concatenate on the channel axis. The mixed-type
  fused KDA in_proj (Q8_0 q|k|v + BF16 b|f_a|g_a) rides FlashML-org#702 segments;
  the routed experts load as GGUF expert banks at their shipped types
  (unsloth dynamic quants: IQ3_S gate/up + IQ4_XS down, Q8_0 outlier
  layers pass through natively).
- passes quant_config to embed_tokens so the Q8_0 token_embd serves
  packed; registers Glm5NextGGUFForCausalLM and claims it in the AOT
  table.

Verified end to end against unsloth GLM-5.3-Flash-UD-IQ4_XS (5 split
shards): the full engine on a 32GB GPU serves coherent output with the
experts off host banks. Text-only, TP=1.

Part of FlashML-org#671.
check_scales at config parse like the llama, qwen3 and gemma4 loaders
(review on FlashML-org#721): a .scale / .input_scale outside an NVFP4 weight now
fails with a clear error instead of loading silently unread.
…uants

unsloth's UD quants quantize tensors the AesSedAI-style files keep float:
the MLA kv_b halves (Q8_0), the mHC mixers and the indexer's wk /
weights_proj / compressor gate. kv_b_proj joins the registry's
unquantized_modules (glm_moe_dsa keeps its kv_b dense for the MLA
absorption for the same reason) and the reader dequantizes through the
vendored gguf-py reference on every float-expecting read; wq_b keeps
serving its checkpoint quant packed (attention.py keeps wk and
weights_proj dense). Regression test stores the kv_b halves Q8_0.
llama-vocab.cpp maps both spellings to CHATGLM4 with ignore_merges;
unsloth writes glm4 and AesSedAI's writer glm5 for the same vocabulary.
Without the mapping a glm5 file loads but silently mis-tokenizes
(tok_compare: 22,840/153,725 vocab words differ from the HF reference;
0 everywhere with it).
pad_rows added one zero row of k columns, which covers the bytes MMQ
reads past the last row only when k is at least half a padding unit
(512); glm5-next's KDA f_b / g_b (k = linear head dim 128, Q8_0 in
dynamic quants) are the first packed tensors below that and died at the
first mul_mat. pad_rows now takes the ggml type and returns enough whole
rows to cover mmq_tail_bytes for any (type, k), consistently in the
reader's fused(), the gguf linear and embedding params and the expert
host banks. Found serving the real unsloth UD-IQ4_XS: the dry load
never runs a forward.
Two long-tail writer variants the full check sweep found (the GSQ-RCO
lineage alone is ~57k downloads/month):

- the conv kernels with a trailing unit dim: llama.cpp's glm5-next
  loader tries that 4-D shape before the 3-D one, so trailing unit dims
  in ne are dropped on float reads (they carry no elements).
- attention.head_count_kv as the generic scalar (all blocks): wrong for
  the hybrid -- llama.cpp broadcasts it and then fails tensor creation
  -- so only the list is trusted and a scalar falls to the tensor-name
  census like the pre-list writer.
- refuse instead of guessing metadata the model cannot express: the
  scalar attention.head_count_kv spelling (llama.cpp broadcasts it and
  then fails tensor creation; every public file carries the list),
  missing *_length_mla keys through need(), non-uniform
  swiglu_clamp_exp / swiglu_clamp_shexp, indexer.types with non-full
  layers, expert_gating_func other than sigmoid, and rope dims as a
  NotImplementedError instead of an assert.
- call check_scales directly; aot_models comment on its own line.
- drop the GGUF test files; coverage will be handled across families.
@void-mckenzie

Copy link
Copy Markdown
Contributor Author

Sorry! I think I pushed a commit right before you checked it. All four fixes applied (plus the nits), force-pushed on top of 7ec6289:

  1. The _layer_types census and the _head_dims q_b/v_b fallback are gone. A scalar
    head_count_kv now refuses with "lacks the per-block attention.head_count_kv list the
    KDA/MLA hybrid layout needs (reconvert with a current llama.cpp)", and the *_length_mla
    keys fail through need(). No census for kda.head_dim either. The glm5next alias stays.
  2. swiglu_clamp_exp / swiglu_clamp_shexp raise unless uniform and equal,
    attention.indexer.types raises unless every entry is true, expert_gating_func refuses
    anything but sigmoid (2), and the rope check is a NotImplementedError instead of an
    assert. No published file changes.
  3. Both GGUF test files removed from the branch.
  4. First commit message reworded (no first_k_dense_replace / qwen3.5 stuff) and the PR
    description updated. Nits: aot_models comment on its own line, check_scales called
    directly.

Re-ran your spot-check set on the result: unsloth 11/12 (UD-IQ1_M only), ggml-org Q2_K_S,
Q2_K and Q4_K pass, the mtp drafts refuse on the missing trunk tensors, and the GSQ-RCO
files (4-D conv kernels) still pass.

@jason-fxz

Copy link
Copy Markdown
Collaborator

The branch head is still 7ec6289, and I don't see the changes there (test files are still in). Did the push go through?

@void-mckenzie

Copy link
Copy Markdown
Contributor Author

I'm so sorry, I didn't press enter 🙃 My bad

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants