pip install refuel-autolabel
https://docs.refuel.ai/
Доступ к крупным, чистым и разнообразным маркированным наборам данных является важным компонентом для любых усилий по машинному обучению, чтобы добиться успеха. Современные LLM, такие как GPT-4, способны автоматически маркировать данные с высокой точностью и с долю от стоимости и времени по сравнению с ручной маркировкой.
AutoLabel - это библиотека Python для маркировки, очистки и обогащения текстовых наборов данных любыми крупными языковыми моделями (LLM) по вашему выбору.
Ознакомьтесь с нашим техническим отчетом, чтобы узнать больше о производительности Refuelllm-V2 в нашем эталонном этапе. Вы можете воспроизвести эталон
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
Вы можете сравнить соответствующую модель, заменив модель $ на название модели, необходимого сравнить. Если это модель API, такая как gpt-3.5-turbo
, gpt-4-1106-preview
, claude-3-opus-20240229
, gemini-1.5-pro-preview-0409
или какая-то другая модель с поддержкой AutoLabel, просто напишите имя модели. Если модель, подлежащая сравнению, является поддерживаемой VLLM моделью, пройдите локальный путь или путь HuggingFace, соответствующий модели. Это запустит эталон вместе с одинаковыми подсказками для всех моделей.
results.csv
CSV будет содержать строку с каждой моделью, которая была оценена как ряд. Посмотрите на benchmark/results.csv
для примера.
AutoLabel предоставляет простой 3-ступенчатый процесс для маркировки данных:
Давайте представим, что мы создаем модель ML для анализа анализа настроений обзора фильмов. У нас есть набор обзоров фильмов, которые мы хотели бы сначала маркировать. Для этого случая, вот как будет выглядеть набор данных и конфигурации примера:
{
"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}"
}
}
Инициализируйте агент маркировки и передайте его конфигурацию:
from autolabel import LabelingAgent , AutolabelDataset
agent = LabelingAgent ( config = 'config.json' )
Предварительно просмотрите пример подсказки, которая будет отправлена в LLM:
ds = AutolabelDataset ( 'dataset.csv' , config = config )
agent . plan ( ds )
Это печатные издания:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 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:
─────────────────────────────────────────────────────────────────────────────────────────
Наконец, мы можем запустить маркировку на подмножестве или полностью наборе данных:
ds = agent . run ( ds )
Выходной фрейм содержит столбец метки:
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
...
Заправка обеспечивает доступ к размещенным LLMS с открытым исходным кодом для маркировки, и для оценки уверенности в этом полезно, потому что вы можете калибровать порог доверия для выполнения задачи по маркировке, а затем направлять менее уверенные этикетки для людей, в то время как вы все еще получаете преимущества автоматической маркировки для конфиденциальных примеров.
Чтобы использовать заправку, размещенные LLM, вы можете запросить доступ здесь.
Ознакомьтесь с нашей общественной дорожной картой, чтобы узнать больше о продолжающихся и запланированных улучшениях в библиотеке AutoLabel.
Мы всегда ищем предложения и вклад сообщества. Присоединяйтесь к обсуждению Discord или откройте проблему GitHub, чтобы сообщить об ошибках и запросах.
AutoLabel - это быстро развивающийся проект. Мы приветствуем вклад во все формы - отчеты об ошибках, запросы на получение запросов и идеи для улучшения библиотеки.