psiddh's picture
Add ExecuTorch WebGPU program for qwen2.5-0.5b-instruct
2c717f6 verified
Raw History Blame Contribute Delete
4.82 kB
{
"model": "qwen2_5_0_5b_instruct_q4gsw",
"upstream": {
"model": "Qwen/Qwen2.5-0.5B-Instruct",
"revision": "7ae557604adf67be50417f59c2c2f167def9a775",
"official": true,
"safetensors_sha256": {
"model.safetensors": "fdf756fa7fcbe7404d5c60e26bff1a0c8b8aa1f72ced49e7dd0210fe288fb7fe"
}
},
"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=qwen2_5_0_5b",
"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=8192",
"export.output_dir=<out>",
"export.output_name=<out>/qwen2_5_0_5b_instruct_q4gsw.pte",
"quantization.qmode=4w",
"quantization.group_size=64",
"quantization.embedding_quantize='4,64'",
"backend.vulkan.enabled=true"
],
"checkpoint_conversion": "executorch.examples.models.qwen2_5.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": 896,
"ffn_dim_multiplier": 1,
"hidden_dim": 4864,
"n_heads": 14,
"n_kv_heads": 2,
"n_layers": 24,
"norm_eps": 1e-06,
"rope_theta": 1000000.0,
"use_scaled_rope": false,
"vocab_size": 151936,
"use_hf_rope": true,
"attention_qkv_bias": 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": 8192,
"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": {
"qwen2_5_0_5b_instruct_q4gsw.pte": {
"bytes": 299447808,
"sha256": "474274b934978f6c11a842d575a07417d6687eb4d93f6b12d30d144dce729faa"
},
"tokenizer/tokenizer.json": {
"sha256": "c0382117ea329cdf097041132f6d735924b697924d6f6fc3945713e96ce87539"
},
"tokenizer/tokenizer_config.json": {
"sha256": "5b5d4f65d0acd3b2d56a35b56d374a36cbc1c8fa5cf3b3febbbfabf22f359583"
},
"tokenizer/vocab.json": {
"sha256": "ca10d7e9fb3ed18575dd1e277a2579c16d108e32f27439684afa0e10b1440910"
},
"tokenizer/merges.txt": {
"sha256": "599bab54075088774b1733fde865d5bd747cbcc7a547c5bc12610e874e26f5e3"
},
"tokenizer/generation_config.json": {
"sha256": "e558847a8b4402616f1273797b015104dc266fe4b520056fca88823ba8f8ebe6"
},
"tokenizer/config.json": {
"sha256": "18e18afcaccafade98daf13a54092927904649e1dd4eba8299ab717d5d94ff45"
},
"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": 49,
"et_vk.linear_q4gsw.default": 169,
"aten.view_copy.default": 192,
"et_vk.apply_rotary_emb_hf.default": 24,
"sdpa_with_kv_cache.default": 24,
"aten.add.Tensor": 48,
"aten.sigmoid.default": 24,
"aten.mul.Tensor": 48,
"aten.select_copy.int": 1
},
"inputs": 2,
"outputs": 1
}
]
},
"command": "python recipes/qwen2.5-0.5b-instruct.py --out out/qwen2.5-0.5b-instruct"
}