# Как поженить интересы сотрудника и стартапа
Читаю “Zero to one” Питера Тиля, известного венчурного капиталиста. Наглядно вижу конфликт интересов работодателя и работника. В этом случае конкретно про стартапы.
Стартапу важно, чтобы люди создавали будущую компанию. Поэтому им в первую очередь выгодно платить людям стоками, то есть долей в компании. Далее в иерархии идут бонусы. Последней, самой нежелательной для стартапа, идет зарплата зарплата, потому что кеш мотивирует делать как раньше делалось и сохранять текущий статус-кво.
Эта иерархия — полная инверсия приоритетов сотрудника, которую я описывал в постах про поиск работы. Для работника лучше всего зарплата, затем бонусы, затем стоки.
Стартапу выгодно скрывать от людей зарплаты и распределение долей в компании, потому что невозможно соблюсти справедливость. Например: секретарь, нанятный в начале становления Paypal, получил в 10 раз больше денег, чем нанятный позже критически важный инженер, благодаря тому. Секретарь пришел в начале и получил много стоков, потому что на раннем этапе компания вынуждена давать много стоков, чтобы компенсировать риски сотрудников. Инженер же пришел позже, получил сильно меньше стоков и больше денег. Работнику же выгодно знать компенсацию всех остальных, чтобы иметь более сильную переговорную позицию. Начиная с банального “почему Вася тупее меня, а платят ему в два раза больше”?
Стартапу выгодно, чтобы люди работали ради миссии и желания работать с другими людьми в компании. Питер Тиль даже говорит, что стартап должен быть близок к культу: люди должны быть “obsessed”, не замечать часов работы и едва ли не забивать на свои семьи. Работнику выгодно иметь жизнь за пределами офиса и строить свое будущее, а не будущее компании.
Выигрышный для обоих сторон исход возможен. Он возникает когда работник подходит стартапу, а стартап работнику. Это когда вы пообщались с компанией и понимаете, что компания делает важную для вас вещь. Вы уверены, что она не загнется, экспоненциально вырастет и совершит успешный экзит. И вам очень хочется работать с этими людьми годами, быть близкими с ними как с семьей. То есть вы нашли зародыш будущего Google, который еще и подходит лично вам, и готовы погрузиться в него с головой. Тогда вы берете в качестве зарплаты ровно столько, сколько нужно для выживания, и вагон стоков.
Пункт про то, что компания экспоненциально вырастет, самый важный. Если вы работаете просто за миссию, то вы не работаете, а волонтерствуете. Если вы работаете в стартапе, который делает что-то очень важное, но не имеет шансов на экспоненциальный рост и успех в текущей экономике, то вы все еще волонтерствуете, потому что денег вы не получите. Обычно говоря о работе в стартапах на первое место ставят миссию, но на самом деле на первом месте должен быть бизнес.
Если обычная работа это бизнес, где вы сдаете в аренду свой мозг, то работа в стартапе это другой бизнес. Называется “сам себе венчурный фонд”. Вы — венчурный фонд, с портфелем из одной компании. Вы инвестируете своим временем. Чтобы инвестиции окупились вам надо провести аналитическую работу фонда. Понять: может ли бизнес-модель стартапа работать на масштабе? Доведут ли фаундеры дело до конца? Достаточно ли большой рынок? Нужно ли делать этот стартап именно сейчас? Это невероятно сложно. Но хуже того, как правило этого никто не делает.
Я слышал о такой стратегии: с 20 до 30 лет работаем одним из первых сотрудников в разных стартапах seed стадии по два-три года. Получаем до пяти крупных ставок. Одна из пяти может выстрелить и окупить все остальные. Таким образом аналогия с фондом становится полной: еще и хеджируемся как настощий фонд. После 30 основываем свой используя набитые шишки.
Читаю “Zero to one” Питера Тиля, известного венчурного капиталиста. Наглядно вижу конфликт интересов работодателя и работника. В этом случае конкретно про стартапы.
Стартапу важно, чтобы люди создавали будущую компанию. Поэтому им в первую очередь выгодно платить людям стоками, то есть долей в компании. Далее в иерархии идут бонусы. Последней, самой нежелательной для стартапа, идет зарплата зарплата, потому что кеш мотивирует делать как раньше делалось и сохранять текущий статус-кво.
Эта иерархия — полная инверсия приоритетов сотрудника, которую я описывал в постах про поиск работы. Для работника лучше всего зарплата, затем бонусы, затем стоки.
Стартапу выгодно скрывать от людей зарплаты и распределение долей в компании, потому что невозможно соблюсти справедливость. Например: секретарь, нанятный в начале становления Paypal, получил в 10 раз больше денег, чем нанятный позже критически важный инженер, благодаря тому. Секретарь пришел в начале и получил много стоков, потому что на раннем этапе компания вынуждена давать много стоков, чтобы компенсировать риски сотрудников. Инженер же пришел позже, получил сильно меньше стоков и больше денег. Работнику же выгодно знать компенсацию всех остальных, чтобы иметь более сильную переговорную позицию. Начиная с банального “почему Вася тупее меня, а платят ему в два раза больше”?
Стартапу выгодно, чтобы люди работали ради миссии и желания работать с другими людьми в компании. Питер Тиль даже говорит, что стартап должен быть близок к культу: люди должны быть “obsessed”, не замечать часов работы и едва ли не забивать на свои семьи. Работнику выгодно иметь жизнь за пределами офиса и строить свое будущее, а не будущее компании.
Выигрышный для обоих сторон исход возможен. Он возникает когда работник подходит стартапу, а стартап работнику. Это когда вы пообщались с компанией и понимаете, что компания делает важную для вас вещь. Вы уверены, что она не загнется, экспоненциально вырастет и совершит успешный экзит. И вам очень хочется работать с этими людьми годами, быть близкими с ними как с семьей. То есть вы нашли зародыш будущего Google, который еще и подходит лично вам, и готовы погрузиться в него с головой. Тогда вы берете в качестве зарплаты ровно столько, сколько нужно для выживания, и вагон стоков.
Пункт про то, что компания экспоненциально вырастет, самый важный. Если вы работаете просто за миссию, то вы не работаете, а волонтерствуете. Если вы работаете в стартапе, который делает что-то очень важное, но не имеет шансов на экспоненциальный рост и успех в текущей экономике, то вы все еще волонтерствуете, потому что денег вы не получите. Обычно говоря о работе в стартапах на первое место ставят миссию, но на самом деле на первом месте должен быть бизнес.
Если обычная работа это бизнес, где вы сдаете в аренду свой мозг, то работа в стартапе это другой бизнес. Называется “сам себе венчурный фонд”. Вы — венчурный фонд, с портфелем из одной компании. Вы инвестируете своим временем. Чтобы инвестиции окупились вам надо провести аналитическую работу фонда. Понять: может ли бизнес-модель стартапа работать на масштабе? Доведут ли фаундеры дело до конца? Достаточно ли большой рынок? Нужно ли делать этот стартап именно сейчас? Это невероятно сложно. Но хуже того, как правило этого никто не делает.
Я слышал о такой стратегии: с 20 до 30 лет работаем одним из первых сотрудников в разных стартапах seed стадии по два-три года. Получаем до пяти крупных ставок. Одна из пяти может выстрелить и окупить все остальные. Таким образом аналогия с фондом становится полной: еще и хеджируемся как настощий фонд. После 30 основываем свой используя набитые шишки.
👍23🔥1
Кстати хочу сказать, что “Zero to one” довольно мерзотная бизнес книга по моему мнению. Очень много экстраполяций из одного наблюдения. Махание руками про power law распределения и другую статистику в одних местах с нелепым игнорированием статистики в других местах. Автор постоянно ругает кого-то, что их взгляд ограничен привычными им вещами, но сам делает все свои выводы из того, как он строил Paypal в молодости. Наконец, просто очень много советов, которые звучат умно, но никаких действий предпринять не позволяют. Что называется no actionable advice. Но книга интересна в том плане, что позволяет увидеть как думают VC и что стоит за стартапами по модели Кремниевой Долины с их безумными рыночными оценками. И есть некоторые интересные мысли. Например о том, что каптализм и конкуренция на самом деле находятся в противоречии, а не являются частью одного целого: при идеальной конкуренции никто не накапливает капитал.
👍12❤1😁1
Борис опять
# Как поженить интересы сотрудника и стартапа Читаю “Zero to one” Питера Тиля, известного венчурного капиталиста. Наглядно вижу конфликт интересов работодателя и работника. В этом случае конкретно про стартапы. Стартапу важно, чтобы люди создавали будущую…
К сожалению в реальном мире мы не можем выбирать работать только в таких “будущих Google” стартапах. Я, например, еще ни одного не видел. Даже текущая компания, Planet Farms, не подходит под описание. Делает нечто важное и с потенциалом масштабирования, но не дала мне стоков, а значит для меня это скорее “просто работа” с приятным бонусом в виде интересного направления. Зарплата мотивирует скорее накапливать навыки и ачивки для резюме, а не строить будущую компанию. Я всегда стараюсь делать и то, и другое, но нет отношения как к своему делу. Так же и стартапы не могут позволить себе нанимать только таких 100% подходящих сотрудников, потому что их мало, а работать кому-то надо. Всем приходится временами выбирать из того, что есть.
Это одна из причин, почему я хочу выйти на финансовую независимость: чтобы было время для поиска самых лучших возможностей, а не выбор из того, что подвернулось.
Это одна из причин, почему я хочу выйти на финансовую независимость: чтобы было время для поиска самых лучших возможностей, а не выбор из того, что подвернулось.
👍13🤔2🔥1
😁4👍1😱1
По части отношений стартапов с государством есть интересный дуализм мнений.
Более либерально настроенным кажется, что государство это динозавр из прошлого, который живет только благодаря инерции. Эдакий Oracle. В этой парадигме стартап фаундеры как герои романов Айн Рэнд меняют мир к лучшему, а бюрократы вяло пытаются их ограничить. Главные злодеи этой мифологии это комиссии по ценным бумагам, антимонопольные службы, профсоюзы. Я так тоже думал пока был маленький.
Однако достаточно немного поскрести и вылезает правда. NTech Labs в РФ делает слежку, ВКонтакте помогает сажать за репосты, Starlink бесплатно наводит украинские ракеты, ЦРУ выбирает у кого есть голос в Твиттере и кто выше в ленте (согласно последним twitter files), Google делает софт для дронов армии США, WhatsApp дает спецслужбам вольный доступ к перепискам, а в Китае вообще кажется границы между технологическими компаниями и государством нет.
Консервативно настроенные же видят во всем руку государства. Успех каждой компании они объясняют сделкой за закрытыми дверями. Думаю это тоже слишком радикальная грань, но с ней сложнее спорить, потому что она не фальсифицируема: попробуй докажи, что Дуров не сдал ключи.
Факт в том, что иллюзия конца государств рассыпалась. Кажется, что пик свободы от государств на самом деле был в эпоху индустриализации (в некоторых местах) и в ближайшее время повторения не предвидится.
Более либерально настроенным кажется, что государство это динозавр из прошлого, который живет только благодаря инерции. Эдакий Oracle. В этой парадигме стартап фаундеры как герои романов Айн Рэнд меняют мир к лучшему, а бюрократы вяло пытаются их ограничить. Главные злодеи этой мифологии это комиссии по ценным бумагам, антимонопольные службы, профсоюзы. Я так тоже думал пока был маленький.
Однако достаточно немного поскрести и вылезает правда. NTech Labs в РФ делает слежку, ВКонтакте помогает сажать за репосты, Starlink бесплатно наводит украинские ракеты, ЦРУ выбирает у кого есть голос в Твиттере и кто выше в ленте (согласно последним twitter files), Google делает софт для дронов армии США, WhatsApp дает спецслужбам вольный доступ к перепискам, а в Китае вообще кажется границы между технологическими компаниями и государством нет.
Консервативно настроенные же видят во всем руку государства. Успех каждой компании они объясняют сделкой за закрытыми дверями. Думаю это тоже слишком радикальная грань, но с ней сложнее спорить, потому что она не фальсифицируема: попробуй докажи, что Дуров не сдал ключи.
Факт в том, что иллюзия конца государств рассыпалась. Кажется, что пик свободы от государств на самом деле был в эпоху индустриализации (в некоторых местах) и в ближайшее время повторения не предвидится.
👍16😢8😁3🤔2
Борис опять pinned «# Новый год 2023 настает В связи с новым годом хочется сказать вам спасибо. Мне приятно каждый раз, когда я вижу, что мои тексты вам интересны или полезны. За год канал сильно вырос и стал еще более прикольной частью моей жизни. Люди активно комментируют…»
Forwarded from DziS Science | Data Science
❗️❗️❗️❗️❗️❗️❗️❗️❗️❗️
Господа, срочная новость, канал Саши был атакован. Перешлите всем кого знаете, что на него подписан!
Под предлогом рекламы предложили посмотреть материалы в zip-архиве. Как результат: Саша - привидение👻, канал скорее всего уже переписали на кого-то.
Будьте аккуратны! Не ведитесь на всякие файлы от левых людей.
P.S. Ожидаем контент 18+ на странице.
UPD: комменты уже закрыли
UPD 2: Алерон попросил накидать страйков на свой канал с пометкой Fake Account и написать, что канал угнали мошенники!!!
UPD 3: Новый канал @datafeel.
Господа, срочная новость, канал Саши был атакован. Перешлите всем кого знаете, что на него подписан!
Под предлогом рекламы предложили посмотреть материалы в zip-архиве. Как результат: Саша - привидение👻, канал скорее всего уже переписали на кого-то.
Будьте аккуратны! Не ведитесь на всякие файлы от левых людей.
P.S. Ожидаем контент 18+ на странице.
UPD: комменты уже закрыли
UPD 2: Алерон попросил накидать страйков на свой канал с пометкой Fake Account и написать, что канал угнали мошенники!!!
UPD 3: Новый канал @datafeel.
😁11❤3👎1
Как Data Scientist научиться программировать или…
# Минимальные знания Software Engineering для Data Scientist
Если нелегкая занесла вас в DS, то вы можете получить большое преимущество набрав немного инженерных навыков. Всегда полезнее тот человек, который может не только модель в jupyter notebook обучить, но и сделать так, чтобы моделью смог воспользоваться кто-то кроме него. Тот, кто лучше организует свой код, проверяет больше гиппотез в Kaggle соревновании за единицу времени. Наконец, вы не сможете запустить собственный проект если не умеете писать код в прод.
Ниже я постарался собрать минимальный путь от чистого заклинателя ноутбуков к инженеру. Гайд не сделает вас Machine Learning Engineer, но познакомит со всеми необходимыми темами. Рассчитан на месяц неспешного изучения вечерами.
# Минимальные знания Software Engineering для Data Scientist
Если нелегкая занесла вас в DS, то вы можете получить большое преимущество набрав немного инженерных навыков. Всегда полезнее тот человек, который может не только модель в jupyter notebook обучить, но и сделать так, чтобы моделью смог воспользоваться кто-то кроме него. Тот, кто лучше организует свой код, проверяет больше гиппотез в Kaggle соревновании за единицу времени. Наконец, вы не сможете запустить собственный проект если не умеете писать код в прод.
Ниже я постарался собрать минимальный путь от чистого заклинателя ноутбуков к инженеру. Гайд не сделает вас Machine Learning Engineer, но познакомит со всеми необходимыми темами. Рассчитан на месяц неспешного изучения вечерами.
🔥50👍6❤1
# Минимальные знания Software Engineering для Data Scientist 1/3
## Git
Интерактивный туториал
Краткий курс по Git от Github
Git (или другая VCS) каждый день использует любой адекватный программист. Стоит инвестировать время не только в заучивание трех команд, а в понимание принципа работы. К счастью основы изучаются за пару вечеров, а большего и не надо. DS должно быть не сложно понять идею, ведь про графы и деревья вы наверное слышали. Только не используйте никаких GUI клиентов для Git по крайней мере пока учитесь! Например надо понимать разницу между git add и git commit, но GUI клиенты часто заменяют их одной кнопкой.
## Linux
The Linux command line for beginners
Если вы работаете из под Windows, то как можно быстрее бросайте это дело (если у вас уже Mac или Linux, то этот пункт можете пропустить). Считайте, что Python разработки под Windows не бывает. Не умея пользоваться линуксом вы беспомощны. Как слезть с иглы: поставьте себе Ubuntu и работайте только из под нее, а Windows оставьте для игр. Я бы не советовал пользоваться WSL, потому что это полумера, но и это подойдет как крайний вариант. Главное, чтобы вас не пугали фразы уровня “зайди на VPS по ssh по ключу, прокинь симлинк для этой штуки.” Иначе вы в большинстве команд будете тем парнем, которому надо постоянно помогать.
## Библиотеки и зависимости в Python
Python virtual environments: A Primer
Обязательное чтение про менеджмент библиотек и зависимостей в Python. Вы должны быть способны разрабатывать несколько DS проектов с конфликтующими зависимостями (один требует pytorch v1.12, второй v1.4) без использования Anaconda. Так не обязательно делать, но вы должны быть способны. Для вас не должно быть проблемой сделать так, чтобы проект запускался с одинаковыми версиями библиотек у вас, у вашего коллеги и на сервере.
## Практический Python
The Hitchiker’s Guide to Python
Чтение о практическом применении Python. Бесплатная, короткая и по делу написанная книга.
Особенное внимание:
Глава про структуру кода
Содержит очень важную информацию про модули и пакеты в Python (так же см. официальную документацию).
Для закрепления: взять любой свой проект и красиво разбить его на модули.
Глава про стиль кода
Стиль кода это недооцененная (особенно среди DS), но очень важная вещь. От умения писать код зависит, будут ваши коллеги плевать вам в чай или нет. Умение писать читабельный код сэкономит вам уйму времени даже если вы только прототипируете модели и вам никогда не придется поддерживать проекты. Решая Kaggle вы бы скорее хотели искать ошибки в коде или пробовать новые варианты решения?
Прочитали один раз - пишете код лучше, чем большинство DS. Бесплатное преимущество!
Для закрепления: написать любую программу максимально красиво. Достаточно даже задачи с Leetcode. Хороший критерий успеха: вы отложили код на две недели, вернулись и все еще понимаете, что в нем происходит.
Глава про тесты и гайд для pytest
Способность писать тесты отличает дилетанта от программиста. Знание о том, как писать тесты, навсегда меняет подход к написанию любого кода: просто понимаешь, какой код более вероятно содержит скрытые косяки. Минус: паранойя навсегда, потому узнаешь, что весь код без покрытия автотестами сломан. Это очень важно даже если вы только учить модели. Если ваш код невозможно затащить в прод, то вы беспомощны и возможно даже бесполезны.
Для закрепления: покрыть тестами свою программу. Бонусные очки, если вы покрываете тестами ML решение, потому что это довольно нетривиальная задача.
## Читаем код
Узнав про то, что такое модульный и читабельный код, изучаем его экземпляры в дикой природе. Просто читаем, вникаем что и откуда берется, задаем себе вопросы: “почему здесь так?”, “что это такое?”, “зачем это здесь?” Это симуляция ситуации, когда вам нужно работать с кодом коллеги. Только в реальной жизни код не будет хорошим.
Советую исходный код этой небольшой библиотеки для табличек: https://github.com/jazzband/tablib
Более продвинутый уровень, если в библиотеке выше уже все понятно: https://github.com/pallets/flask
## Git
Интерактивный туториал
Краткий курс по Git от Github
Git (или другая VCS) каждый день использует любой адекватный программист. Стоит инвестировать время не только в заучивание трех команд, а в понимание принципа работы. К счастью основы изучаются за пару вечеров, а большего и не надо. DS должно быть не сложно понять идею, ведь про графы и деревья вы наверное слышали. Только не используйте никаких GUI клиентов для Git по крайней мере пока учитесь! Например надо понимать разницу между git add и git commit, но GUI клиенты часто заменяют их одной кнопкой.
## Linux
The Linux command line for beginners
Если вы работаете из под Windows, то как можно быстрее бросайте это дело (если у вас уже Mac или Linux, то этот пункт можете пропустить). Считайте, что Python разработки под Windows не бывает. Не умея пользоваться линуксом вы беспомощны. Как слезть с иглы: поставьте себе Ubuntu и работайте только из под нее, а Windows оставьте для игр. Я бы не советовал пользоваться WSL, потому что это полумера, но и это подойдет как крайний вариант. Главное, чтобы вас не пугали фразы уровня “зайди на VPS по ssh по ключу, прокинь симлинк для этой штуки.” Иначе вы в большинстве команд будете тем парнем, которому надо постоянно помогать.
## Библиотеки и зависимости в Python
Python virtual environments: A Primer
Обязательное чтение про менеджмент библиотек и зависимостей в Python. Вы должны быть способны разрабатывать несколько DS проектов с конфликтующими зависимостями (один требует pytorch v1.12, второй v1.4) без использования Anaconda. Так не обязательно делать, но вы должны быть способны. Для вас не должно быть проблемой сделать так, чтобы проект запускался с одинаковыми версиями библиотек у вас, у вашего коллеги и на сервере.
## Практический Python
The Hitchiker’s Guide to Python
Чтение о практическом применении Python. Бесплатная, короткая и по делу написанная книга.
Особенное внимание:
Глава про структуру кода
Содержит очень важную информацию про модули и пакеты в Python (так же см. официальную документацию).
Для закрепления: взять любой свой проект и красиво разбить его на модули.
Глава про стиль кода
Стиль кода это недооцененная (особенно среди DS), но очень важная вещь. От умения писать код зависит, будут ваши коллеги плевать вам в чай или нет. Умение писать читабельный код сэкономит вам уйму времени даже если вы только прототипируете модели и вам никогда не придется поддерживать проекты. Решая Kaggle вы бы скорее хотели искать ошибки в коде или пробовать новые варианты решения?
Прочитали один раз - пишете код лучше, чем большинство DS. Бесплатное преимущество!
Для закрепления: написать любую программу максимально красиво. Достаточно даже задачи с Leetcode. Хороший критерий успеха: вы отложили код на две недели, вернулись и все еще понимаете, что в нем происходит.
Глава про тесты и гайд для pytest
Способность писать тесты отличает дилетанта от программиста. Знание о том, как писать тесты, навсегда меняет подход к написанию любого кода: просто понимаешь, какой код более вероятно содержит скрытые косяки. Минус: паранойя навсегда, потому узнаешь, что весь код без покрытия автотестами сломан. Это очень важно даже если вы только учить модели. Если ваш код невозможно затащить в прод, то вы беспомощны и возможно даже бесполезны.
Для закрепления: покрыть тестами свою программу. Бонусные очки, если вы покрываете тестами ML решение, потому что это довольно нетривиальная задача.
## Читаем код
Узнав про то, что такое модульный и читабельный код, изучаем его экземпляры в дикой природе. Просто читаем, вникаем что и откуда берется, задаем себе вопросы: “почему здесь так?”, “что это такое?”, “зачем это здесь?” Это симуляция ситуации, когда вам нужно работать с кодом коллеги. Только в реальной жизни код не будет хорошим.
Советую исходный код этой небольшой библиотеки для табличек: https://github.com/jazzband/tablib
Более продвинутый уровень, если в библиотеке выше уже все понятно: https://github.com/pallets/flask
👍49🔥23❤4🐳3👏2
Борис опять pinned «Как Data Scientist научиться программировать или… # Минимальные знания Software Engineering для Data Scientist Если нелегкая занесла вас в DS, то вы можете получить большое преимущество набрав немного инженерных навыков. Всегда полезнее тот человек, который…»
# Минимальные знания Software Engineering для Data Scientist 2/3
## Память в Python
Читаем как Python работает с памятью, чтобы никогда больше не потеть на вопросе про GIL. По части DS позволяет лучше утилизировать железо, не делать глупостей вроде лишних копирований гигантских массивов и лучше интуитивно понимать работу кода.
Статья раз
Статья два
## HTTP
HTTP это то, на чем держится веб: когда вы открываете сайты, скачиваете датасеты, пользуетесь API. Инференс и деплой ML моделей почти всегда связан с HTTP.
Изучаем теорию:
Статья попроще
Статья подлиннее
Проходим туториал: Python’s Requests Library Guide
## Sklearn Pipelines
Sklearn Pipelines User Guide
С одной стороны без Sklearn в ML практически никуда и Pipeline это большая его киллер-фича, которая экономит уйму времени, позволяет избежать ошибок и упрощает перенос кода в продакшн. Но более важно то, что парадигма пайплайнов, то есть обработки данных через серию последовательных шагов, повсеместно встречается в ML экосистеме. Пайплайны в Sklearn это отличное введение. Познакомившись с ними будет гораздо проще осваивать популярные ML инструменты.
Для закрепления: берем ML задачу, которую решали (хоть Титаник на Kaggle) и переписываем с использованием Pipeline.
## SQL
https://sqlbolt.com/ - Проходим туториал вплоть до 12 урока.
Без SQL никуда. Чаще всего данные для моделей появляются когда мы заклинаем базы данных языком SQL.
Нас интересует все, касается запросов к существующим таблицам. Для минимального пути можно опустить все что касается вставок и создания таблиц.
Если вы хотите стать настоящим самураем SQL и быть круче большинства аналитиков, то надо взобраться на эту гору: www.sql-ex.ru
## Docker
Официальный туториал по Docker
Docker становится таким же необходимым, как Git. Позволяет паковать любой код в контейнеры, которые ведут себя как виртуальные машины, но делают это быстро. На практике это означает, что можно очень быстро разворачивать и сворачивать целые экосистемы прямо на своем ноуте. Хочешь базу данных: пара консольных команд и получаешь контейнер с базой данных. Хочешь Spark: пара команд и у тебя есть Spark. Хочешь, чтобы все это работало в продакшне так, как работает на твоем ноутбуке: легко, главное выполни на сервере ту же самую пару команд.
Для закрепления: берем любую свою программу (бонус очки: берем ML задачу из пункта про Pipeline) и делаем так, чтобы она запускалась в контейнере. Еще лучше если у вас два контейнера и один обращается к другому. Например в одном контейнере PostgreSQL с парой табличек, а в другом код, который делает запросы к базе данных.
## Память в Python
Читаем как Python работает с памятью, чтобы никогда больше не потеть на вопросе про GIL. По части DS позволяет лучше утилизировать железо, не делать глупостей вроде лишних копирований гигантских массивов и лучше интуитивно понимать работу кода.
Статья раз
Статья два
## HTTP
HTTP это то, на чем держится веб: когда вы открываете сайты, скачиваете датасеты, пользуетесь API. Инференс и деплой ML моделей почти всегда связан с HTTP.
Изучаем теорию:
Статья попроще
Статья подлиннее
Проходим туториал: Python’s Requests Library Guide
## Sklearn Pipelines
Sklearn Pipelines User Guide
С одной стороны без Sklearn в ML практически никуда и Pipeline это большая его киллер-фича, которая экономит уйму времени, позволяет избежать ошибок и упрощает перенос кода в продакшн. Но более важно то, что парадигма пайплайнов, то есть обработки данных через серию последовательных шагов, повсеместно встречается в ML экосистеме. Пайплайны в Sklearn это отличное введение. Познакомившись с ними будет гораздо проще осваивать популярные ML инструменты.
Для закрепления: берем ML задачу, которую решали (хоть Титаник на Kaggle) и переписываем с использованием Pipeline.
## SQL
https://sqlbolt.com/ - Проходим туториал вплоть до 12 урока.
Без SQL никуда. Чаще всего данные для моделей появляются когда мы заклинаем базы данных языком SQL.
Нас интересует все, касается запросов к существующим таблицам. Для минимального пути можно опустить все что касается вставок и создания таблиц.
Если вы хотите стать настоящим самураем SQL и быть круче большинства аналитиков, то надо взобраться на эту гору: www.sql-ex.ru
## Docker
Официальный туториал по Docker
Docker становится таким же необходимым, как Git. Позволяет паковать любой код в контейнеры, которые ведут себя как виртуальные машины, но делают это быстро. На практике это означает, что можно очень быстро разворачивать и сворачивать целые экосистемы прямо на своем ноуте. Хочешь базу данных: пара консольных команд и получаешь контейнер с базой данных. Хочешь Spark: пара команд и у тебя есть Spark. Хочешь, чтобы все это работало в продакшне так, как работает на твоем ноутбуке: легко, главное выполни на сервере ту же самую пару команд.
Для закрепления: берем любую свою программу (бонус очки: берем ML задачу из пункта про Pipeline) и делаем так, чтобы она запускалась в контейнере. Еще лучше если у вас два контейнера и один обращается к другому. Например в одном контейнере PostgreSQL с парой табличек, а в другом код, который делает запросы к базе данных.
👍40🔥15
С этими знаниями уже можно собрать рабочую схему деплоя табличной ML модели.
0. Поднимаем контейнер с базой данных.
1. На размеченных данных из бд обучаем Sklearn Pipeline, сохраняем с помощью pickle. Можно записать ее в БД, загрузить на облачное хранилище или просто сохранить на диск.
2. В контейнере для инференса периодически запускаем batch job: загрузили модель, достали из БД неразмеченные данные, сделали для них инференс, сохранили предсказания в БД.
3. Если batch job не подходит, то в контейнере для инференса запускаем API (flask, apiflask или fastapi). Принимает на вход POST запрос с json фичами примера, загружает модель, делает предикт, сохраняет пример и предсказание в БД (для дальнейшей доразметки и дообучения), возвращает предикт в виде JSON. Про API в данном гайде нет, но тоже очень полезно знать. Изучается за вечер, достаточно пройти один туториал.
0. Поднимаем контейнер с базой данных.
1. На размеченных данных из бд обучаем Sklearn Pipeline, сохраняем с помощью pickle. Можно записать ее в БД, загрузить на облачное хранилище или просто сохранить на диск.
2. В контейнере для инференса периодически запускаем batch job: загрузили модель, достали из БД неразмеченные данные, сделали для них инференс, сохранили предсказания в БД.
3. Если batch job не подходит, то в контейнере для инференса запускаем API (flask, apiflask или fastapi). Принимает на вход POST запрос с json фичами примера, загружает модель, делает предикт, сохраняет пример и предсказание в БД (для дальнейшей доразметки и дообучения), возвращает предикт в виде JSON. Про API в данном гайде нет, но тоже очень полезно знать. Изучается за вечер, достаточно пройти один туториал.
👍29❤4👏4
# Минимальные знания Software Engineering для Data Scientist 3/3
## Map Reduce
Туториал
Чтение
Общая парадигма того, как быстро обрабатывать данные, которые не влезают в оперативную память или даже диск сервера. Не вся Биг Дата это Map Reduce. Но позволит понять основные идеи.
## Распределенные вычисления
Выбрать одно: Spark Quickstart, Dask Quickstart
Apache Spark, Dask и аналоги это инструменты, которые реализуют Map Reduce и другие парадигмы. Они делают чтобы было быстро несмотря на то, что очень много. Очень часто встречаются в требованиях на вакансии DS, MLE и не только. Apache Spark более популярный, Dask - проще и приятнее. Для ознакомления выбирайте любой.
Для закрепления: переписываем из пункта Sklearn Pipelines так, чтобы feature engineering выполнялся с помощью Spark или Dask.
## MLOps - MLFlow
Однажды люди поняли, что при создании ML проектов можно не просто творить как получится, а использовать накопленные человечеством 40+ лет знаний о разработке софта. И придумали MLOps. Это о том, как менеджерить данные, модели, эксперименты и код экспериментов. Главные компоненты MLOps: структурирование проектов, трекинг экспериментов, версионирование данных и моделей, деплой моделей. Деплой моделей мы опустим, чтобы сэкономить в голове место, потому что для минимума он не критичен. Проще всего не осваивать все по-отдельности, а разобраться в самой популярной платформе, которая их объединяет: MLFlow.
Читаем для познания основных идей:
- Версионирование данных и моделей
- Трекинг экспериментов (сразу с MLFlow примером)
Проходим туториал по MLFlow
Для закрепления: добавляем MLFlow в свой ML проект.
- Метрики эксперимента должны отправляться при обучении в MLFlow.
- После обучения модель должна сохраняться в MLFlow Model Registry.
## Map Reduce
Туториал
Чтение
Общая парадигма того, как быстро обрабатывать данные, которые не влезают в оперативную память или даже диск сервера. Не вся Биг Дата это Map Reduce. Но позволит понять основные идеи.
## Распределенные вычисления
Выбрать одно: Spark Quickstart, Dask Quickstart
Apache Spark, Dask и аналоги это инструменты, которые реализуют Map Reduce и другие парадигмы. Они делают чтобы было быстро несмотря на то, что очень много. Очень часто встречаются в требованиях на вакансии DS, MLE и не только. Apache Spark более популярный, Dask - проще и приятнее. Для ознакомления выбирайте любой.
Для закрепления: переписываем из пункта Sklearn Pipelines так, чтобы feature engineering выполнялся с помощью Spark или Dask.
## MLOps - MLFlow
Однажды люди поняли, что при создании ML проектов можно не просто творить как получится, а использовать накопленные человечеством 40+ лет знаний о разработке софта. И придумали MLOps. Это о том, как менеджерить данные, модели, эксперименты и код экспериментов. Главные компоненты MLOps: структурирование проектов, трекинг экспериментов, версионирование данных и моделей, деплой моделей. Деплой моделей мы опустим, чтобы сэкономить в голове место, потому что для минимума он не критичен. Проще всего не осваивать все по-отдельности, а разобраться в самой популярной платформе, которая их объединяет: MLFlow.
Читаем для познания основных идей:
- Версионирование данных и моделей
- Трекинг экспериментов (сразу с MLFlow примером)
Проходим туториал по MLFlow
Для закрепления: добавляем MLFlow в свой ML проект.
- Метрики эксперимента должны отправляться при обучении в MLFlow.
- После обучения модель должна сохраняться в MLFlow Model Registry.
🔥44👍9❤2🤔1
# Серия постов: Минимальные знания Software Engineering для Data Scientist
Минимальный список необходимых тем по инженерии для DS. Со ссылками и упражнениями для закрепления. Расчитан на месяц очень неспешного изучения.
0. Введение и зачем это может быть нужно
1. Часть 1
2. Часть 2
3. Часть 3
Минимальный список необходимых тем по инженерии для DS. Со ссылками и упражнениями для закрепления. Расчитан на месяц очень неспешного изучения.
0. Введение и зачем это может быть нужно
1. Часть 1
2. Часть 2
3. Часть 3
🔥67👍10❤4
Борис опять pinned «# Серия постов: Минимальные знания Software Engineering для Data Scientist Минимальный список необходимых тем по инженерии для DS. Со ссылками и упражнениями для закрепления. Расчитан на месяц очень неспешного изучения. 0. Введение и зачем это может быть…»