pip install refuel-autolabel
https://docs.refuel.ai/
O acesso a conjuntos de dados grandes, limpos e diversos rotulados é um componente crítico para qualquer esforço de aprendizado de máquina para ter sucesso. Os LLMs de última geração como o GPT-4 são capazes de rotular automaticamente dados com alta precisão e por uma fração do custo e do tempo em comparação com a rotulagem manual.
A Autolabel é uma biblioteca Python para rotular, limpar e enriquecer conjuntos de dados de texto com qualquer grande modelos de idiomas (LLM) de sua escolha.
Confira nosso relatório técnico para saber mais sobre o desempenho do Refuelllm-V2 em nossa referência. Você pode replicar a referência, seguindo as etapas abaixo
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
Você pode comparar o modelo relevante substituindo o modelo $ pelo nome do modelo precisava ser comparado. Se for um modelo hospedado na API como gpt-3.5-turbo
, gpt-4-1106-preview
, claude-3-opus-20240229
, gemini-1.5-pro-preview-0409
ou algum outro modelo suportado por automóveis automático, apenas escreva o nome do modelo. Se o modelo a ser comparado for um modelo suportado por VLLM, passe o caminho local ou o caminho Huggingface correspondente ao modelo. Isso executará a referência junto com os mesmos instruções para todos os modelos.
Os results.csv
conterão uma linha com todos os modelo que foram comparados como uma linha. Veja o benchmark/results.csv
para um exemplo.
Autolabel fornece um processo simples de três etapas para rotular dados:
Vamos imaginar que estamos construindo um modelo de ML para analisar a análise de sentimentos da revisão de filmes. Temos um conjunto de dados de resenhas de filmes que gostaríamos de ser rotuladas primeiro. Para este caso, aqui está como será o conjunto de dados e configurações de exemplo:
{
"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}"
}
}
Inicialize o agente de rotulagem e passe a configuração:
from autolabel import LabelingAgent , AutolabelDataset
agent = LabelingAgent ( config = 'config.json' )
Visualize um exemplo de prompt que será enviado ao LLM:
ds = AutolabelDataset ( 'dataset.csv' , config = config )
agent . plan ( ds )
Isso impressa:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 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:
─────────────────────────────────────────────────────────────────────────────────────────
Por fim, podemos executar a rotulagem em um subconjunto ou totalidade do conjunto de dados:
ds = agent . run ( ds )
O quadro de dados de saída contém a coluna do rótulo:
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
...
O Refuel fornece acesso ao LLMS de código aberto hospedado para rotulagem e, para estimar a confiança, isso é útil, porque você pode calibrar um limite de confiança para sua tarefa de rotulagem e, em seguida, rotear rótulos menos confiantes para os seres humanos, enquanto você ainda obtém os benefícios da marcação automática dos exemplos confiantes.
Para usar o Refuel Host LLMS, você pode solicitar acesso aqui.
Confira nosso roteiro público para saber mais sobre melhorias contínuas e planejadas na Biblioteca Autolabel.
Estamos sempre procurando sugestões e contribuições da comunidade. Participe da discussão sobre discórdia ou abra um problema do GitHub para relatar bugs e solicitar recursos.
A Autolabel é um projeto em rápido desenvolvimento. Congratulamo -nos com contribuições em todas as formas - relatórios de bug, solicitações e idéias para melhorar a biblioteca.