Data Disclaimer: This model was trained exclusively on publicly available, open-source GTFS feeds published by transit agencies for public use via the Mobility Database. No private, proprietary, or NDA-protected data from any client, employer, or organization was used at any stage.
| Property | Value |
|---|---|
| Base Model | Qwen/Qwen2.5-1.5B-Instruct |
| Parameters | 1.54B (1.31B non-embedding) |
| Fine-tuning | QLoRA (4-bit NF4, LoRA rank=16, alpha=32) |
| Training Framework | Unsloth + HuggingFace TRL |
| Training Data | 3,154 pairs from UmarTransit-Instruct-3k |
| Test Data | 347 pairs (stratified 90/10 split) |
| Categories | 11 (agency, route, stop, schedule, transfer, network stats, GTFS knowledge, comparative, journey planning, GTFS validation, transit operations) |
| Max Context | 1,024 tokens |
| License | Apache 2.0 |
| Developer | umarfarookm |
| Metric | Base Model | v0.1 | v1.0 | v1.0 vs Base |
|---|---|---|---|---|
| ROUGE-L | 0.129 | 0.375 | 0.409 | +217% |
| Keyword Match | 0.368 | 0.403 | 0.398 | +8% |
| Criteria Match | 0.020 | 0.072 | 0.098 | +385% |
| Combined | 0.168 | 0.293 | 0.313 | +86% |
| Category | Base | v0.1 | v1.0 |
|---|---|---|---|
| GTFS Terminology | 0.342 | 0.351 | 0.361 |
| GTFS Validation | 0.267 | 0.314 | 0.323 |
| Route Analysis | 0.084 | 0.290 | 0.328 |
| Journey Planning | 0.297 | 0.243 | 0.311 |
| Schedule Reasoning | 0.121 | 0.253 | 0.224 |
| Transit Operations | 0.193 | 0.307 | 0.342 |
| Format | Size | Use Case |
|---|---|---|
| Safetensors | ~3.1 GB | Python / Transformers |
| GGUF Q4_K_M | ~986 MB | Ollama / llama.cpp (recommended) |
| GGUF Q8_0 | ~1.65 GB | Ollama / llama.cpp (higher quality) |
1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3model = AutoModelForCausalLM.from_pretrained("umarfarookm/UmarTransit-1B")
4tokenizer = AutoTokenizer.from_pretrained("umarfarookm/UmarTransit-1B")
5
6messages = [
7 {"role": "system", "content": "You are UmarTransit-1B, a specialized AI assistant for public transit systems and GTFS data."},
8 {"role": "user", "content": "What are the required files in a GTFS feed?"},
9]
10
11text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
12inputs = tokenizer(text, return_tensors="pt")
13outputs = model.generate(**inputs, max_new_tokens=256, temperature=0.1, top_p=0.9, do_sample=True)
14print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))ollama run hf.co/umarfarookm/UmarTransit-1B:Q4_K_M| Parameter | Value |
|---|---|
| Epochs | 3 |
| Batch size | 4 (x4 gradient accumulation = 16 effective) |
| Learning rate | 2e-4 (cosine schedule) |
| LoRA rank | 16 |
| LoRA alpha | 32 |
| LoRA dropout | 0 |
| Target modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Optimizer | AdamW 8-bit |
| Max sequence length | 1,024 tokens |
| Hardware | Google Colab T4 GPU (~30 min) |
| Country | Agency |
|---|---|
| US | LA Metro, CTA (Chicago), MBTA (Boston), Valley Metro (Phoenix), Capital Metro (Austin), TriMet (Portland) |
| Canada | TTC (Toronto) |
| Germany | VBB (Berlin) |
| France | Ile-de-France Mobilites (Paris) |
| Netherlands | OVapi |
| Belgium | NMBS/SNCB |
| Finland | HSL (Helsinki) |
| Denmark | Rejseplanen |
| Australia | Transperth (Perth) |
| New Zealand | Auckland Transport |
1@model{umartransit_1b,
2 author = {Umar Farook M},
3 title = {UmarTransit-1B: Domain-Specific LLM for Public Transit and GTFS},
4 year = {2026},
5 publisher = {Hugging Face},
6 url = {https://huggingface.co/umarfarookm/UmarTransit-1B}
7}