Журнал / герои

Как работает команда обучения нейросетей

Мы уже рассказывали о том, что такое Шедеврум и как команда Николая Гаврилова развивает нейросеть Яндекса в формате стартапа. А сегодня — интервью с Сергеем Овчаренко, руководителем группы нейросетевых технологий, о том, как работает команда обучения нейросетей в Яндексе

Сергей, расскажи, где ты учился и как пришёл к работе с нейросетями?

Я начал программировать ещё в институте. Сперва занимался компьютерными сетями передачи данных, а затем прошёл курс Питера Норвига и Себастьяна Трана об основах искусственного интеллекта — и эта тема меня засосала!

Так из компьютерных сетей я ушёл в нейронные и в компьютерное зрение. Я и сейчас занимаюсь рекомендательными системами и зрением.

Можно подробнее о компьютерном зрении? Как оно работает?

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

В частности, с помощью компьютерного зрения мы учим программы на лету распознавать нужные объекты. К примеру, в любом супермаркете у дома есть камеры. А ещё есть сервер, который обрабатывает видео: нейросети следят, чтобы полки в магазине всегда были заполнены товаром. Если где-то мало помидоров или детского питания, нейронка сигнализирует человеку — и он добавляет товар.

Вернёмся от помидоров к Шедевруму. Как у вас распределены роли?

В Шедевруме есть две команды.

Мои ребята — это исследователи машинного обучения. Они отвечают за то, чтобы как можно лучше обучать сеть генерировать картинки, видео и другой контент.

А есть команда, которая занимается приложением. Она следит за тем, чтобы всё классно работало, было красиво, придумывает продуктовое развитие — это команда Николая.

Недавно Шедеврум научился генерировать короткие видеоролики!

Нейросеть создаёт видео длиной четыре секунды с частотой 24 кадра в секунду. После публикации ими можно поделиться с друзьями или сохранить в формате MP4.

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

А какие сотрудники тебе всегда нужны в команду? И где их найти?

Вот три группы специалистов, которых я всегда жду.

  • Machine learning research инженеры, чтобы выдвигать гипотезы, писать код по их имплементации, проверять их, читать статьи и генерировать свои идеи по улучшению нейросетей. Их главная задача — развивать область генеративных моделей, проводить нетривиальные эксперименты и исследовать новые подходы в диффузионных моделях.
  • MLOps-инженеры. Их задача — писать код, чтобы всё работало. В то время как ML-инженеры разрабатывают модели обучения машин, MLOps-инженеры программируют весь цикл машинного обучения: от разработки до внедрения и поддержки. Этим специалистам должно быть интересно работать над высоконагруженными сервисами, использующими нейросети, а также развивать экосистему инструментов вокруг новейшей и динамично развивающейся области генеративных моделей.
  • Аналитики, поскольку работа с данными критически важна. Мы ищем специалистов, чтобы улучшить данные для обучения: мы комбинируем ML- и DS-методы с ручной разметкой, пробуем разные подходы для файнтюна финальной модели, создаём инструменты для оценки качества, сравнения с конкурентами и поиска точек роста.

Ребята многому учатся сами, но у нас много людей из Физтеха, ВШЭ, МГУ, а ещё таким специальностям обучают в ШАДе Яндекса.

В чём конкретно заключается твоя работа над нейросетью?

Я сейчас собираю команду, которая будет работать над улучшением модели генерации. Но в основном задачи разработчиков, обучающих сеть, это:

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

Вот такой алгоритм. Повторять бесконечно.

Подожди, а нейросеть появилась раньше Шедеврума? Как она работает в проекте — и где ещё планируете её развивать?

Всё верно. Сначала появилась нейросеть, потом — Шедеврум и его задачи. Идея с Шедеврумом возникла в конце 2022 года. На тот момент у нас уже была обученная сеть, а потом мы к ней добавили первую версию бэкенда, который генерирует изображения. И команда сделала всё за новогодние праздники.

Первая версия названия проекта была «Шедеврус», ещё был «Им-Ям» (Yimg-Yamg), но это плохо воспринималось на слух. В итоге победил вариант «Шедеврум» — это классное многослойное название. Приложение генерирует шедевры внутри room — «своей комнаты».

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

Шедеврум — это интересная, фановая B2C-история, но наша цель — расти дальше. Есть планы внедрения в B2B, рекламу и много ещё куда. Например, Яндекс использует в рекламе иллюстрации, созданные той же нейросетью, что работает в Шедевруме. Если у рекламодателя нет собственной картинки для объявления, он может выбрать из предложенных нейросетью.

Нейросети можно использовать как для решения бизнес-задач, так и для развлечения. Мы постоянно в поисках новых применений. Уже сейчас нейросеть может придумать костюмы и декорации, разработать креативные концепции — помогать людям в их профессиональной деятельности. Отправить запрос на коммерческое использование контента из Шедеврума можно через форму обратной связи — ответ придет в течение 5 рабочих дней.

Как вообще работает Шедеврум?

В первую очередь сеть понимает, что хочет изобразить пользователь. Для этого мы используем отдельную нейросеть. Она обучалась на датасете текстов, понимает, как устроен язык и какие в нём взаимосвязи. Её задача — представить данные для другой нейросети в виде вектора чисел. Туда она кодирует информацию, о чём фраза, как взаимосвязаны слова.

Вторая нейросеть в процессе обучения видела 330 млн изображений и текстов, связанных с ними. Предполагается, что она сформировала своё представление о мире: каким визуальным образам соответствуют те или иные слова, как устроен мир изображений, как надо рисовать. Её задача — понять из сжатого представления текста, чего от неё хотят, и создать изображение. Если данных мало или вовсе нет, решение о генерации она принимает случайным образом. То есть додумывает сама: если не указать локацию, где лежит кот, она выдаст нам его изображение, например, на диване, а может — в вакууме или на пляже.

Над чем команда работает прямо сейчас? Что необходимо Шедевруму для развития?

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

Сетка будет обновляться всегда. На этапе создания Шедеврума мы попрототипировали — и нам захотелось поделиться этим. Пользователям понравилось, поэтому у нас много мотивации двигаться дальше.

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

Вообще, всё, что важно для людей, сложно изобразить. Это не только части тела, но и животные, знакомые людям предметы. Пока ещё нейронки делают это не идеально, но всё впереди!

Как считаешь, стоит ли бояться нейросетей? И как ты сам используешь нейросети в обычной жизни?

Зачем их бояться? Прогресс в масштабах человечества идёт независимо от моего мнения или мнений других людей. Это как переживать из-за погоды. Поскольку я не могу на это повлиять, считаю, что нужно возглавить процесс: больше узнавать о технологиях, изучать их, развивать и не оставаться в стороне.

Я рад развитию, а благодаря большому вниманию к сфере ИИ привлекается много ресурсов и талантов.

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