В этой статье представлено пошаговое руководство по развертыванию инструмента маркировки данных НЛП 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!