Мини ML Соревнование

Мини ML Соревнование

Александр Вейсов (@snakers41)

Что это и зачем:

Для того, чтобы сделать процесс онбординга молодых сотрудников более интерактивным, интересным и веселым, мы хотели бы оформить его в виде небольшого микро-соревнования на Kaggle in class.

Цель соревнования - с нуля сделать максимально простой классификатор аудио-файлов на 3 категории:

  • Речь;
  • Музыка;
  • Шум;

Соревнование будет на платформе kaggle in class, и оно будет доступно по этой ссылке - https://www.kaggle.com/c/silero-audio-classifier.

Игрушечный датасет:

Не секрет, что многие ML соревнования вызывают смешанные чувства не в последнюю очередь из-за кривой валидации и отсутствия понимания собственного домена у организаторов. Мы отчасти абстрагируемся от этих проблем и очень сильно упрощаем домен решаемой задачи следующим образом:

  • Мы нивелируем чисто инженерную часть задачи, выкладывая все файлы в одном формате, с одним sampling rate;
  • Все данные анонимизированы и одинаковой длины;
  • По меркам toy соревнований, мы планируем выложить довольно большой датасет - 10 GB на 1 класс;
  • По этой же причине, задача одновременно является и очень простой, но не отдаленной от реальности;
  • Мы априори убираем почти все сложности, связанные с инженерной работой и просим решить просто задачу классификации целого файла, а не каждого фрейма (что значительно сложнее!);
  • Мы приветствуем максимально ясные и простые решения, на что нацелены правила ниже;

Правила (если ты претендуешь на трудоустройство в нашей компании):

  • PyTorch 1.0+, Python 3.6+. Если вы используете другой фреймворк, это очень большой плюс, но но мы используем PyTorch;
  • Можно участвовать только соло. Нельзя обмениваться кодом. Но обмен идеями в чатике на уровне "такой алгоритм работает с такими-то параметрами" активно приветствуется;
  • Нельзя использовать pre-trained модели и внешние данные;
  • Нельзя использовать стекинг, блендинг, ансамбли моделей;
  • Нельзя блендить кернелы, решения других участников;
  • Финальное решение должно состоять из одного алгоритма или одного семейства алгоритмов;

Предпочтение скорее будет отдаваться решениям с более качественным / логичным / простым / минималистичным кодом. Код лучше сразу оформлять в виде отдельного репозитория.

CI, 999% покрытие тестами, 100 пре-коммит хуков не нужны. Нужен чистый, простой, лаконичный читабельный код на питоне с тестами там, где ты их писал в процессе отладки кода. Если это сложно для начала подойдут и ноутбуки, но с такими же требованиями.

Мы также активно готовы помогать участникам, которые покажут какой-то traction следующим образом (если нужно):

  • Стартовые скрипты и идеи на форуме;
  • Помощь в настройке своего окружения;
  • Окружения с видеокартами;

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

Критерии успеха в конце забега:

Как оказалось, задача вообще не является сложной и по сути решение задачи просто является лакмусовой бумажкой твоей готовности работать у нас.

Поэтому, если вдруг задача покажется тебе слишком простой, то попробуй решить ее взяв 1% или 5% данных из трейна (или какие-то экзотические или наоборот сильно простые методы). Заодно можно получить интересный бенчмарк разных методов.

  • Ты должен решить задачу на уровне хотя бы 85 - 90% от лучшего результата;
  • Ты должен сделать это самостоятельно, следуя критериям выше;
  • Чем большему ты научишься в процессе и чем больше будет разница твоего уровня до и после - тем лучше;
  • Чем более простое, изящное, production-ориентированное и простое в поддержке твое решение и чем лучше ты понимаешь пройденный путь - тем меньше вообще какую-то роль играют остальные критерии. Но оно, естественно, должно работать;


Report Page