Привет, Хабр! С вами Сергей Рыжков, руководитель департамента хостинга и профессиональных сервисов Рег.ру, и Александр Михеев, ML-engineer РБК. В этой статье расскажем, как мы автоматизировали процесс тегирования редакционных материалов РБК с помощью нейросети в облаке Рег.ру. О первых результатах нашего эксперимента читайте под катом.

Навигация по тексту:

Зачем начали обучать нейросеть

Как проверяли гипотезу и проводили эксперименты

1. Выбор ИИ-модели

2. Эксперименты с обучением

3. Тестирование оборудования

4. Проверка гипотезы

Результаты проекта

Зачем начали обучать нейросеть

Тегирование материалов — неотъемлемая часть работы любой медиакомпании. В РБК ее выполняли вручную: редакторы прописывали 2–3 тега для каждого материала. В связи с этим возникало несколько трудностей: 

  • Количество тегов неконтролируемо увеличивалось — в основном разделе РБК до внедрения системы их набралось десятки тысяч.

  • Появились дубли и синонимичные теги. Например, тег «сыр» можно написать по-разному: использовать заглавные буквы или кавычки. С точки зрения системы «Сыр», «сыр» и «сыры» — разные теги. 

  • Из-за большого числа тегов стало сложнее выбирать релевантные, и оставался риск пропустить другие подходящие.

Тогда решили проверить гипотезу, насколько нейросеть потенциально может нивелировать человеческий фактор и позволит организовать процесс тегирования в полуавтоматическом режиме. Редактору можно будет не отвлекаться на поиск тегов, а только утверждать предложенные ИИ. В этом случае рутины станет меньше, и у сотрудников редакции появится время на по-настоящему важные задачи. 

Как проверяли гипотезу и проводили эксперименты

1. Выбор ИИ-модели

При выборе ИИ-модели одним из главных критериев было понимание русского языка. В РБК редакторы работают со сложно структурированными материалами на разные тематики, и чем лучше модель будет «понимать» русский язык, тем выше качество ее работы. 

За основу выбрали SOTA Open Source решение — архитектура T5. Это разработка Google, которую использовали для обучения модели FRED. Она обучалась на русском языке 35 дней на 160 графических процессорах V100 и 5 дней на 80 процессорах A100. Во время реализации проекта тестировали обе модели, и впоследствии перешли на оригинальную архитектуру T5 — большую мультиязычную модель MT5 от Google с более современным токенайзером.

2. Эксперименты с обучением 

Начали с того, что разработали отдельный сервис для подготовки «чистого», более компактного списка на основе тех самых десятков тысяч тегов. В дальнейшем этот white list пригодится для создания датасета («корректные» теги + размеченные ими материалы), на основе которого будет обучаться модель.

Первичный цикл обучения проводился на локальной видеокарте на мощностях РБК и составил 8 дней непрерывной работы. Нейросеть мгновенно подбирала теги, а процент ошибок был незначительный. Было ясно, что дообучение ИИ потребует дополнительных вычислительных ресурсов. Поэтому процесс решили перенести в облако с более мощным железом. 

Следующим шагом необходимо было подобрать оптимальную конфигурацию инфраструктуры, которая с одной стороны позволит сократить время на дообучение модели, а с другой — не будет избыточной по соотношению затраты/производительность. 

3. Тестирование оборудования 

Специальной для этой задачи инженеры Рег.ру подготовили тестовый стенд с видеокартой А5000 на базе облачных серверов с GPU. Производительность стенда сравнили с двумя другими конфигурациями: Т4 и RTX 3090. 

В таблице ниже представлены результаты тестирования. 

  • Значения it/s — это количество обрабатываемых материалов за один шаг в рамках эпохи, этот показатель отражает скорость обучения. 

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

  • Out — означает ошибку out of memory, то есть объема вычислительной памяти не хватило для размещения задачи. 

  • Подпись (gen) в модели — что обучение было на задачу text2text generation, а (pred) — sequence classification.

По итогу проведенных тестов видеокарта А5000 в облаке Рег.ру показала лучшие результаты. Она оснащена графической памятью объемом 24 ГБ и позволяет обрабатывать бо́льшие объемы данных без замедления работы. К тому же видеокарта поддерживает APICUDA и DirectML и совместима с большинством нейросетевых библиотек и приложений. 

4. Проверка гипотезы

Тестирование автоматической разметки материалов тегами проводили на разных проектах РБК, включая «РБК Тренды», «РБК Отрасли» и «РБК Life». Суммарно это более 25 тысяч материалов. 

Для перепроверки использовали уже существующие материалы, размеченные редакторами, — публикации загружали в нейросеть и сравнивали результаты машины и человека. На основе полученных результатов делали выводы о том, насколько релевантные теги подобрала модель. 

Проведенный тест подтвердил работоспособность подхода. После успешного первичного тестирования и до внедрения в админку для публикации статей, ИИ-модель интегрировали в редакционные процессы «РБК Трендов» с помощью промежуточного решения в виде телеграм-бота. 

Результаты проекта

Процесс обучения ИИ-модели в облаке удалось уместить всего в 14–15 часов за один цикл обучения. Точность подбора тегов составила  99%, а скорость тегирования одного материала экстремального сократилась до 0,03 секунды. При этом различалось число тегов. Например, редактор ставил 3 тега, а ИИ-модель выдавала 7 тегов, среди которых в 99% случаев были исходные 3.  

В таблице ниже представлены временные значения запуска ИИ-модели в сравнении в разных конфигурациях.

  • Init — время загрузки модели в RAM / VRAM.

  • Pred — время выполнения задачи до получения результатов. 

Значение времени является усредненным для 1 000 запущенных задач тегирования. Для оценки использовались два материала «РБК Трендов»: первый длиной ~200 токенов (по GPT4 токенайзеру), второй ~2000 токенов.

В качестве наглядного примера рассмотрим демо в «РБК Трендах». Редактор указал 4 тега для материала, мы попросили ИИ-модель предсказать 6 тегов по тексту. Ниже представлены результаты двух моделей, обученных на 18 и 30 эпох, — для сравнения. В результате все 4 редакционных тега вторая модель предсказала верно.

Что касается возможных ошибок в работе нейросети, то безусловно такую вероятность нельзя не учитывать, поэтому мы говорим не про автоматическое, а про автоматизированное решение. То есть нейросеть подбирает теги, а редактор визирует и либо принимает, либо правит их. Это позволяет исключить возможные ошибки нейросети, но при этом сохранить все преимущества, которые дал проект.

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

Комментарии (3)


  1. Dynasaur
    01.11.2024 12:13

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


    1. runity Автор
      01.11.2024 12:13

      Именно в облаке удалось так значительно ускорить время обучения ИИ, на локальном сервере этого не получалось.


      1. Dynasaur
        01.11.2024 12:13

        Если я правильно понял, вы сравнивали Т4 и RTX3090 у себя с А5000 в облаке. Как вы из этого сделали вывод, что это облако ускорило? Надо было сравнивать одинаковые карты в разных условиях, чтобы понять что именно облако влияет.