В этой статье представлено пошаговое руководство по развертыванию инструмента маркировки данных НЛП Argilla в Hugging Face Spaces для эффективной маркировки и сбора отзывов.
Argilla — это инструмент маркировки данных с открытым исходным кодом для высокоэффективных рабочих процессов с участием человека в цикле и MLOps. Argilla состоит из (1) сервера и веб-приложения для маркировки и курирования данных и (2) библиотеки Python для создания рабочих процессов аннотирования данных в Python. Argilla хорошо интегрируется со стеком Hugging Face (datasets
, transformers
, hub
и setfit
).
Вы можете ознакомиться с Документацией по Argilla, чтобы узнать о его функциях, а также ознакомиться с Руководствами по углубленному изучению и Учебными пособиями или живой демоверсией на Spaces.
В следующих разделах вы научитесь развертывать собственное приложение Argilla и использовать его для рабочих процессов маркировки данных прямо из Hub.
Запуск Argilla Spaces
Чтобы начать работу с Argilla, вам необходимо развернуть ее сервер. С помощью Argilla Hugging Face Spaces вы можете быстро и без каких-либо затрат запустить собственный сервер Argilla без необходимости какой-либо локальной настройки. Просто запустите за считанные минуты:
1. Развертывание в HF Spaces. Если вы планируете часто использовать Space или обрабатывать большие наборы данных для маркировки данных и сбора отзывов, модернизация оборудования с более мощным процессором и увеличенным объемом оперативной памяти может повысить производительность.
2. При необходимости настройте учетные данные пользователя и ключи API. Пользователь и пароль по умолчанию: argilla
и 1234
.
3. Скопируйте прямой URL Space. Этот URL-адрес можно найти под кнопкой Встроить это пространство. Вы будете использовать этот URL-адрес с библиотекой argilla
для чтения и записи данных или для подключения к приложению Streamlit для управления данными без кода, также поддерживаемому Hugging Face Spaces.
4. Откройте свой любимый редактор Python и начните создавать потрясающие наборы данных!
Для получения более подробной информации ознакомьтесь с пошаговым руководством по документам Hugging Face Hub. Теперь давайте рассмотрим несколько интересных вариантов использования и приложений.
Пометьте набор данных и создайте классификатор настроений с помощью SetFit.
Основное применение Argilla — эффективная маркировка наборов данных. Этот процесс можно дополнительно упростить с помощью предварительно обученных моделей и библиотек с небольшим количеством снимков, таких как SetFit. Вы можете узнать, как маркировать набор данных и обучить модель SetFit, следуя пошаговому руководству в документах Argilla. Я рекомендую запустить руководство на Colab или Jupyter Notebooks, но вот большая часть кода, который вам понадобится:
Создайте набор данных для маркировки данных
import argilla as rg from datasets import load_dataset # You can find your Space URL behind the Embed this space button # Change it rg.init( api_url="https://dvilasuero-argilla-template-space.hf.space", api_key="team.apikey" ) banking_ds = load_dataset("argilla/banking_sentiment_setfit", split="train") # Argilla expects labels in the annotation column banking_ds = banking_ds.rename_column("label", "annotation") # Build argilla dataset from datasets argilla_ds = rg.read_datasets(banking_ds, task="TextClassification") rg.log(argilla_ds, "banking_sentiment")
После этого шага вы можете перейти по URL-адресу вашего пространства, чтобы пометить свои данные с помощью пользовательского интерфейса Argilla. Набор данных уже содержит метки, поэтому вы можете просто понять, как маркировать данные с помощью Argilla.
Загрузите аннотированный набор данных и обучите модель SetFit.
labelled_ds = rg.load("banking_sentiment").prepare_for_training() labelled_ds = labelled_ds.train_test_split() model = SetFitModel.from_pretrained( "sentence-transformers/paraphrase-mpnet-base-v2" ) # Create trainer trainer = SetFitTrainer( model=model, train_dataset=labelled_ds["train"], eval_dataset=labelled_ds["test"], loss_class=CosineSimilarityLoss, batch_size=8, num_iterations=20, ) trainer.train() metrics = trainer.evaluate()
Сбор отзывов людей с помощью приложений Gradio
Еще одно применение Argilla — сбор данных и отзывов от сторонних приложений. Мы разработали Argilla таким образом, чтобы его можно было легко интегрировать в существующие инструменты и рабочие процессы. Если вы хотите создавать наборы данных из пользовательских приложений или служб, теперь вы можете легко подключить Argilla к конечным точкам Gradio, Streamlit или Inference.
В этом примере мы соединяем Gradio Space с Argilla для сбора входных данных и прогнозов Flan-T5. Эти данные можно использовать для сбора отзывов людей с помощью Argilla, чтобы «настроить Flan-T5 для вашего варианта использования или построить рабочий процесс RLHF (обучение с подкреплением на основе отзывов людей) с помощью TRL. Вот все, что вам нужно добавить в ваш app.py:
import argilla as rg class ArgillaLogger(FlaggingCallback): def __init__(self, api_url, api_key): rg.init(api_url=api_url, api_key=api_key) def setup(self, components: List[IOComponent], flagging_dir: str): pass def flag( self, flag_data: List[Any], flag_option: Optional[str] = None, flag_index: Optional[int] = None, username: Optional[str] = None, ) -> int: text = flag_data[0] inference = flag_data[1] # build and add record to argilla dataset rg.TextClassificationRecord( inputs={"answer": text, "response": inference} ) rg.log( name="i-like-tune-flan", records=record, ) io = gr.Interface( allow_flagging="manual", flagging_callback=ArgillaLogger( api_url="https://dvilasuero-argilla-template-space.hf.space", api_key="team.apikey", ), # other params )
Получившееся приложение выглядит так:
Всякий раз, когда пользователь отправляет текст и нажимает кнопку «Отметить», как ввод, так и сгенерированный ответ записываются в Argilla. С помощью Argilla вы можете оценить ответы, сгенерированные Flan-T5, как показано ниже:
Вы можете получить доступ к набору данных здесь:
Используйте Streamlit для загрузки и скачивания наборов данных Argilla.
Нет настроения кодить? Проверьте это простое приложение Streamlit. Он позволяет создавать наборы данных Argilla из файлов CSV и загружать наборы данных с аннотациями в формате CSV или JSON.
Встраивание Argilla в Jupyter Notebooks или Colab
Хотите маркировать данные прямо из блокнота? Просто запустите приведенный ниже фрагмент кода в ячейке и начните маркировать:
%%html <iframe src="https://your-argilla-space.hf.space" frameborder="0" width=100% height="700" > </iframe>
Запустите учебные пособия Argilla в Colab или Noteboks
Наконец, вы можете запускать все учебники Argilla с помощью наших новых кнопок Открыть в Colab и Просмотреть исходный код. Эти учебные пособия организованы по этапам жизненного цикла машинного обучения, библиотекам, методам и задачам НЛП. Надеюсь, вы найдете тот, который соответствует вашим потребностям!
Краткое содержание
Потенциальные возможности объединения Argilla Spaces с другими инструментами и услугами безграничны. С Argilla вы можете привлечь больше людей к процессу разработки ИИ, и мы с нетерпением ждем возможности увидеть, что вы создадите с помощью Argilla on Spaces. Если вы хотите поделиться отзывом, продемонстрировать свои творения или обсудить планы на будущее, присоединяйтесь к сообществу Argilla Slack!