An language model for the Kipsigis Language.
# KipsigisLLM
A modular, scalable, and open-source foundation for building and training a custom Language Model (LLM) for the Kipsigis language.
---
## π Repository Structure & Organization
```text
KipsigisLLM/
βββ configs/
β βββ train_config.yaml # Training & model architecture configuration
βββ data/
β βββ raw/ # Raw text sources (place .txt files here)
β β βββ sample_kipsigis.txt # Provided starter dataset for instant training
β βββ processed/ # Merged & processed corpus generated by train.py
β βββ datasets/ # Optional location for dataset artifacts
βββ tokenizer/
β βββ kipsigis_tokenizer.json # Generated BPE tokenizer
βββ checkpoints/
β βββ kipsigis_model.pt # Saved model PyTorch weights
βββ src/
β βββ data_prep.py # Data cleaning and corpus consolidation logic
β βββ dataset.py # PyTorch Dataset and DataLoader with val split
β βββ model.py # Causal Transformer (Decoder-only) LLM architecture
β βββ tokenizer_train.py # BPE Tokenizer training utility
βββ train.py # Main training pipeline script
βββ inference.py # Text generation and evaluation script
βββ run_train.sh # Unix (Linux/macOS) training runner script
βββ run_inference.sh # Unix (Linux/macOS) inference runner script
βββ run_train.bat # Windows training runner script
βββ run_inference.bat # Windows inference runner script
βββ requirements.txt # Python dependencies
βββ README.md
```
### What is Tracked vs Untracked in Git?
- **Tracked in Repo:** Core pipeline logic, configuration (`configs/train_config.yaml`), runner scripts, setup files, and `data/raw/sample_kipsigis.txt` for instant dry-runs.
- **Excluded / Untracked (in `.gitignore`):** Proprietary text corpora (`data/raw/*` except sample data), processed corpora (`data/processed/*`), custom trained weights β¦