ssgalib's picture
Upload folder using huggingface_hub
4a94673 verified
|
Raw
History Blame Contribute Delete
1.96 kB
---
license: gemma
library_name: onnx
pipeline_tag: text-generation
tags:
- gemma
- expense-tracker
- onnx
- android
language:
- en
---
# Expense Tracker — Gemma 3 270M ONNX model
Fine-tuned Gemma 3 270M model for extracting expense details from spoken
English sentences into structured JSON. Runs fully on-device in the
[Expense Tracker](https://github.com/ssgalib/expense-tracker) Android app via
ONNX Runtime.
## Files
| File | Description |
|---|---|
| `model.onnx` | FP16 ONNX model (537 MB). Tied embedding/`lm_head` share one tensor via a Transpose node to halve size. |
| `tokenizer.json` | Full BPE tokenizer (from `tokenizers` library). |
| `tokenizer_config.json` | Tokenizer config. |
| `special_tokens_map.json` | Special tokens. |
| `adapter_config.json` / `adapter_model.safetensors` | Original LoRA adapter (base: `google/gemma-3-270m-it`, r=8, α=16, targets `q_proj`/`v_proj`). |
## Prompt format
The model was fine-tuned with the standard Gemma chat template:
```
<bos><start_of_turn>user
Extract expense details from the sentence and return JSON only. No explanation.
<INPUT_SENTENCE><end_of_turn>
<start_of_turn>model
```
Output (single-bos prompting, greedy decoding, stop at `<end_of_turn>`):
```json
{"item": "eggs", "quantity": "3", "amount": 50, "category": "food"}
```
## Categories
`food` · `transport` · `utilities` · `rent` · `medicine` · `education` · `entertainment` · `mobile`
## Notes on quantization
Dynamic INT8 and weight-only INT4 quantization were both attempted but produce
garbage output for this small soft-capped model (immediate `<eos>`/garbage).
FP16 is the smallest reliable representation tested.
## App tokenizer
The Android app does not parse `tokenizer.json` directly. It uses compact
binary derivatives (`vocab.bin`, `merges.bin`) generated by
`scripts/preprocess_tokenizer.py` from this `tokenizer.json`. See the
[app repo](https://github.com/ssgalib/expense-tracker) for details.