Raw WebGPU · No ONNX · No transformers.js

İvme-Conversate.

Hand-written WGSL kernels reading model.safetensors straight off the wire — the tensor bytes go into GPU buffers directly, no export step, no runtime graph compiler.

MODEL
Conversate-v2-Base
PARAMS
23.8M
RUNTIME
Browser / WebGPU
WEIGHTS
İvmeLabs
01

Load model

Fetches config.json, tokenizer.json, and model.safetensors from the Hugging Face CDN, parses the safetensors header by hand, and uploads all 92 tensors straight into GPUBuffers.

idleRequest WebGPU adapter + device
idleFetch config.json
idleFetch + build tokenizer (byte-level BPE)
idleStream model.safetensors
idleParse header, upload tensors to GPU
idleCompile WGSL, build compute pipelines
idleWarm-up forward pass
idle
~96MB, cached by the browser after first load
02

Generate

Base model — it continues text, it doesn't follow instructions. Try a story opener or a sentence fragment and let it run.

23.8MParameters
GPU backend
Load time
tok/s (last run)
This is a base model — it continues text, it doesn't follow instructions. Try a story opener, a sentence fragment, anything it can run with.
temperature 0.80
top-k 50
max new tokens 200
03

What's actually running

ArchitectureDense decoder-only, 10 layers, hidden 384, 6 heads (head_dim 64), FFN inner 1024, tied embeddings
Positional encodingRoPE, θ=10000, applied as complex-plane rotation on interleaved (x0,x1),(x2,x3)… pairs — matched exactly, not the "rotate-half" GPT-NeoX layout
NormalizationRMSNorm, pre-norm, eps=1e-5, computed in f32
AttentionFull scaled dot-product attention, single flash-style kernel per head with an online softmax and a causal early-exit on the key loop
FeedforwardSwiGLU: down_proj(silu(gate_proj(x)) ⊙ up_proj(x)), inner dim 1024
SamplingTemperature scaling + top-k, categorical draw via cumulative sum on CPU over the top-k slice returned from GPU
Weight loadingRaw fetch() of model.safetensors, JSON header parsed by hand, each tensor's byte range sliced from the ArrayBuffer and copied into a GPUBuffer via writeBuffer — no ONNX export, no ORT runtime, no transformers.js
View the WGSL kernel source (matmul, RMSNorm, RoPE, attention, SwiGLU, sampling)
04

Limitations of this demo