pip install refuel-autolabel
https://docs.refuel.ai/
L'accès à des ensembles de données étiquetés grands, propres et diversifiés est un composant essentiel pour tout effort d'apprentissage automatique pour réussir. Les LLM de pointe comme GPT-4 sont en mesure d'étiqueter automatiquement les données avec une grande précision, et à une fraction du coût et du temps par rapport à l'étiquetage manuel.
AutoLabel est une bibliothèque Python pour étiqueter, nettoyer et enrichir les ensembles de données de texte avec tous les modèles de langage grand (LLM) de votre choix.
Consultez notre rapport technique pour en savoir plus sur les performances de RefuelllM-V2 sur notre référence. Vous pouvez reproduire la référence vous-même en suivant les étapes ci-dessous
cd autolabel / benchmark
curl https : // autolabel - benchmarking . s3 . us - west - 2. amazonaws . com / data . zip - o data . zip
unzip data . zip
python benchmark . py - - model $ model - - base_dir benchmark - results
python results . py - - eval_dir benchmark - results
cat results . csv
Vous pouvez comparer le modèle pertinent en remplaçant le modèle $ par le nom du modèle nécessaire pour être comparé. S'il s'agit d'un modèle hébergé d'API comme gpt-3.5-turbo
, gpt-4-1106-preview
, claude-3-opus-20240229
, gemini-1.5-pro-preview-0409
ou un autre modèle pris en charge Autolabel, écrivez simplement le nom du modèle. Si le modèle à comparer est un modèle pris en charge VLLM, passez le chemin local ou le chemin HuggingFace correspondant au modèle. Cela exécutera la référence avec les mêmes invites pour tous les modèles.
Les results.csv
contiendront une ligne avec chaque modèle qui a été comparé comme une ligne. Regardez benchmark/results.csv
pour un exemple.
Autolabel fournit un processus simple en 3 étapes pour l'étiquetage des données:
Imaginons que nous construisons un modèle ML pour analyser l'analyse des sentiments de la critique de film. Nous avons un ensemble de données de critiques de films que nous aimerions être étiquetées en premier. Pour ce cas, voici à quoi ressemblera l'exemple de données et de configuration:
{
"task_name" : "MovieSentimentReview" ,
"task_type" : "classification" ,
"model" : {
"provider" : "openai" ,
"name" : "gpt-3.5-turbo"
},
"dataset" : {
"label_column" : "label" ,
"delimiter" : ","
},
"prompt" : {
"task_guidelines" : "You are an expert at analyzing the sentiment of movie reviews. Your job is to classify the provided movie review into one of the following labels: {labels}" ,
"labels" : [
"positive" ,
"negative" ,
"neutral"
],
"few_shot_examples" : [
{
"example" : "I got a fairly uninspired stupid film about how human industry is bad for nature." ,
"label" : "negative"
},
{
"example" : "I loved this movie. I found it very heart warming to see Adam West, Burt Ward, Frank Gorshin, and Julie Newmar together again." ,
"label" : "positive"
},
{
"example" : "This movie will be played next week at the Chinese theater." ,
"label" : "neutral"
}
],
"example_template" : "Input: {example} n Output: {label}"
}
}
Initialisez l'agent d'étiquetage et passez-le la configuration:
from autolabel import LabelingAgent , AutolabelDataset
agent = LabelingAgent ( config = 'config.json' )
Prévisualisez un exemple d'invite qui sera envoyé au LLM:
ds = AutolabelDataset ( 'dataset.csv' , config = config )
agent . plan ( ds )
Cela imprime:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100/100 0:00:00 0:00:00
┌──────────────────────────┬─────────┐
│ Total Estimated Cost │ $0.538 │
│ Number of Examples │ 200 │
│ Average cost per example │ 0.00269 │
└──────────────────────────┴─────────┘
─────────────────────────────────────────
Prompt Example:
You are an expert at analyzing the sentiment of movie reviews. Your job is to classify the provided movie review into one of the following labels: [positive, negative, neutral]
Some examples with their output answers are provided below:
Example: I got a fairly uninspired stupid film about how human industry is bad for nature.
Output:
negative
Example: I loved this movie. I found it very heart warming to see Adam West, Burt Ward, Frank Gorshin, and Julie Newmar together again.
Output:
positive
Example: This movie will be played next week at the Chinese theater.
Output:
neutral
Now I want you to label the following example:
Input: A rare exception to the rule that great literature makes disappointing films.
Output:
─────────────────────────────────────────────────────────────────────────────────────────
Enfin, nous pouvons exécuter l'étiquetage sur un sous-ensemble ou une totalité de l'ensemble de données:
ds = agent . run ( ds )
La sortie DataFrame contient la colonne d'étiquette:
ds . df . head ()
text ... MovieSentimentReview_llm_label
0 I was very excited about seeing this film , ant ... ... negative
1 Serum is about a crazy doctor that finds a ser ... ... negative
4 I loved this movie . I knew it would be chocked ... ... positive
...
REFUNELS donne accès aux LLMS open source hébergés pour l'étiquetage, et pour estimer la confiance, cela est utile, car vous pouvez calibrer un seuil de confiance pour votre tâche d'étiquetage, puis acheminer les étiquettes moins confiantes vers les humains, tandis que vous obtenez toujours les avantages du marquage automatique pour les exemples confiants.
Afin d'utiliser des LLM hébergés de ravitaillement, vous pouvez demander un accès ici.
Consultez notre feuille de route publique pour en savoir plus sur les améliorations en cours et planifiées à la bibliothèque Autolabel.
Nous recherchons toujours des suggestions et des contributions de la communauté. Rejoignez la discussion sur Discord ou ouvrez un problème GitHub pour signaler les bogues et les fonctionnalités de demande.
Autolabel est un projet en développement rapide. Nous accueillons les contributions dans tous les formulaires - rapports de bogues, demandes de traction et d'idées pour améliorer la bibliothèque.