kern-qwen38-sm103
Kernel artifacts and manifests for running Qwen3.8-27B (plain decode and its DFlash2 speculative draft) on one GB300 (sm_103a) with kern, a model-agnostic GPU runtime. The runtime contains no model; everything it needs to know about this one is in the manifest.
Layout
cubins/<name>-<sha12>.cubin— every device module the manifests pin, one flat content-addressed directory. The runtime resolves modules by sha256 only; the name is a label and the sha prefix keeps every version of a kernel side by side. New builds are added, nothing is renamed or removed.manifests/qwen3.8-27b.json— the decode manifest (prefill,decode,decode_batchprograms; full attention on TRTLLM-GEN, GDN layers on vLLM's Triton kernels plus kern's fused decode kernels).decodeanddecode_batchdeclaregraph(driven through a captured CUDA graph);prefillruns launch by launch, up to 8192 tokens a chunk (tokens).manifests/qwen3.8-27b-dflash2.json— the same model with its DFlash2 draft: draft, verify and round programs, zero extra runtime code.
Both manifests match examples/ in the kern repository at the commit named
in each upload's commit message. They are manifest schema 5 and need kern
v0.2.0 or newer (curl -fsSL https://kern-baa.pages.dev/install.sh | sh
installs kern and kern-serve together); v0.1.0 refuses the file.
Not hosted here
- Weights and tokenizer. They are the models' own Hugging Face
checkpoints, unmodified: Qwen/Qwen3.8-27B
and, for the draft, incoai/Qwen3.8-27B-DFlash2.
Each weight buffer in the manifest names the checkpoint tensors (or the
rectangles of them) that fill it, so the runtime assembles qkv / gate_up
and the draft's fused buffers straight from the safetensors shards, and a
loadprogram computes the rest (rope tables, Gemma norm offsets) on the device.
Run
hf download Pegainfer/kern-qwen38-sm103 --local-dir kern-qwen38
hf download Qwen/Qwen3.8-27B --local-dir qwen3.8-27b # the weights, as published
kern run --manifest kern-qwen38/manifests/qwen3.8-27b.json \
--kernels kern-qwen38/cubins \
--weights qwen3.8-27b \
--gpu 0 --prompt "The capital of France is" --steps 32
For the speculative manifest add the draft checkpoint as a second
--weights (hf download incoai/Qwen3.8-27B-DFlash2 --local-dir dflash2,
then --weights qwen3.8-27b --weights dflash2); its 8-row draft / verify
round is the default step.
The same three flags serve it over an OpenAI-compatible endpoint:
kern-serve --manifest kern-qwen38/manifests/qwen3.8-27b.json --kernels kern-qwen38/cubins \
--weights qwen3.8-27b --served-model-name qwen3.8-27b
kern test --reference <other manifest> attests one manifest against
another on logits; kern bench measures programs in isolation.
Provenance and licenses
| artifacts | origin | license |
|---|---|---|
argmax, attn_prep, copy_rows, dflash_conv, dflash_select, embedding, gdn_advance, gdn_decode, gemm16, gemma_rms_norm, line_copy, sigmoid_mul, silu_mul, spec_round, topk_row, weight_prep |
kern's handwritten kernels, tools/kernels-src/*.cu in the kern repo, nvcc -cubin -arch=sm_103a |
same as kern |
chunk_h, chunk_o, cumsum, kkt, recompute, solve_tril, post_conv, conv_fwd, conv_update_spec, recurrent_spec, layer_norm, mrope, cache, reduce, unified, unified_noncausal, d_cache, d_rms_norm, d_rope, vllm_activation |
captured from vLLM 0.28's Triton JIT and CUDA extension on GB300 (the GDN ops are the flash-linear-attention kernels vLLM vendors) | Apache-2.0 (vLLM); the vendored FLA ops are MIT |
fmhaSm100fKernel_…SwapsAbForGen (×2), fmhaSm103aKernel_…PersistentContext |
NVIDIA TensorRT-LLM's generated attention kernels (trtllm-gen), copied byte for byte from NVIDIA's public artifactory pin 158f6fa11ef139a098cfddcdddce73ca99d164ad/fmha/trtllm-gen/ (the same files FlashInfer downloads and ships in flashinfer-cubin, and TensorRT-LLM checks into its tree); sha256 pinned in the kern repo's tools/trtllm-gen/artifacts.json |
Apache-2.0: the LICENSE NVIDIA publishes next to the cubins, copied to licenses/LICENSE.trtllm-gen.txt |
Toolchain of the handwritten kernels the base manifest pins (attn_prep,
gdn_decode, gemm16, gemma_rms_norm-92dda…, sigmoid_mul-2b07…,
silu_mul, weight_prep): CUDA 13.0 nvcc (cuda_13.0.r13.0/compiler.36424714_0). A
different nvcc yields a different cubin and therefore a different sha; the
manifest pins the build that was present when it was generated, and whether
two builds agree numerically is kern test's verdict, not the name's.
The older handwritten builds were made before the toolchain was recorded.