psiddh's picture
Add ExecuTorch WebGPU program for qwen3-0.6b
70cd457 verified
Raw History Blame Contribute Delete
4.84 kB
{
"model": "qwen3_0_6b_q4gsw",
"upstream": {
"model": "Qwen/Qwen3-0.6B",
"revision": "c1899de289a04d12100db370d81485cdf75e47ca",
"official": true,
"safetensors_sha256": {
"model.safetensors": "f47f71177f32bcd101b7573ec9171e6a57f4f4d31148d38e382306f42996874b"
}
},
"versions": {
"python": "3.12.15+meta",
"torch": "2.14.1+cpu",
"torchao": "0.18.0+cpu",
"executorch": "1.5.1+cpu",
"executorch_git": "3b60683923245cf472b7323426920e15623ba361",
"transformers": "5.19.0",
"huggingface_hub": "2.2.0"
},
"export": {
"api": "python -m executorch.extension.llm.export.export_llm (hydra overrides below)",
"overrides": [
"base.model_class=qwen3_0_6b",
"base.checkpoint=<out>/_work/checkpoint.pth",
"base.params=<out>/_work/params.json",
"model.use_kv_cache=true",
"model.use_sdpa_with_kv_cache=true",
"model.enable_dynamic_shape=true",
"model.dtype_override=fp32",
"export.max_seq_length=513",
"export.max_context_length=8960",
"export.output_dir=<out>",
"export.output_name=<out>/qwen3_0_6b_q4gsw.pte",
"quantization.qmode=4w",
"quantization.group_size=64",
"quantization.embedding_quantize='4,64'",
"backend.vulkan.enabled=true"
],
"checkpoint_conversion": "executorch.examples.models.qwen3.convert_weights.convert_weights(<snapshot>, checkpoint.pth)",
"import_shim": "recipes/_shims/torchtune (re-exports executorch.examples.models.checkpoint.get_mapped_key; torchtune itself is not installed)",
"params": {
"dim": 1024,
"ffn_dim_multiplier": 1,
"hidden_dim": 3072,
"n_heads": 16,
"head_dim": 128,
"n_kv_heads": 8,
"n_layers": 28,
"norm_eps": 1e-06,
"rope_theta": 1000000.0,
"use_scaled_rope": false,
"vocab_size": 151936,
"use_hf_rope": true,
"attention_qkv_bias": false,
"use_qk_norm": true,
"qk_norm_before_rope": true
},
"partitioner": "VulkanPartitioner via backend.vulkan.enabled (WebGPUPartitioner is a pass-through wrapper of it; delegate id VulkanBackend)",
"inputs": [
{
"name": "tokens",
"shape": [
1,
"1..512"
],
"dtype": "int64"
},
{
"name": "input_pos",
"shape": [
1
],
"dtype": "int64"
}
],
"outputs": [
{
"name": "logits",
"shape": [
1,
151936
],
"dtype": "float32",
"note": "last position only"
}
],
"prefill_max": 512,
"max_seq_len_metadata": 513,
"max_context_length": 8960,
"dtype": "float32 activations",
"quantization": "4-bit groupwise weight-only linears (torchao IntxWeightOnlyConfig int4, group 64) and 4-bit groupwise embedding (group 64); output head quantized too",
"kv_cache": "fp32 buffers in the program; fp16 KV is a runtime option of the WebGPU runtime (et_set_kv_f16), not an export flag"
},
"files": {
"qwen3_0_6b_q4gsw.pte": {
"bytes": 400532224,
"sha256": "057af5734a6ce17cbf19598bcc0e972aed2401d1522eed41249675c1ab372ce6"
},
"tokenizer/tokenizer.json": {
"sha256": "aeb13307a71acd8fe81861d94ad54ab689df773318809eed3cbe794b4492dae4"
},
"tokenizer/tokenizer_config.json": {
"sha256": "d5d09f07b48c3086c508b30d1c9114bd1189145b74e982a265350c923acd8101"
},
"tokenizer/vocab.json": {
"sha256": "ca10d7e9fb3ed18575dd1e277a2579c16d108e32f27439684afa0e10b1440910"
},
"tokenizer/merges.txt": {
"sha256": "8831e4f1a044471340f7c0a83d7bd71306a5b867e95fd870f74d0c5308a904d5"
},
"tokenizer/generation_config.json": {
"sha256": "2325da0f15bb848e018c5ae071b7943332e9f871d6b60e2ed22ca97d4cb993d2"
},
"tokenizer/config.json": {
"sha256": "660db3b73d788119c04535e48cf9be5f55bc3100841a718637ae695b442f27dd"
},
"tokenizer/LICENSE": {
"sha256": "832dd9e00a68dd83b3c3fb9f5588dad7dcf337a0db50f7d9483f310cd292e92e"
}
},
"graph": {
"non_delegated_kernels": {},
"delegates": [
{
"id": "VulkanBackend",
"ops": {
"et_vk.prepack.default": 2,
"sym_size.int": 1,
"et_vk.embedding_q4gsw.default": 1,
"et_vk.select_as_symint.default": 2,
"et_vk.rms_norm.default": 113,
"et_vk.linear_q4gsw.default": 197,
"aten.view_copy.default": 224,
"et_vk.apply_rotary_emb_hf.default": 28,
"sdpa_with_kv_cache.default": 28,
"aten.add.Tensor": 56,
"aten.sigmoid.default": 28,
"aten.mul.Tensor": 56,
"aten.select_copy.int": 1
},
"inputs": 2,
"outputs": 1
}
]
},
"command": "python recipes/qwen3-0.6b.py --out out/qwen3-0.6b"
}