Поиск, агрегация и хранение ML-знаний

Evgenii Nikitin

Вы подписаны на этот канал - а значит вы либо заинтересованы в расширении своего ML-кругозора, либо вы - мой (Жекин) родственник, которого я попросил подписаться, чтоб добить до 1000 подписчиков до конца года. Во втором случае - хай, Женя, Майя, родители! Если же ваша фамилия не Никитин - сейчас мы расскажем о том, как мы ищем, агрегируем и храним знания об ML и смежных областях.

Жека

Я - руководитель ML-отдела и питерского офиса медицинского стартапа, а значит я должен знать как:

  • обучить лучший в мере детектор рака молочной железы
  • организовать работу отдела из 25 человек
  • раскатить систему ML-мониторинга
  • настроить файловое хранилище тренировочных данных на основе NFS
  • настроить интернет в офисе так, чтоб страницы не открывались по полчаса, когда кто-то решил залить датасетик на S3

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

  • оставаться в курсе общих ML/DL-трендов и быть на передовой важных для нас направлений - детекция, сегментация, активное обучение, шумная разметка, медицинский DL
  • следить за новостями в мире MLOps - новые фреймворки и инструменты для работы с данными, трекинга экспериментов, деплоя моделей, мониторинга
  • понимать, что нового появилось в сфере управления DS-продуктами и командами
  • быть в курсе последних трендов построения культуры работы с данными и DataOps
  • развивать свои знания в тимлидстве, техлидстве и менеджменте в целом
  • держать в более-менее актуальном состоянии общепрограммистские знания - что нового в питончике 3.XX, какое положение дел в мире DL-фреймворков, появились ли новые интересные продукты для разработки

По этой причине список источников у меня достаточно разнообразный, но при этом регулярно я просматриваю не так много из них.

  • Reddit - один из самых важных источников, в том числе потому что он закрывает многие потребности из списка. Вот только адекватного сабреддита по менеджменту так и не нашёл. Мои основные сабреддиты - /r/MachineLearning, /r/datascience, /rdataengineering, /r/mlops, /r/radiologyAI, /r/Python, /r/deeplearning.
  • Twitter - хороший источник информации “из первых рук”. Здесь тусуется много авторов статей, легенд AI-индустрии, аккаунтов инструментов и фреймворков. Регулярно чекаю, правда, мусора тоже много - мне, например, не очень интересна политическая позиция Лекуна, но что поделаешь.
  • Книги - недавно я купил себе Onyx Boox Lomonosov, и теперь проглатываю ML-книжки на завтрак, обед и ужин. Из последнего - Human-in-the-Loop ML, Agile ML, Learning DDD, Data Mesh, ML Design Patterns, О менеджменте Акоффа, Team Topologies, Clean ML Code, Эмоциональный интеллект.
  • Surveys - практически на любую тему в мире кто-то написал survey-статью. Вот survey про проблемы медицинских датасетов, а вот про curriculum learning. Да, у них может быть не очень хорошее качество, но ссылок на релевантные статьи вы там точно наберёте.
  • Цитаты - альтернатива surveys, идея простая - взять старую известную статью по теме и посмотреть в Google Scholar, кто её цитирует. Часто так нахожу весьма любопытные статьи по смежным темам и альтернативным методам.
  • Курсы - сейчас появилось очень много мусорных курсов, но есть и достойные. Мне нравится Full Stack DL, курс NYU по DL, есть хорошие курсы в ODS.
  • Агрегаторы статей и постов - их очень много, свои любимые упомянет Миша, я время от времени пользуюсь mlfeed.tech и ТГ-каналом DL Updates.
  • ТГ-сообщества и каналы - с ML-каналами у меня как-то не сложилось, TL;DR статей мне не очень интересны, а реально авторского контента не так много (или я не в курсе, пишите в комментах). Клёвый канал у Антона Мальцева, ещё я тусуюсь в сообществе LeanDS по процессам, оттуда недавно узнал про блог Product AI. Недавно подписался на канал Reliable ML. По другим темам: в Techlead Good Reads много ссылок на посты и книги по теме тимлидства и тихлидства, есть пара неплохих DevRel каналов и чатов, ну в общем-то и всё.
  • YouTube - я предпочитаю текстовую форму информации, поэтому на ютубе смотрю только какой-то уникальный контент, чаще всего плейлисты конференций (ODS Data Fest, Podlodka Teamlead Crew, Codefest и другие).
  • Сайты - я регулярно чекаю Teamlead Roadmap, например, когда нужно набросать план развития для тимлида. Ещё очень люблю блог Eugene Yan - классное оформление и полезные материалы.
  • Гугл - недавно попробовал you.com от Richard Socher в качестве альтернативы, но быстро откатился на гугл. У you.com есть интересный раздел Code, который под запрос выдаёт сниппеты кода. Можете попробовать, они регулярно выкатывают новые фишки.
  • Каналы в рабочем мессенджере. Последний в списке, но очень важный источник - очень много интересного и, главное, релевантного постят мои коллеги в рабочие каналы: #machinelearning, #ds_process, #tooling, #education-and-conferences.

Забавно, но при таком разнообразии источников я не использую RSS или что-то подобное для агрегации источников. У меня есть регулярные таски типа “Проверить последние две недели источника X на интересные ссылки”, а в ходе выполнения этой таски уже рождаются задачи на прочтение или просмотр видео.

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

  • Личная база знаний в Obsidian. Я с детства фанатею от энциклопедий и других баз знаний. До этого у меня была куча гугл-доков, табличек в ноушне и заметок в телеграме, но с начала года я фанат Obsidian. Рандомные мысли, рецепты коктейлей, обзоры литературы по конкретной теме, рабочие идеи, конспекты книг - всё там. Для первого знакомства подойдёт это видео.

Да, я гик заметок

  • Посты в рабочие каналы. Я не только пользуюсь плодами трудов коллег, но и сам стараюсь делиться знаниями - например, часто пишу TLDRы прочитанных книг или статей.
  • Выступления на конференциях и внутренних митапах. Подготовка презентаций позволяет порефлексировать и круто структурировать свой опыт и знания. Сейчас я всегда начинаю подготовку презы с наполнения документа в Obsidian материалами, поэтому и текстовый артефакт у меня остаётся.
  • Посты в этот канал. Тот факт, что мне нужно придумывать идеи для постов и оформлять их в связный текст, весьма положительно повлиял на мою привычку записи идей и мыслей.

Миша

Я пишу свою часть уже после Жекиной, и много чего у нас пересекается: например, я тоже очень люблю текстовую информацию, тоже использую Obsidian для личной базы знаний и тоже читаю surveys по новым для себя областям. Постараюсь перечислить те источники и способы, которые уникальны для меня.

Но для начала несколько особенностей о том что и как я читаю:

  1. Я очень люблю оставаться в курсе современных статей про DL, но мне не интересны гигантские модели: я работаю и хочу продолжать работать в компаниях среднего размера, и читать про то как “мы добавили ещё триллион параметров, обучали на 100000 GPU-часов A100 дольше и получили прирост в полпункта” мне не очень интересно.
  2. Я люблю читать про математику: как работает быстрое преобразование Фурье, почему Quite Okay Image такой классный формат, как работает и применяется MCMC…
  3. Я люблю читать про инструментарий: jax, nevergrad, numpyro, pymc.
  4. Я люблю читать уникальную информацию: очень много статей сейчас копируется по миллиону раз, поэтому намного приятнее читать статью, которая на 70% для тебя новая, чем очередной рассказ про запуск чужого репозитория на своём датасете.

Исходя из вышесказанного я для себя выделил следующие источники:

  • Коллекция ютуб-каналов. 3blue1brown, Reducible, YannicKilcher, MutualInformation, First Principles of Computer Vision, MLCollective, Primer и ещё куча всего. Смотрю их в основном, когда не настроен серьёзно разбирать тему или статью.
  • RSS feed. Да, в 2022, но это правда очень удобно. Там у меня коллекция блогов, вот несколько любимых - Sebastian Raschka, Andrej Karpathy, Berkeley AI Research, Distill.pub, Brain of Mat Kelcey.

Общие советы

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

Пишите в комментариях, какие источники мы упустили, и как вы подходите к процессу поиска информации!