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

На той неделе наступил срок сдачи ТЗ проекта по курсу MLOps2.0, где я участвую в роли ментора.

Авторы курса сделали шаблон ТЗ, который, по задумке, нужно было переделать под свой проект. Всего было сдано больше 300 работ, я отсмотрел около 60-70 и могу сказать, что большая часть работ выглядит хорошо.

Опишу тут основные проблемы, которые встречал:
- есть крутая идея, но нет ответа на вопрос «зачем это бизнесу». Видел работу с идеей сделать рекомендашку полезных действий для улучшения экологии: что именно тебе нужно сделать, чтобы экология стала лучше. Обществу может и будет полезно, но мы же не в мире розовых пони;
- многие забывают про формализацию метрик, по которым оценивать модели и бизнес-эффект от них. Вопрос про то, по какой метрике в итоге будете выбирать модель, вообще ставит в тупик. Если у тебя 2-3-5 ML-метрик, то как сравнивать модели? Эти вопросы оказались сложными для участников;
- часто нет понимания, как и откуда будут приходить данные. Почти все участники хотят начать проекты сразу с EDA, хотя начинать стоит с того, где и как взять данные;
- нет представления об интеграциях и внедрении проекта. Тут все банально, вопрос про внедрение сервиса в инфру заказчика почти всегда остаётся без ответа.

Понятно, что все получили зачет с напутствиями и рекомендациями.

Интересно то, что почти никто не использовал шаблон от Head of DS в Ленте, хотя штука годная и достаточно фундаментальная.
Две недели назад вышло обновление pandas до версии 2.0.0.
По канонам версионирования, изменение мажорной версии часто приводит к несовместимости кода, который писали на более ранних версиях.

Что поменяли?
В качестве бекенда теперь можно использовать pyarrow - полезная либа для работы с большими данными. Pandas, судя по всему, стараются быть в тренде. Теперь можно пробовать pandas вместо dask, но это не точно.
Еще изменили много моментов для работы с календарной датой. Помню, как страдал из-за особенностей работы pandas с форматированием дат и перестановкой день-месяц в разных форматах.

Есть блок про пометки "deprecations" и большой список разных удаленных фичей, которые теперь никому не нужны.

Следующее обновление версии 2.0.1 планируется уже в мае, так что может в нем исправят вновь созданные баги и даже обещают пофиксить обратную совместимость с особо ценными функциями прошлых версий.
Все мы когда-то сталкивались с задачей прогнозирования оттока юзеров. Это, в каком-то смысле, игровая задача. У меня уже несколько раз был случай, когда мы запускали в работу такую модель, а что с ней делать дальше никто не знал. Хотя эта ситуация может случиться со многими ML-проектами, чаще всего я видел ее именно в задаче оттока.

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

Похоже на выходных эта статья будет у меня на изучении.
Сбер рассказал о создании сервиса GigaChat - конкурента импортного ChatGPT. Предполагается, что с задачами на русском языке GigaChat будет справляться лучше любой нейронки от OpenAI.

Ходят слухи, что Сбер обучал свою нейросеть на суперкомпьютере Christofari Neo. В структуру GigaChat входят модели ruGPT-3.5 с 13 млрд параметров, Kandinsky 2.1, ruCLIP и FRED-T5 — лучшая языковая модель по работе с русским языком по мнению авторов GigaChat.

Пока открытого доступа к сервису нет, но можно вступить в закрытый (фактически открытый) телеграм-канал и начинать отсчитывать часы до появления доступа. Я уже прибежал туда и жду вместе со 100к+ другими энтузиастами.

Интересно было бы почитать про обучение этих моделей на русском корпусе, как обстоят дела с устранение токсичности ответов модели, как проводили RLFH. Ждем статью от авторов.

Безусловно радует, что теперь можно не беспокоиться о блокировке ChatGPT и держать перманентно открытыми ни одну, а целых две вкладки с полезными чатами.
Теперь каждый хочет выпустить свой ChatGPT, а значит анонсов про такие сервисы будет всплывать все больше.

Я добавил третью вкладку, которая ведет на чат от HuggingFace. Сейчас он работает на LLaMa 30B модели, которая по субъективным ощущениям слабее, чем вариант от OpenAI.
Использую как альтернативу с доступом без VPN и всяких ограничений.

Еще ходят слухи, что скоро на HuggingFace выйдет модель, обученная на написание кода сильно лучше, чем GPT-3.5. Но возможно это просто слухи и их распространяют нехорошие люди, которым доверять не стоит.
Всем привет!

Недавно опубликовали опенсорсную модель StarCode, которая использует 8к токенов для контекста, что в 2 раза больше, чем у ChatGPT.

Как можно понять из названия, модель заточена на написание кода. Авторы говорят, такая длина контекста позволяет использовать модель как виртуального помощника и передавать туда большие куски кода. Мое использование ChatGPT в основном ограничивается написанием или дебагом кода. Появление StarCode радует, не дает переживать по поводу возможных банов на сторонних сервисах от OpenAI.

Для этой модели уже есть и расширение в VSCode, которое можно использовать как альтернативу Copilot.

А вот статья на целых 50+ страниц для ценителей подробностей.

Внутри модели 15 млрд. параметров и тренировали ее на 512 x Tesla A100 в течение 24 суток. В статье отдельно приведен блок про выбросы СО2 из-за обучения этой модели - суммарно почти 17 тонн эмиссии углеродного газа.

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

Судя по бенчмаркам, эта модель в два раза качественнее той, которая сейчас крутится на HuggingChat. Сравнение делали для кода на python, здесь можно найти предвзятость.

Пару дней буду пользоваться, если понравится, оставлю в редакторе.
Как перестать быть ленивым?

Мне часто хочется быть продуктивнее, быстрее и качественнее делать задачи. Чувство всемогущести обычно приходит после первой чашки кофе. Ощущение усиливается после второй чашки, когда весь беклог на день выглядит как набор задач на 5 минут.

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

Секрет в том, чтобы подключать в зоне комфорта резервы, которые используешь при выходе из зоны комфорта. Ведь силы что-то делать есть в зоне комфорта, а вот умение их подключать - нет.

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

Но рассуждать - не мешки ворочать, поэтому пойду немного расслаблюсь 🙈
Сам!

Начался мой день с дерзкой мысли: "Сделаю эту задачу сам!". Ну кто из нас не король своего мира?!

Все сам! Молодец, гордый, сильный разработчик.

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

Думал-думал и, знаете, всё-таки решился отправить SOS в чаты. Ожидание ответа казалось вечностью! Делал скидку на занятость коллег и пятницу, думал даже удалить сообщение.

Дождался ответа от ребят, мы адекватно пообщались. Вера в себя восстановилась.

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

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

Прошедшую неделю занимался исправлением необычного бага. Раскатил минорные правки микросервиса, и он после релиза не смог достучаться до другого микросервиса. Казалось, происходит какая-то магия. Смотрю код - вижу, как отправляю запрос типа POST, смотрю логи сервера - вижу, как доходит изменённый запрос GET.

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

День ушел на эксперименты с версиями библиотек отправки запросов, созданием докер-контейнеров для экспериментов. Это принесло результат - часть контейнеров доставляли запрос до сервера в неизменном виде.

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

Следующий день ушел на внесение правок в работу сети.

Получается, я и сам своего рода системный инженер👨‍💻
Около месяца назад закончил учебный курс, недавно пришел диплом. Радость завершения многомесячной работы прошла и начала забываться, а тут письменное напоминание подвезли. Приятно.

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

Но однажды у меня было собеседование, на котором вопрос про дипломы подняли. Был 4 этап собесов, встреча с кем-то из С-уровня всем известной компании. Почему-то мне сразу расхотелось к ним идти. В тот момент еще не понимал, что это часть корпоративной культуры и одна из ценностей. Теперь понимаю, зачем компании пишут про свои ценности. Было бы обидно ошибиться с выбором из-за несовпадения взглядов на такие вопросы.
Что отличает счастливых людей?

Сначала приходит в голову - деньги. Можно сравнить свой доход с доходом знакомого на предмет "больше/меньше" и испытать эмоции. Не всегда положительные.
Второе - внешние атрибуты успеха. Хорошая машина, телефон топовой модели, шмотки известного бренда, <любой_предмет_мечты>.
Третье - спортивное тело.
Список можно продолжать.

Заметили, как сложилась связь "Деньги/шмотки -> успех -> счастье"?

Убежден, счастье работает точно наоборот. Счастливое и позитивное состояние дает энергию двигаться вперед и делать больше/лучше. Все начинается с позитива и внутреннего счастья. Главный вопрос - с чего начинается позитив?

К чему я веду?
Последнее время активно занимаюсь подготовкой к ортодонтии, на этой неделе процесс будет закончен. Подтянул физическую форму, приближаюсь к желанным силовым показателям, стал лучше себя чувствовать. Начал набивать большое тату, уже 40% сделано.

Кое-кто назвал такие изменения очередным возрастным кризисом. А мне хочется верить, что так проявляется рост внутреннего счастья.
У нас канал про жизнь и работу, значит сейчас будет про работу.

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

В среде аналитиков не возникло бы идеи сделать такой график. Принято смотреть на компактность представления информации - как табличку поместить в простое изображение.

Зато за пределами аналитики люди выбирают типы графиков, цвета и масштаб исходя из собственного представления о прекрасном 🌹

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

Мир трейдинга для меня всегда был интересен. В жизни ведь как обычно - сделал действие и через день/месяц/год получил результат. А может и вовсе не получил никакого результата. Часто обратная связь от мира запаздывает, искажена или достаточно слабая, чтобы на нее реагировать.

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

Недавно отряхнул API-ключи и вернулся к давно заброшенному коду, который, по задумке, будет качать деньги из криптобирж. Код, конечно же, не работает так, как задумывалось. Но сам процесс его написания доставляет удовольствие и даже бодрит. Этот пет-проект живет уже несколько лет и периодически приносит волну свежего воздуха. Обкатываю на нем навыки написания красивого кода, новые идеи и инструменты.
Для этого ведь нужны пет-проекты? Все это не ради денег?
Или подожди ...
Неожиданный привет! 👋

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

Недавно на глаза попалась статья, где рассказывают про переход Redis на коммерческие рельсы.
Redis, сколько помню, всегда был бесплатным open-source решением. Даже странно, как настолько развитый и сложный инструмент раздают бесплатно. Странным это показалось не только мне, но и инвесторам компании-разработчика.

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

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

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

Есть среди нас те, кто комитит в открытое ПО? Тоже хочу в ваш клуб 🚀
Про важность внутреннего состояния

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

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

Вывод: чтобы хорошо работать, нужно хорошо жить. А чтобы хорошо жить, нужно хорошо работать. Циклический импорт получается 🔁

Последнее время начал хорошо питаться и тренироваться, но в некоторых сферах жизни все еще хаос. Слежу за продуктивностью на работе - понемногу растет. Писать код и делать проекты становится весело. Может это начало хорошего этапа? Буду использовать это на максимум, пока кофе действует ☕️
Про поиск работы

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

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

Хотя конечно всегда есть шанс, что это просто мягкая форма отказа)