Buckets:
| #!/usr/bin/env python3 | |
| """Standalone decoder for the COMPACT-PACKED Qwen3.6-35B-A3B quant (Mach-1-Small). | |
| NO modal. PURE NUMPY for every tier -- experts, NE linears, lm_head, embedding -- | |
| with no torch and no GPL'd code on the default path. This is the SINGLE canonical | |
| decoder: both pack jobs (trellis_experts_canon_aw.py pack arms, trellis_ne_pack.py) | |
| import from here and assert their packed output round-trips through THESE functions, | |
| so the shipped decoder is the one that is actually verified. | |
| TWO codecs, per block: | |
| - EXPERTS: rotated trellis codes (sign/scale side-streams per expert); two rate | |
| populations per the file manifest. | |
| - NE linears + lm_head: transform-free trellis codes with a per-matrix fp16 LUT and | |
| per-group fp16 scales; self-describing per-shard manifests. | |
| - Embed: int3 asymmetric group codes. | |
| Packed layout (HF repo): | |
| packed/experts/L{LL}.safetensors -- per expert e, proj in gate/up/down: | |
| e{e}.{proj}.trellis int16 [ntiles, 16*K] (pack_trellis bitstream, ~K bpw) | |
| e{e}.{proj}.su fp16 [n] | |
| e{e}.{proj}.sv fp16 [m] (Wscale absorbed) | |
| or (demoted K1 experts) | |
| e{e}.{proj}.SU int8 [n]; e{e}.{proj}.SV int8 [m]; e{e}.{proj}.Wscale fp16 [] | |
| plus, when the manifest carries "basis" (rung-3 shared cold-expert low-rank basis): | |
| basis.{proj}.A fp16 [r, n]; basis.{proj}.B fp16 [m, r] | |
| e{e}.{proj}.c fp16 [r] (demoted experts only) | |
| metadata["manifest"]: {"cb2":..., "cb1":..., "demoted":[e,...], "geom":{proj:[m,n]}, | |
| optional "basis": {"r":r, "dtype":"fp16", "shared_A_gu":false}} | |
| packed/experts/codebook.safetensors: tlut fp16 [512, 2] (shared by K2/K1 — the tlut | |
| depends only on (tlut_bits=9, V=2); K only changes trellis transitions). | |
| packed/ne/L{LL}.safetensors (zero-padded LNN -- the LIVE l64 spine tier) -- canon | |
| int-lattice codec "canon_rht_bitshift_trellis_intlattice"; NO manifest key. Per-file | |
| metadata: cb_params {K:4,L:16,V:2,tlut_bits:9,quantlut_sym,td 16x16} + dims | |
| {name: [m0, n0, m, n]}. Keys per tensor: | |
| {name}|trellis int16, {name}|SU int8 [n], {name}|SV int8 [m], {name}|Wscale fp16 | |
| tier-shared codebook: packed/ne/tlut.safetensors tlut fp16 [512, 2] | |
| packed/ne/{L{i}|head_c{c}of8}.safetensors (single-digit L{i}: legacy builds only) -- | |
| transform-free tier: | |
| {name}|packed uint8 [B, T*K/8], {name}|gscale fp16 [B, T/128], {name}|lut fp16 [4096] | |
| metadata["manifest"]: {"codec":"lloyd_bitshift_trellis","L":12,"group":128, | |
| "pattern":[K]*4,"tensors":{name:{shape:[m0,n0],transposed:bool}}} | |
| packed/head/head_c{c}of8.safetensors (LIVE head tier) -- codec "int5g64_packed": | |
| LMHEADCHUNK:{r0}:{r1}|qp uint8 [rows, n/8*5], |gscale fp16 [rows, n/64] | |
| (+ optional |prot_rows int32 / |prot_dense exact rows); metadata dims {name:[rows,n]} | |
| packed/ne/embed_int4.safetensors (LIVE embed tier; decode_embed(bits=4)) -- | |
| affine int4-g64: q_packed uint8 [rows, hid/2], mn/mx fp16 [rows, hid/64]; | |
| bf16 cast of the decode is bit-exact vs the served embedding. | |
| packed/ne/embed_packed.safetensors (superseded 8-bpw lossless Lloyd-LUT container; | |
| decode_embed_packed) and embed_int3.safetensors (legacy int3): | |
| q_packed uint8 [rows, hid*3/8], mn fp16 [rows, hid/64], mx fp16 [rows, hid/64] | |
| Usage: | |
| from decode import (decode_trellis, decode_expert_layer, decode_ne_shard, | |
| decode_head, decode_embed_packed, decode_embed) | |
| License note: the default decode path is self-contained numpy written from the | |
| mathematical spec (documented inline below) — NO GPL dependency. Setting | |
| QTIP_LEGACY_DECODE=1 switches decode_trellis to the upstream Cornell QTIP lib | |
| (GPLv3, resolved via QTIP_DIR) purely as a cross-check oracle; the two paths are | |
| gated bit-exact (bf16 AND fp32) across all 40 expert layers (gate_np_decode.py). | |
| """ | |
| import json | |
| import math | |
| import os | |
| import sys | |
| import numpy as np | |
| HIDDEN, INTER, NEXP, NLAYERS = 2048, 512, 256, 40 | |
| NHEADC = 8 | |
| CB2 = dict(K=2, L=16, V=2, tlut_bits=9, decode_mode="quantlut_sym", td_x=16, td_y=16) | |
| CB1 = dict(K=1, L=16, V=2, tlut_bits=9, decode_mode="quantlut_sym", td_x=16, td_y=16) | |
| CB4 = dict(K=4, L=16, V=2, tlut_bits=9, decode_mode="quantlut_sym", td_x=16, td_y=16) | |
| _QTIP_READY = False | |
| def _legacy_decode(): | |
| """The vendored/upstream qtip (GPLv3) path is OPT-IN, for verification only.""" | |
| return os.environ.get("QTIP_LEGACY_DECODE") == "1" | |
| def _setup_qtip(qtip_dir=None): | |
| """Idempotent: stub the optional CUDA kernels and put the qtip lib on sys.path.""" | |
| global _QTIP_READY | |
| if _QTIP_READY: | |
| return | |
| import types | |
| if "fast_hadamard_transform" not in sys.modules: | |
| _f = types.ModuleType("fast_hadamard_transform") | |
| _f.hadamard_transform = lambda x, s=1.0: x * s | |
| sys.modules["fast_hadamard_transform"] = _f | |
| if "qtip_kernels" not in sys.modules: | |
| sys.modules["qtip_kernels"] = types.ModuleType("qtip_kernels") | |
| # qtip's lib/utils/__init__ transitively imports `datasets` (calibration-only) — stub it. | |
| if "datasets" not in sys.modules: | |
| _d = types.ModuleType("datasets") | |
| _d.load_dataset = None | |
| sys.modules["datasets"] = _d | |
| if "glog" not in sys.modules: # logging-only, avoid the dependency | |
| _g = types.ModuleType("glog") | |
| _g.debug = _g.info = _g.warn = _g.warning = _g.error = lambda *a, **k: None | |
| sys.modules["glog"] = _g | |
| cands = [] | |
| if qtip_dir: | |
| cands.append(qtip_dir) | |
| if os.environ.get("QTIP_DIR"): | |
| cands.append(os.environ["QTIP_DIR"]) | |
| _here = os.path.dirname(os.path.abspath(__file__)) | |
| cands += ["/qtip", os.path.join(_here, "vendor", "qtip"), # HF repo layout | |
| os.path.join(_here, "..", "qtip_gemma4", "vendor", "qtip")] | |
| for c in cands: | |
| if c and os.path.isdir(os.path.join(c, "lib")) and c not in sys.path: | |
| sys.path.insert(0, c) | |
| import torch # noqa: F401 | |
| torch.compile = lambda fn=None, **kw: (fn if fn is not None else (lambda g: g)) | |
| _QTIP_READY = True | |
| def _supported_dim(d): | |
| from lib.utils.matmul_had import get_hadK | |
| try: | |
| get_hadK(d) | |
| return True | |
| except Exception: | |
| return False | |
| def padto(d): | |
| """Dim -> RHT-supported padded dim. Every dim in this pack (512/1024/2048) is a | |
| power of two, where padto is the identity; non-2^k dims would need Kronecker | |
| Hadamard factors, which only the legacy qtip path provides.""" | |
| if d > 0 and (d & (d - 1)) == 0: | |
| return d | |
| if _legacy_decode(): | |
| _setup_qtip() | |
| return d if _supported_dim(d) else (1 << math.ceil(math.log2(d))) | |
| return 1 << math.ceil(math.log2(d)) | |
| def build_codebook(cb_params, tlut, device="cuda"): | |
| """Rebuild the bitshift codebook with the PERSISTED tlut (kmeans init is | |
| non-deterministic, so the encode-time LUT is saved and reused verbatim).""" | |
| _setup_qtip() | |
| import torch | |
| from lib.codebook import bitshift | |
| tl = torch.as_tensor(np.asarray(tlut, np.float32)).to(device).float() | |
| cb = bitshift.bitshift_codebook( | |
| L=cb_params["L"], K=cb_params["K"], V=cb_params["V"], | |
| tlut_bits=cb_params["tlut_bits"], decode_mode=cb_params["decode_mode"], | |
| tlut=tl).to(device).float() | |
| return cb | |
| def _get_hatWr(cb, trellis, m, n, td_x, td_y, device): | |
| """Packed int16 -> rotated codebook-unit weights [m,n] (BitshiftLinear.get_hatW).""" | |
| import torch | |
| tr = torch.as_tensor(np.asarray(trellis)).to(device) | |
| if tr.dtype != torch.int16: | |
| tr = tr.view(torch.int16) | |
| unpacked = cb.unpack_trellis(tr, td_x * td_y) # [ntiles, T//V] | |
| return cb.recons(unpacked).transpose(0, 1).transpose(1, 2).reshape( | |
| m // td_x, n // td_y, td_x, td_y).transpose(1, 2).reshape(m, n) | |
| def _decode_trellis_qtip(trellis, su, sv, tlut, m0, n0, cb_params, wscale=None, | |
| cb=None, device="cuda"): | |
| """LEGACY verification oracle (QTIP_LEGACY_DECODE=1): decode through the upstream | |
| Cornell QTIP lib (GPLv3). Kept ONLY to cross-check the numpy path; gated bit-exact | |
| against it on every expert of every layer.""" | |
| _setup_qtip() | |
| import torch | |
| from lib import utils | |
| td_x, td_y = cb_params["td_x"], cb_params["td_y"] | |
| m, n = padto(m0), padto(n0) | |
| if cb is None: | |
| cb = build_codebook(cb_params, tlut, device=device) | |
| hatWr = _get_hatWr(cb, trellis, m, n, td_x, td_y, device) | |
| hatWr = hatWr.half().float() # fp16 hatWr spec (see decode_trellis) | |
| if wscale is not None: | |
| hatWr = hatWr * float(wscale) | |
| su_t = torch.as_tensor(np.asarray(su, np.float32)).to(device).float() | |
| sv_t = torch.as_tensor(np.asarray(sv, np.float32)).to(device).float() | |
| hatW = (utils.matmul_hadU((utils.matmul_hadU(hatWr) * su_t).T) * sv_t).T | |
| return hatW[:m0, :n0].float().cpu().numpy() | |
| # ============================================================================ # | |
| # Expert tier, PURE NUMPY (default path). Clean-room implementation from the | |
| # mathematical spec of the bitshift-trellis format; no qtip code, no torch. | |
| # | |
| # Format spec (as verified bit-exact against the reference on all 40 layers): | |
| # * A weight matrix is padded to (m, n) = (padto(m0), padto(n0)) and cut into | |
| # td_x x td_y tiles, row-major over the (m/td_x, n/td_y) grid. | |
| # * Each tile is a length-T scalar sequence (T = td_x*td_y, row-major inside the | |
| # tile) produced by an L-bit shift register: the register emits one V-vector | |
| # per step (T/V steps), then shifts in K*V fresh bits. State recurrence: | |
| # reg_i = ((reg_{i-1} << K*V) | fresh_i) & (2^L - 1) | |
| # * Bitstream per tile: the L bits of reg_0 (MSB first), then the K*V fresh bits | |
| # of each later step (MSB first) -- T*K bits total, packed into BIG-ENDIAN | |
| # 16-bit words. The last L-K*V register bits are not stored: the sequence is | |
| # tail-biting, they wrap around to the start of the stream. | |
| # * A register state s maps to a V-vector through a hashed symmetric LUT | |
| # ("quantlut_sym"): with p = s*(s+1) exact-integer, | |
| # row(s) = (p >> (16 - tlut_bits - 1)) & (2^tlut_bits - 1) | |
| # vec(s) = tlut[row(s)] with component 0 negated iff bit 15 of p is set | |
| # * Un-rotation (two-sided RHT): with H_d the orthonormal Walsh-Hadamard matrix | |
| # (Sylvester order, scaled 1/sqrt(d); symmetric), | |
| # W = diag(sv) . H_m . Wunit . H_n . diag(su), restricted to [:m0, :n0] | |
| # computed as: FWHT each row over n then scale columns by su, then FWHT each | |
| # column over m and scale rows by sv. For K1 packs Wunit is first multiplied | |
| # by the scalar `wscale`. | |
| # | |
| # Bit-exactness note: fp32 elementwise add/sub/mul/div are IEEE-exact, so matching | |
| # the reference's OPERATION ORDER (butterfly pairing stride 1,2,4,...; one final | |
| # division by fp32 sqrt(dim); scale-then-rotate ordering above) makes the numpy | |
| # output bit-identical to the torch/qtip decode, not merely close. | |
| # ============================================================================ # | |
| _FULL_LUT_CACHE = {} | |
| def _np_full_lut(tlut, L, tlut_bits): | |
| """Expand the persisted [2^tlut_bits, V] codebook to the full [2^L, V] fp32 | |
| decoder table via the hashed-symmetric-LUT spec above.""" | |
| small = np.asarray(tlut, np.float32) | |
| s = np.arange(1 << L, dtype=np.int64) | |
| p = s * (s + 1) # exact in int64 | |
| row = (p >> (16 - tlut_bits - 1)) & ((1 << tlut_bits) - 1) | |
| table = small[row].copy() # [2^L, V] | |
| table[:, 0] *= (1 - ((p >> 15) & 1) * 2).astype(np.float32) | |
| return table | |
| def _np_full_lut_cached(tlut, L, tlut_bits): | |
| key = (L, tlut_bits, np.asarray(tlut).tobytes()) | |
| if key not in _FULL_LUT_CACHE: | |
| _FULL_LUT_CACHE[key] = _np_full_lut(tlut, L, tlut_bits) | |
| return _FULL_LUT_CACHE[key] | |
| def _np_rate_bits(T, K, V): | |
| """(bits per shift step, bits per tile). K need not be an integer: the format's only | |
| rate constraint is that K*V and K*T be whole numbers of bits, so (K=1/2, V=2) and | |
| (K=1/2, V=4) are legal 0.5-bpw rungs in this same bitstream.""" | |
| step, nbits = float(K) * V, float(K) * T | |
| if step != int(step) or nbits != int(nbits): | |
| raise ValueError(f"rate K={K} with V={V}, T={T} needs whole-bit steps " | |
| f"(K*V={step}) and a whole-bit tile (K*T={nbits})") | |
| return int(step), int(nbits) | |
| def _np_unpack_trellis(stream, T, L, K, V): | |
| """Packed bitstream [rows, T*K/16] (u)int16 -> register states [rows, T//V] int32, | |
| per the shift-register + tail-biting spec above.""" | |
| words = np.ascontiguousarray(stream) | |
| if words.dtype != np.uint16: | |
| words = words.view(np.uint16) | |
| step, nbits = _np_rate_bits(T, K, V) | |
| if step > L: | |
| raise ValueError(f"K*V={step} exceeds register width L={L}") | |
| rows, nstep = words.shape[0], T // V | |
| bits = ((words[:, :, None].astype(np.int64) >> np.arange(15, -1, -1)) & 1) | |
| bits = bits.reshape(rows, -1)[:, :nbits] # MSB-first big-endian words | |
| bits = np.concatenate([bits, bits[:, :L - step]], axis=1) # tail-biting wrap | |
| seed_w = 1 << np.arange(L - 1, -1, -1, dtype=np.int64) | |
| step_w = 1 << np.arange(step - 1, -1, -1, dtype=np.int64) | |
| fresh = bits[:, L:L + (nstep - 1) * step].reshape(rows, nstep - 1, step) @ step_w | |
| states = np.empty((rows, nstep), np.int32) | |
| reg = bits[:, :L] @ seed_w | |
| states[:, 0] = reg | |
| mask = (1 << L) - 1 | |
| for i in range(1, nstep): | |
| reg = ((reg << step) & mask) | fresh[:, i - 1] | |
| states[:, i] = reg | |
| return states | |
| def _np_recons(states, table, m, n, td_x, td_y): | |
| """Register states [ntiles, T//V] + full LUT -> rotated codebook-unit weights | |
| [m, n] fp32, per the tile-layout spec above (V scalars per state, row-major | |
| tiles, row-major tile grid).""" | |
| vals = table[states] # [ntiles, T//V, V] | |
| return np.ascontiguousarray( | |
| vals.reshape(m // td_x, n // td_y, td_x, td_y).transpose(0, 2, 1, 3) | |
| ).reshape(m, n) | |
| def _np_hadamard(x): | |
| """Orthonormal Walsh-Hadamard transform (Sylvester order) along the LAST axis: | |
| y = FWHT(x) / sqrt(dim). Butterfly combines adjacent pairs at stride 1, then | |
| 2, 4, ... in fp32, with a single fp32 division by sqrt(dim) after the final | |
| pass -- the exact operation order of the reference decode (bit-exact).""" | |
| dim = x.shape[-1] | |
| if dim & (dim - 1): | |
| raise ValueError(f"pure-numpy RHT needs a power-of-2 dim, got {dim} " | |
| "(set QTIP_LEGACY_DECODE=1 for Kronecker dims)") | |
| cur = np.ascontiguousarray(x, dtype=np.float32).reshape(-1, dim) | |
| span = 1 | |
| while span < dim: | |
| blk = cur.reshape(-1, dim // (2 * span), 2, span) | |
| nxt = np.empty_like(blk) | |
| nxt[:, :, 0, :] = blk[:, :, 0, :] + blk[:, :, 1, :] | |
| nxt[:, :, 1, :] = blk[:, :, 0, :] - blk[:, :, 1, :] | |
| cur = nxt.reshape(-1, dim) | |
| span *= 2 | |
| return (cur / np.float32(np.sqrt(np.float32(dim)))).reshape(x.shape) | |
| def decode_trellis(trellis, su, sv, tlut, m0, n0, cb_params, wscale=None, cb=None, | |
| device="cuda"): | |
| """Canonical trellis decode -> fp32 [m0, n0]. DEFAULT: pure numpy (no qtip, no | |
| torch); QTIP_LEGACY_DECODE=1 routes through the upstream qtip lib instead | |
| (verification oracle -- gated bit-exact against this path). | |
| su [n] / sv [m] are the RHT vectors over the PADDED dims: int8 +/-1 signs for raw | |
| PTQ tensors (then `wscale` must be given), or continuous fp16 FT'd vectors for the | |
| block-FT'd K2 experts (Wscale absorbed into sv; pass wscale=None). | |
| Reverses: unpack states -> tiles -> [m,n] -> *wscale -> *su-side FWHT -> *sv-side | |
| FWHT -> unpad. `cb` may carry a prebuilt table (numpy [2^L, V] LUT, or a qtip | |
| codebook object in legacy mode); anything else is ignored and rebuilt from tlut. | |
| """ | |
| if _legacy_decode(): | |
| qcb = None if isinstance(cb, np.ndarray) else cb | |
| return _decode_trellis_qtip(trellis, su, sv, tlut, m0, n0, cb_params, | |
| wscale=wscale, cb=qcb, device=device) | |
| mode = cb_params.get("decode_mode", "quantlut_sym") | |
| if mode != "quantlut_sym": | |
| raise NotImplementedError(f"numpy decode implements quantlut_sym, got {mode}") | |
| td_x, td_y = cb_params["td_x"], cb_params["td_y"] | |
| L, K, V = cb_params["L"], cb_params["K"], cb_params["V"] | |
| m, n = padto(m0), padto(n0) | |
| table = cb if isinstance(cb, np.ndarray) else \ | |
| _np_full_lut_cached(tlut, L, cb_params["tlut_bits"]) | |
| states = _np_unpack_trellis(np.asarray(trellis), td_x * td_y, L, K, V) | |
| unit = _np_recons(states, table, m, n, td_x, td_y) | |
| # SPEC: hatWr is defined at fp16 precision — the qlstate's stored dtype, which | |
| # every training/fold/eval artifact decodes from. Round the fp32 recons to fp16 | |
| # here so the shipped decode is bit-identical to those artifacts. | |
| unit = unit.astype(np.float16).astype(np.float32) | |
| if wscale is not None: | |
| unit = unit * np.float32(wscale) | |
| rowside = _np_hadamard(unit) * np.asarray(su, np.float32) # over n, then *su | |
| colside = _np_hadamard(rowside.T) * np.asarray(sv, np.float32) # over m, then *sv | |
| return np.ascontiguousarray(colside.T[:m0, :n0]) | |
| # ============================================================================ # | |
| # packed-dir glue: whole-layer / whole-shard reconstruction. | |
| # ============================================================================ # | |
| def _read_safetensors_np(path): | |
| """Read a pack file. v3 files carry a zstd sidecar (`__zsc__` + metadata["zsc"]) | |
| holding every non-code-stream tensor byte-exactly; expand it transparently so | |
| all decode paths work identically on v2 (raw) and v3 (compressed) packs.""" | |
| from safetensors import safe_open | |
| out = {} | |
| with safe_open(path, framework="numpy") as fh: | |
| meta = fh.metadata() or {} | |
| for k in fh.keys(): | |
| out[k] = fh.get_tensor(k) | |
| if "__zsc__" in out: | |
| import zstandard | |
| man = json.loads(meta["zsc"]) | |
| buf = zstandard.ZstdDecompressor().decompress( | |
| out.pop("__zsc__").tobytes(), max_output_size=man["raw_len"]) | |
| for key, dt, shape, off, nb in man["entries"]: | |
| out[key] = np.frombuffer(buf, dtype=np.dtype(dt), | |
| count=nb // np.dtype(dt).itemsize, | |
| offset=off).reshape(shape) | |
| return out, meta | |
| _ST_TORCH_DTYPES = {"BF16": "bfloat16", "F16": "float16", "F32": "float32", | |
| "F64": "float64", "I8": "int8", "U8": "uint8", "I16": "int16", | |
| "I32": "int32", "I64": "int64", "BOOL": "bool"} | |
| def read_safetensors_torch(path): | |
| """Torch-side v2/v3 reader for dtype-opaque files (bf16 vision/extras). v3 files | |
| hold ONLY `__zsc__`; entries carry safetensors dtype tokens ("BF16", ...), expanded | |
| with torch.frombuffer. Returns ({name: torch.Tensor}, metadata).""" | |
| import torch | |
| from safetensors import safe_open | |
| out = {} | |
| with safe_open(path, framework="pt") as fh: | |
| meta = fh.metadata() or {} | |
| for k in fh.keys(): | |
| out[k] = fh.get_tensor(k) | |
| if "__zsc__" in out: | |
| import zstandard | |
| man = json.loads(meta["zsc"]) | |
| buf = zstandard.ZstdDecompressor().decompress( | |
| out.pop("__zsc__").numpy().tobytes(), max_output_size=man["raw_len"]) | |
| for key, dt, shape, off, nb in man["entries"]: | |
| if dt in _ST_TORCH_DTYPES: # safetensors dtype token | |
| t = torch.frombuffer(bytearray(buf[off:off + nb]), | |
| dtype=getattr(torch, _ST_TORCH_DTYPES[dt])) | |
| out[key] = t.reshape(shape) | |
| else: # numpy dtype str (np repack) | |
| a = np.frombuffer(buf, dtype=np.dtype(dt), | |
| count=nb // np.dtype(dt).itemsize, offset=off) | |
| out[key] = torch.from_numpy(a.reshape(shape).copy()) | |
| return out, meta | |
| def decode_expert_layer(packed_dir, layer, device="cuda"): | |
| """Reassemble fused gate_up_proj [256,1024,2048] bf16-ready fp32 + down_proj | |
| [256,2048,512]. K2-ft experts decode with continuous su/sv (no wscale); | |
| demoted K1 experts decode with int8 signs + Wscale, plus the shared low-rank | |
| basis residual (B*c)@A when the manifest carries "basis".""" | |
| path = os.path.join(packed_dir, "experts", f"L{layer:02d}.safetensors") | |
| t, meta = _read_safetensors_np(path) | |
| # CONTAINER DISPATCH: trained chunked shards (metadata fields includes | |
| # wave_gamma) route to decode_expert_layer_v3t, so calling THIS entry on | |
| # any shipped payload is safe rather than a KeyError on "manifest". | |
| if "wave_gamma" in (meta.get("fields") or ""): | |
| return decode_expert_layer_v3t(packed_dir, layer) | |
| man = json.loads(meta["manifest"]) | |
| tlut, _ = _read_safetensors_np(os.path.join(packed_dir, "experts", "codebook.safetensors")) | |
| tlut = tlut["tlut"] | |
| if _legacy_decode(): # qtip oracle: prebuild its codebook objects | |
| cb2 = build_codebook(man.get("cb2", CB2), tlut, device=device) | |
| cb1 = build_codebook(man.get("cb1", CB1), tlut, device=device) | |
| else: # numpy: K only changes transitions, LUT shared | |
| cb2 = cb1 = _np_full_lut_cached(tlut, man.get("cb2", CB2)["L"], | |
| man.get("cb2", CB2)["tlut_bits"]) | |
| demoted = set(man["demoted"]) | |
| geom = {p: tuple(v) for p, v in man["geom"].items()} # proj -> (m, n) | |
| basis = man.get("basis") | |
| if basis is not None: # rung-3 shared cold-expert low-rank basis | |
| bA = {p: t[f"basis.{p}.A"].astype(np.float32) for p in geom} | |
| bB = {p: t[f"basis.{p}.B"].astype(np.float32) for p in geom} | |
| gate_up = np.empty((NEXP, 2 * INTER, HIDDEN), np.float32) | |
| down = np.empty((NEXP, HIDDEN, INTER), np.float32) | |
| for e in range(NEXP): | |
| for proj, dst in (("gate", gate_up[e, :INTER]), ("up", gate_up[e, INTER:]), | |
| ("down", down[e])): | |
| m0, n0 = geom[proj] | |
| if e in demoted: | |
| ws = float(np.asarray(t[f"e{e}.{proj}.Wscale"]).ravel()[0]) | |
| w = decode_trellis(t[f"e{e}.{proj}.trellis"], t[f"e{e}.{proj}.SU"], | |
| t[f"e{e}.{proj}.SV"], tlut, m0, n0, man.get("cb1", CB1), | |
| wscale=ws, cb=cb1, device=device) | |
| if basis is not None: | |
| # rs[m,n] = sum_r B[m,r]*c[r]*A[r,n], fp32, added BEFORE any bf16 | |
| # cast — op order identical to gkd_fold + pack_assemble's honesty | |
| c = t[f"e{e}.{proj}.c"].astype(np.float32) | |
| w = w + (bB[proj] * c[None, :]) @ bA[proj] | |
| else: | |
| w = decode_trellis(t[f"e{e}.{proj}.trellis"], t[f"e{e}.{proj}.su"], | |
| t[f"e{e}.{proj}.sv"], tlut, m0, n0, man.get("cb2", CB2), | |
| wscale=None, cb=cb2, device=device) | |
| dst[:] = w | |
| return {"gate_up_proj": gate_up, "down_proj": down} | |
| # ============================================================================ # | |
| # NE transform-free tier: Lloyd bitshift trellis L=12, uniform K, group-128 fp16 | |
| # scales, per-matrix 4096-entry fp16 LUT. Pure numpy — no qtip/GPL dependency. | |
| # ============================================================================ # | |
| NELL_L = 12 | |
| def _nell_bits_to_states(packed, T, k, L=NELL_L): | |
| """Inverse of the encoder's states_to_bits: step t's k NEW trellis bits are stored | |
| MSB-first, bytes are big-endian packbits. State recurrence (s_{-1} = 0): | |
| s_t = ((s_{t-1} << k) | b_t) & (2^L - 1).""" | |
| B = packed.shape[0] | |
| bits = np.unpackbits(packed, axis=1, count=T * k).astype(np.int64) | |
| mask = (1 << L) - 1 | |
| states = np.empty((B, T), np.int32) | |
| s = np.zeros(B, np.int64) | |
| pos = 0 | |
| for t in range(T): | |
| b = np.zeros(B, np.int64) | |
| for j in range(k): | |
| b = (b << 1) | bits[:, pos] | |
| pos += 1 | |
| s = ((s << k) | b) & mask | |
| states[:, t] = s | |
| return states | |
| def decode_ne_ll_tensor(t, man, name): | |
| """One transform-free NE matrix -> fp32 [m0, n0]. Bit-identical to the encoder's | |
| recon: fp16 LUT gathered as fp32, * per-group fp16 scale in fp32, transpose back.""" | |
| g, k = man["group"], man["pattern"][0] | |
| geom = man["tensors"][name] | |
| m0, n0 = geom["shape"] | |
| B, T = (n0, m0) if geom["transposed"] else (m0, n0) | |
| lut = t[f"{name}|lut"].astype(np.float32) | |
| gs = t[f"{name}|gscale"].astype(np.float32) | |
| states = _nell_bits_to_states(t[f"{name}|packed"], T, k) | |
| W = lut[states] * np.repeat(gs, g, axis=1) | |
| return np.ascontiguousarray(W.T) if geom["transposed"] else W | |
| def decode_ne_shard_canon(t, meta, packed_dir, device="cuda", subdir="ne"): | |
| """Canon int-lattice NE spine shard (codec canon_rht_bitshift_trellis_intlattice, | |
| the live l64-tier zero-padded L00-L39 files). These shards carry no manifest key: | |
| per-file metadata holds cb_params (K=4, L=16, V=2, tlut_bits=9, quantlut_sym) and | |
| dims (name -> [m0, n0, m, n]); keys are <tensor>|{trellis,SU,SV,Wscale} with int8 | |
| sign SU/SV + scalar Wscale; the tier-shared codebook is <subdir>/tlut.safetensors.""" | |
| cbp = json.loads(meta["cb_params"]) | |
| dims = json.loads(meta["dims"]) | |
| tlut, _ = _read_safetensors_np(os.path.join(packed_dir, subdir, "tlut.safetensors")) | |
| tlut = tlut["tlut"] | |
| cb = build_codebook(cbp, tlut, device=device) if _legacy_decode() else \ | |
| _np_full_lut_cached(tlut, cbp["L"], cbp["tlut_bits"]) | |
| out = {} | |
| for name in sorted({key.rsplit("|", 1)[0] for key in t}): | |
| m0, n0 = dims[name][0], dims[name][1] | |
| out[name] = decode_trellis(t[f"{name}|trellis"], t[f"{name}|SU"], t[f"{name}|SV"], | |
| tlut, m0, n0, cbp, | |
| wscale=float(np.asarray(t[f"{name}|Wscale"]).ravel()[0]), | |
| cb=cb, device=device) | |
| return out | |
| def decode_ne_shard(packed_dir, shard, device="cuda", subdir="ne"): | |
| """Decode every NE tensor in one shard -> {name: fp32 [m0,n0]}. Dispatches on the | |
| shard's own metadata: canon int-lattice spine (no manifest key; codec/cb_params/dims | |
| metadata), transform-free Lloyd tier, or legacy canonical QTIP (manifest codecs). | |
| subdir picks the size variant: "ne" (K=5, default) or "ne-4bit" (K=4, 8.8GB build).""" | |
| path = os.path.join(packed_dir, subdir, f"{shard}.safetensors") | |
| t, meta = _read_safetensors_np(path) | |
| if "manifest" not in meta: | |
| codec = meta.get("codec") | |
| assert codec == "canon_rht_bitshift_trellis_intlattice", \ | |
| f"NE shard {shard}: no manifest and unknown codec {codec!r}" | |
| return decode_ne_shard_canon(t, meta, packed_dir, device=device, subdir=subdir) | |
| man = json.loads(meta["manifest"]) | |
| if man.get("codec") == "lloyd_bitshift_trellis": | |
| return {name: decode_ne_ll_tensor(t, man, name) for name in man["tensors"]} | |
| cb_params = man["cb"] | |
| tlut, _ = _read_safetensors_np(os.path.join(packed_dir, "ne", "codebook.safetensors")) | |
| tlut = tlut["tlut"] | |
| cb = build_codebook(cb_params, tlut, device=device) if _legacy_decode() else \ | |
| _np_full_lut_cached(tlut, cb_params["L"], cb_params["tlut_bits"]) | |
| out = {} | |
| for name, geom in man["tensors"].items(): | |
| out[name] = decode_trellis(t[f"{name}|trellis"], t[f"{name}|SU"], t[f"{name}|SV"], | |
| tlut, geom["m0"], geom["n0"], cb_params, | |
| wscale=float(np.asarray(t[f"{name}|Wscale"]).ravel()[0]), | |
| cb=cb, device=device) | |
| return out | |
| # ============================================================================ # | |
| # EMBED: int3 asymmetric group-64 (Hessian-free, fully deterministic). Pure numpy. | |
| # ============================================================================ # | |
| def pack_embed_q(q, bits=3): | |
| """q uint8 [rows, hid] with values < 2**bits -> packed uint8 [rows, hid*bits/8].""" | |
| rows, hid = q.shape | |
| b = np.unpackbits(q[..., None], axis=-1, count=8)[..., 8 - bits:] # [rows,hid,bits] MSB-first | |
| return np.packbits(b.reshape(rows, hid * bits), axis=1) | |
| def unpack_embed_q(packed, hid, bits=3): | |
| rows = packed.shape[0] | |
| b = np.unpackbits(packed, axis=1, count=hid * bits).reshape(rows, hid, bits) | |
| q = np.zeros((rows, hid), np.uint8) | |
| for j in range(bits): | |
| q = (q << 1) | b[..., j] | |
| return q | |
| def decode_embed(packed_dir, bits=3, group=None): | |
| """embed_int{bits} codes -> fp32 [rows, hid]. Bit-exact vs the encoder's decode: | |
| mn/mx stored fp16, step computed in fp32 EXACTLY as at encode time. `group` is | |
| inferred from the stored shapes when not given (hid from q_packed, g = hid/ngroups), | |
| so g64 and g128 packs decode identically. | |
| Optional exception tensors close encoder-device rounding: the int4 grid was | |
| materialized on GPU (fused multiply-add in mn + q*step), and on ~1e-3 of elements | |
| the separately-rounded CPU product crosses a bf16 boundary. Those elements ship as | |
| exc_idx int32 (flat index) + exc_bits uint16 (the exact bf16 bit pattern, expanded | |
| to fp32 here) and overwrite the grid decode.""" | |
| path = os.path.join(packed_dir, "ne", f"embed_int{bits}.safetensors") | |
| t, meta = _read_safetensors_np(path) | |
| mn = t["mn"].astype(np.float32)[..., None] # [rows, hid/g, 1] | |
| mx = t["mx"].astype(np.float32)[..., None] | |
| rows, ng = mn.shape[0], mn.shape[1] | |
| if group is None: | |
| group = (t["q_packed"].shape[1] * 8 // bits) // ng | |
| hid = ng * group | |
| q = unpack_embed_q(t["q_packed"], hid, bits=bits).astype(np.float32) | |
| lv = float(2 ** bits - 1) | |
| step = np.maximum(mx - mn, 1e-8) / lv | |
| dec = (mn + q.reshape(rows, ng, group) * step).reshape(rows, hid) | |
| if "exc_idx" in t: | |
| vals = (np.asarray(t["exc_bits"]).astype(np.uint32) << 16).view(np.float32) | |
| dec.reshape(-1)[np.asarray(t["exc_idx"], dtype=np.int64)] = vals | |
| return dec | |
| def decode_embed_packed(packed_dir, subdir="ne"): | |
| """embed_packed.safetensors (LIVE embed tier: per-group Lloyd LUT + 4-bit nibble | |
| codes, chunk keys EMBEDCHUNK:{r0}:{r1}.{codes|lut}) -> fp32 [rows, hid]. | |
| LOSSLESS: the lut stores the source bf16 bit patterns, so the fp32 output equals | |
| the served bf16 embedding exactly. Low nibble = even column. Uses the torch-side | |
| reader because the lut is bf16 (numpy cannot represent it).""" | |
| path = os.path.join(packed_dir, subdir, "embed_packed.safetensors") | |
| t, meta = read_safetensors_torch(path) | |
| group = int(meta.get("group", 128)) | |
| chunks = sorted({k.rsplit(".", 1)[0] for k in t}, | |
| key=lambda c: int(c.split(":")[1])) | |
| r_end, parts = 0, [] | |
| for c in chunks: | |
| r0, r1 = int(c.split(":")[1]), int(c.split(":")[2]) | |
| assert r0 == r_end, f"non-contiguous embed chunks at {c}" | |
| r_end = r1 | |
| codes = np.asarray(t[f"{c}.codes"]) # uint8 [rows, cols/2] | |
| lut = t[f"{c}.lut"].float().numpy() # [G, 16] exact bf16 values | |
| rows, half = codes.shape | |
| cols = half * 2 | |
| q = np.empty((rows, cols), np.uint8) | |
| q[:, 0::2] = codes & 0x0F | |
| q[:, 1::2] = codes >> 4 | |
| w = np.take_along_axis(lut, q.reshape(-1, group).astype(np.int64), axis=1) | |
| parts.append(w.reshape(rows, cols)) | |
| return np.concatenate(parts, axis=0) | |
| if __name__ == "__main__": | |
| import argparse | |
| ap = argparse.ArgumentParser(description="spot-verify a packed dir against decoded refs") | |
| ap.add_argument("--packed-dir", required=True) | |
| ap.add_argument("--ref-experts", default=None) | |
| ap.add_argument("--ref-ne", default=None) | |
| ap.add_argument("--layers", default="0") | |
| ap.add_argument("--ne-shards", default="L0") | |
| ap.add_argument("--device", default="cuda") | |
| a = ap.parse_args() | |
| def _re(x, y): | |
| x, y = np.asarray(x, np.float32).ravel(), np.asarray(y, np.float32).ravel() | |
| return float(np.linalg.norm(x - y) / max(np.linalg.norm(y), 1e-30)) | |
| if a.ref_experts: | |
| for L in [int(x) for x in a.layers.split(",") if x.strip()]: | |
| dec = decode_expert_layer(a.packed_dir, L, device=a.device) | |
| ref, _ = _read_safetensors_np(os.path.join(a.ref_experts, f"L{L:02d}.safetensors")) | |
| for key in ("gate_up_proj", "down_proj"): | |
| print(f"[experts L{L} {key}] relerr_vs_ref={_re(dec[key], ref[key]):.2e}") | |
| if a.ref_ne: | |
| for shard in [x for x in a.ne_shards.split(",") if x.strip()]: | |
| dec = decode_ne_shard(a.packed_dir, shard, device=a.device) | |
| refp = os.path.join(a.ref_ne, f"{shard}.safetensors") | |
| ref, _ = _read_safetensors_np(refp) if os.path.exists(refp) else ({}, {}) | |
| for name, w in dec.items(): | |
| if name in ref: | |
| print(f"[NE {shard} {name}] relerr_vs_ref={_re(w, ref[name]):.4f}") | |
| else: | |
| print(f"[NE {shard} {name}] shape={w.shape} (no ref)") | |
| # ============================================================================ # | |
| # int5-g64 head tier (shift-add class): symmetric int5 codes, one fp16 scale | |
| # per 64 reduction-dim weights, RAW domain (no rotation). Storage: 8 codes | |
| # packed into 5 little-endian bytes (code i occupies bits [5i, 5i+5) of the | |
| # 40-bit block; stored value = q + 16, q in [-16, 15]). | |
| # Optional protected rows: |prot_rows int32 + |prot_dense bf16 overwrite the | |
| # listed rows with exact dense values (termination-critical vocab rows). | |
| # ============================================================================ # | |
| def pack_int5(q): | |
| """int8 [m, n] in [-16, 15] -> uint8 [m, n//8*5] little-endian 5-bit pack.""" | |
| m, n = q.shape | |
| assert n % 8 == 0, n | |
| u = (q.astype(np.int64) + 16).astype(np.uint64) | |
| assert u.max() < 32 and u.min() >= 0, (int(u.min()), int(u.max())) | |
| blocks = u.reshape(m, n // 8, 8) | |
| word = np.zeros((m, n // 8), dtype=np.uint64) | |
| for i in range(8): | |
| word |= blocks[:, :, i] << np.uint64(5 * i) | |
| by = word.astype("<u8").view(np.uint8).reshape(m, n // 8, 8)[:, :, :5] | |
| return np.ascontiguousarray(by.reshape(m, n // 8 * 5)) | |
| def unpack_int5(qp, n): | |
| """Inverse of pack_int5 -> int8 [m, n] in [-16, 15].""" | |
| m = qp.shape[0] | |
| assert qp.shape[1] == n // 8 * 5, (qp.shape, n) | |
| by = qp.reshape(m, n // 8, 5) | |
| full = np.zeros((m, n // 8, 8), dtype=np.uint8) | |
| full[:, :, :5] = by | |
| word = full.reshape(m, n // 8 * 8).view("<u8").reshape(m, n // 8) | |
| out = np.zeros((m, n // 8, 8), dtype=np.int8) | |
| for i in range(8): | |
| out[:, :, i] = ((word >> np.uint64(5 * i)) & np.uint64(31)).astype(np.int8) - 16 | |
| return out.reshape(m, n) | |
| def decode_int5g64(qp, gscale, m0, n0, group=64, prot_rows=None, prot_dense=None): | |
| """Shipped int5-g64 head decode -> fp32 [m0, n0]. Pure numpy. | |
| W[r, j] = q[r, j] * gscale[r, j // group]; protected rows are then | |
| overwritten with their exact dense values. Accumulation against activations | |
| is shift-adds (|q| <= 16) with one scale multiply per group of 64. | |
| """ | |
| q = unpack_int5(np.asarray(qp), n0).astype(np.float32) | |
| s = np.asarray(gscale, dtype=np.float32) | |
| W = q * np.repeat(s, group, axis=1)[:, :n0] | |
| if prot_rows is not None and len(prot_rows): | |
| W[np.asarray(prot_rows, dtype=np.int64)] = np.asarray(prot_dense, | |
| dtype=np.float32) | |
| return np.ascontiguousarray(W[:m0, :n0]) | |
| def decode_head(packed_dir, subdir="head"): | |
| """Shipped int5-g64 lm_head (packed/{subdir}/head_c{c}of8.safetensors, codec | |
| "int5g64_packed") -> fp32 [vocab, hid]. Chunk keys LMHEADCHUNK:{r0}:{r1}|{qp|gscale} | |
| (+ optional |prot_rows / |prot_dense exact-row overwrite); each file's dims metadata | |
| gives the chunk's [rows, n]; row chunks assemble in r0 order.""" | |
| d = os.path.join(packed_dir, subdir) | |
| files = sorted(f for f in os.listdir(d) | |
| if f.startswith("head_c") and f.endswith(".safetensors")) | |
| assert files, f"no head chunk files under {d}" | |
| pieces = [] | |
| for f in files: | |
| t, meta = _read_safetensors_np(os.path.join(d, f)) | |
| group = int(meta.get("group", 64)) | |
| dims = json.loads(meta["dims"]) | |
| for name, (m0, n0) in dims.items(): | |
| r0 = int(name.split(":")[1]) | |
| w = decode_int5g64(t[f"{name}|qp"], t[f"{name}|gscale"], m0, n0, | |
| group=group, prot_rows=t.get(f"{name}|prot_rows"), | |
| prot_dense=t.get(f"{name}|prot_dense")) | |
| pieces.append((r0, w)) | |
| pieces.sort(key=lambda x: x[0]) | |
| return np.concatenate([w for _, w in pieces], axis=0) | |
| # ============================================================================ # | |
| # encode-v2 expert extension: per-(expert, wavefront) loading gammas. | |
| # LDLQ feedback inflates quantization targets position-dependently along the | |
| # anti-diagonal wavefront; v2 experts normalize each wave to the codebook's | |
| # design radius and ship gamma [n_waves] fp16 per (expert, proj). Decode: | |
| # unpack states -> codebook gather -> MULTIPLY each 16x16 tile by | |
| # gamma[wave(tile)] -> * Wscale -> sign-flip Hadamard un-rotation. | |
| # ============================================================================ # | |
| def wave_index_map(Mb, Nb): | |
| """Tile grid [Mb, Nb] -> the LAST wavefront index that wrote each tile | |
| (the encoder's starts recurrence, including the reference schedule's | |
| duplicated top-right-starting wave).""" | |
| starts = ([(Mb - i - 1, Nb - 1) for i in range(Mb)] | |
| + [(0, Nb - i - 1) for i in range(Nb)]) | |
| idx = np.zeros((Mb, Nb), dtype=np.int32) | |
| for w, (jm, jn) in enumerate(starts): | |
| while 0 <= jm < Mb and 0 <= jn < Nb: | |
| idx[jm, jn] = w | |
| jm += 1 | |
| jn -= 1 | |
| return idx | |
| def apply_wave_gamma(Wr, gamma, td=16): | |
| """Multiply each td x td tile of Wr [m, n] by gamma[wave(tile)].""" | |
| m, n = Wr.shape | |
| Mb, Nb = m // td, n // td | |
| g = np.asarray(gamma, np.float32)[wave_index_map(Mb, Nb)] | |
| return np.ascontiguousarray( | |
| (Wr.reshape(Mb, td, Nb, td) * g[:, None, :, None]).reshape(m, n)) | |
| # ============================================================================ # | |
| # Trained-container expert decode (payload rdsl64j_s300 / rdsl64i_s100 class). | |
| # Layout: 32-expert CHUNK-STACKED keys e{c0}.{proj}.{trellis|su|sv|wave_gamma} | |
| # (c0 in 0,32,...,224), NO Wscale / int8 signs. su/sv are continuous fp16 over | |
| # the PADDED dims with Wscale absorbed into sv; wave_gamma is fp16 [n_chunk, | |
| # Mb+Nb] indexed by wave_index_map. Discriminator: file metadata carries | |
| # fields="trellis|su|sv|wave_gamma" and susv="trained_fp16:<export>". | |
| # EXACT op order (gated bit-faithful vs the served checkpoint, bf16 rounding): | |
| # states -> recons -> cast fp16 -> apply_wave_gamma (BEFORE both Hadamards) | |
| # -> hadamard over n -> * su (between the Hadamards) | |
| # -> transpose -> hadamard over m -> * sv -> transpose -> crop | |
| # ============================================================================ # | |
| CB_V3T = dict(K=1.5, L=16, V=8, tlut_bits=15, decode_mode="quantlut_sym", | |
| td_x=16, td_y=16) | |
| def decode_expert_v3t(t, tlut, proj, e, m0, n0, cb_params=None, table=None): | |
| """Decode ONE expert's projection from a trained-container layer dict.""" | |
| cbp = cb_params or CB_V3T | |
| c0, off = (e // 32) * 32, e % 32 | |
| if table is None: | |
| table = _np_full_lut_cached(tlut, cbp["L"], cbp["tlut_bits"]) | |
| m, n = padto(m0), padto(n0) | |
| tr = np.asarray(t[f"e{c0}.{proj}.trellis"][off]) | |
| su = np.asarray(t[f"e{c0}.{proj}.su"][off], np.float32) | |
| sv = np.asarray(t[f"e{c0}.{proj}.sv"][off], np.float32) | |
| states = _np_unpack_trellis(tr, cbp["td_x"] * cbp["td_y"], | |
| cbp["L"], cbp["K"], cbp["V"]) | |
| unit = _np_recons(states, table, m, n, cbp["td_x"], cbp["td_y"]) | |
| unit = unit.astype(np.float16).astype(np.float32) | |
| gk = f"e{c0}.{proj}.wave_gamma" | |
| if gk in t: | |
| unit = apply_wave_gamma(unit, np.asarray(t[gk][off], np.float32), | |
| td=cbp["td_x"]) | |
| rowside = _np_hadamard(unit) * su | |
| colside = _np_hadamard(rowside.T) * sv | |
| return np.ascontiguousarray(colside.T[:m0, :n0]) | |
| def decode_expert_layer_v3t(packed_dir, layer): | |
| """Whole-layer reassembly for the trained container -> gate_up/down fp32.""" | |
| path = os.path.join(packed_dir, "experts", f"L{layer:02d}.safetensors") | |
| t, meta = _read_safetensors_np(path) | |
| assert "wave_gamma" in (meta.get("fields") or ""), "not a trained-container shard (fields metadata lacks wave_gamma)" | |
| tlut, _ = _read_safetensors_np(os.path.join(packed_dir, "experts", | |
| "codebook.safetensors")) | |
| tlut = tlut["tlut"] | |
| table = _np_full_lut_cached(tlut, CB_V3T["L"], CB_V3T["tlut_bits"]) | |
| gate_up = np.empty((NEXP, 2 * INTER, HIDDEN), np.float32) | |
| down = np.empty((NEXP, HIDDEN, INTER), np.float32) | |
| for e in range(NEXP): | |
| gate_up[e, :INTER] = decode_expert_v3t(t, tlut, "gate", e, INTER, HIDDEN, | |
| table=table) | |
| gate_up[e, INTER:] = decode_expert_v3t(t, tlut, "up", e, INTER, HIDDEN, | |
| table=table) | |
| down[e] = decode_expert_v3t(t, tlut, "down", e, HIDDEN, INTER, table=table) | |
| return {"gate_up_proj": gate_up, "down_proj": down} | |
Xet Storage Details
- Size:
- 41.6 kB
- Xet hash:
- e94d774e149116c416ff4585d69c4732b6a547873f27239b5dacf2785b31c0fa
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.