| | --- |
| | license: apache-2.0 |
| | base_model: unsloth/functiongemma-270m-it |
| | tags: |
| | - function-calling |
| | - tool-use |
| | - mobile-actions |
| | - gemma |
| | - unsloth |
| | datasets: |
| | - google/mobile-actions |
| | language: |
| | - en |
| | pipeline_tag: text-generation |
| | --- |
| | |
| | ## Model Card |
| |
|
| | This model is fine-tuned version of [google/functiongemma-270m-it](https://huggingface.co/google/functiongemma-270m-it) model for mobile action function calling tasks. |
| |
|
| | ## Intended Use |
| |
|
| | Handles function-calling style mobile actions such as creating calendar events, sending emails, adding contacts, showing maps, managing Wi‑Fi, and toggling the flashlight, based on the `google/mobile-actions` dataset. |
| |
|
| | ## Model Details |
| |
|
| | - **Base Model**: [google/functiongemma-270m-it](https://huggingface.co/google/functiongemma-270m-it) |
| | - **Fine-tuning**: SFT with LoRA |
| | - **Dataset**: [google/mobile-actions](https://huggingface.co/datasets/google/mobile-actions) |
| | - **Params**: ~270M (base) + LoRA merged into final weights |
| |
|
| | ## Quick Start |
| |
|
| | ```bash |
| | pip install torch transformers datasets accelerate huggingface_hub |
| | ``` |
| |
|
| | ```python |
| | import torch |
| | from datasets import load_dataset |
| | from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer |
| | |
| | model_id = "dousery/functiongemma-mobile-actions" |
| | device = "cuda" if torch.cuda.is_available() else "cpu" |
| | |
| | model = AutoModelForCausalLM.from_pretrained( |
| | model_id, |
| | torch_dtype=torch.float16 if device == "cuda" else torch.float32, |
| | device_map="auto" if device == "cuda" else None, |
| | trust_remote_code=True, |
| | ).eval() |
| | |
| | tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True) |
| | if device == "cpu": |
| | model = model.to(device) |
| | |
| | dataset = load_dataset("google/mobile-actions", split="train") |
| | text = tokenizer.apply_chat_template( |
| | dataset[0]["messages"][:2], |
| | tools=dataset[0]["tools"], |
| | tokenize=False, |
| | add_generation_prompt=True, |
| | ).removeprefix("<bos>") |
| | |
| | inputs = tokenizer(text, return_tensors="pt").to(device) |
| | with torch.no_grad(): |
| | _ = model.generate( |
| | **inputs, |
| | max_new_tokens=256, |
| | streamer=TextStreamer(tokenizer, skip_prompt=True), |
| | top_p=0.95, |
| | top_k=64, |
| | temperature=1.0, |
| | ) |
| | ``` |
| |
|
| | ## Training Summary |
| |
|
| | - **Frameworks**: Unsloth + TRL, PyTorch 2.9.1, Transformers 4.57.3 |
| | - **Steps**: 100 (SFT with LoRA, then merged) |
| | - **Effective Batch Size**: 8 (bs=4, grad accum=2) |
| | - **LR / Scheduler**: 2e-4, linear |
| | - **LoRA**: r=16, alpha=16, dropout=0, ~3.8M trainable params |
| | - **Seq Len**: 4096 |
| | - **Hardware**: NVIDIA H100 80GB on Modal |
| | - **Final Train Loss**: 0.2408 | **Eval Loss**: ~0.0129 |
| |
|
| | ## Limitations |
| |
|
| | - Trained for only 100 steps; niche mobile-action domain. |
| | - Datetime formats can drift slightly. |
| | - Best on GPU for speed; CPU works but slower. |
| |
|
| | ## Citation |
| |
|
| | ```bibtex |
| | @misc{functiongemma-mobile-actions, |
| | title={FunctionGemma Mobile Actions - Merged for Mobile Function Calling}, |
| | author={dousery}, |
| | year={2025}, |
| | howpublished={\url{https://huggingface.co/dousery/functiongemma-mobile-actions}} |
| | } |
| | ``` |
| |
|
| | ## License |
| |
|
| | Apache-2.0 (inherits base model license). |
| |
|
| |
|