Меня зовут Саша и я люблю машинное обучение, а также обучение людей. Сейчас курирую образовательные программы в Computer Science центре и руковожу бакалавриатом по анализу данных в СПбГУ. До этого работал аналитиком в Яндексе, а ещё раньше — учёным: занимался математическим моделированием в ИВТ СО РАН.
В этом посте хочу рассказать, что получилось из идеи запуска тренировок по машинному обучению для студентов, выпускников Новосибирского государственного университета и всех желающих.
Мне давно хотелось организовать спецкурс по подготовке к соревнованиям по анализу данных на Kaggle и других платформах. Это казалось отличной идеей:
- Студенты и все желающие применят на практике теоретические знания, получат опыт решения задач на публичных соревнованиях.
- Студенты, которые занимают места в топе на таких соревнованиях, хорошо влияют на привлекательность НГУ для абитуриентов, студентов и выпускников. С тренировками по спортивному программированию происходит точно также.
- Такой спецкурс отлично дополняет и расширяет фундаментальные знания: участники самостоятельно реализуют модели машинного обучения, часто объединяются в команды, которые конкурируют на мировом уровне.
- В других университетах уже проводились такие тренировки, поэтому я надеялся на успех спецкурса и в НГУ.
Запуск
В Академгородке Новосибирска очень благодатная почва для подобных начинаний: студенты, выпускники и преподаватели Computer Science центра и сильных технических факультетов, например, ФИТ, ММФ, ФФ, мощная поддержка администрации НГУ, активное ODS-сообщество, опытные инженеры и аналитики разных IT-компаний. Примерно тогда же мы узнали о грантовой программе от Botan Investments — фонд поддерживает команды, которые показывают хорошие результаты в соревнованиях по спортивному ML.
Мы нашли аудиторию в НГУ для еженедельных встреч, создали чатик в Телеграме и с 1 октября запустились вместе со студентами и выпускниками CS центра. На первое занятие пришли 19 человек. Шесть из них стали постоянными участниками тренировок. Всего за учебный год на встречу хотя бы раз пришел 31 человек.
Первые результаты
Мы с ребятами познакомились, обменялись опытом, обсудили соревнования и примерный план на будущее. Довольно быстро поняли, что борьба за места в соревнованиях по анализу данных — это регулярный изнурительный труд, похожий на неоплачиваемую full-time работу, но очень интересную и захватывающую :) Один из участников, Kaggle-master Максим, посоветовал нам сначала продвигаться в конкурсах индивидуально, и только через несколько недель после этого объединяться в команды, учитывая public score. Мы так и сделали! На очных тренировках обсуждали модели, научные статьи и тонкости Python-библиотек, вместе решали проблемы.
Результатами осеннего семестра стали три серебра в двух соревнованиях на Kaggle: TGS Salt Identification и PLAsTiCC Astronomical Classification. И одно третье место в конкурсе ЦФТ по исправлению опечаток с первыми выигранными деньгами (in the money, как говорят опытные кегглеры).
Ещё одним очень важным косвенным результатом спецкурса стал запуск и настройка кластера ВКИ НГУ. Его вычислительные мощности заметно улучшили нашу соревновательную жизнь: 40 CPU, 755Gb RAM, 8 GPU NVIDIA Tesla V100.
До этого мы выживали как могли: считали на личных ноутбуках и десктопах, в Google Colab и в Kaggle-kernels. У одной команды даже был самописный скрипт, который автоматически сохранял модель и перезапускал расчёт, остановившийся по лимиту времени.
В весеннем семестре мы продолжили собираться, обмениваться успешными находками и рассказывать о своих решениях соревнований. К нам стали приходить новые заинтересованные участники. За весенний семестр получилось взять уже одно золото, три серебра и девять бронз в восьми конкурсах на Kaggle: PetFinder, Santander, Gendered pronoun resolution, Whale Identification, Quora, Google Landmarks и других, бронзу в Recco challenge, третье место в Changellenge>>Cup и первое место (снова in the money) в соревновании по машинному обучению на чемпионате по программированию от Яндекса.
Что говорят участники тренировок
Михаил Карчевский
«Я очень рад, что такая деятельность ведётся у нас в Сибири, так как считаю, что участие в конкурсах — самый быстрый способ освоить ML. Для таких конкурсов железо достаточно дорогое, чтобы купить самостоятельно, а тут можно пробовать идеи бесплатно».
Кирилл Бродт
«До появления мл-тренировок я особо не участвовал в конкурсах за исключением учебных и индусских соревнований: не видел в этом смысла, так как работа у меня в области МО была, да и с ним я знаком. Первый семестр ходил как слушатель. А начиная со второго семестра, как только появились вычислительные ресурсы, подумал, почему бы и не поучаствовать. И меня это затянуло. Задачу, данные и метрики за тебя придумали и приготовили, бери да используй всю мощь МО, проверяй state-of-the-art модели и техники. Если бы не тренировки и, не менее важно, вычислительные ресурсы, я бы не скоро начал участвовать».
Андрей Шевелев
«Очные ML-тренировки помогли мне найти единомышленников, совместно с которыми удалось углубить свои знания в области машинного обучения и анализа данных. Также это отличный вариант для тех, у кого нет особо свободного времени на самостоятельный разбор и погружение в тему конкурсов, но быть в теме все же хочется».
Присоединяйтесь к нам
Соревнования на Kaggle и других площадках оттачивают практические умения и быстро конвертируются в интересную работу в области data science. Люди, которые вместе поучаствовали в трудном соревновании, часто становятся коллегами и продолжают успешно решать уже рабочие задачи. Такое случалось и у нас: Михаил Карчевский в паре с другом из команды перешли работать в одну компанию над рекомендательной системой.
Со временем мы планируем расширить эту активность научными публикациями и участием в конференциях по машинному обучению. Присоединяйтесь к нам в качестве участников или экспертов в Новосибирске — пишите мне или Кириллу. Организуйте аналогичные тренировки в своих городах и университетах.
Вот маленькая шпаргалка, которая поможет сделать первые шаги:
- Продумайте удобное место и время регулярных занятий. Оптимально — 1-2 раза в неделю.
- Напишите потенциально заинтересованным участникам о первой встрече. В первую очередь это студенты технических вузов, участники ODS.
- Заведите чатик для обсуждения текущих дел: Telegram, VK, WhatsApp или любой другой удобный большинству мессенджер.
- Ведите общедоступный план занятий, список соревнований и участников, следите за результатами.
- В близких университетах, научных институтах или компаниях найдите свободные вычислительные мощности или гранты на них.
- PROFIT!
Автор: Александр Авдюшенко