Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
296 commits
Select commit Hold shift + click to select a range
a76d9ec
feat(server): serve per-request inference metrics under --enable-metr…
FantasticCode2019 Sep 17, 2026
ae8b3cf
fix(scheduler): preserve pending hybrid checkpoint across prefill chunks
eamars Sep 17, 2026
56ed570
fix(checkpoint): validate FTW v1 indexes eagerly
Avicennasis Aug 31, 2026
20f3b23
fix(kvcache): fp8-aware write-through mirror + batch-safe selection cap
alvarorsouza-arch Sep 19, 2026
5046e4a
feat(kvcache): host-resident prefix tier for hybrid GDN models
alvarorsouza-arch Sep 19, 2026
6c316e2
fix(qsa): 16-bit compute dtype guard for the indexer + fixed-shape wr…
alvarorsouza-arch Sep 19, 2026
b9b8f1b
fix(server): clamp /v1/models context_length to the allocated KV pool
oscar-investmatic Sep 20, 2026
f9947db
fix(moe): keep eager fallback and a bounds guard in the prefill inval…
Sep 18, 2026
dc9216c
test(moe): check the prefill invalidation kernel against the eager re…
Sep 18, 2026
cee23bf
fix(runtime): correct overlap token limits and cache safety (#546)
jason-fxz Sep 24, 2026
f5b9700
refactor(ple): extract a shared disk row store (#548)
jason-fxz Sep 25, 2026
0d652e7
feat(rocm): add RDNA3 and RDNA4 runtime foundation (#132)
zihaomu Sep 26, 2026
c2091c6
fix(engine): reject fa attention backend below sm_90 at config time
SanjayS45 Sep 14, 2026
f29be24
fix(engine): drop the tutorial comment on the fa sm_90 gate
SanjayS45 Sep 14, 2026
6e63b8f
fix(server): keep a silent stream alive and notice a client that left
YevheniiKotyrlo Sep 29, 2026
5031e3d
perf(qsa): reduce block top-k candidates in levels past 16 splits (#571)
YevheniiKotyrlo Sep 29, 2026
eba7120
feat(install): record the install root as FREETOKEN_HOME in environme…
jason-fxz Sep 30, 2026
09ab44e
test(server): patch the keep-alive interval strictly
YevheniiKotyrlo Oct 1, 2026
235e201
feat(rotary): size the rope table for YaRN and add --hf-overrides (#573)
YevheniiKotyrlo Oct 1, 2026
d3512b4
fix(ple): fence disk staging against in-flight lookups (#588)
jason-fxz Oct 1, 2026
1d5ce54
fix(checkpoint): refuse converting into a directory that already hold…
Avicennasis Oct 3, 2026
189c8ad
feat(moe): serve NVFP4 and MXFP4 experts fused through the expert ban…
jason-fxz Oct 4, 2026
581fdca
fix(server): report the backend kv page size in stats (#599)
yunwei37 Oct 5, 2026
93b0a59
fix(server): keep Anthropic inline system messages in place for prefi…
xinze-zheng Oct 5, 2026
555efd8
fix(kvcache): clone inserted radix keys to release request buffers (#…
taking-lying-flat Oct 5, 2026
a8498c7
fix(server): leak no semaphores when a signal stops the server
YevheniiKotyrlo Oct 6, 2026
c1a504a
perf(moe): Improved `fast_index_copy_multi_jit` for NVLink-C2C hosts …
SuperHotDogCat Oct 7, 2026
1c183e7
perf(moe): spin-wait the cpu moe pool between layers (#619)
jason-fxz Oct 7, 2026
127c856
feat(deepseek-v41): support text and vision serving (#603)
jason-fxz Oct 7, 2026
377a3bc
ci: auto-label amd issues and prs by title (#620)
jason-fxz Oct 7, 2026
7644984
perf(kernel): avoid layout conversions in nvfp4 marlin decode (#631)
jason-fxz Oct 8, 2026
127b530
perf(moe): avoid intra-op fanout while filling NVFP4 host banks
Oct 8, 2026
799bec3
perf(kernel): read dsv41 indexer key rows as int32 words (#634)
jason-fxz Oct 8, 2026
1c3aa0a
perf(kernel): keep 16-byte kv loads in dsv4 sparse attention and unro…
jason-fxz Oct 8, 2026
0781324
perf(kernel): skip masks and out-of-window tiles in triton extend att…
jason-fxz Oct 8, 2026
4f48328
fix(engine): apply shrinking cache resizes before growing ones in liv…
void-mckenzie Oct 8, 2026
803a3b4
fix(kernel): correct jit tensor matcher checks and pdl arch guards (#…
jason-fxz Oct 8, 2026
23fc922
feat(deepseek_v4): serve image input on the V4-Flash-Vision release (…
void-mckenzie Oct 8, 2026
9b585b7
fix(rocm): gate CUDA-only optional backends on ROCm (#134)
zihaomu Oct 9, 2026
6c36af0
test(kernel): cover Triton activation and norm fallbacks (#652)
zihaomu Oct 9, 2026
2d8b9cc
perf(kernel): avoid the activation layout conversion in fp8 moe decod…
jason-fxz Oct 9, 2026
9528190
feat(server): add --api-key authentication (#639)
jason-fxz Oct 10, 2026
ee9789f
fix(kernel): avoid nan in triton sampling softmax when a chunk starts…
ischencheng Oct 10, 2026
74a3877
build(deps): move to torch 2.14.1, triton 3.8 and sglang-kernel 0.4.9…
jason-fxz Oct 10, 2026
c818639
fix(sampling): apply presence and frequency penalties (#527)
taking-lying-flat Oct 11, 2026
95ac86f
feat(cpu-moe): serve block-fp8 experts on the cpu and hybrid backends…
jason-fxz Oct 12, 2026
7080dad
test(moe): grant one bf16 ulp only at rounding ties in the dsfp4 tran…
void-mckenzie Oct 9, 2026
9c635a1
build(deps): move to flashlib 0.4.0 and drop the numpy<2.5 cap (#669)
jason-fxz Oct 13, 2026
aae638d
test(moe): a short prefill chunk loads its experts through the slot c…
YevheniiKotyrlo Sep 30, 2026
689f3d1
feat(moe): load a short prefill chunk's experts on demand through the…
YevheniiKotyrlo Sep 30, 2026
96c7310
test(moe): a dense model drops the demand-prefill threshold
YevheniiKotyrlo Sep 30, 2026
a8f24b1
test(moe): the demand-prefill threshold is refused off GPU decode
YevheniiKotyrlo Oct 1, 2026
2010271
refactor(cpu-moe): split the executor into weight formats and gpu syn…
jason-fxz Oct 14, 2026
f02fbb1
perf(moe): split hybrid decode routes inside the ensure kernel (#685)
jason-fxz Oct 14, 2026
b416f85
feat(moe): split the offload expert cache into slot pools (#689)
jason-fxz Oct 15, 2026
0bca88f
fix(rocm): reuse staged moe alignment on Triton 3.8 (#691)
LZ-QWQ Oct 15, 2026
f3c9982
fix(memory): honor cgroup memory limits when sizing expert banks
Avicennasis Sep 1, 2026
e5d3bd3
feat(gguf): serve GGUF checkpoints on vendored ggml-cuda kernels (#690)
jason-fxz Oct 15, 2026
7d6490c
fix(rocm): clamp QSA KV tile to the device LDS budget on RDNA (#587)
zhangnju Oct 16, 2026
b6193e8
build(deps): upgrade transformers to 5.18 (#698)
jason-fxz Oct 16, 2026
df8d450
fix(gguf): reject ggml weights past the 32-bit block offsets of MMQ /…
jason-fxz Oct 16, 2026
18448d2
feat(gguf): serve Qwen3.5 dense and MoE GGUF checkpoints (#701)
jason-fxz Oct 16, 2026
3381b6e
feat(gguf): run experts whose gate_up and down mix float and quantize…
jason-fxz Oct 16, 2026
9b68e00
fix(engine): upload cuda graphs at capture so a stream wait cannot bl…
jason-fxz Oct 16, 2026
6c21dd5
feat(gguf): serve Qwen2, Qwen3 and Qwen3 MoE GGUF checkpoints (#707)
jason-fxz Oct 16, 2026
3886cee
feat(gguf): serve Gemma 4 dense GGUF checkpoints (#706)
jason-fxz Oct 16, 2026
d5eb18f
fix(kernel): correct fp4 cache scale rounding (#720)
LZ-QWQ Oct 16, 2026
e8c6bf1
feat(moe): serve experts of several formats through per-format slot p…
jason-fxz Oct 16, 2026
21d9578
feat(gguf): serve Llama and Mistral llama-arch GGUF checkpoints (#722)
jason-fxz Oct 16, 2026
bc0e2fe
perf(attention): copy triton metadata without blocking the host (#726)
jason-fxz Oct 16, 2026
312f324
test(server): list the llama and qwen2 gguf archs in the parser auto-…
jason-fxz Oct 17, 2026
e0dbb7d
fix(gguf): set ignore_merges for llama 3 gguf tokenizers (#728)
jason-fxz Oct 17, 2026
5d39d64
feat(gguf): serve Muse-Glimmer GGUF checkpoints (#724)
jason-fxz Oct 17, 2026
4663b2b
feat(gguf): serve MiniMax-M2 and MiniMax-M3 GGUF checkpoints (#725)
jason-fxz Oct 17, 2026
03c2c9c
perf(kernel): rewrite the triton nvfp4 moe prefill gemm (#723)
jason-fxz Oct 17, 2026
c8559fd
feat(cpu-moe): serve GGUF experts on the cpu and hybrid backends thro…
jason-fxz Oct 17, 2026
11c1adb
perf(kernel): split triton decode attention by context length and sm …
jason-fxz Oct 17, 2026
6b8f200
feat(gguf): serve GLM-4.5, GLM-4.6 and GLM-4.7 GGUF checkpoints (#731)
jason-fxz Oct 17, 2026
31c6ef4
feat(gguf): apply the weight scales of nvfp4 gguf tensors (#732)
jason-fxz Oct 17, 2026
ac6a15d
perf(moe): speed up the nvfp4 moe prefill gemm on rtx gpus (#733)
jason-fxz Oct 18, 2026
8f49e0a
feat(moe): bench hybrid fetch fractions per moe layer kind (#734)
jason-fxz Oct 18, 2026
fd410ee
perf(moe): pipeline the nvfp4 prefill scale loads on geforce sm_86 / …
jason-fxz Oct 18, 2026
e4f69d9
perf(moe): prefill nvfp4 moe experts on nvfp4 activations on sm_120 (…
jason-fxz Oct 19, 2026
30dd715
fix(muse_glimmer)!: keep the attention gate out of the qkv fusion (#741)
jason-fxz Oct 19, 2026
4d2e2e2
perf(linear): run nvfp4 linears on nvfp4 activations on sm_120 (#737)
jason-fxz Oct 19, 2026
0db5023
fix(quant)!: keep nvfp4 global scales in fp32 (#739)
jason-fxz Oct 19, 2026
5596e6b
feat(gguf): add scripts that check which gguf files load (#756)
jason-fxz Oct 19, 2026
163d1de
fix(qwen4_exp): read weights under the checkpoint's quant config (#759)
jason-fxz Oct 20, 2026
05e7cb7
fix(qwen3_5_moe)!: apply the zero-centred norm weights' +1 in fp32 at…
jason-fxz Oct 20, 2026
64b85c3
fix(qwen4_exp): load gguf files with a quantized indexer (#760)
jason-fxz Oct 20, 2026
70550f8
feat(scripts): add checkpoint diagnosis and fix scripts (#762)
jason-fxz Oct 20, 2026
bb15d1d
fix(server): accept localhost authority in local file URIs (#758)
bettercallcaleb Oct 20, 2026
cc56b6b
feat(gguf): serve GLM-5.3-Flash GGUF checkpoints on glm5-next (#721)
void-mckenzie Oct 20, 2026
a0d9e2a
merge #408: nvfp4 kv quantization
gdevenyi Sep 23, 2026
7a8b7dd
test(kvcache): give the qsa fp8 pool fakes the mrope flag main now reads
gdevenyi Sep 14, 2026
5cb8f7a
merge #435: resolve JSON Schema refs and union types in tool arguments
gdevenyi Sep 23, 2026
fc658c1
merge #391: accept the OpenAI developer role
gdevenyi Sep 23, 2026
6684e20
merge #475: respect explicit enable_thinking=false with tools
gdevenyi Sep 23, 2026
5e64dd2
merge #339: drop the D2H sync from the varlen GDN/KDA prefill conv
gdevenyi Sep 23, 2026
5e26165
merge #338: fuse the PLE n-gram row-id hash into one Triton kernel
gdevenyi Sep 23, 2026
4804a67
merge #169: load prefill triton kernels at startup, not mid-request
gdevenyi Sep 23, 2026
3d5da5b
merge #231: --moe-collect-stats, so expert-cache behaviour is measurable
gdevenyi Oct 15, 2026
736212a
merge #389: load-time per-tensor FP8 dense projections (stacked on #3…
gdevenyi Sep 23, 2026
940c26a
fix(models): restore the os import and truthy set the fp8 env helpers…
gdevenyi Sep 15, 2026
8808762
test(qwen4_exp): restore the rope device and clear get_rope after the…
gdevenyi Sep 15, 2026
c601ccd
test(kernels): give the block_ends backend fake the kv scale accessor…
gdevenyi Sep 15, 2026
8241a1e
merge fork #18: fix(moe): report the routing top-k figure as a static…
gdevenyi Sep 23, 2026
aeea900
merge fork #19: fix(qwen4_exp): refuse an ftw checkpoint whose fp8 sp…
gdevenyi Sep 23, 2026
f07663d
merge fork #20: fix(engine): let moe-cache-auto drop prefill overlap …
gdevenyi Sep 23, 2026
3afc08f
merge fork #21: fix(triton): keep the float glm dsa sparse launches t…
gdevenyi Sep 23, 2026
9d60f84
merge fork #23 (upstream FlashML-org/FreeToken#17 rebased): fix(serve…
gdevenyi Sep 23, 2026
99ffa2b
merge fork #47 (upstream FlashML-org/FreeToken#393 rebased): OpenAI p…
gdevenyi Sep 23, 2026
77009dd
fix(models): skip the ftw layout check for a bare ftw without an hf c…
gdevenyi Sep 18, 2026
26c0217
merge #505: fix(scheduler): preserve pending hybrid checkpoint across…
gdevenyi Sep 23, 2026
8fbd0a3
merge #466: fix(utils): tolerate coalesced msgpack frames in zmq pull…
gdevenyi Sep 23, 2026
1616376
merge #414: fix(kernel): order the batch-memcpy probe against the cur…
gdevenyi Sep 23, 2026
0c33dff
merge #118: fix(scheduler): clamp admission to the actual KV pool so …
gdevenyi Sep 23, 2026
db1ffaf
test(scheduler): give the rejection test's engine fake the pool size …
gdevenyi Sep 18, 2026
4c98036
merge #476: feat(server): add --default-thinking-mode flag for server…
gdevenyi Sep 23, 2026
cfd781e
merge #340: fix(engine): reserve the pool's dummy page in the --moe-c…
gdevenyi Sep 23, 2026
d207275
merge #198: fix(engine): reserve explicit KV pages during MoE auto-si…
gdevenyi Sep 23, 2026
5392006
merge #459: fix(checkpoint): validate FTW v1 indexes eagerly
gdevenyi Sep 23, 2026
fbe9130
merge #487: fix(server): hoist system messages to front for templates…
gdevenyi Sep 23, 2026
6418df6
merge #222: fix(server): guarantee AbortMsg delivery on stream cancel…
gdevenyi Sep 23, 2026
bbd1337
test(server): abort every sample of an n>1 non-streaming request on d…
gdevenyi Sep 18, 2026
e9717bb
fix(server): record requests with a pure asgi middleware so handlers …
gdevenyi Sep 18, 2026
83cffc1
merge #499: feat(kvcache): host-RAM KV tier for sparse-attention mode…
gdevenyi Sep 23, 2026
ebf42d0
merge #525: feat(kvcache): host-resident prefix tier for hybrid GDN m…
gdevenyi Sep 23, 2026
78a7b87
fix(kvcache): refuse the host kv tiers on an nvfp4 pool whose block s…
gdevenyi Sep 19, 2026
fc2894a
merge #500: perf(moe): single-launch prefill buffer invalidation with…
gdevenyi Oct 15, 2026
4e2a70f
merge #108: feat(server): add OpenAI /v1/models/{model_id} endpoint
gdevenyi Sep 23, 2026
7600702
merge #504: feat(server): serve per-request inference metrics under -…
gdevenyi Sep 23, 2026
f5e4f40
test(scheduler): give the scheduler stubs the prefill-start map the m…
gdevenyi Sep 23, 2026
045686f
merge #224: feat(server): OpenAI-compatible logprobs for chat and leg…
gdevenyi Oct 13, 2026
d5a94a8
test(engine): give the logprobs sampler fakes the logits-processing f…
gdevenyi Sep 23, 2026
ec25773
merge fork review fixes: 11 bugs found re-reviewing the 5080deploy stack
gdevenyi Sep 24, 2026
78000e8
merge fork fix (issue #65): run the PLE graph fill on its own thread,…
gdevenyi Sep 24, 2026
abd60a1
merge fork perf: load only the routed experts for short prefills (FRE…
gdevenyi Sep 24, 2026
db2cee5
merge fork fix: small-prefill on-demand path hands the LRU kernel uni…
gdevenyi Sep 24, 2026
908546c
merge fork fix: small-prefill ensures its experts in decode-width chunks
gdevenyi Sep 24, 2026
072b29a
merge fork perf: scored expert eviction (--moe-cache-policy), shared …
gdevenyi Sep 26, 2026
f62f8ed
merge fork perf: expert prefetch into low-priority slots with single-…
gdevenyi Sep 27, 2026
6ccca42
test(engine): give the kv quant config fake the rope table size #573'…
gdevenyi Oct 2, 2026
1397e8f
merge #531: fix(server): clamp /v1/models context_length to the alloc…
gdevenyi Oct 2, 2026
158b714
merge #269: fix(server): report why a tokenizer/detokenizer worker di…
gdevenyi Oct 2, 2026
28e739e
merge #468: fix(engine): reject fa attention backend below sm_90 at c…
gdevenyi Oct 2, 2026
f007e93
merge #461: fix(server): loopback-bind the TP rendezvous store, add -…
gdevenyi Oct 13, 2026
9af2aac
fix(engine): hand the rendezvous listen fd to TCPStore instead of kee…
gdevenyi Sep 25, 2026
c8cbd90
merge #484: feat(scheduler): interleave decode steps into long prefil…
gdevenyi Oct 2, 2026
ddb26f9
merge #464: fix(scheduler): match stop strings with incremental decoding
gdevenyi Oct 2, 2026
49b3f8f
fix(scheduler): trim the stop-match EOS only at the delivered output …
gdevenyi Sep 25, 2026
0c62979
test(tokenizer): cover a detokenize batch that carries one uid more t…
gdevenyi Sep 25, 2026
435bd69
fix(scheduler): match stop strings in the text the request's skip_spe…
gdevenyi Sep 25, 2026
9d91c3a
merge #266: fix(server): hide qwen transport markers from semantic re…
gdevenyi Oct 2, 2026
abbfe94
merge #572: fix(server): keep a silent stream alive and notice a clie…
gdevenyi Oct 2, 2026
07b8be0
perf(ple): skip the device n-gram hash for the disk table, which read…
gdevenyi Sep 25, 2026
3c7be6e
fix(ple): give each graph fill its own readback event and keep every …
gdevenyi Sep 25, 2026
f15f924
fix(ple): recycle the fill readback events instead of freeing them on…
gdevenyi Sep 25, 2026
45acef3
fix(kvcache): refuse the host kv-page tier on a pool whose index slab…
gdevenyi Sep 25, 2026
e3f7762
perf(kvcache): keep one gpu gdn snapshot slot when the host snapshot …
gdevenyi Sep 25, 2026
4002afc
perf(scheduler): probe the host tier for the exact tombstone prefix
gdevenyi Sep 25, 2026
da62c75
fix(scheduler): re-probe the host entry after making room to rehydrat…
gdevenyi Sep 25, 2026
d4de4d0
test(kvcache): cover the engine-stream waits of the prefix tier's kv …
gdevenyi Sep 25, 2026
3bdd459
fix(engine): reserve the GDN prefill workspace in the cache budget
Aug 30, 2026
097abf7
fix(engine): reserve the gdn prefill workspace in the rebuild fit-che…
gdevenyi Sep 25, 2026
2fe2ebd
fix(engine): count min_tokens progress from the device length
gdevenyi Sep 25, 2026
7079899
test(engine): import pytest for the parametrized min_tokens test
gdevenyi Oct 2, 2026
d541e96
fix(server): let protocol-level thinking requests win over --default-…
gdevenyi Sep 25, 2026
8d51b51
fix(server): type allOf-wrapped refs and untyped enum/const tool para…
gdevenyi Sep 25, 2026
538b927
fix(server): keep /v1/models/ listing the model after the retrieve route
gdevenyi Sep 25, 2026
2e1021e
fix(server): open the streamed thinking block with the signature field
gdevenyi Sep 25, 2026
b64232a
test(server): exercise detector SDK and lifecycle contracts
gdevenyi Sep 25, 2026
9267991
fix(server): drop /v1/completions from the --enable-metrics-report he…
gdevenyi Sep 25, 2026
560f88e
fix(server): keep developer ahead of system and reject images when me…
gdevenyi Sep 25, 2026
ba1bb53
test(server): ask for n=0 in the invalid-request sdk test, since n=2 …
gdevenyi Oct 2, 2026
943d2d6
fix(moe): keep unpinned layers off the small-prefill path and take it…
gdevenyi Sep 25, 2026
547c5e9
test(moe): let the small-prefill ensure fake take the eviction policy…
gdevenyi Oct 2, 2026
3608bd8
test(qwen4_exp): compare chunked prefill to one-shot at bf16 tolerance
gdevenyi Sep 4, 2026
afbfea8
test(qwen4_exp): compare the chunked prefill's compressed slab rows t…
gdevenyi Sep 25, 2026
7f59703
feat(engine): keep the token embedding in pinned host ram (--embed-we…
gdevenyi Sep 25, 2026
600f426
fix(layers): gather fp32 host embeddings and refuse other dtypes at p…
gdevenyi Sep 25, 2026
b1f4433
fix(kernel): compute the host gather output offset in int64
gdevenyi Sep 25, 2026
41ec434
fix(engine): charge the host embedding's pinned bytes to the pin budget
gdevenyi Sep 25, 2026
6541769
fix(engine): refuse --embed-weights host for a tied embedding or tp >…
gdevenyi Sep 25, 2026
5cc4fa8
test(engine): fake cached_load_hf_config with the overrides argument …
gdevenyi Oct 2, 2026
541d528
test(ple): drive overlapped graph fills against an in-order fake stre…
gdevenyi Oct 2, 2026
ec5013b
fix(kernel): keep one e4m3_f32_to_u8, #408's copy duplicates the one …
gdevenyi Oct 7, 2026
c6c696e
fix(server): leave late Anthropic system messages to the inline-syste…
gdevenyi Oct 7, 2026
9e84b61
test(server): give main's DeepSeek-V4.1 detector its contract class a…
gdevenyi Oct 7, 2026
d7bfb6d
merge #614: fix(server): leak no semaphores when a signal stops the s…
gdevenyi Oct 7, 2026
000f65c
merge #593: fix(checkpoint): refuse converting into a directory that …
gdevenyi Oct 7, 2026
35a8555
test(moe): let the prefetch counter test's copy spies pass #610's blo…
gdevenyi Oct 7, 2026
a292baa
merge #650: fix(engine): apply shrinking cache resizes before growing…
gdevenyi Oct 15, 2026
b31a4d7
merge #635: perf(moe): avoid intra-op fanout while filling NVFP4 host…
gdevenyi Oct 13, 2026
30b42f0
merge #668: test(moe): grant one bf16 ulp only at rounding ties in th…
gdevenyi Oct 13, 2026
709cc05
test(engine): give #650's rebuild engine fake the kv offloader and gd…
gdevenyi Oct 13, 2026
2dad644
test(server): expect out-of-range penalties to fail request validation
gdevenyi Oct 13, 2026
9db9dae
fix(kernel): decode nvfp4 qsa prefill tiles narrow at head_dim 256
gdevenyi Oct 13, 2026
d2d6c04
merge #676: feat(moe): load a short prefill chunk's experts on demand…
gdevenyi Oct 15, 2026
0448e71
fix(kernel): size triton's autotune flush buffer to the device l2
gdevenyi Sep 25, 2026
9917f68
test(utils): drive the async coalesced-pull test with asyncio.run
gdevenyi Oct 13, 2026
2019d4f
fix(engine): keep multimodal placeholder ids out of the repetition-pe…
gdevenyi Sep 24, 2026
b712dee
fix(engine): apply the repetition penalty from device state, not a pe…
gdevenyi Sep 25, 2026
6dc2bb9
fix(server): clarify unsupported response_format error text
Oct 5, 2026
cddbc9d
fix(mm): classify image fetch errors and re-check redirect targets
Avicennasis Oct 3, 2026
5e8a24b
test(engine): cover presence/frequency penalties on the greedy and sa…
gdevenyi Sep 25, 2026
faa8116
perf(model): fuse hc combine with the next block's RMSNorm via hc_com…
Oct 2, 2026
e89e46e
fix(kernel): bit-exact rmsnorm reduction tree in hc_combine_norm
Oct 2, 2026
34de9a9
test(kernel): bitwise pin for hc_combine_norm against the split path
Oct 2, 2026
9f46531
fix(server): soft-accept OpenAI response_format json_object/json_schema
Oct 5, 2026
8248a8f
refactor(server): drop response_format system-hint injection
Oct 5, 2026
5f7b3e4
test(engine): drop the pre-volta sampling penalty test, whose torch f…
gdevenyi Oct 13, 2026
675d110
fix(moe): align on triton past sgl_kernel's 1024-expert limit
gdevenyi Oct 13, 2026
f4f2d38
fix(moe): refuse the global-slot moe features when the cache has seve…
gdevenyi Oct 15, 2026
160f3ab
test(moe): restore the #676 merge's on-demand test updates the replay…
gdevenyi Oct 15, 2026
b282a0a
fix(moe): keep bank_views for the one-pool slot cache
gdevenyi Oct 15, 2026
e0023e5
test: give the rebuild and scored-ensure fakes the slot-pool api of #689
gdevenyi Oct 15, 2026
e41664a
fix(moe): index the per-layout copy row bytes in the verify and audit…
gdevenyi Oct 15, 2026
8eeced1
test(kernel): cover the device-sized autotune flush buffer
gdevenyi Sep 25, 2026
21a0d19
merge #223: validate sampling params and rebuild timeout at the API l…
gdevenyi Oct 15, 2026
fc1224c
fix(server): accept top_k <= 0 as "disabled", as vLLM and the OpenAI-…
gdevenyi Sep 26, 2026
c750abc
merge fork: logprobs and usage fixes (token bytes, completions offset…
gdevenyi Oct 15, 2026
fadcf83
merge fork: chat logprobs under the qwen3 and qwen3_coder parsers, an…
gdevenyi Oct 15, 2026
bde0371
perf(tokenizer): skip the logprob hold bookkeeping when nothing is held
gdevenyi Oct 15, 2026
ab70a58
perf(server): collect non-streaming chat logprob entries only when asked
gdevenyi Oct 15, 2026
018c4c9
fix(checkpoint): load an ftw whose nvfp4 global scales are fp16
gdevenyi Oct 20, 2026
24de7e6
fix(server): reject unimplemented vllm fields and empty prompts on co…
gdevenyi Oct 20, 2026
d4d2606
feat(server): honour allowed_token_ids on completions with restricted…
gdevenyi Oct 20, 2026
c501d83
feat(server): honour return_tokens_as_token_ids on completions
gdevenyi Oct 20, 2026
7ade750
feat(server): accept token-id prompts on completions
gdevenyi Oct 20, 2026
abc6dec
docs(server): drop the stale logprobs 400 note from the chat table
gdevenyi Oct 20, 2026
2bfdae1
fix(server): reject unimplemented vllm fields on chat completions
gdevenyi Oct 20, 2026
605b1ae
fix(server): bound logit_bias and stop_token_ids ids to the vocabulary
gdevenyi Oct 20, 2026
10ea082
feat(scheduler): limit the gdn snapshots a logprob read donates
gdevenyi Oct 20, 2026
9aef86b
merge #334: fix(memory): honor cgroup memory limits when sizing exper…
gdevenyi Oct 20, 2026
5fb4c82
merge #144: fix(kernel): clear the latched CUDA error before raising …
gdevenyi Oct 20, 2026
d75874b
test(moe): drive #334's admission tests through #700's method loader
gdevenyi Oct 20, 2026
cbf345b
test(moe): stub #697's capture-time graph upload in the warm offload …
gdevenyi Oct 20, 2026
840aa6d
test(minimax_m3): keep the swigluoai kernel choice independent of the…
gdevenyi Oct 20, 2026
76f6f1e
fix(server): report the admitted prompt usage in the anthropic messag…
gdevenyi Oct 20, 2026
27cd6f1
fix(server): reject an over-long prompt with a 400 before the stream …
gdevenyi Oct 20, 2026
a36322e
fix(server): close a qwen3_coder call cut inside its parameter closer
gdevenyi Oct 20, 2026
e67bd42
fix(checkpoint): upcast fp16 nvfp4 globals under inference mode on th…
gdevenyi Oct 20, 2026
fc30523
feat(scheduler): add the --logprob-read-isolate flag and the is_logpr…
gdevenyi Oct 20, 2026
fed0156
feat(scheduler): prefill an isolated logprob read in a pass of its own
gdevenyi Oct 20, 2026
cc13fec
feat(scheduler): keep isolated logprob reads out of the prefix cache
gdevenyi Oct 20, 2026
77874d2
perf(engine): make the capture-time cuda graph upload switchable with…
gdevenyi Oct 21, 2026
aab6bdd
perf(qsa): score prefill rows in tiles of 16 query rows per program
gdevenyi Oct 21, 2026
fa5e0ca
test(fp8): pin a dynamic fp8 linear row against the other rows of its…
gdevenyi Oct 20, 2026
6c381c3
fix(fp8): scale dynamic fp8 activations per row so batched sequences …
gdevenyi Oct 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ contact_links:
url: https://discord.gg/MsA277cJzZ
about: Ask on the Community Discord instead of opening an issue.
- name: Usage questions (WeChat, CN)
url: https://github.com/FlashML-org/FreeToken/blob/main/assets/freetoken-wechatgroup.png
url: https://github.com/FlashML-org/FreeToken/issues/482
about: Scan the QR code to join the Community WeChat group.
- name: Development discussion
url: https://join.slack.com/t/flashml/shared_invite/zt-3zpdh5j10-9dwTXrgLiqpVxizhA9KVbA
Expand Down
2 changes: 2 additions & 0 deletions .github/issue-title-labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
amd:
- '/\b(ROCm|HIP|RCCL|RDNA\s?\d?|CDNA\s?\d?|gfx\d{3,4}[a-z]?|MI\d{3}X?|RX\s?\d{4}|Radeon(?!\s*(\d{3}M|Graphics|Vega))|AMD[\s-]*(GPUs?|graphics|cards?|Instinct))\b|\bAMD[\s-]*显卡|\(amd\)|(?<!\w)A卡/i'
18 changes: 15 additions & 3 deletions .github/workflows/issue-labels.yml
Original file line number Diff line number Diff line change
@@ -1,23 +1,35 @@
name: Label issues
name: Label issues and PRs

on:
issues:
types: [opened, edited]
pull_request_target:
types: [opened, edited]

permissions:
issues: write
pull-requests: write

jobs:
label:
runs-on: ubuntu-latest
steps:
- uses: github/issue-labeler@v3.4
- if: github.event_name == 'issues'
uses: github/issue-labeler@v3.4
with:
configuration-path: .github/issue-labeler.yml
enable-versioned-regex: 0
include-title: 0
repo-token: ${{ github.token }}
- if: github.event.action == 'opened'
- if: github.event.action == 'opened' || github.event.changes.title
uses: github/issue-labeler@v3.4
with:
configuration-path: .github/issue-title-labeler.yml
enable-versioned-regex: 0
include-title: 1
include-body: 0
repo-token: ${{ github.token }}
- if: github.event_name == 'issues' && github.event.action == 'opened'
uses: actions/github-script@v7
with:
script: |
Expand Down
3 changes: 3 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ benchmarks/ end-to-end and micro benchmarks, see benchmarks/README.md
docs/ install, quickstart, CLI and model docs
freetoken-kernel-cache/ companion wheel of prebuilt kernels, see its README
scripts/ wheel build and release scripts
checkpoint_diagnose/ why an HF safetensors checkpoint does not load, and fixes for non-standard ones
gguf_check/ which GGUF files of a family load
```

## Development
Expand All @@ -54,6 +56,7 @@ Put a new test in the `tests/` directory that mirrors the module it protects, an

- Search existing issues and PRs before starting. Items on the [Roadmap](https://github.com/FlashML-org/FreeToken/issues/79) are discussed with maintainers before implementation; features not on it start as an issue.
- When helping the user draft an issue, follow the matching template in `.github/ISSUE_TEMPLATE/` (engine bug, model checkpoint, feature request) and fill in every required field: hardware, driver, FreeToken version, checkpoint ID, exact command, and the full log.
- When a checkpoint fails to load, follow [scripts/checkpoint_diagnose/README.md](scripts/checkpoint_diagnose/README.md) before drafting a model checkpoint issue: it tells a FreeToken gap from a non-standard checkpoint, and repairs the latter.
- One change per PR, linked to its issue, with the hardware, checkpoint ID and exact command it was tested with.

## Code comments
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Thanks for helping make FreeToken better. This page covers how to report issues

- [FAQ](https://github.com/FlashML-org/FreeToken/issues/84): kept up to date; most install and runtime problems are answered there.
- [Roadmap](https://github.com/FlashML-org/FreeToken/issues/79): what we are working on next.
- [Developer Slack](https://join.slack.com/t/flashml/shared_invite/zt-3zpdh5j10-9dwTXrgLiqpVxizhA9KVbA) for development discussion; [Community Discord](https://discord.gg/MsA277cJzZ) or [Community WeChat](https://github.com/FlashML-org/FreeToken/blob/main/assets/freetoken-wechatgroup.png) for usage questions.
- [Developer Slack](https://join.slack.com/t/flashml/shared_invite/zt-3zpdh5j10-9dwTXrgLiqpVxizhA9KVbA) for development discussion; [Community Discord](https://discord.gg/MsA277cJzZ) or [Community WeChat](https://github.com/FlashML-org/FreeToken/issues/482) for usage questions.

## Reporting issues

Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
</div>

<p align="center">
| <a href="https://www.flashml.ai/"><b>Download</b></a> | <a href="https://arxiv.org/abs/2608.16157"><b>Paper</b></a> | <a href="https://join.slack.com/t/flashml/shared_invite/zt-3zpdh5j10-9dwTXrgLiqpVxizhA9KVbA"><b>Developer Slack</b></a> | <a href="https://discord.gg/MsA277cJzZ"><b>Community Discord</b></a> | <a href="https://github.com/FlashML-org/FreeToken/blob/main/assets/freetoken-wechatgroup.png"><b>Community WeChat</b></a> |
| <a href="https://www.flashml.ai/"><b>Download</b></a> | <a href="https://arxiv.org/abs/2608.16157"><b>Paper</b></a> | <a href="https://join.slack.com/t/flashml/shared_invite/zt-3zpdh5j10-9dwTXrgLiqpVxizhA9KVbA"><b>Developer Slack</b></a> | <a href="https://discord.gg/MsA277cJzZ"><b>Community Discord</b></a> | <a href="https://github.com/FlashML-org/FreeToken/issues/482"><b>Community WeChat</b></a> |
</p>


Expand Down Expand Up @@ -56,6 +56,7 @@ For More details:
- [Supported models](https://github.com/FlashML-org/FreeToken/blob/main/docs/models.md)
- [CLI reference](https://github.com/FlashML-org/FreeToken/blob/main/docs/cli.md)
- [Repairing old FTW checkpoints](https://github.com/FlashML-org/FreeToken/blob/main/docs/ftw-hotfix.md)
- [Diagnosing a checkpoint that fails to load](https://github.com/FlashML-org/FreeToken/blob/main/scripts/checkpoint_diagnose/README.md)

## Citation

Expand Down
Binary file removed assets/freetoken-wechatgroup.png
Binary file not shown.
53 changes: 53 additions & 0 deletions benchmarks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,59 @@ batch size x miss rate.
python benchmarks/bench_offload_cache_copy.py
```

**`bench_scored_ensure.py`** — synthetic (no checkpoint): us per decode `ensure` call at a
fixed miss count, flashlib `lru_ensure` vs the `--moe-cache-policy` kernels (lru, kd, kdfb,
rule), from a CUDA graph of two decode steps on a full cache. `--stats` times it with
`--moe-collect-stats` accumulation on.

```bash
python benchmarks/bench_scored_ensure.py --slots 1650 --k 10,20
```

**`bench_moe_copy_overlap.py`** — synthetic (no checkpoint): `FREETOKEN_MOE_COPY_OVERLAP`
off vs on for Qwen4ExpMoE decode layers at the Qwen3.8-Flash-Next expert geometry, as CUDA
graphs. Checks the outputs are bitwise identical, times replays ABAB, and profiles the copy's
start after the ensure and how much of the side-stream shared expert runs inside it.

```bash
python benchmarks/bench_moe_copy_overlap.py --bs 1 --slots 160
```

**`bench_moe_prefetch.py`** — synthetic (no checkpoint): `FREETOKEN_MOE_PREFETCH=measure`
cost. The router-lookahead predictor alone per layer (GEMV `[bs, 2560] x [2560, 512]`, top-K
select, and the count kernel), then prefetch off vs measure on a real-geometry Qwen4ExpMoE decode
stack (512 experts, rule eviction, copy overlap on) with forced routing that misses exactly m
experts per layer, as CUDA graphs. `--on` times whole 48-layer decode steps with prefetch off vs
on instead: a GEMV per layer stands in for attention (`--filler-us`), each layer prefetches 3 or
4 candidates of which `--useful` are its misses, and `--delay-us` holds every prefetch copy back
to price a late one. It reports ms/step, demand misses/step and the late fraction. `--steady
--trace DIR` runs steady-state decode on a recorded routing trace instead (experts.npy,
logit_idx.npy, logit_val.npy, req_index.npy): no cache restore, so wrong prefetches and evictions
carry over, and a noisy copy of each layer's traced logits (`--sigma`) stands in for the
lookahead. Arms such as `off,measure,on,on:4/4` (budgets before GDN / QSA layers) replay step by
step in turn, each on its own copy of the cache state; it adds pollution (non-resident demands
per layer against off's misses) and the late fraction per layer kind. Slots and sigma were
calibrated to production's measure line (misses/layer ~4.3, precision ~0.56) at 24 layers.

```bash
python benchmarks/bench_moe_prefetch.py --bs 1,2 --misses 0,4
python benchmarks/bench_moe_prefetch.py --on --bs 1,2 --misses 4 --delay-us 0,50,150,300
python benchmarks/bench_moe_prefetch.py --steady --trace DIR --bs 1,2 --steady-slots 740 --sigma 0.55 \
--arms off,measure,on,on:empty,on:3/3,on:4/4,on:4/5
```

**`bench_expert_copy_corun.py`** — synthetic (no checkpoint): the fused expert copy kernel
alone and beside compute, on registered host banks with the qwen4_exp NVFP4 row sizes. Sweeps
`fast_index_copy_multi` (threads x blocks/bank) and `fast_index_copy_multi_slim`
(blocks x threads x unroll) over 1..10-expert plans (GB/s, "hot" back-to-back and "cold"
spacer-separated copies), then reports the stretch sigma of bf16/fp8 GEMVs, a small matmul and
the NVFP4 routed decode GEMV while a copy loop runs on another stream. `--json` keeps the raw
per-trial times.

```bash
python benchmarks/bench_expert_copy_corun.py --trials 5 --json copy_corun.json
```

For host RAM vs PCIe bandwidth and the offload/hybrid backend pick, use `ft bench bw`
instead — it writes the JSON profile the engine reads.

Expand Down
Loading