LLaMandement : Grands modèles de langage pour la synthèse de propositions législatives
Ce rapport présente LLaMandement, un grand modèle de langage (LLM) à l'état de l'art, spécialisé par les agents du Gouvernement afin d'améliorer l'efficacité du traitement des travaux parlementaires français (dont notamment la rédaction des fiches de banc et les travaux préparatoires des réunions interministérielles) grâce à la production de résumés neutres des projets et propositions de loi. LLaMandement est une réponse à la problématique de la gestion d'un nombre d'amendements toujours plus important par les agents de l'administration française. Ce projet représente une avancée technologique significative, en proposant une solution permettant de dépasser l'efficacité et la capacité d'adaptation des agents administratifs à la réalisation d'un travail toujours plus conséquent et de plus en plus difficielement réalisable dans une durée limitée par un humain, tout en offrant la fiabilité et la précision d'un rédacteur spécialisé.
Installation
Méthode 1 : Avec pip
cd FastChat
pip3 install "fschat[model_worker,webui,train]"
Cette commande vous permet d'installer FastChat, indispensable pour charger et effectuer une inférence avec notre modèle.
Méthode 2 : Docker
docker build -t fastchat:training-latest .
# puis
docker run -it --gpus '"device=0,1"' -v /path/to/model:/path/to/model fastchat:training-latest # with gpu
docker run -it -v /path/to/model:/path/to/model fastchat:training-latest # no gpu
Ici, nous construisons une image Docker et exécutons un conteneur. Ce processus nécessite Docker d'installé dans votre système et il est recommandé si vous prévoyez d'utiliser le modèle à grande échelle ou dans un environnement de production.
Pour installer Docker, vous pouvez consulter la documentation officielle de Docker à l'adresse suivante : https://docs.docker.com/get-docker/
Commencer avec LLamadement
Les poids pré-entraînés du modèle LLamadement sont disponibles sur Hugging Face à l'adresse suivante : https://huggingface.co/dgfip/llamandement.
Vous pouvez les télécharger et les utiliser pour démarrer rapidement avec le modèle.
Inférence avec l'interface de ligne de commande
python3.9 -m fastchat.serve.cli --model-path /paht/to/llamadement --conv-template alpaca ##--device cpu if no gpu available
Re-Entraîner LLaMAndement
Les données d'entraînement qui ont servi à apprendre à LLamadanement se trouvent dans ./data/fine_tuning_data_dila_v4.json. Pour plus d'informations sur la composition du dataset, voir la section 3.3 dans l'article suivant : xxxx
Si vous souhaitez ré-entraîner LLaMAndement, voici les étapes à suivre :
-
Téléchargez llama v2 13b : https://huggingface.co/meta-llama/Llama-2-13b-chat-hf
-
Configurez train_llamandement_13b.sh
-
Lancez un fine tuning
Il est recommandé de lancer le script d'entraînement dans une image Docker pour assurer un environnement de développement cohérent et éviter les problèmes de dépendances. En utilisant une image Docker, vous pouvez encapsuler toutes les dépendances nécessaires, y compris les versions spécifiques des bibliothèques et des frameworks, ce qui facilite la reproductibilité de l'entraînement du modèle. De plus, l'utilisation d'une image Docker permet de bénéficier de l'isolation et de la portabilité, ce qui facilite le déploiement du modèle sur différentes machines ou environnements.
sh train_llamandement_13b.sh
Vous êtes prêt à ré-entraîner le modèle sur votre propre set de données. Ce processus peut prendre un certain temps, en fonction de la taille de votre ensemble de données et de la puissance de votre matériel.
Concernant le réglage des paramètres pour LORA, voici les parametres:
– Taux d'apprentissage (Learning Rate, LR): Nous avons fixé le taux d'apprentissage LORA, σ = 2e-5, plus bas que les taux de fine-tuning typiques pour permettre une adaptation progressive et stable du modèle.
– Profondeur d'adaptation (lora_r): Nous avons fixé sa valeur à 64. Ce paramètre spécifie le rang (dimension) de la matrice de faible rang dans LoRA. Dans notre modèle LLAMA 13B, le fine-tuning avec LORA a affecté environ 0,40% des poids (c'est-à-dire 50m de paramètres). Cet équilibre est crucial pour obtenir une adaptabilité à de nouvelles tâches ou à de nouvelles données tout en conservant la conception originale et les connaissances du modèle pré-entraîné.
– Taux de décroissance (Decay Rate) : Un taux de décroissance de 0,01 a été utilisé pour la régularisation, réduisant le risque de suradaptation à certaines structures de texte législatif.
– LORA Alpha (α) : Fixé à α = 16, ce paramètre contrôle l'échelle des ajustements LORA. Ce paramètre est essentiel pour affiner l'impact des modifications LoRA sur le modèle, permettant un réglage plus précis des réponses du modèle aux nuances dans les textes législatifs.
– LORA Dropout : Un taux de dropout de 0,1 a été appliqué aux couches LORA pour prévenir la suradaptation et améliorer les capacités de généralisation.
– Optimiseur et ordonnanceur : Un ordonnanceur de taux d'apprentissage cosinus avec un warmup ratio de 0,03 a été utilisé pour optimiser le processus d'entraînement.