Прийшов час осідлати справжнього Буцефала🏇🏻Приборкай норовливого коня разом з Newxel🏇🏻Умови на сайті
×Закрыть

Rails Reactor ML Summer School. Наш опыт организации обучения

Соавторы статьи: Александр Лапшин, Денис Сергиенко, Игорь Круш, Дмитрий Войтех, Тарас Легиневич, Дмитрий Ткаченко, Тарас Шевченко, Роман Шаптала, Михаил Белан.

Этим летом у нас, в Rails Reactor, успешно прошла летняя школа по машинному обучению, где приняли участие 11 лекторов и 22 студента. Чуть более двух месяцев участники разбирались не только с теорией, но и с практическими аспектами запуска ML в production. В этой статье мы поделимся опытом организации и проведения летней школы, который будет интересен тем, кто решит сделать что-то подобное.

Летняя школа — зачем учиться?

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

В идеале, формат летней школы, который происходит из академической среды, подразумевает дневное пребывание в учебном заведении, где занятия с лекторами (как теоретические, так и практические) длятся большую часть дня. В Украине подобные профильные мероприятия иногда проводятся. По машинному обучению такое делают, например, в УКУ. При наличии биометрического паспорта довольно просто и где-нибудь в Европе найти школу по душе.

Летняя школа — зачем учить?

В компании мы проводим собственные митапы (Meetup Tonight) и хостим другие комьюнити, с удовольствием ходим на конференции (как с докладами, так и просто послушать). Но хотелось сделать еще что-то для сообщества. В нашей команде есть люди, так или иначе связанные с обучением, — преподаватели в КПИ, Киево-Могилянской академии, лекторы котанов. Мы верили в то, что силами отдельных людей и организаций можно пытаться создавать дополнительные образовательные хабы в Киеве и сделать нечто, что позволит студентам получить практические знания для получения работы в области Data Science.

Нам хотелось повторить нечто подобное летним школам по смеси интенсивности обучения и глубине охвата материала. Мы выбрали два направления: машинное обучение от сбора данных до BERT’а и общее программирование на Python — от кода до деплоя в облако. Мы представляли образ двух групп потенциальных слушателей: уже практикующие программисты, которые знают Python и хотели бы выучить машинное обучение; люди, которые знают что-то о машинном обучении (а может просто хороши в математике/статистике) и хотели бы просто расширить профессиональный кругозор.


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

  • Занимать самый большой конференц-рум в офисе не на целые дни, а только на вечернее время.
  • Иметь больше времени между лекциями для адаптации материала согласно нашему видению успеваемости в группе.
  • Давать домашние задания для закрепления материала и вовремя проверять их.

Конечно, кроме таких высоких целей, как, например, повышать общий инженерный уровень дата-саентистов и широту взгляда обычных инженеров на машинное обучение, мы преследовали и другие: потренироваться в knowledge sharing, оттачивая свои ораторские навыки; найти потенциально перспективных интернов, которые сразу же будут частично подготовлены к тому, что происходит в индустриальной разработке; повысить узнаваемость компании Rails Reactor.

Есть идея, что дальше?

От идеи «давайте сделаем школу» до «завтра начинаем занятия» прошло довольно-таки много времени, в течение которого нужно было решить много вопросов. О них мы сейчас и поговорим.

Программа и менторы

Мы имели возможность задействовать всех людей, которые занимаются ML разработкой в нашей компании. В итоге собралось 11 человек, кроме того, с организационными вопросами нам помогало от 2 до 5 человек на протяжении школы. 11 менторов — это много и удобно, ведь каждому нужно подготовить всего пару лекций и домашних заданий, однако большое количество участников усложняет поиск общих решений и проверку учебных материалов на последовательность и систематичность. Всего с 1 вступительным и 1 заключительным занятиями, мы провели 18 лекций, в которых ML и инженерных тем было поровну. Их примерное описание и о лекторах можно прочитать на сайте школы.

Поиск и отбор слушателей

Мы хотели найти людей с мотивацией учиться. Исходя из опыта, решили сделать «вход» достаточно сложным, чтобы, во-первых, уменьшить поток заявок, во-вторых, убедиться в готовности людей вдумчиво изучать задания и инструкции по их выполнению. А еще мы решили установить жесткий дедлайн, чтобы сделать выводы о способностях кандидатов к тайм-менеджменту. Мы придумали среднее по сложности задание — не слишком типичное, но и не олимпиадно-исследовательское. Это была CLI-утилита, которая в заданной папке с картинками находит дубликаты, либо просто похожие изображения. Информацию про набор публиковали в профильные студенческие группы в соцсетях, упомянули о нем на <Input/>, попали в Junior Digest DOU. В итоге форму для получения условия тестового задания заполнили ~440 человек. При этом, по окончанию дедлайна мы получили 135 работ.

«Программистская» точность, с которой мы описывали задание, возможно, была только у нас в голове — в итоге у нас было много решений, в которых файлы назывались не так, а программы делали не совсем то, что нужно. В связи с чем, на будущее, мы планируем заморочиться с настройкой некой системы, которая бы автоматом прогоняла какие-то валидационные проверки еще в момент сдачи задания и проверяла наличие нужного кода и соответствие необходимым интерфейсам. Для сдачи задания нужно было просто прислать ссылку на гит репозиторий. В итоге, для проверки задания был написан другой CLI-инструмент, который проходился по списку выполненных заданий, загружал их, пытался в автоматическом режиме починить то, что чинилось, и делал некоторое количество проверок на правильность работы программы, стиль написания кода, время выполнения скрипта.

Даже с возможностью разделить всю пачку присланных решений на десяток человек, над каждым заданием пришлось попотеть для проведения ревью, ведь решения варьировались по сложности и качеству кода. Поэтому финальная оценка зависела от отдельных объективных метрик и субъективных оценок того, насколько advanced подход использовался, насколько понятен код и насколько он хорошо структурирован.

Интервью

Из нашего предыдущего опыта проведения открытых курсов в котанах, мы знали, что выполненное задание не всегда транслируется в хорошего студента, поэтому после тестового задания, мы отобрали 39 человек с которыми провели оффлайн интервью, где несколько интервьюеров отвечали на возможные вопросы, а также пытались понять мотивацию и уровень будущих студентов. Мы не питали иллюзий, что все будут одинаково заинтересованы и одного уровня подготовки, поэтому и на этом этапе были готовы адаптировать контент будущего курса в сторону как усложнения, так и упрощения. Также оффлайн интервью превращает абстрактные имена в таблице в реальных людей, у каждого из которых своя история и свой путь. Приятных и интересных людей было так много, что мы увеличили предполагаемый размер группы (15) в полтора раза.

Проведение школы

Дальнейшие усилия были направлены на то, чтобы организовать быстрый цикл получения ответов на любые вопросы, будь то организационные или технические, для чего мы использовали групповой мессенджер (Discord). Также помимо подготовки менторами своих лекций (обычно на каждую лекцию было по два ответственных выступающих, которые выступали также как страховка в случае непредвиденного, и напарник по брейншторму материала, обязательного к включению в лекцию), приходилось проводить код-ревью проверки домашним заданиям, которые студенты делали в общем gitlab репозитории.

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

Общие впечатления

Курсы подобного масштаба довольно таки утомительны, как для студентов, так и для менторов. Не до конца получилось выдержать тот спринтерский формат обычной летней школы, ближе к концу это было похоже на затянувшийся марафон. Из-за разной загруженности по рабочим проектам и наличия свободного времени, нагрузка на менторов была не одинаковой (привет Тарасу, который в какой-то момент собрался с силами и более сурово координировал усилия всех остальных).

Некоторые студенты «отвалились» во время прохождения курсов. Это ожидаемо, высокий темп, несоответствие уровню студента, дела житейские — причин может быть много. Все, кто дошел до конца, получили некий сувенир и сертификат, список студентов можно увидеть здесь. Они все хорошие, рассмотрите вариант взять кого-то из них на работу интерном/джуном. Мы, если что, так тоже сделали, возможно, как-нибудь они поделятся своими впечатлениями. Судя по настрою команды, мы будем делать это еще раз. Возможно, с небольшими изменениями в формате.

Что бы хотелось сделать лучше?

  • Возможно, поменять критерии для отбора, поэкспериментировать с форматом групп.
  • Поэкспериментировать с форматом домашних заданий / добавить промежуточные чек-поинты для проверки знаний и возможности убедиться, что весь текущий материал up to this point успешно усвоен всеми.
  • Внушить студентам, что задавать вопросы, — это хорошо. Субъективно ощущалось некоторое стеснение писать в общий чат с (не)очевидными вопросами.
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

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

Статья же про организацию процесса обучения, а не про технические аспекты.

Андрей, благодарю за фидбэк. Нам предложили поделиться опытом организации летней школы и своими наблюдениями. Задача раскрывать какие-то технические аспекты в этом материале — перед нами не стояла. Но, ваш комментарий, касательно технических аспектов — примем во внимание)

Rails Reactor Block Chain Coin ML AI Greta Summer School

Подписаться на комментарии