Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
====
Привет, мы команда VS Robotics, и мы г̶о̶т̶о̶в̶и̶м̶ ̶р̶о̶б̶о̶т̶о̶в̶ ̶к̶ ̶в̶о̶с̶с̶т̶а̶н̶и̶ю̶ ̶м̶а̶ш̶и̶н̶ занимаемся голосовыми технологиями.
Наш главный продукт — умеющий общаться на русском языке робот-оператор, и в процессе работы над ним мы создали еще несколько самостоятельных продуктов, к примеру, VS Advisor (персональный ассистент) или голосовой скоринг. Их гораздо больше, но почти во всех наших продуктах под капотом немалую часть составляют нейросети, и потому нам неизбежно приходится сталкиваться с обработкой больших данных. Под эту задачу у нас появился проект Еlementary — собственная платформа разметки данных для машинного обучения, которая позволяет подготовить нужным образом данные почти любой сложности и любого объема.
Проект начался как внутренняя разработка силами одной команды, но так как любые инструменты повышения производительности и оптимизации работы в нашей компании приветствуются, то мы быстро получили ресурсы в виде серверных мощностей и сотрудников. И потому вскоре инструмент стал интересен другим командам как внутри компании, так и за ее пределами для команд от внешних заказчиков.
Но обо всем по порядку.
Что такое разметка и зачем она нужна?
Современные технологии часто используют искусственный интеллект, а именно нейросети, которые требуют огромного количества размеченной информации. И каждый современный бизнес ежедневно накапливает огромные потоки всевозможных данных, будь то разговоры операторов, маршруты курьеров, записи с камер наблюдения и многое другое.
Но эти данные, которые называются неструктурированными («сырыми»), как правило, невозможно сразу использовать для создания технологий, их нужно правильным образом обработать.
Слева на схеме«сырые» данные из реальной жизни, а справа — они же, но уже обработанные, которые содержат аннотацию (или любые другие характеристики) в виде подписанного объекта. С такими данными уже можно строить нейросеть для автоматического определения объекта на фото.
Такой процесс обработки и называется «разметкой данных» и заключается в присвоении каждому элементу данных определенных характеристик — например, для кусочка аудио проставить границы какого-то слова на осциллограмме или просто оценить качество звучания. Подобных задач у нас набралось настолько много, а требования к их обработке были настолько высоки, что мы построили свою платформу для подготовки данных, но все, конечно, было не так просто.
Так зачем нужно было изобретать велосипед?
Изначально наша команда пыталась решить простую задачу — правильно расставить ударение в сложных фамилиях. Словарь составлял несколько десятков тысяч фамилий, а работа велась в экселе. К сожалению, масштабировать эту задачу в таких условиях практически невозможно, а результат был нужен как можно скорее, и мы быстро сделали простой веб-сервис, который позволял распределить эту задачу по разметчикам. Эффект нам настолько понравился, что остановиться было уже невозможно!
Мы далеко не первооткрыватели платформ разметки, и ничего нового не придумали, достаточно упомянуть ту же Яндекс.Толоку. Но ключевым фактором, благодаря которому мы стали делать именно свою платформу, стало наличие в штате нашей компании нескольких сотен разметчиков, то есть людей, профессионально погруженных в специфику наших задач и занимающихся разметкой данных. Нам необходимо было прежде всего дать единый инструмент для них, но вышло гораздо лучше, быстрее и сильнее.
Услышав об успехе задания с ударениями, к нам пришла команда синтеза голоса уже со своими «хотелками». Мы быстро запрограммировали и их, попутно начиная обрастать всем «джентельменским» функционалом от учета затраченного времени до динамического распределения заданий, ролевой модели, проверки модератором и так далее.
Хватит это программировать!
Долгое время мы просто «цепляли» новые задачи на нашу платформу и программировали их логику, но долго так продолжаться не могло. Мы постарались сделать некий конструктор заданий, то есть, визуальное создание заданий из каких-то типовых элементов, и здесь нас ждал первый большой вызов — задания были настолько разнородны, что выделить из них что-то типовое было практически невозможно.
Даже когда нам казалось, что точно такое же задание мы уже делали, заказчик объявлял о каких-то дополнительных требованиях (например, раздать аудио для оценки равномерно для женщин и мужчин), и мечта о конструкторе снова разбивалась о суровую реальность.
Когда же мы вышли на первый миллион размеченных элементов, а самих заданий было уже больше десяти (при этом часть из них стали ежедневно пополняемыми), мы окончательно поняли, что нужна автоматизация, а путь с участием программиста в запуске заданий — тупиковый, поэтому мы приняли волевое решение и сели за структуризацию процесса и дополнительно стали больше работать с внутренними заказчиками над типизацией их задач.
Мы выделили блоки, из которых состоит типовое задание, определили взаимосвязи между ними, ретроспективно постарались переложить все имеющиеся задания на новую схему, попутно пытаясь расширить индивидуальные возможности каждого блока. Это было сложно, и спустя несколько месяцев у нас начало что-то получаться: помощь программиста в подключении заданий стала требоваться все реже.
Пример интерфейса задания, в котором на осциллограмме звука необходимо отметить границы указанных слов
Как пережить пандемию во всех смыслах?
Конструктор заданий вполне себе уже работал, когда случилась пандемия, доставившая нам (всем?) немало проблем. Дело в том, что когда офисы стали пустеть, а люди — запираться по домам и терять доходы, в качестве альтернативы им было предложено работать на нашей платформе.
Это было серьезное испытание на прочность, потому что количество пользователей площадки начало резко возрастать каждый день, и вместо сотен людей на платформе стали работать десятки тысяч. Каждый день! Восьмичасовой рабочий день!
А работа платформы под нагрузкой — это совершенно другая история, не говоря уже о том, что эта нагрузка возросла не планово и разово, а резко и надолго.
Здесь уместна аналогия с пробками на дорогах. Несколько десятков машин отлично будут ездить по любым дорогам, но если там появятся тысячи машин, то даже на широкополосных трассах моментально начнутся аварии и заторы. Ровно то же самое происходит и с проектом на нагрузке, и нам пришлось серьезно «наживую» тюнить архитектуру, чтобы она могла это выдержать. В таких условиях процесс разработки построен совершенно по другому, мы должны были учитывать особенности тысяч людей во всех часовых поясах от Камчатки (-9) до Калининграда (+1).
Но дело тут не только в техническом аспекте: тысячи людей — это очень много, и для обеспечения их непрерывной работой нам пришлось максимально быстро оптимизировать не только процесс запуска заданий и получения результатов, но и находить внешних заказчиков.
И, кажется, у нас это получилось хорошо!
Давайте к делу!
Сейчас, когда наша площадка уже прошла огонь, воду и «ковидные» трубы, мы — полноценная платформа, соединяющая заказчиков и разметчиков. У обоих — личный кабинет со всем необходимым: у разметчиков — задания, баланс и история, у заказчиков — конструктор, инструменты проверки статуса и отчетность. Разметчики работают как самозанятые и получают основной или дополнительный заработок, а заказчиков мы холим и лелеем и готовы обсуждать их задачи любой сложности.
При этом мы не позиционируем себя именно как платформа в чистом виде, мы скорее сервис, потому что сопровождаем и консультируем заказчика на каждом из этапов от постановки задачи до трактовки результатов.
Пример плохой и хорошей разметки в зависимости от описания поставленной задачи. Часто заказчик с высоты своих знаний не описывает нюансы, например, как выделять человека, если у него предметы в руках или головной убор, а также насколько допустима погрешность выделения (от которой напрямую зависят потраченное разметчиком время и стоимость).
Итак:
Что можно разметить на площадке?
Мы понимаем, что есть крайне специфические задачи, под которые пишется специальный софт, но большинство типовых задач разметки нам по силам уже сейчас.
Аудио, текст, картинки, разметку точек (как bounding boxes, так и кастомные маски из точек), звук на осциллограмме, классификацию, сегментацию, асессоры, исследования, сбор данных, полевые задания — на платформе можно выполнить практически все существующие задачи подготовки данных для машинного обучения или обсудить кастомизацию задания персонально под клиента.
Кто будет размечать?
У нас есть разметчики, привлекаемые работой по договору на подработку или полную занятость (одно время была открытая регистрация и, когда на проекте набралось несколько тысяч желающих, мы стали работать с ними, временно приостановив регистрацию, но планируем вскоре ее снова открыть). Большую часть задач решают именно они.
У нас есть собственный штат разметчиков — для особо сложных задач.
Еще одним важным преимуществом является заведение сотрудников заказчика на нашу платформу. Бывают задания, требующие экспертности, например, из области медицины: чтобы научить нейросеть распознавать перелом на рентгене, необходимо, чтобы фотографию оценивал именно профессиональный медик, и наша платформа позволяет заводить своих сотрудников и давать задание только им.
В чем особенность?
За несколько лет работы над площадкой мы накопили колоссальный опыт как быть арбитром между заказчиком и исполнителями, которые часто говорят на «разных языках» и находятся в разном понимании контекста. Правильно составленная инструкция для задания — половина успеха, поэтому мы с радостью поможем ее составить или дополнить важными (часто — критически важными!) нюансами.
Как вы оцениваете качество и точность?
Качество оценивает заказчик, но мы всячески этому способствуем. Мы помогаем на всех этапах, что в конечном итоге снижает стоимость задания и сроки выполнения работы, при этом повышая качество (за счет внутренних инструментов контроля и проверки разметчиков).
Одним из таких инструментов является возможность обратной связи, а также наличие у нас техподдержки 24/7, которая как соберет поступающие вопросы от разметчиков, так и спустит им затем дополнительные пояснения от заказчика.
Насколько высокое качество разметки?
Заказчик платит только за качественный результат. В идеале мы сначала для разметчика составляем обучение, затем экзаменируем его с проходным баллом, а затем в живое задание подмешиваются контрольные-проверочные пункты. Мы постоянно проводим сертификацию разметчиков и переоценку качества их работы. Если разметчик плохо сделал свою работу, то заказчик платить за нее не будет.
Дайте цифр!
На платформе зарегистрировано больше 20 тысяч разметчиков. За 2021 год размечено 110 млн сущностей, собрано 4 млн медиа-данных (запись нужного текста через микрофон, сделать фото/видео согласно условиям), выполнено 40 тысяч полевых заданий.
Вот так проект, начавшийся из решения собственной проблемы, превратился в достаточно востребованную услугу.