L'ensemble de données utilisé dans cette expérience est l'ensemble de données DpgMedia2019 : Un ensemble de données d'actualités néerlandaises pour la détection de la partisanerie.
Il contient diverses parties, mais la partie principale que j'utilise dans ce référentiel est un sous-ensemble des articles d'actualité originaux de 104 Ko. Pour chaque article, il y a une étiquette « partisan » indiquant si l'article est partisan ou non (Vrai/Faux). Le nombre d’articles partisans/non partisans est à peu près équilibré.
L'ensemble de données a été créé par les auteurs dans le but de contribuer, par exemple, à la création d'un détecteur d'actualités partisanes. Dans le code python utilisé dans les expériences, les fichiers d'ensembles de données spécifiques sont téléchargés automatiquement.
Consultez le github et l'article pour plus d'informations sur l'ensemble de données et comment il a été construit. Voir les références pour plus d'informations.
NOTE !! Depuis janvier 2023, tous les fichiers ne sont plus disponibles dans l'emplacement github d'origine de l'ensemble de données. Si vous avez besoin des fichiers originaux, téléchargez-les à partir de l'ensemble de données Kaggle.
Les sous-ensembles de formation et de validation utilisés dans ce référentiel sont disponibles dans le dossier « données ».
Dans le bloc-notes « Prepare_Train_and_Validation_Datasets.ipynb », l'ensemble de données complet sera divisé en sous-ensembles plus petits qui sont utilisés pour la formation et la validation.
Ces fichiers sont disponibles dans le dossier « data » de ce référentiel.
Les principales raisons pour lesquelles il est nécessaire de créer des sous-ensembles de données plus petits sont qu'un modèle GPT (ou autre LLM) n'a besoin que de quelques milliers d'échantillons pour les affiner. Des ensembles de données plus petits signifient également moins de jetons et une facture plus petite pour votre carte de crédit ;-)
Les sous-ensembles plus petits ont les exemples de montants suivants :
Les modèles Transformer réguliers suivants ont été formés et validés dans le bloc-notes « Transformer_Model_Training_And_Validation.ipynb » sur les plus petits sous-ensembles de données de formation et de validation :
Les modèles PolyLM 1.7B et OpenLLaMA 7B V2 Open LLM ont tous deux été pré-entraînés sur des ensembles de données multilingues contenant également la langue néerlandaise.
Dans le bloc-notes « Open_LLM_Training_And_Validation.ipynb », les modèles Open LLM sont quantifiés sur 4 bits et affinés avec une configuration QLoRA pour minimiser l'empreinte mémoire du GPU.
Le LoraConfig est défini avec un rang de 64 et un alpha de 16.
Après formation, le modèle PolyLM 1.7B atteint une précision sur l'ensemble de validation de 84,4 % tandis que le modèle OpenLLaMA 7B V2 atteint même 89,5 %.
J'ai effectué plusieurs séances d'entraînement et, à diverses occasions, les deux modèles ont obtenu des scores allant jusqu'à 0,5 % de plus ou de moins par rapport à la valeur mentionnée ci-dessus.
Le code permettant d'affiner GPT-3.5 se trouve dans le notebook « Finetune_GPT-3.5.ipynb ». Sur la base des fichiers CSV de formation et de validation, des fichiers spécifiques sont créés et téléchargés sur OpenAI qui sont utilisés pour affiner le modèle GPT-3.5. Les articles de presse sont regroupés dans une invite spécifique conçue pour la classification que nous souhaitons que le modèle apprenne grâce à un réglage fin.
Le code de validation est disponible dans le notebook 'Validate_GPT-3.5.ipynb'. pour chaque enregistrement de l'ensemble de validation, le texte de l'article d'actualité est enveloppé dans l'invite et OpenAI est appelé via l'API pour obtenir la réponse de la fin du chat. La réponse est convertie en étiquette binaire et, avec les étiquettes de vérité terrain, le rapport de classification final est généré.
Le modèle OpenAI GPT-3.5 affiné atteint une précision sur l'ensemble de validation de 89,4 %.
Notez que j'ai utilisé OpenAI pour le réglage fin et la validation et non Azure OpenAI.
Dans la dernière version (5 décembre 2023) de ce notebook, j'ai effectué les mises à jour suivantes :
Retrouvez ci-dessous les scores de précision obtenus sur l'ensemble de validation pour les 3 modèles Transformer et le modèle GPT-3.5.
Le modèle GPT-3.5 atteint un score de précision élevé après un réglage fin.
Les performances des 3 modèles Transformer sont un peu à la traîne. Ils bénéficieraient clairement d’une formation sur davantage d’échantillons de données.
L'Open LLM PolyLM obtient le score le plus bas. Le modèle OpenLLaMA 7B V2 atteint cependant un score remarquable de 89,5% comparable aux scores obtenus par les modèles peaufinés GPT-3.5 Turbo (0613 et 1106).
(LLM) Type de modèle | Précision de validation (%) Score |
---|---|
PolyLM 1.7B (Lora : r = 64) | 84,4 |
DistilBert multilingue | 85,6 |
Bert multilingue | 86,3 |
DeBERTa V3 multi-lingues | 85,8 |
OpenLLaMA 7B V2 (Lora : r = 64) | 89,5 |
GPT-3.5 Turbo 0613 (affiné) | 90,8 |
GPT-3.5 Turbo 1106 (affiné) | 89,4 |
GPT-3.5 Turbo 1106 (apprentissage en contexte) | 56,0 |
!! DeBERTa V3 multi-linqual (ensemble de données complet) | 95.2 |
@misc{1908.02322,
Author = {Chia-Lun Yeh and Babak Loni and Mariëlle Hendriks and Henrike Reinhardt and Anne Schuth},
Title = {DpgMedia2019: A Dutch News Dataset for Partisanship Detection},
Year = {2019},
Eprint = {arXiv:1908.02322},
}