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 …