Fine-tuning
Fine-tuning
Le fine-tuning consiste à adapter un modèle de base (foundation model) à un domaine précis en l’entraînant sur des exemples représentatifs. Dans nAI'vi, il sert à ancrer des connaissances « stables » (peu susceptibles d’évoluer) directement dans le modèle, afin de:
- Améliorer la précision et la cohérence sur le périmètre métier ciblé.
- Réduire la dépendance au contexte injecté par le RAG pour ces informations durables.
- Diminuer la latence/coût liés à de grands contextes, tout en conservant le RAG pour les contenus dynamiques.
Pourquoi l’utiliser dans nAI'vi ?
- Spécialiser chaque bot avec des connaissances cœur de métier qui changent rarement.
- Éviter de répéter en contexte (RAG) des informations statiques à chaque requête.
- Garder le RAG en « faible poids » (low weight) pour compléter avec l’information récente, sans supprimer aucune source.
Comment ça marche ?
Sources de données (projet)
- Les « chunks statiques » sont extraits et étiquetés en amont (via le site) puis lus depuis PostgreSQL.
- Le module
apps/chatbot/src/finetuning/utils.pycharge ces chunks viacommon.db.get_static_chunks()et construit des datasets.
Pipeline implémenté
- Chargement des chunks statiques depuis la DB (
load_dataset). - Séparation train/éval (
train_test_split_dfou interne àload_dataset). - Génération de fichiers JSONL (
save_jsonl) →combined_train.jsonl,combined_eval.jsonl. - Création/gestion du job de fine-tuning (
create_fine_tuning_job,manage_fine_tuning_job).
Note: la création de job attend des identifiants de fichiers côté Mistral. Selon votre compte, une étape d’upload peut être nécessaire avant
create_fine_tuning_job. Adaptez en conséquence si votre client requiert un upload explicite.
Script CLI
Un script d’orchestration est fourni : apps/chatbot/src/finetuning/__main__.py.
Exemple (depuis apps/chatbot/) :
# Windows PowerShell (venv activé)
python -m finetuning --model open-mistral-7b --steps 100 --lr 1e-4Le script :
- Initialise le client Mistral via
config/config.pyetcommon/mistral.py. - Ouvre la connexion PostgreSQL via
config/config.pyetcommon/db.py. - Génère les JSONL via
process_datasets(). - Lance le job (
create_fine_tuning_job+manage_fine_tuning_job). - Sauvegarde l’ID du modèle fine-tuné dans
model_id.txt.
Bonnes pratiques
- Curater les chunks vraiment « stables » (définitions, référentiels, procédures peu changeantes).
- Couvrir les intentions usuelles dans les exemples QA.
- Versionner jeux de données, hyperparamètres, et modèles.
- Évaluer régulièrement et itérer.
Références code
apps/chatbot/src/finetuning/utils.pyapps/chatbot/src/finetuning/__main__.pyapps/chatbot/src/common/db.py
Ce que le projet prévoit
- Sélection et préparation de chunks documentaires « statiques » pour constituer le dataset.
- Entraînement/évaluation des modèles (ex: Mistral) sur ces exemples, par bot.
- Gestion multi-bots: datasets & modèles spécialisés, tests/évaluations par personnalité.
Image suggérée: pipeline « Sélection chunks statiques → Dataset → Fine-tuning → Évaluation → Déploiement + RAG low-weight »
Consultez src/finetuning/ pour les utilitaires et scripts liés au fine-tuning.
Kalli