litetune fine-tunes a small language model, converts it into a file that runs through LiteRT-LM on supported native devices — phone, desktop, embedded board, robot — and checks that the converted model still does the job.

Supported runtimes
LiteRT-LM
Google's on-device LLM runtime
$pip install litetune
$ brew install DenisovAV/tap/litetune

Apache-2.0 · Python 3.10–3.12 · full pipeline on Linux x86_64 and Apple Silicon macOS · Windows except convert · alpha

Why it exists

Converting a model so it fits on a device changes it. The file still loads, the tools still report success, and the model can still be worse at your task than it was before. litetune runs the converted model on data it was never trained on, compares it with the version it came from, and tells you the difference.

Measured end to end so far

Across the six headline runs, every converted candidate ran on LiteRT-LM's CPU backend; some float references ran on CUDA. The eight-bit gap was small on all six and often unresolved. Four models also have blockwise four-bit results with the candidates on LiteRT-LM's CPU backend, where the gap was larger. A separate Qwen3 phone run shows that the backend can change the answer. The numbers, and what they do not establish

Supported formats
Output
.litertlm — the format LiteRT-LM loads
Platforms
Android, iOS, macOS, Linux and Windows natively — web runs as a text-only preview with no function calling and no LoRA, so a tuned tool-calling model is native-only for now
Acceleration
LiteRT-LM runs compatible bundles on CPU and GPU, with platform-specific NPU support — litetune can use CUDA or Apple GPU (MPS) for training and the float reference. Conversion currently uses the CPU export path; verify measures the converted model on CPU or GPU
Models
Gemma 3 (text), Gemma 4 E2B/E4B, Qwen3 0.6B, Qwen2.5 0.5B Instruct, Qwen3.5, FunctionGemma — measured end to end on FunctionGemma, Gemma 3 270M, Gemma 3 1B, Qwen3 0.6B, Qwen2.5 0.5B Instruct and Gemma 4 E2B so far
Where to run it
What it does
prepare
validates your data and makes a reproducible train/held-out split
tune
fine-tunes it, with the settings the export step will need
convert
turns the result into a file LiteRT-LM can load
verify
compares that file with the model it came from
bundle
packages it together with what the comparison found