Заметки дата-сатаниста
272 subscribers
43 photos
1 video
31 links
Про повседневность ML инженера, мотивацию, вызовы, работу с данными и истории из жизни.
Download Telegram
Дополняю список вопросов для выявления потребности и ожиданий бизнес-заказчика от ML-проекта:

5. Какие метрики и показатели важны для измерения профита от внедрения машинного обучения?
6. Какие бизнес-процессы наиболее подходящий для автоматизации с помощью ML?
7. Какова ваша ресурсная оценка для этого проекта по времени?
8. Какие человеческие ресурсы вы готовы выделить для реализации проекта?

Теперь вопросы охватывают больше важных мест, но одного списка вопросов явно недостаточно для полноценного планинга.
This media is not supported in your browser
VIEW IN TELEGRAM
Что такое RL?

RL-алгоритмы (Reinforcement Learning или обучение с подкреплением), в отличие от прогнозных моделей, взаимодействуют с внешним миром и получают от него фидбек. Цель RL-алгоритма заключается в получении максимальной выгоды от принятого решения. Например собаки, которых обучают новым трюкам, получают лакомство в случае правильного выполнения команды. Собака пытается довести до максимума количество получаемых угощений и пытается изучить дополнительные навыки для увеличения вознаграждения.

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

Из интересного можно выделить, что разные профессиональные тесты на юриста или медика модель стала проходить сильно лучше GPT-3.5 и иногда лучше, чем 90% всех сдающих. Еще появилась возможность передать в инпут картинки и учесть их в контексте. Например можно передать верстку сайта в виде картинки и попросить закодить фронт по этой верстке. На этом моменте фронтендеры напряглись 🖥

Самое интересное, на мой взгляд, находится на 12 странице в блоке "Model-Assisted Safety Pipeline".
Авторы пишут, что при получении небезопасных входных данных модель может генерировать нежелательный контент, например давать советы о совершении преступлений. Чтобы эту ситуацию поправить используют специальные обучающие подсказки и модели вознаграждения, основанные на правилах. По сути именно в этом месте используется reinforcement learning with human feedback (RLHF). Неужели OpenAI собрали датасет с рекомендациями по безопасности обработки запросов?
Похоже RL с его универсальностью обратной связи будет и дальше жить в связке с языковыми моделями.
Этот ваш ChatGPT из каждого утюга слышно

Неделю назад был пост про увеличение производительности труда и статью от ребят из MIT.
Что мне, как ML-инженеру, делать в связи с этим всем киберпанком?
Какой именно спрос работник, как профессионал, удовлетворяет?
Когда-то существовала профессия трубочистов и людям платили за работу, в которой сейчас никто не нуждается. Возможно это один из ярких примеров закона "спрос рождает предложение".
Я, будучи ML-инженером, удовлетворяю спрос на внедрение соответствующей технологии. Но истинная потребность компании не в моделях машинного обучения или микросервисах. Истинная потребность более сложна и состоит из нескольких частей.
Во-первых, быть более конкурентной компанией, ведь большинство инноваций - это битва с конкурентами.
Во-вторых, закрывается часть менеджерских потребностей по адекватному распределению ресурсов - какими силами и средствами будем внедрять.
В-третьих, закрывается потребность в "продуктовом видении" - зачем и как применять инновации.

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

С точки зрения удовлетворения этих истинных потребностей появление ChatGPT и подобных инструментов - хорошее явление. Ведь это просто более эффективный инструмент моей работы. Как появление компьютера в эпоху печатных машинок. Осталось только научиться пользоваться компьютером. История показывает, что процесс этот будет болезненным.
Где применяется RL?

В Tesla для планирования путей беспилотных автомобилей при самостоятельной парковке. Количество возможных путей с каждым движением растет экспоненциально. Это приводит к тому, что традиционные методы планирования пути слишко долго работают. На AI Day компания Tesla показала алгоритм, основанный на AlphaGo, направленный на решение этой проблемы с помощью RL. Но иногда случаются казусы как на картинке :)

Ещё одно полезное применение RL — охлаждение дата-центров в Google. Дата-центры потребляют огромное количество энергии, а компьютеры, которые в них содержатся, рассеивают эту энергию в виде тепла. Поддержание дата-центра в работоспособном состоянии требует применения серьёзных и дорогих систем охлаждения. Благодаря RL Google смогла развернуть системы охлаждения, которые включаются лишь по необходимости, что позволяет исключить работу "в холостую".
Недавно заходил в Decathlon за покупками спортивной снаряги. На кассе спросили телефон и почту, который называть я отказался. Выяснилось, что обязательным условием продажи является участие в их "программе лояльности". После такого заявления какая-либо лояльность у меня сразу пропадает.
В итоге свои данные оставила жена, которая не видит проблем с распространением таких данных. А я ушел с мыслью, что ценность данных не всем так очевидна.
На днях со знакомым обсуждали вопрос про переход его в другую компанию на руководящую позицию. Он поинтересовался, стоит ли ему переходить и какие могут быть плюсы/минусы. Рассуждение ушло в сторону определения карьерных целей и оптимизации метрики счастья. Я рассказал, как иногда бывает больно работать в компании с хаотичными процессами, размытой ответственностью и огромным легаси. Предложил ему, как будущему руководителю, оценивать возможность внедрения определенных изменений в компании, куда он собирался переходить.

И тут он меня спросил: "А откуда ты знаешь как надо делать и как делать не надо?".
Вопрос оказался не из простых и уходил в глубины моего менеджерского опыта, бизнеса и карьеры. Быстрого ответа я на этот вопрос не нашел и, наверно, все еще не могу четко на него ответить. Но почему-то у меня сложилось ощущение, что эта область знаний со мной настолько давно, что уже не вспомнить откуда она взялась.
Продолжу про карьеру в ML.
Главный вопрос - зачем мы работаем?

На скрине мои направления развития, а размышления об этом ниже 👇
Примерно каждые полгода я пытаюсь понять направление своей карьеры и думаю о том, как развиваться дальше. Сейчас как раз такой период "ревью". В прошлый период составил план-капкан, он же Personal Development Plan. К таким планам всегда относился скептически, но в них есть ценная идея - балансировка своих усилий между направлениями.

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

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

Так и с личным развитием - балансируем усилия по сферам с учетом вероятности освоить тот самый курс "<название_крутого_курса>" и будущей доходности этих знаний.

Звучит конечно классно, но возникает две проблемы.
Во-первых, эта самая вероятность меняется во времени от множества личных обстоятельств и оценить эту вероятность на старте весьма непросто.
Во-вторых, спрогнозировать будущую доходность знаний тоже непросто.
Разговаривали с коллегой про А/В тесты с синтетическим контролем. Погрузился в статью "Using Synthetic Controls:
Feasibility, Data Requirements, and Methodological Aspects " , у нее 40+ страниц текста, так что на освоение стоит закладывать время. Если дойдут руки, попробую сделать реализацию в коде. Статья интересная и, на удивление, не самая сложная.
Некоторые идеи из нее ниже 👇
Синтетический контроль нужен, когда у нас нет возможности провести полноценный А/В тест из-за отсутствия контрольной группы. Можно сделать контрольную группу искусственно.

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

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

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

Начинаю серию постов о качественной разработке ML приложений.

MLOps о том, как писать код, чтобы было не стыдно показать его коллегам и не позориться на весь интернет 🌐

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

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

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

Первый пост на тему шаблонизации проекта будет на следующей неделе.

▶️ Для старта поделюсь ресурсом создания вашей MLOps архитектуры.
#тру_стори

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ниже будет разбор этого инструмента на примере DS-проекта 👇