iOS-разработчики Александр Карцев и Алексей Коротков разработали IDE, в которой любой разработчик — и не только разработчик — может тренировать нейронную сеть «без кода». Стартаперы хотят демократизировать вход в машинное обучение и сделать эту область доступной для многих. Первую версию Make ML для iOS-приложений уже выпустили на Product Hunt.
Ребята, расскажите, как вас, двух iOS-разработчиков, занесло в стартап?
Алексей: На самом деле, до Make ML я участвовал как минимум в трёх стартапах, но их сложно назвать успешными. Социальная сеть HERO, в которой с помощью «лайка» можно поддержать различные проекты, отправив им криптовалютное вознаграждение, не взлетела.
Потом был AR-стартап, который из фото делал 3D-модель и прикреплял лицо к какому-то мультяшному персонажу — например, мексиканскому музыканту. Я сделал свою часть работы, но чуваки куда-то пропали, и в итоге всё схлопнулось. И тогда мы с коллегой стартовали приложение для проектирования товаров в дополненной реальности ARcraft.me. Технически сделали всё красиво, но маркетинг подкачал, не удалось найти правильную аудиторию: сперва ориентировались на звёзд, потом на обычных пользователей. Приложение доступно в AppStore, но я в него больше не верю.
Из вашего рассказа можно сделать вывод, что вы накопили экспертизу в AR. Зачем вам понадобилась совершенно другая область, нейронные сети?
Алексей: Всё получилось спонтанно. Когда мы закончили с разработкой ARcraft.me, и начался этап тестирования идей маркетинга, у разработчиков появилось немного свободного времени. И в этот момент мой знакомый попросил меня сделать приложение, которое будет «замазывать» женские соски на видео. Для этого нужно было натренировать нейронную сеть, определяющую нужную часть тела. Поиск данных и их разметка не были самыми затратными по времени этапами работы. А вот подготовка, которая включает в себя поиск инструмента для разметки, фреймворка, в котором ты будешь тренировать сеть, настройка python-зависимостей — всё это заняло примерно две недели. И я решил, что такая задача может решаться гораздо быстрее, нет причин, по которым она должна так затягиваться.
В чём основная идея Make ML?
Алексей: Мы хотим демократизировать вход в область машинного обучения, сделать так, чтобы как можно больше людей могло без кода натренировать нейронную сеть и интегрировать ML-модель со своим приложением. Пока я решал задачу моего знакомого, мне пришлось изучать различные туториалы, как натренировать нейронную сеть, и многие из них были уже не актуальны буквально через пару месяцев. Я начинал по ним работать, а у меня всё крэшилось, и я не понимал, в чём дело. Так и родилась идея сделать приложение, которое будет брать на себя всю подготовительную часть.
Александр: Make ML — это десктопное приложение, в котором могут работать как новички, так и опытные Data Scientists. Для первых есть удобная панель управления, где можно с помощью ползунков настраивать нужные параметры. Для вторых есть среда разработки, в которой они могут писать алгоритмы и упаковывать их в пайплайны. В целом, пользователям не обязательно разбираться в том, какие алгоритмы работают «под капотом», но, если они хотят сами написать код, то — без проблем, такая возможность есть.
Расскажите подробнее о функционале и том, как работает Make ML.
Александр: Чтобы написать свой алгоритм в среде разработки, тебе нужно создать пайплайн, выбрать версию python, на которой будешь писать, выставить зависимости, фреймворк и приступить к написанию кода. Наш основной фреймворк — Turicreate, это продукт Apple. Благодаря ему модель получается достаточно легковесной.
Обычному же пользователю лезть в код не обязательно, при этом у него есть та же гибкость, что у Data Scientist’а, который пишет код. Если по мере тренировки нейросети он хочет внести изменения, это можно сделать в параметрах панели управления.
Конкуренты у Make ML есть?
Алексей: Да, есть приложения, которые позволяют без кода натренировать нейронную суть, но там совсем black box. Они не позволяют тебе шагать дальше, понимать больше о том, что ты делаешь. У нас же гибкая IDE.
Александр: Когда Data Scientist работает в нашей среде разработки, он может выделять параметры, менять переменные — всё это даёт ему свободу.
В чём добавленная стоимость вашей гибкой среды разработки?
Алексей: Заходя на Github, ты видишь огромное количество алгоритмов для тренировки нейронных сетей, но понятия не имеешь, что с этим всем делать. У нас всё это собрано воедино. Плюс на рынке не так уж много тулзов, которые делают разметку. Например, под формат, который был нужен нам, ничего не подходило, и я нашёл какой-то Python-скрипт, через который перегнал всё, что разметил, в нужный формат. В общем, геморрой получился. Если же эти алгоритмы будут расшарены с использованием предложенного нами формата, это будет работать по принципу «скачал и запустил». Тебе не нужно мучиться с долгой настройкой — у нас встроенная разметка. Make ML самостоятельно определяет тип объекта и проводит его границы.
Какие этапы работы с нейронными сетями Make ML не автоматизирует?
Алексей: Основное, что Data Scientist’ам нужно сделать самим — это найти большое количество данных. По времени это очень затратно. Это может быть, например, 50 000 размеченных разноплановых фотографий с разным освещением, ракурсом и пр. Также никто, кроме тебя, не имплементирует полученную ML модель в мобильное или десктопное приложение.
Был ли у вас опыт работы с нейронными сетями до Make ML? Как глубоко пришлось погружаться в доменную область?
Александр: Мы должны быть специалистами не в том, чтобы создать идеальный алгоритм тренировки нейросети, а в том, чтобы упаковать весь процесс подготовки в лёгкую и доступную большинству форму. У нас есть много друзей, которые занимаются машинным обучением, и нужную экспертизу мы берём у них, постоянно консультируясь.
Алексей: Погружаться нужно было скорее не в само ML, а в программерские вещи, например, как настроить python-зависимости, как из приложения запускать python-алгоритмы, как вытаскивать данные, работать с ресурсами и пр. Сейчас перед нами стоит ещё одна задача — как запускать тренировки на сервере. Пытаемся её решить.
Каков порог входа в ваше приложение?
Александр: Никакими специальными навыками в нейронных сетях обладать не нужно. Даже журналист может натренировать ML-модель. Но если ты, например, iOS-разработчик, тебе нужно понимать, что с этим делать дальше, — знать, как встроить модель в приложение, как её запустить и пр.
Насколько точна будет модель, сделанная виртуальным Data Scientist’ом?
Александр: Всё зависит от данных, их качества и количества. Также важно, какой алгоритм будет использовать разработчик. Мы не претендуем на уровень экспертов в Data Science и не предоставляем алгоритмы, которые натренируют самую лучшую в мире нейросеть. У нас задача в другом — позволить людям из других областей попробовать, что это такое, и с помощью нашего инструмента быстро запустить процесс тренировки модели.
Сколько времени вам потребовалось на разработку Make ML?
Александр: Наученные опытом предыдущих проектов, когда мы долго делали приложения, вылизывали дизайн, а потом оказывалось, что это никому не нужно, в этот раз мы решили действовать иначе. Стараемся делать сложный продукт максимально быстро, показываем его аудитории, собираем фидбэк, дорабатываем, выкатываем новую версию. Активно кодить мы начали в январе 2019 года. Первая версия Make ML появилась на Product Hunt в марте, и была только для iOS-разработчиков, которые могли делать модели для iPhone. После релиза многие нам писали: «Ребята, нужно больше моделей!». Сейчас работаем над улучшением и расширением пула возможностей.
Что пользователи писали вам после Product Hunt?
Один из пользователей в первой версии продукта нашёл баг, из-за которого его тренировка крэшилась. Он обновил macOS до следующей беты, и там у него всё заработало. Когда пользователю настолько нужен твой продукт, что он не поленился и обновился до следующей беты, — наверное, твоя разработка имеет смысл.
Какая у вас бизнес-модель?
Александр: Мы будем брать деньги за тренировку нейронных сетей на нашем облачном сервисе, ценник будет примерно как на Amazon. Скорее всего это будет почасовая или поминутная оплата.
Обычную продажу и подписку тоже рассматриваем, но первое нам не совсем подходит. Кто-то, может быть, не хочет платить сразу большую сумму, потому что решил просто посмотреть, что это такое. Ему проще купить несколько часов, натренировать модель, скажем, на определение сосков. А потом он вообще может понять, что ему это неинтересно, и сказать: «Всё, соски больше видеть не хочу». А кто-то, наоборот, будет постоянно использовать наше приложение. В общем, если сделаем подписку, то скорее всего на количество часов тренировки в облаке.
Сколько людей сейчас в команде и какой формат занятости?
Александр: Мы вдвоём работаем над проектом фултайм. Возможно, в будущем нам понадобится штатный Data Scientist, который сделает функционал анализа датасета. Это позволит обычному пользователю лучше понимать, как улучшить нейронную сеть.
Алексей: Смысл в том, что, если ты сам не погружён в проект, как ты можешь кого-то убедить в том, чтобы помочь тебе? Стартап — это и так огромные риски, и, если ты не сконцентрирован на нём, шансы провалиться возрастают.
Александр: Если ты сам не готов рискнуть своей работой, зарплатой, то почему инвестор должен это делать?
За что тогда живёте сейчас?
Александр: За свои сбережения. Надеемся, что, как только мы протестируем нашу бета-версию, нам удастся запустить оплату. И тогда можно будет говорить про привлечение инвестиций и найм команды.
Алексей: Ранний найм команды — это причина № 1, которая убивает стартапы. Когда над проектом работают только фаундеры, их продуктивность и вовлечённость очень высока, а burn rate маленький. А когда нанимаешь персонал, тебе нужно отвлекаться на объяснения, что мы делаем, зачем и прочее. Ещё один плюс — мы не тратим деньги на оплату труда и можем в таком состоянии пребывать достаточно долго. Мы можем протестировать одну идею, другую, третью. А с командой, если что-то не зашло, вы уходите в убыток, люди разочаровываются, ты палишь деньги, и тебе может их просто не хватить, чтобы добраться до следующего уровня.
В перспективе нам нужно будет кастомизировать приложение под Ubuntu и Windows, сейчас у нас только iOS. Поэтому, возможно, понадобится человек, который поможет с серверной частью. Но работать с наймом мы будем очень аккуратно.
Справляетесь вдвоём?
Алексей: Мы два технических фаундера, и это очень хорошо, потому что мы можем достаточно быстро двигаться. Мне кажется, легче быть техническим фаундером и учить что-тот из бизнеса, чем наоборот.
Смотрите в сторону акселераторов?
Александр: Да, мы подались в YC и 500 Startups. В 500 Startups прошли до последнего интервью, но не попали, потому что у нас нет ревенью. 500 Startups в большей степени специализируется на росте пользователей, маркетинге.
Ещё мы не уверены в том, что акселераторы могут сильно помочь. Достаточное количество информации можно найти самостоятельно в интернете. Плюс, если ты общаешься с каким-то инвестором, и говоришь, что был в акселераторе, его ожидания по отношению к тебе возрастают. Кроме того, если ты поступил в акселератор, а он тебе ничего не дал, то это будет в минус тебе.
Между прочим, если мы говорим про успешную компанию, то у неё должна быть миллиардная выручка. А количество акселераторов в мире явно в десятки раз больше, чем количество миллиардных стартапов.
Ваши ближайшие цели и задачи.
Алексей: У нас есть идеи, что можно делать с проектом дальше. Например, мы хотим добавить анализатор датасета, собственно, работа Data Scientist’а в этом и состоит. Если в Make ML будет анализатор, то, возможно, для некоторых команд этого может вполне хватить, чтобы вовсе не нанимать специального человека для этой работы. Но, если после релиза пользователи попросят сделать что-то другое, мы переключимся на то, что им нужно.
«Стоит как можно раньше понять, будет ли пользоваться спросом проект»
По просьбе dev.by, сервис протестировал инженер Денис Ярец. Он работает в научной лаборатории FAIR в Facebook и занимается исследованиямимашинного обучения с подкреплением в Нью-Йоркском университете
Какова практическая значимость проекта?
Ребята пытаются разработать программу, которая позволит людям с нулевым знанием ML тренировать заготовленные модели. Также они надеются, что это поможет их пользователям легко обмениваться моделями между Data Scientists и людьми, которые будут их тренировать (без знания ML).
Правильно ли стартап выбрал проблему, которую решает? Может, этот инструмент вовсе никому не нужен?
С моей точки зрения, программа ребят будет вряд ли полезна из-за её узкой специализации. Но, как ребята заметили, они ориентируются на людей, у которых опыт в машинном обучении минимальный или вообще отсутствует. Я вижу это приложение полезным для быстрого прототипирования какой-то идеи, но затрудняюсь представить его пользу для команды, у которой есть хотя бы есть один Data Scientist / ML Engineer. Существуют стандартные решения, такие как jupyter lab или же google colab, которые позволяют легко обмениваться моделями. Главная проблема, которую я вижу: для разработки чуть более серьёзного решения с использованием ML потенциальным пользователям будет крайне неудобно использовать настолько высокоуровневый интерфейс, из-за того, что у каждого приложения будут свои особенности. В итоге люди просто будут делать надстройки над более общими библиотеками для ML (tensorflow, pytorch, core ml).
Насколько хорошо реализована идея?
Прототип, который мне показали ребята, достаточно сырой, и в данный момент может только установить необходимые пакеты для ML, тренировку одной конкретной модели для object detection и лэйблирования картинок.
Какие советы дашь ребятам?
Главное пожелание для ребят — это как можно раньше понять, будет ли пользоваться спросом их проект. Я боюсь, что будет крайне сложно разработать высокоуровневый интерфейс для ML, который устроил бы всех, и в конечно итоге люди просто будут использовать более общие и, главное, бесплатные альтер