TaxiLM / README.md
AlihIng's picture
Update README.md
e435b95 verified
|
Raw
History Blame Contribute Delete
4.6 kB
---
language: ar
language_bcp47:
- ar-MR
tags:
- taxi
- nouakchott
- mauritania
- dialogue
- small-model
- langchain-agent
license: mit
---
# TaxiLM — Chauffeur de taxi Hassaniya (Nouakchott)
Modele de langage de 8.7M parametres entraine pour dialoguer en Hassaniya comme un chauffeur de taxi a Nouakchott. Ce modele est utilise comme LLM principal dans un agent LangChain equipe d'outils vivants.
---
## Personnage
| Attribut | Description |
| :--- | :--- |
| **Nom** | Mohamed Vall (محمد فال) |
| **Role** | Chauffeur de taxi a Nouakchott depuis 20 ans |
| **Langue** | Hassaniya avec quelques mots francais (clim, frein, carrefour, essence, match) |
| **Ton** | Bavard, raleur mais bon coeur, philosophe de la route |
| **Expressions** | ماشي امنين, ماني ماشي لهيه, يا راجل, لا إله إلا الله, اشواعد, إن شاء الله |
| **Sagesse** | "ذا كامل يتخطا" (tout passe, meme les embouteillages) |
---
## Architecture
| Parametre | Valeur |
| :--- | :--- |
| Parametres | 8 726 016 (8.7M) |
| Couches | 6 |
| Dimensions cachees | 384 |
| Tetes d'attention | 6 |
| FFN | 768 (ReLU) |
| Vocabulaire | 4 096 tokens BPE |
| Tokenizer | Metaspace (optimise pour l'arabe) |
| Sequence max | 128 tokens |
---
## Outils de l'agent
Le modele est utilise par un agent LangChain equipe de 5 outils :
| Outil | API / Source | Role |
| :--- | :--- | :--- |
| Meteo | Open-Meteo | Temperature, vent, pluie a Nouakchott |
| Geocodage | Nominatim (OpenStreetMap) | Localisation des quartiers |
| Taux de change | Exchange Rate API | Conversion EUR/USD vers MRU |
| Horaires de priere | AlAdhan | Heures de salat |
| Proverbes | Dataset `ahmed02mk/amthal-hassaniya` | Sagesses et proverbes Hassaniya |
---
## Sources
| Source | Type | Description |
| :--- | :--- | :--- |
| Dataset TP2 | Donnees synthetiques | 13 248 dialogues en Hassaniya (5 categories) |
| amthal-hassaniya | Dataset Hugging Face | Proverbes Hassaniya avec explications en arabe |
| Open-Meteo | API externe | Donnees meteo temps reel |
| Nominatim | API externe | Geocodage gratuit |
| Exchange Rate API | API externe | Taux de change quotidiens |
| AlAdhan | API externe | Horaires de priere |
---
## Limites du personnage
**Ce que Mohamed Vall ne sait pas et ne doit pas inventer :**
- La politique internationale
- La technologie moderne
- Les prix officiels ou administratifs
- Les itineraires precis qu'il ne connait pas
- Les informations medicales ou legales
**Comportement attendu :**
Si une question sort de son univers, il repond : "والله ما عارف, اسأل اللي يعرف" (Je ne sais pas, demande a celui qui sait).
---
## Risques d'hallucination
| Risque | Niveau | Mitigation |
| :--- | :--- | :--- |
| Invention de prix | Moyen | Utiliser l'outil taux de change |
| Invention de lieux | Moyen | Utiliser l'outil geocodage |
| Proverbe errone | Faible | Recherche dans le dataset amthal-hassaniya |
| Meteo inventee | Faible | Appel API Open-Meteo |
| Reponse incoherente | Eleve | Modele 9M, limite en raisonnement |
---
## Entrainement
- **Dataset :** 13 248 dialogues synthetiques generes par templates et augmentation linguistique
- **GPU :** Tesla T4 (Google Colab gratuit)
- **Duree :** ~15 minutes
- **Steps :** 10 000 avec cosine LR schedule
- **Eval loss finale :** 0.409
- **Monitoring :** Weights & Biases
---
## Utilisation
```python
from huggingface_hub import hf_hub_download
import torch
from tokenizers import Tokenizer
import importlib.util, sys
REPO_ID = "AlihIng/TaxiLM"
# Charger config.py
config_path = hf_hub_download(repo_id=REPO_ID, filename="config.py")
spec = importlib.util.spec_from_file_location("config", config_path)
config_module = importlib.util.module_from_spec(spec)
sys.modules["config"] = config_module
spec.loader.exec_module(config_module)
# Charger model.py
model_path = hf_hub_download(repo_id=REPO_ID, filename="model.py")
spec = importlib.util.spec_from_file_location("model", model_path)
model_module = importlib.util.module_from_spec(spec)
sys.modules["model"] = model_module
spec.loader.exec_module(model_module)
# Charger les poids
pt_path = hf_hub_download(repo_id=REPO_ID, filename="model.pt")
checkpoint = torch.load(pt_path, map_location="cpu")
config = config_module.TaxiConfig(**checkpoint["config"])
model = model_module.TaxiLM(config)
model.load_state_dict(checkpoint["model_state_dict"])
model.eval()
# Tokenizer
tokenizer = Tokenizer.from_file(hf_hub_download(repo_id=REPO_ID, filename="tokenizer.json"))
Licence
MIT — Inspire de GuppyLM par Arman Hossain.