paint-brush
Comment rendre n'importe quel LLM plus précis en quelques lignes de codepar@FrederikBussler
7,012 lectures
7,012 lectures

Comment rendre n'importe quel LLM plus précis en quelques lignes de code

par Frederik Bussler5m2023/08/14
Read on Terminal Reader

Trop long; Pour lire

La révolution de l'IA s'est déplacée avec l'émergence de grands modèles de langage (LLM) comme ChatGPT, indiquant une victoire sur la complexité des données. Ces LLM sont confrontés à des défis en raison d'ensembles de données massifs (jusqu'à un pétaoctet) et de la nature complexe du langage humain. Les outils centrés sur les données comme Cleanlab ont révolutionné la gestion des données d'IA, automatisant les processus d'amélioration des données et démocratisant les avancées. L'IA centrée sur les données est essentielle en raison des erreurs d'annotation (7 à 50 %) dans les ensembles de données du monde réel, ce qui entrave la formation. OpenAI et des outils comme Cleanlab donnent la priorité à la qualité des données, permettant des améliorations significatives de la précision du modèle. Une démo Python montre comment Cleanlab détecte les problèmes d'étiquettes, filtre les données et reforme les modèles, ce qui se traduit par une augmentation remarquable de la précision de 63 % à plus de 66 %. Cette approche centrée sur les données est prometteuse pour les futurs LLM comme GPT-5.
featured image - Comment rendre n'importe quel LLM plus précis en quelques lignes de code
Frederik Bussler HackerNoon profile picture
0-item
1-item
2-item

La révolution de l'IA était en gestation depuis des décennies. C'était un domaine rempli d'excitation, mais souvent ponctué de déceptions et d'« hivers IA ». Mais récemment, quelque chose a changé. Les grands modèles de langage (LLM) comme ChatGPT, Claude et Bard ont catapulté l'IA de la curiosité de laboratoire au grand public .


Ce changement n'était pas seulement un triomphe de l'IA, mais aussi une victoire sur les complexités des données volumineuses et désordonnées. Comme le dit le proverbe, "les ordures entrent, les ordures sortent". De nouveaux outils émergent qui se concentrent sur l'amélioration des données sous-jacentes, améliorant ainsi les LLM.


Le double défi des LLM

Le terme "Large Language Models" contient en lui deux grands défis. Tout d'abord, le volume de données. Nous parlons de plus d'un pétaoctet (un million de gigaoctets) de données pour GPT-4, englobant des millions de livres, de blogs, de publications sur les réseaux sociaux, de transcriptions vidéo, etc. Cette échelle colossale offre un vaste potentiel mais pose également des considérations logistiques importantes.


Deuxièmement, la complexité du langage naturel. Dépendantes du contexte, ambiguës et diverses, les données linguistiques sont une bête sauvage que même les meilleurs algorithmes ont du mal à apprivoiser. Il est impossible d'étiqueter avec précision toutes ces données, ce qui signifie inévitablement que même les LLM à la pointe de la technologie sont formés sur des tonnes de données mal étiquetées.


Face à ces défis, de nouveaux outils et méthodologies centrés sur les données ont émergé, permettant un véritable bond en avant dans ce dont l'IA est capable. Des solutions comme Cleanlab et d'autres ont commencé à offrir des moyens de collecter diverses données, d'automatiser le contrôle de la qualité et de traiter le langage sous une forme adaptée aux modèles d'IA.


Ces outils n'offraient pas simplement des améliorations progressives ; ils ont fondamentalement remodelé l'approche du traitement des données par l'IA. Ils ont transformé la tâche de traitement des données linguistiques à grande échelle d'un processus manuel sujet aux erreurs en un processus automatisé et précis, démocratisant le domaine et permettant des avancées à un rythme sans précédent.


Pourquoi l'IA centrée sur les données est nécessaire (avec une démo Python)

Dans l'IA, les ensembles de données du monde réel contiennent des erreurs d'annotation allant de 7 à 50 % . Ces imperfections entravent considérablement la formation et l'évaluation. L'IA centrée sur les données met l'accent sur l'amélioration de la qualité de l'ensemble de données lui-même.


La stratégie d'OpenAI, par exemple, illustre cet accent : « Nous avons priorisé le filtrage de toutes les mauvaises données plutôt que de laisser toutes les bonnes données. C'est parce que nous pouvons toujours affiner notre modèle avec plus de données plus tard pour lui apprendre de nouvelles choses, mais il est beaucoup plus difficile de faire oublier au modèle quelque chose qu'il a déjà appris.


Cependant, une approche de filtrage manuel des données prend du temps et coûte cher. Le package Cleanlab est un framework open-source populaire pour pratiquer l'IA centrée sur les données aujourd'hui. Il vous permet d'exécuter des algorithmes de qualité des données sur les sorties de votre modèle ML formé pour détecter les problèmes d'ensemble de données courants tels que les erreurs d'étiquette, les valeurs aberrantes, la dérive, etc.


Avec seulement quelques lignes de code, vous pouvez automatiquement trouver et identifier les problèmes dans divers types de données, telles que les images, le texte, les tableaux et l'audio. En utilisant le package Cleanlab, vous pouvez décider comment améliorer votre jeu de données et votre modèle, réentraîner votre modèle ML et voir ses performances s'améliorer sans aucune modification de votre code existant.


Cleanlab Studio, d'autre part, est plus qu'une simple extension du package Cleanlab ; c'est une plate-forme sans code conçue pour trouver et résoudre les problèmes dans les ensembles de données du monde réel. Il ne s'arrête pas à la détection des problèmes, mais va plus loin dans la gestion de la conservation et de la correction des données, et automatise même presque toutes les parties difficiles de la transformation des données brutes en ML ou Analytics fiables.


Utilisons le package Cleanlab pour démontrer la puissance de l'IA centrée sur les données.


1. Préparation des données et ajustement

Nous commençons avec l' ensemble de données de politesse de Stanford . Assurez-vous que les ensembles d'entraînement et de test sont chargés. Dans cette démo, nous allons affiner le Davinci LLM pour la classification en 3 classes, d'abord sans Cleanlab, puis voir comment nous pouvons améliorer la précision avec la centralité des données. Nous pouvons exécuter une simple commande bash pour former un modèle.


!openai api fine_tunes.create -t "train_prepared.jsonl" -v "test_prepared.jsonl" --compute_classification_metrics --classification_n_classes 3 -m davinci --suffix "baseline"


Lorsque cela est fait, nous pouvons interroger un point de terminaison fine_tunes.results pour voir la précision du test.


!openai api fine_tunes.results -i ft-9800F2gcVNzyMdTLKcMqAtJ5 > baseline.csv

`df = pd.read_csv('baseline.csv')

baseline_acc = df.iloc[-1]['classification/précision']`


Nous obtenons un résultat de 63% de précision. Voyons si nous pouvons améliorer cela.


2. Obtenir les probabilités de classe prévues

Utilisons maintenant l'API d'OpenAI pour calculer les intégrations et ajuster un modèle de régression logistique pour obtenir des probabilités de classe prédites hors échantillon.


# Get embeddings from OpenAI. from openai.embeddings_utils import get_embedding

embedding_model = "text-similarity-davinci-001" train["embedding"] = train.prompt.apply(lambda x: get_embedding(x, engine=embedding_model)) embeddings = train["embedding"].values

# Get out-of-sample predicted class probabilities via cross-validation.

from sklearn.linear_model import LogisticRegression

model = LogisticRegression() labels = train["completion"].values pred_probs = cross_val_predict(estimator=model, X=embeddings, y=labels, cv=10, method="predict_proba")


Avec une seule ligne de code, Cleanlab estime quels exemples ont des problèmes d'étiquette dans notre ensemble de données de formation.


from cleanlab.filter import find_label_issues

Nous pouvons maintenant obtenir des indices d'exemples estimés avoir des problèmes d'étiquette :


issue_idx = find_label_issues(labels, pred_probs, return_indices_ranked_by='self_confidence') # sort indices by likelihood of label error


3. Filtrer les problèmes d'étiquettes et réentraîner

Maintenant, nous avons automatiquement extrait les indices des exemples potentiellement mal étiquetés, afin que nous puissions les supprimer et former un nouveau classifieur.


# Remove the label errors

train_cl = train.drop(issue_idx).reset_index(drop=True) format_data(train_cl, "train_cl.jsonl")


Entraînons maintenant un classifieur plus robuste avec de meilleures données.


!openai api fine_tunes.create -t "train_cl_prepared.jsonl" -v "test_prepared.jsonl" --compute_classification_metrics --classification_n_classes 3 -m davinci --suffix "dropped"


# Evaluate model on test data

!openai api fine_tunes.results -i ft-InhTRQGu11gIDlVJUt0LYbEx > cleanlab.csv df = pd.read_csv('cleanlab.csv') dropped_acc = df.iloc[-1]['classification/accuracy']


Nous obtenons une précision de plus de 66 %, en améliorant un modèle à réglage fin de pointe (GPT-3, car vous ne pouvez pas affiner GPT-4), simplement en améliorant automatiquement l'ensemble de données, sans aucun changement au modèle.


Avec Cleanlab Studio, il est également possible de corriger automatiquement les étiquettes incorrectes au lieu de simplement les supprimer, améliorant encore plus la précision. Un guide de Cleanlab montre que cela prend une précision jusqu'à 77%.


Plats à emporter

À l'aide d'outils centrés sur les données comme Cleanlab, vous pouvez trouver et résoudre efficacement les problèmes de données et d'étiquettes, ce qui entraîne des améliorations significatives des performances des LLM comme Davinci. Cette approche ne modifie pas l'architecture du modèle ou les hyperparamètres et se concentre uniquement sur l'amélioration de la qualité des données de formation.


L'approche décrite dans ce guide pourrait être la clé pour débloquer encore plus de précision et de robustesse dans les modèles d'IA, même avec les futurs LLM avancés comme GPT-5.