Яндекс открывает резидентскую программу по машинному обучению для опытных бэкенд-разработчиков. Если вы много писали на C++/Python и хотите применить эти знания в ML — то мы научим вас заниматься практическими исследованиями и выделим опытных кураторов. Вы поработаете над ключевыми сервисами Яндекса и получите навыки в таких областях, как линейные модели и градиентный бустинг, рекомендательные системы, нейросети для анализа изображений, текста и звука. Ещё вы узнаете, как правильно оценивать свои модели с помощью метрик в офлайне и онлайне.

Продолжительность программы — один год, в течение которого участники будут работать в управлении машинного интеллекта и исследований Яндекса, а также посещать лекции и семинары. Участие оплачивается и предполагает полную занятость: 40 часов в неделю, начиная с 1 июля этого года. Приём заявок уже открыт и продлится до 1 мая. 

А теперь подробнее — о том, какую аудиторию мы ждём, каким будет рабочий процесс и в целом, как бэкенд-специалисту переключиться на карьеру в ML.

Направленность


Residency Programs есть у многих компаний, включая, например, Google и Facebook. В основном они нацелены на специалистов младшего и среднего уровня, которые пробуют шагнуть в сторону ML-исследований. Наша программа — для другой аудитории. Мы приглашаем бэкенд-разработчиков, которые уже приобрели достаточно опыта и точно знают, что в своих компетенциях им нужно сдвигаться в сторону ML, получить практические навыки — а не навыки учёного — в решении промышленных задач машинного обучения. Это не значит, что мы не поддерживаем молодых исследователей. Для них мы организовали отдельную программу — премию имени Ильи Сегаловича, которая тоже позволяет поработать в Яндексе.

Где резиденту предстоит работать


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

Такая система хороша тем, что во многом решает технологические задачи сервисов Яндекса ещё до их возникновения. Когда перед сервисом встаёт проблема, его представители приходят к нам, чтобы, скорее всего, взять уже подготовленные нами технологии, которые остаётся только правильно применить в продукте. Если же что-то не готово — мы, по крайней мере, быстро вспомним, откуда можно «начать копать», в каких статьях искать решение. Как известно, научный подход — это стоять на плечах гигантов.

Что предстоит делать


В Яндексе — и даже конкретно в нашем управлении — развиваются все актуальные направления ML. Наша задача — улучшать качество самых разнообразных продуктов, и это служит стимулом проверять всё новое. К тому же регулярно появляются новые сервисы. Так что в лекционной программе есть все ключевые (хорошо себя зарекомендовавшие) направления машинного обучения в промышленной разработке. При составлении моей части курса я использовал опыт преподавания в Школе анализа данных, а также материалы и наработки других преподавателей ШАДа. Знаю, что коллеги делали так же.

В первые месяцы обучение по программе курса будет составлять примерно 30% вашего рабочего времени, затем — около 10%. Однако важно понимать, что работа с самими ML-моделями продолжит занимать примерно вчетверо меньше, чем все сопутствующие процессы. К ним относится подготовка бэкенда, получение данных, написание pipeline для их предобработки, оптимизация кода, адаптация под специфическое железо и т. д. ML-инженер — это, если хотите, fullstack-разработчик (только с больши?м уклоном в машинное обучение), способный решить задачу от начала и до конца. Даже с готовой моделью наверняка потребуется проделать ещё ряд действий: распараллелить её выполнение по нескольким машинам, подготовить реализацию в виде ручки, библиотеки или компоненты самого сервиса.

Выбор студента
Если у вас сложилось впечатление, что в ML-инженеры лучше идти, сначала поработав разработчиком бэкенда, — это не так. Поступить в тот же ШАД без реального опыта разработки сервисов, обучиться и стать крайне востребованным на рынке — отличный вариант. Многие специалисты в Яндексе оказались на нынешних позициях именно таким путём. Если же какая-нибудь компания готова предложить вам работу в области ML сразу после института — вероятно, тоже стоит принять предложение. Постарайтесь попасть в хорошую команду к опытному наставнику и приготовьтесь много учиться.

Что обычно мешает заняться ML


Если бэкендер стремится стать ML-инженером, он — без учёта резидентской программы — может выбрать из двух направлений развития.

Во-первых — обучиться в рамках какой-нибудь образовательного курса. Уроки на Coursera приблизят вас к пониманию базовых методик, но чтобы погрузиться в профессию в достаточной степени, необходимо уделить ей гораздо больше времени. Например, окончить ШАД. В разные годы в ШАДе было разное число курсов непосредственно по машинному обучению — в среднем, около восьми. Каждый из них действительно важен и полезен, в том числе по мнению выпускников. 

Во-вторых, можно поучаствовать в боевых проектах, где требуется реализовать тот или иной ML-алгоритм. Однако на рынке IT-разработки таких проектов очень мало: в большинстве задач машинное обучение не используется. Даже в банках, которые активно изучают связанные с ML возможности, анализом данных занимаются единицы. Если вам не удалось присоединиться к одной из подобных команд, остаётся либо завести свой собственный проект (где, скорее всего, дедлайны вы будете ставить себе сами, а это имеет мало общего с боевыми продакшен-задачами), либо начать соревноваться на Kaggle.

Действительно, объединиться с другими участниками сообщества и пробовать себя в конкурсах сравнительно несложно — особенно если подкрепить свои навыки тренировками и упомянутыми курсами на Coursera. У каждого конкурса есть дедлайн — он будет служить для вас стимулом и готовить к похожей системе в IT-компаниях. Это хороший путь — который, впрочем, тоже немного оторван от реальных процессов. На Kaggle вам дают предобработанные, пусть и не всегда идеальные данные; не предлагают думать о вкладе в продукт; а самое главное — не требуют решений, подходящих для продакшена. Ваши алгоритмы, вероятно, окажутся работоспособны и будут обладать высокой точностью, но ваши модели и код будут похожи на сшитого из разных частей Франкенштейна — в боевом проекте вся эта конструкция будет работать слишком медленно, тяжело обновляться и расширяться (например, языковые и голосовые алгоритмы всегда частично переписываются по мере развития языка). Компании заинтересованы в том, чтобы перечисленную работу могли проделать не только вы сами (понятно, что вам как автору решения это по силам), но и кто угодно из коллег. Про разницу между спортивным и промышленным программированием сказано много, и Kaggle воспитывает именно «спортсменов» — пусть и делает это очень хорошо, позволяя приобрести часть опыта.

Я описал две возможные линии развития — обучение через образовательные программы и обучение «в бою», например на Kaggle. Резидентская программа является сочетанием этих двух способов. Вас ждут лекции и семинары уровня ШАДа, а также действительно боевые проекты.

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


  1. e_fail
    03.04.2019 11:55
    +2

    WILL CODE ML FOR FOOD


  1. neurocore
    03.04.2019 13:07

    Тем временем в футере

    «ООО „ЯНДЕКС“ не оказывает образовательные услуги».


  1. SiliconValleyHobo
    03.04.2019 15:04

    Хороший бэкэндер-мидл (С++/python) получает под 250-300к в Москве.
    Вы ему компенсируете потери в зп?


    1. IvanVakhrushev
      03.04.2019 15:31

      Мидл? Вы что-то напутали…


      1. McKinseyBA
        03.04.2019 17:38

        а если «фулстэк-мидл» (с)?


      1. SiliconValleyHobo
        06.04.2019 16:14

        Очевидно, миддл в понимании того же Яндекса (т.е. человек с 3-10+ лет боевого опыта в нормальных компаниях). А не в понимании странных контор с 23-летними синиорами.
        Еще раз, «хороший». Не веб-манки.


    1. dremovd
      03.04.2019 19:51

      А почему хороший ML инженер будет получать меньше?


  1. dbelka
    04.04.2019 00:21

    Какая зарплатная вилка будет, хотя бы примерно?
    И что будет после окончания программы?


    1. klakhman Автор
      04.04.2019 11:27

      После окончания программы вы продолжите работу в качестве ML-инженера либо в том же подразделении Яндекса, либо выберите другой интересный для вас проект.


  1. Raynor
    04.04.2019 07:18

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


    1. klakhman Автор
      04.04.2019 11:20

      Программа предполагает полную занятость и компенсацию в соответствии с вашими скиллами как бэкенд-разработчика.

      Деньги занимать не придётся :)


  1. pragma
    04.04.2019 11:20

    Предполагается работа в офисах Яндекса или всё будет происходить удалённо? Если в офисах — то какие города/страны участвуют?


    1. klakhman Автор
      04.04.2019 11:29

      Программа будет проходить в московском офисе Яндекса.


  1. vdyachkov
    04.04.2019 16:19

    Поясните, пожалуйста, по требованиям:

    1. разработчик С++/Python — это И или ИЛИ. А если И, то насколько сильным разработчик должен быть в обоих ЯП
    2. доклад по согласованной с вами научной теме — например? И насколько объемным он должен быть?
    3. какие требования к теоретическим знаниям

    Потому что сейчас все выглядит как: «Давайте сделаем лэндинг а дальше разберемся с заказами людьми, которые захотят прийти в частном порядке»


    1. klakhman Автор
      04.04.2019 16:21

      Мы бы хотели, чтобы у кандидата был солидный опыт либо с C++, либо с python.

      Предполагается, что кандидат выберет какую-нибудь статью с последних топовых конференций (NIPS, ICML, ICLR, CVPR, ACL, RecSys и других) и сделает небольшой разбор: какая была постановка задачи, почему это важно, какое новшество в алгоритмах предложили авторы и какие результаты получили.

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


  1. KirillFormado
    04.04.2019 17:13
    +1

    А как быть C# / Java бэкендерам, eсли из опыта python только ml курсы?


    1. klakhman Автор
      04.04.2019 18:44

      Основные проекты, в которых вам предстоит работать, написаны на C++/Python, поэтому если вы имеет богатый опыт бэкенд-разработки и готовы сменить язык программирования, то вполне можете подавать заявку на программу.