company_banner

Резидентская программа Яндекса, или Как опытному бэкендеру стать ML-инженером



    Яндекс открывает резидентскую программу по машинному обучению для опытных бэкенд-разработчиков. Если вы много писали на 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. Резидентская программа является сочетанием этих двух способов. Вас ждут лекции и семинары уровня ШАДа, а также действительно боевые проекты.
    Яндекс
    458,00
    Как мы делаем Яндекс
    Поделиться публикацией

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

      +12
      WILL CODE ML FOR FOOD
        +2
        Тем временем в футере
        «ООО „ЯНДЕКС“ не оказывает образовательные услуги».
          –1

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

            +6
            Мидл? Вы что-то напутали…
              0
              а если «фулстэк-мидл» (с)?
                0
                Очевидно, миддл в понимании того же Яндекса (т.е. человек с 3-10+ лет боевого опыта в нормальных компаниях). А не в понимании странных контор с 23-летними синиорами.
                Еще раз, «хороший». Не веб-манки.
                0
                А почему хороший ML инженер будет получать меньше?
                +3
                Какая зарплатная вилка будет, хотя бы примерно?
                И что будет после окончания программы?
                  0
                  После окончания программы вы продолжите работу в качестве ML-инженера либо в том же подразделении Яндекса, либо выберите другой интересный для вас проект.
                  +1

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

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

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

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

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

                        С точки зрения теоретических знаний мы бы хотели, чтобы кандидат имел общее понимание базовых принципов машинного обучения и математической статистики.
                        +1
                        А как быть C# / Java бэкендерам, eсли из опыта python только ml курсы?
                          0
                          Основные проекты, в которых вам предстоит работать, написаны на C++/Python, поэтому если вы имеет богатый опыт бэкенд-разработки и готовы сменить язык программирования, то вполне можете подавать заявку на программу.

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое