Введение
Получение качественных данных — краеугольный камень любого проекта машинного обучения. Этот процесс, в котором традиционно доминирует трудозатратная разметка данных, часто может превращаться в длительную и дорогостоящую задачу. Но что, если мы сможем воспользоваться прогрессом в развитии больших языковых моделей (LLM) для перехода от разметки данных к проверке разметки?
На сцене появляется GPT-4. Эта система (разработанная на основе GPT-4), имеющая более ста миллионов пользователей — одна из самых популярных языковых моделей.
В предыдущей статье мы показали, как можно ускорить процесс разметки предварительным аннотированием данных при помощи GPT-4. Эта методика позволяет нам загружать готовый к проверке предварительно размеченный датасет, а не выполнять монотонный процесс, начиная с нуля. В этой статье мы продолжим развивать эту тему, оказав, как можно объединить GPT-4 с бэкендом машинного обучения (ML Backend) Label Studio.
При помощи Label Studio ML Backend можно размечать данные непосредственно в Label Studio, что позволяет нам совершить переход от трудозатратной задачи разметки данных к гораздо более эффективному процессу проверки и совершенствования предварительных меток, что существенно ускоряет работу.
Label Studio ML Backend
Label Studio ML Backend служит мостом между моделями машинного обучения и интерфейсом Label Studio. Он позволяет интегрировать в Label Studio любую модель, при условии, что она может возвращать прогнозы в определённом формате и обновлять своё состояние на основании полученных аннотаций. Благодаря такой гибкости он становится идеальным инструментом для внедрения вызовов OpenAI API в рабочий процесс разметки данных.
Подключение ML Backend к GPT-4 — достаточно простая задача. Мы можем обернуть наши вызовы API в класс
LabelStudioMLBase
, и он будет обрабатывать за нас весь веб-код. Ниже показан пример обёртывания этого класса.Точная настройка модели тоже может быть мощным способом повышения качества модели; это реализуется предоставлением ей большего объёма данных предметной области. Хотя мы не включили в эту статью тему точной настройки (fine-tuning) по причинам, о которых расскажем ниже, это может быть невероятно полезной функцией, если вы работаете с собственной моделью.
from label_studio_ml.model import LabelStudioMLBase
class OpenAIPredictor(LabelStudioMLBase):
def __init__(self, **kwargs):
super(OpenAIPredictor, self).__init__(**kwargs)
# Parsed label config and initialize model
def predict(self, tasks, **kwargs):
# Predict on tasks passed to the predict function
for task in tasks:
predictions.append(model.predict(task))
return predictions
def fit(self, annotations, workdir=None, **kwargs):
# train the model
# save output resources
train_output = {
'labels': self.labels,
'model_file': model_file
}
return train_output
OpenAI API
Для взаимодействия с GPT-4 требуется OpenAI API. Этот API упрощает отправку промтов GPT-4 и получение сгенерированного текста ответов. Манипулирование промтами для получения нужных результатов называется промт-инжинирингом. Часто можно настраивать промты так, чтобы модель возвращала данные в JSON или другом формате, который можно потребить и структурировать для Label Studio.
Давайте взглянем на извлечение прогнозов анализа эмоционального настроя (sentiment analysis). В этом примере мы используем OpenAI API и немного промт-инжиниринга для генерации ответа при помощи модели GPT-4.
import openai
import re
openai.api_key = "<your_api_key>"
input_text = "I had a wonderful time at the party last night!"
prompt = f"Respond in the json format: {{'response': sentiment_classification}}\nText: {input_text}\nSentiment (positive, neutral, negative):"
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "user", "content": prompt}
],
max_tokens=40,
n=1,
stop=None,
temperature=0.5,
)
response_text = response.choices[0].message['content'].strip()
print("Result\n",f"{response_text}")
Интеграция этого кода в Label Studio ML Backend — относительно простая задача, требующая обёртывания вызова OpenAI API в функцию прогнозирования.
Запуск примера
В этом разделе мы рассмотрим этапы, необходимые для настройки и запуска примера. Мы старались максимально упростить процесс и выложили полную реализацию сюда.
Установка
Для начала мы воспользуемся Docker Compose для развёртывания и подключения серверов, необходимых для этого проекта. Если вы ещё не установили Docker Compose, то его можно найти на веб-сайте Docker. Выполните этапы установки, подходящие для вашей операционной системы.
Ключ OpenAI API
Наше приложение использует для генерации прогнозов модель GPT-4 компании OpenAI. Для применения этого API необходим аккаунт OpenAI. Его можно создать следующим образом:
- Зайдите на веб-сайт OpenAI.
- Нажмите на Sign Up и введите свои данные для создания аккаунта.
- После его создания можно сгенерировать ключ API.
Ключ API — необходимая часть для защиты ваших вызовов API к GPT-4. Храните его в безопасном месте и никогда не раскрывайте в публичных репозиториях и на веб-сайтах.
Конфигурирование Docker Compose
Получив ключ OpenAI API, добавьте его в файл конфигурации Docker Compose. Найдите переменную окружения
OPENAI_API_KEY
в файле docker-compose.yml
и замените your_openai_key
своим ключом API.Запуск сервиса
Завершив конфигурирование, мы сначала запустим Label Studio в соответствии с инструкциями из документации Quick Start in Label Studio.
Затем запустим сервис ML Backend. В терминале перейдите к папке, содержащей файл
docker-compose.yml
, и выполните следующую команду:docker-compose up
Docker Compose запустит все необходимые сервисы, указанные в файле
docker-compose.yml
.Он запускает бэкенд-сервис машинного обучения по адресу http://localhost:9090. После его запуска можно подключиться к Label Studio по адресу http://localhost:8080. Если всё было настроено правильно, то вы должны увидеть интерфейс пользователя Label Studio.
Новая установка Label Studio
Подключение ML Backend к Label Studio
Далее нам нужно подключить сервис ML Backend к Label Studio, но для начала создадим новый проект анализа эмоционального настроя в Label Studio и добавим данные. Эти данные не размечены, но мы воспользуемся GPT-4 для мгновенного добавления меток.
Создание нового проекта
Затем нужно будет указать проекту наш Machine Learning (ML) Backend, выполнив следующие шаги:
Добавление новой модели ML
- Нажать на Settings в правом верхнем углу.
- Прокрутить вниз к Machine Learning.
- Нажать на Add Model.
- В поле URL ввести адрес ML Backend
http://localhost:9090
(при стандартной настройке Docker Compose). - Нажать на Validate and Save.
Конфигурирование сервера в диалоговом окне добавления модели
Модель валидирована и подключена
Мы должны увидеть подтверждение, что успешно подключились к ML Backend и он готов к использованию.
Возврат прогнозов
Теперь мы готовы использовать функцию прогнозов Label Studio, получающую от GPT-4 прогнозы для наших задач. Для создания прогноза необходимо выполнить следующие шаги:
- Нажать на Tasks в боковой панели.
- Выбрать задачу, для которой необходим прогноз.
- Нажать на кнопку Predict наверху задачи.
Получение прогнозов от модели ML
Затем отобразятся прогнозы, полученные от GPT-4. Можно приступать напрямую к проверке прогнозов, а не начинать с нуля, размечая всё вручную.
Проверка прогнозов от ML Backend
Подробности см. в примерах ML Backend; также можно прочитать ML Backend Tutorial, чтобы больше узнать о работе бэкенда и о том, как создавать собственные интеграции.
Выполнение любой классификации текста
Если вы не хотите останавливаться на простом примере с классификацией эмоционального настроя текста, то благодаря мощи генерализации LLM можно легко двинуться дальше. Перейдите в папку с моделью и измените промт в файле
prompt.txt
:Classify text into different categories. Start each category prediction in a new line.
Text: {text}
Categories: {labels}
Можете свободно изменять команды и менять метку
{text}
в соответствии с вашей структурой данных, включая входные тексты и метаданные. Можно явным образом задать множество меток или использовать заполнители {labels}
, соответствующие целевым меткам из вашего проекта Label Studio.В конце статьи важно отметить, что удобство и возможности использования OpenAI имеют свои изъяны. Понимать их очень важно для принятия осознанных решений о внедрении ИИ в свой рабочий процесс.
Обучение и тонкая настройка
Тонкая настройка (fine-tuning) — это популярная методика машинного обучения, позволяющая подстраивать модели под конкретные требования. Однако это не универсальное решение. В случае с моделями OpenAI мощные версии GPT-3 и GPT-4 пока не поддерживают тонкую настройку, то есть их нельзя подстраивать под конкретные способы применения и необходимо применять предварительно обученные конфигурации.
С другой стороны, модель Davinci позволяет использовать тонкую настройку, но она имеет собственные трудности. При непрофессиональном применении она потенциально может снизить точность результатов. Поэтому в этом проекте мы решили не затрагивать тонкую настройку. Тем не менее, её потенциал в улучшении точности модели общепризнан, и мы считаем её многообещающим направлением дальнейших исследований.
Вопросы безопасности данных
Критически важно то, что этот пример системы нельзя использовать при работе с уязвимыми и конфиденциальными данными. Необходимо помнить, что передаваемые данные попадают в сервисы OpenAI. Из этого следует, что ваши данные потенциально могут применять для задач обучения.
Это вопрос не только конфиденциальности, но и контроля над своими данными. Когда вы отправляете свои данные сторонним сервисам, это может привести к потере прямого контроля над этой информацией. В некоторых случаях такой риск может быть неприемлемым. Возможно, на каком-то этапе вам придётся перейти на собственные модели.
Заключение
В этой статье мы узнали, как GPT-4 можно интегрировать с Label Studio ML Backend, чтобы совершить переход от трудозатратного процесса разметки данных к более простому процессу проверки. Использование мощи одной из лучших в мире LLM для предварительного аннотирования данных может позволить вам перейти на новый уровень эффективности.
Также мы рассмотрели некоторые из ограничений такой методики, например, конфиденциальность данных и качество модели, отметив, что она может быть применима не во всех случаях. Но хотя использование GPT не всегда может быть панацеей, мы считаем, что интеграция технологий ИИ наподобие GPT-4 в процесс разметки позволит в будущем раскрыть множество новых перспектив.
Полный пример можно посмотреть на GitHub!
Понравилась статья? Еще больше контента на темы разметки, Data Mining и ML вы можете найти в нашем Telegram канале “Где данные, Лебовски?”
- Как подготовиться к сбору данных, чтобы не провалиться в процессе?
- Как работать с синтетическими данными в 2024 году?
- В чем специфика работы с ML проектами? И как разметить 1500 пузырьков руды на одном фото и не сойти с ума?
temadiary
и насколько качественно автоматизированный варик с разметкой работает? в цифрах хотелось бы.
кажется что после него верифицировать итоговый вариант