psiddh's picture
Add ExecuTorch WebGPU program for qwen2.5-0.5b-instruct
6e0be04 verified
|
Raw History Blame Contribute Delete
4.33 kB
---
license: apache-2.0
base_model:
- Qwen/Qwen2.5-0.5B-Instruct
base_model_relation: quantized
library_name: executorch
pipeline_tag: text-generation
inference: false
tags:
- executorch
- webgpu
- on-device
- browser
---
# Qwen2.5 0.5B Instruct for ExecuTorch WebGPU
This repository contains an [ExecuTorch](https://github.com/pytorch/executorch) conversion of
[Qwen/Qwen2.5-0.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct) for the ExecuTorch **WebGPU** backend, so the model runs entirely in a web browser on
the visitor's GPU. It powers the corresponding demo in the ExecuTorch WebGPU Playground (launching soon on [executorch.ai](https://executorch.ai)).
- **Base model:** [Qwen/Qwen2.5-0.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct)
- **Format:** ExecuTorch `.pte` programs delegated to the WebGPU backend
- **Quantization:** 4-bit groupwise weights (q4gsw), fp16 KV cache
- **Total size:** 296.5 MB
## About the original model
The 0.5B instruction-tuned model of the Qwen2.5 family.
- **Developed by:** Qwen Team, Alibaba Cloud
- **Paper:** [Qwen2.5 Technical Report](https://arxiv.org/abs/2412.15115)
- 0.49B parameters, 24 layers
- Context length 32,768 tokens; generation up to 8,192 tokens
- Supports over 29 languages
For training data, evaluation results and full details, see the original model card: [Qwen/Qwen2.5-0.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct).
## Intended use and limitations
Chat and instruction following in a small footprint.
Small language models can state false information confidently, repeat themselves, and reflect biases in their training data. Check important outputs.
## What changed in this conversion
- Weights quantized to 4-bit groupwise (q4gsw); the KV cache is fp16
- Context capped at 8,192 tokens (upstream: 32,768)
## Inputs and outputs
- `forward(tokens int64 [1, 1..512], input_pos int64 [1]) -> logits float32 [1, 151936]` (last position only)
- The KV cache lives inside the program; call it with up to 512 new tokens at a time, then one token per step
- Tokenize with the files in `tokenizer/` (the upstream Qwen2.5 tokenizer) and the ChatML template
## Files
| File | Size | SHA-256 |
|---|---|---|
| `qwen2_5_0_5b_instruct_q4gsw.pte` | 285.6 MB | `474274b934978f6c…` |
| `tokenizer/config.json` | 659 B | `18e18afcaccafade…` |
| `tokenizer/generation_config.json` | 242 B | `e558847a8b440261…` |
| `tokenizer/merges.txt` | 1.6 MB | `599bab5407508877…` |
| `tokenizer/tokenizer.json` | 6.7 MB | `c0382117ea329cdf…` |
| `tokenizer/tokenizer_config.json` | 7.1 KB | `5b5d4f65d0acd3b2…` |
| `tokenizer/vocab.json` | 2.6 MB | `ca10d7e9fb3ed185…` |
Full checksums are in `manifest.json`. The playground verifies them after download.
## Running it
These programs were exported with the ExecuTorch WebGPU backend
([backends/webgpu](https://github.com/pytorch/executorch/tree/main/backends/webgpu)) and validated with the
WebAssembly runtime build used by the ExecuTorch WebGPU Playground (launching soon on [executorch.ai](https://executorch.ai)). That runtime build is not published yet; until it is,
the playground is the supported way to run them. It downloads these files once, caches them in the browser,
and runs everything locally.
Requirements: a browser with WebGPU enabled. The language models use the `shader-f16` GPU feature when available and fall back to fp32 math without it.
## Provenance
- **Upstream:** `Qwen/Qwen2.5-0.5B-Instruct` at revision `7ae557604adf67be50417f59c2c2f167def9a775` (official)
- **Exported with:** executorch 1.5.1+cpu, torch 2.14.1+cpu, torchao 0.18.0+cpu, transformers 5.19.0 (executorch git `3b6068392324`)
- **Reproduce:** `python recipes/qwen2.5-0.5b-instruct.py --out out/qwen2.5-0.5b-instruct` (recipe in `export/`)
- Re-running the recipe produces byte-identical files.
## Citation
If you use this model, please cite the original work:
```bibtex
@misc{qwen2.5,
title={Qwen2.5: A Party of Foundation Models},
url={https://qwenlm.github.io/blog/qwen2.5/},
author={Qwen Team},
month={September},
year={2024}
}
```
## License
This is a derivative of the upstream model and is distributed under the same terms
(`apache-2.0`); see `LICENSE`.
Modifications (conversion to the ExecuTorch format and quantization) by Meta Platforms, Inc.