Заметки дата-сатаниста
266 subscribers
43 photos
1 video
31 links
Про повседневность ML инженера, мотивацию, вызовы, работу с данными и истории из жизни.
Download Telegram
#тру_стори

Чудо-вакансия


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

Хотят найти «звезду ИИ-аналитики». Первый раз слышу такое название, похоже это придумка талантливого и крайне эффективного менеджера. Само собой, обещают чемодан денег такому уникальному человеку.

Из требований:
1. Быть сильным в рисерче, а именно смочь «прочитать и понять статью по ИИ».
2. Хотеть самому писать статьи или обзоры, что «подтвердить лекциями на ютубе и личным блогом».
3. Уметь понять, что продукт на основе API ChatGPT не прорывной, потому что «его любой кодер повторит».

Ребята «понимают, что требования сильные, но и задачи сложные».

Есть ощущение, что вакансию они закрывать будут долго.
🤡5👍2
#инфо

Открытый курс по MLOps

По чистому совпадению на ods.ai сегодня стартует бесплатный курс по MLOps. Я в составе команды курса выполняю роль ментора/члена_жюри/человека_оркестра.

Авторы курса - опытные ML-инженеры, у которых есть чему поучиться. Курс построен не просто на контенте видео-лекций. Формат предполагает много практической работы в команде и будет полезен как начинающим, так и продолжающим ML-специалистам, разрабам и всем, кто имеет отношение к данным. Стартует курс сегодня в 18:00 МСК, до старта можно выбрать проект из доступных и присоединиться к его разработке. В конце курса предполагается защита проектов.

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

На том же сайте можно найти прошлый выпуск курса, чтобы понять примерный уровень материала и загрузку. Удачи всем, кто решится на это приключение 🚀
🔥6👍1👏1
История о погружении в новый старый проект 🧘
😁3
#тру_стори

Был у меня опыт внедрения ML в один проект возрастом чуть больше 15 лет. В проекте было больше 20 тысяч строк кода на разных языках, части проекта при передаче от разных владельцев терялись, что-то ломалось. В общем самый настоящий кошмар программиста.

Над проектом трудилось несколько команд в совокупности из 70 человек. И вот мне, единственному ML-инженеру, была поставлена задача - внедрить сервис на основе ML.

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

Весь этот вандализм длился чуть больше 8 месяцев.
Все это время меня не покидала мысль, что проект двигается не благодаря, а вопреки разработчикам.

Почему так происходит? Думается, что из-за стадии жизни проекта. По сути проект на этапе «дойная корова», а это подпитывает нежелание что-то менять со стороны всех участников.

В таких случаях создают специальную команду изменений, куда включают наиболее заинтересованных в развитии проекта людей. Их задача - создать атмосферу стартапа и двигать проект сильно быстрее.
👍3👏2
#MLOps

Как мы начинаем писать код? Обычно примерно в голове прикидываем структуру модулей и начинаем писать. Я так делал и иногда продолжаю делать сейчас. Со временем структура кода может меняться, иногда весьма сильно, что доставляет много головной боли. В какой-то момент я пришел собственному "скелету" кода, а потом наткнулся на сookiecutter.

Ниже будет разбор этого инструмента на примере DS-проекта 👇
👍5👏1
Вот шаблон data-science-проекта.

Применил этот шаблон в командном проекте, что сильно упростило разработку. К сожалению, шаблон заточен под DS-проект, поэтому структурой проекта авторы решают проблему воспроизводимости анализа и потоков данных, но не проблему production-ready кода (это было бы слишком). Прелесть шаблона в том, что мы можем на его основе сделать свой с блекджеком и эндпоинтами.

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

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

С точки зрения потоков данных шаблон построен на идеи "Analysis is a DAG", что как раз решает проблему воспроизводимости.

Больше того, уже существует множество шаблонов для самых разных сервисов, которые можно найти по запросу "cookiecutter <твой_сервис>".

К этому инструменту у меня не возникло аллергии, поэтому советую попробовать.

В комментариях можно поделиться болью про организацию кода в твоем проекте. Говорят, от этого становится легче 🫢
👍8👏1
🙈 В пятницу вечером начинать не стоит...

Топ-5 вопросов, которые нужно задать перед началом работы над проектом.

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

Вопросы помогают сэкономить время. Да, перед тем как задавать вопросы, важно уделить время самостоятельному поиску. Но здесь важно не увлечься и не потратить весь день на то, чтобы найти ответ на один вопрос. Если через пару часов решение не нашлось — самое время спросить.

Индустрия быстро растёт и меняется. На протяжении всей карьеры вам придётся задавать вопросы тем, кто в курсе новых технологий. Огромную часть вашего времени будет занимать общение с коллегами. Помните - нанимают за харды, увольняют за софты.

Содержательный вопрос показывает тому, кто его прочитал, что вы столкнулись с проблемой, пробовали решать её самостоятельно, подумали — и только потом пришли за помощью. Они выстроены так, что адресат быстро понимает, в чём проблема: ему удобно читать и отвечать на такой вопрос.

Например, вы сообщаете, что ознакомились с документацией к проекту, посмотрели код в репозитории, посмотрели ТЗ на задачу и предлагаете решение. После этого стоит спросить:
1. Насколько быстро и безболезненно предложенное решение может быть встроено в проект? Нужно ли что-то в нем кардинально изменить?
2. Какие есть ограничения по времени и памяти для работы кода?
3. Какие потоки данных будут затронуты моим решением, что я должен знать про данные?
4. Существует ли метрика, которую мне нужно улучшить через выполнение таски? Как она рассчитывается?
5. Что предусмотрено в Definition of Done для задачи?

На все эти вопросы сначала стоит ответить самостоятельно, потом подробно расписать детали в черновике или воспользоваться методом rubber duck debugging. Если предыдущие шаги не добавили ясности, стоит спросить более опытного коллегу или постановщика задачи.

Зачастую правильная формулировка вопроса содержит как минимум половину ответа.
👍5👏1
#MLOps

Если кто еще не слышал, то на прошлой неделе был опубликован код системы рекомендаций твиттера. Сейчас вокруг меня много говорят про разные особенности этой системы - закладки от гос.органов или политическую направленность. Пост не об этом.

ML-часть этой системы тоже стала открытой, ее можно найти здесь, а заодно посмотреть на практики работы с кодом. Ниже некоторые мысли на этот счет 👇👇👇
👍5🔥1
Репозиторий интересен для изучения по нескольким причинам.

Весь код написан на python. Мне казалось, что некоторые части такой системы могли быть написаны на С++ из-за потребности в быстродействии.

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

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

Репозиторий дополнили ссылкой на статью с описанием алгоритма построения и использования эмбеддингов разных сущностей соцсети для рекомендаций и ранжирования. Статья на 8 страниц может быть полезна для тех, кто интересуется графовыми нейронками. В ней есть разбор самого алгоритма, сравнение по бенчмаркам с SOTA-решениями и некоторые математические выкладки.
🔥4👍2
#тру_стори

На выходных встречался с другом, который достаточно далек от мира IT - он строитель. Примерно за 30 минут разговора он узнал про ChatGPT и пережил революцию взглядов.
Первые 10 минут он удивлялся и не верил мне, следующие 10 минут восхищался и даже придумал где в его области можно применить эту чудо-машину.
Последние 10 минут глубоко задумался и начал грустить - даже его область в будущем может быть затронута.

В конце он сказал фразу: «у нас такие штуки не приживутся, ведь почти весь государственный аппарат может быть автоматизирован, а значит на всех уровнях будет сопротивление». Интересный взгляд на ChatGPT.
Похоже друг пока на стадии отрицания.
👍91
#карьера

Про связь зарплат и объема работы.

Существует мнение, что чем усерднее трудишься, тем больше зарабатываешь.

С одной стороны я согласен с этим: усерднее трудишься -> делаешь больше задач -> быстрее растешь по скилам -> больше денег.

С другой стороны в этой логике есть изъяны, о них можно прочитать ниже ⬇️
👍6
Во-первых, нет гарантии, что каждый из этапов этой цепи двигает тебя вперед. Ты можешь делать больше задач, но никак не вырастишь, если твоя задача - переложить эксельку из одной папки в другую. Подобные примеры можно найти на каждом из звеньев цепи.

Во-вторых, размер дохода в целом определяется отраслью рынка труда. Не зря его называют рынком - на нем почти везде есть спрос и предложение. Рынки бывают разные и не всегда они конкурентные по модели биржевых торгов. Есть еще 3 вида рынков с перекосом спроса и предложения. Спасибо немногим исследованиям на эту тему, что дают хотя бы общее представление о рынке.

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

Есть много нюансов, но если грубо, то размер доходов весьма посредственно связан с объемом работы. Утверждение применимо для любых областей, не только IT.

Все это означает, что мы в мире IT-дикого-запада, где самый большой кусок пирога достается самому зубастому. Или точнее сказать наиболее прокаченному по софт-скилам?

В комментариях можно высказать аргументы за любую из позиций.
👍4🤔2
#инфо

Все мечтали себе получить Джарвиса?

В Майкрософт неделю назад опубликовали статью, вместе с ней и репозиторий с сервисом под названием Джарвис. Репозиторий еще в разработке, но сама идея уже впечатляет.

Предлагается использовать ChatGPT для обработки входящих запросов на выполнение задач, а сами задачи отдавать на аутсорс другим моделям. Эти модели брать из публичного хаба Hugging Face Hub, в котором храняться тысячи разных моделей со своими специализациями: распознавание или генерация картинок, текстов, работа со звуком и много всего еще.

Сейчас у сервиса есть UI, для запуска нужны openai.key и huggingface.token. После настройки конфигов поднять сервис не составляет большого труда. Для режима работы на максималках нужно 42+ ГБ RAM и, подозреваю, нормально настроить GPU для инференса моделей.

Надеюсь скоро появится возможность внедрить этот сервис в рабочие задачи. Интересно будет попробовать это сделать в облаке и посмотреть, сколько денег съест этот сервис.
👍51
#реклама

Про рекламу

Всем привет!

Говорят полезно задавать себе вопрос: "зачем ты это делаешь?".
Такой же вопрос я иногда задаю, когда пишу что-то в канал. Ответ для меня на этот вопрос - хочется помочь коллегам по цеху советом, как делать работу более эффективно и менее стрессово. Возможно, услышав крутую идею, кто-то захочет внедрить это в своей ежедневной работе.

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

Надеюсь каждый отнесется к этому с пониманием, ведь рекламный пост добавляет +10 к скорости генерации моего контента.
8
👨‍💻 Data Scientist — один из немногих каналов по Data Science и машинному обучению в телеграм. Ребята публикуют полезные материалы для тех, кто хочет стартануть в DS и ML.

Вот несколько фактов про DS:
◾️DataScientist — самая сексуальная профессия XXI века (согласно Harvard Business Review)
◾️В мире не хватает около 300 тысяч (!!!) спецов по DataScience
◾️В течение последних нескольких лет Data Scientist возглавляет рейтинг самых оплачиваемых работ

Хотите знать про DataScience еще больше? Или хотите стать спецом по DS? Подписывайтесь!
👍4
Команда Sber AI, которые, как ясно из названия, активно занимаются машинным обучением в Сбере, чуть больше недели назад опубликовали модель Kandinsky 2.1.
Признаться, я не следил за развитием этой истории в сбере, но эту модель хочется обсудить.

Кому интересно, приглашаю читать ⬇️
👍41
Наверно почти у каждого есть опыт работы с такими нейронками. Kandinsky 2.1, говорят, аналог midjourney, с хорошим понимание русского языка.

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

Пишут, что для версии 2.1 взяли веса версии 2.0 (училась на 1 млрд пар текст-картинка) и дообучили сначала на 170 млн пар с высоким разрешением картинки, потом еще на 2 млн пар с высококачественными изображениями (что это значит не уточняется). Отдельно отмечают, что добавляли в выборку лица людей и картинки текстов.

Страшно подумать, сколько ресурса требуется для сбора и хранения этих данных.

Говорят, добиться качественного прироста в генерации изображений высокого разрешения получилось из-за добавления автоэнкодера в процесс увеличения разрешения. По сути поверх модели v2.0 добавили декодер, который увеличивает разрешение изображения на выходе.
К сожалению, я пока не нашел статью, где авторы рассказали бы подробности архитектуры. Вся информация собрана из обрывков интервью разных причастных людей. Если вам попадалась, поделитесь, будет интересно почитать 🤓

Сбер на Хабре объявили конкурс по использованию этой сетки. Конкурс с блекджеком и айфонами, так что если кому-то очень хочется новый айфон, можно поучаствовать.
🔥4👍2
Про компромисс «качество/скорость»

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

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

Вокруг я только и вижу коленочные решения, которые сложно поддерживать и невозможно обновить. Сам такие решения последние 2 года делать отказываюсь, но танцы с заказчиком вокруг его желания все еще продолжаются и, думаю, никогда не закончатся.

Такой же подход я вижу в работах некоторых ребят в рамках курса по MLOps 2.0, за что без сожаления ставлю «незачет». Ведь где еще, кроме учебы, будет шанс выделить время на глубокую проработку вопроса.

Это извечный компромисс скорость/качество. И если с продажей «скорости» проблем не возникает, то с продажей «качества» часто приходиться повозиться.

Интересно еще и то, что почти все собеседования нацелены проверить качество, и редко - скорость. А в работе в итоге спрашивают скорость 🧐

А на чьей стороне ты в этом противостоянии?
👍5🔥1
Процесс перфоманс ревью у меня вызывает противоречивые чувства.

И дело даже не в том, что контекст построен вокруг зарплаты/должности/достижений.
Размышления на эту тему ниже 👇