LLM и мультимодальность: как нейросети упрощают работу с данными

Разметка данных – долго, дорого и сложно

Разметка данных – это тот этап, который все любят... ненавидеть. Ручная разметка – это тысячи часов монотонной работы, значительные финансовые затраты и неизбежные ошибки.

LLM и мультимодальность: как нейросети упрощают работу с данными

Давайте посмотрим на цифры.

  • Яндекс: асессоры получают около 300–400 рублей в час.
  • Google: от $10 до $15 в час.
  • Фриланс: на платформах, таких как Profi.ru, – примерно 500 рублей в час.

Представьте, что у вас есть 10 000 изображений для разметки. Даже при оптимистичной оценке в 500 рублей в час и скорости разметки 100 изображений в час, это потребует 100 часов работы и обойдется в 50 000 рублей. А если данных больше? Затраты возрастают пропорционально.

Я столкнулся с этим, когда работал с большим датасетом аптечных товаров. Специалисты тратили недели на разметку, что замедляло весь процесс и увеличивало расходы. Тогда я понял: нужен новый подход.

Прежде чем рассказать, как именно я использовал GPT-4o для авторазметки, давайте разберёмся: что вообще такое LLM?

Что такое LLM и мультимодальность?

LLM (Large Language Model) – это большие языковые модели, которые обучены на огромных объёмах текстовых данных. Они способны не только генерировать текст, но и анализировать информацию, давать ответы на вопросы и даже работать с изображениями.

Современные модели, такие как GPT-4o, обладают мультимодальностью – это значит, что они могут понимать не только текст, но и изображения, аудио и видео. Это открывает новые возможности для автоматизации, в том числе в разметке данных.

Я решил использовать GPT-4o API для авторазметки изображений. Как это работало:

  1. Кодировал изображения в Base64;
  2. Отправлял их в GPT-4o API;
  3. Добавлял промпт: «У меня есть изображение, каждое из которых нужно отнести к одной из следующих категорий: "Животные", "Пейзаж", "Техника". В каждой категории могут быть такие подкатегории, как: Животные: кошки, собаки, птицы. Пейзаж: горы, леса, озера, пляжи. Техника: автомобили, самолеты, компьютеры. Однако если изображение не подходит под эти категории или ты не можешь уверенно отнести его к какой-либо категории, отметь это как "Неопределённо". Пожалуйста, указывай для каждого изображения точную категорию или помечай, что оно не подходит для классификации.»;
  4. Получал готовую разметку.

Модель спокойно смогла отличить разные виды животных или техники.

Разберём промпт чуть подробнее. Чтобы было меньше ошибок, я выделил целевые классы и класс «Неопределённо». В него попадают все картинки, в которых модель не уверена. Это очень важный шаг! Если не вводить этот класс и строго просить всё распределить, модель начнёт некорректно определять категорию изображения.

В промпте я прошу, чтобы модель указывала нужный класс или «Неопределённо». Если этого не сделать, может произойти следующее: на картинку трактора она напишет, что это трактор, и он не попадет в класс «Техника», а для нас это важно!

В итоге разметка, которая раньше занимала недели, теперь выполнялась за пару дней и почти без затрат на специалистов.

Реальный кейс: 7 000 изображений за $20

Чтобы протестировать авторазметку, я загрузил 7 000 изображений в GPT-4o. Использовал тариф $20 и получил точность около 80%.

Сравним с ручной разметкой.

  • Ручной труд:
  • 7 000 изображений × 1 минута на разметку = 116 часов работы;стоимость – 58 000 рублей (~$640) при ставке 500 рублей в час.
  • GPT-4o:
  • разметка заняла несколько часов;стоимость – $20 вместо $640;точность – 80%, что достаточно для первичной фильтрации.

Вывод: даже с небольшой погрешностью нейросети позволяют экономить 95% бюджета и ускорять разметку в десятки раз.

```

@staticmethod

def _encode_image(image_path: Path) -> str:

with open(image_path, "rb") as image_file:

return base64.b64encode(image_file.read()).decode("utf-8")

```

Этой функцией я кодировал изображения. Тут ничего сложного не происходит.

  1. Открываем изображение.
  2. Кодируем изображение.

Дальше, нужно использовать client OpenAI, для этого предварительно установив библиотеку openai==1.12.0 (у меня такая версия).

```

self.client = OpenAI(api_key="Наш ключ")

```

```

def _process_single_image(self, image_path: Path, prompt_template: str) -> Dict[str, Any]:

base64_image = self._encode_image(image_path)

response = self.client.chat.completions.create(

model=self.config.model,

messages=[

{

"role": "user",

"content": [

{"type": "text", "text": prompt_template},

{

"type": "image_url",

"image_url": {

"url": f"data:image/jpeg;base64,{base64_image}"

}

}

]

}

],

max_tokens=self.config.max_tokens

)

classification = response.choices[0].message.content.strip()

```

Следующей функцией мы всё объединяем:

  1. кодируем изображения;
  2. передаём, какую модель будем использовать (gpt-4o);
  3. помещаем наш промпт и изображение;
  4. получаем результат классификации.

Советую логировать результат, чтобы на первых итерациях посмотреть, на каких изображениях возникают проблемы и итеративно исправить промпт.

Какой вывод мы можем сделать?

Использование LLM и мультимодальных моделей, таких как GPT-4o, кардинально меняет подход к работе с данными. То, что раньше занимало недели и требовало десятков тысяч рублей, теперь можно автоматизировать за часы и $20 — без потери качества на этапе первичной фильтрации. Быстро, точно и без выгорания.

Что даёт такой подход:

  • снижение затрат: вместо сотен тысяч рублей – десятки долларов;
  • ускорение процесса: разметка сокращается с недель до часов;
  • минимизация ошибок: модель работает по заданным правилам, не устаёт и не теряет концентрацию;
  • освобождение ресурсов: специалисты могут заниматься более сложными задачами.

Автоматизация разметки — это мощное преимущество и правильный подход. Всё, как мы любим.

Начать дискуссию