ML Advertising
1.21K subscribers
137 photos
13 videos
2 files
193 links
Пишу про AdTech, AI и разработку

Для связи: @evgenii_munin
Download Telegram
Новости из мира рекламы

🔥 Yahoo зарелизил свою платформу Backstage для прямого контакта с издателями

В Yahoo объявили, что намерены напрямую взаимодействовать с издателями через Yahoo Backstage . В то же время Yahoo сокращает трафик, проходящий через платформу управления инвентарем (Supply Side Platform, SSP).

Такое решение было принято, поскольку все чаще рекламные контракты заключаются напрямую между издателем и платформами управления спросом (Demand SIde Platform, DSP).

Более конкретно это изменение затронет топ 10% издателей c наибольшим спросом. Это около 100 издателей display рекламы и 40 Connected TV (CTV). Backstage на себя также возьмет частично задачи SSP: идентификацию сделки (deal ID) и адаптер Prebid.

Но несмотря на введение Backstage, Yahoo SSP все также остается в бизнесе. Через него будут проходить трафики для CTV интеграций FreeWheel, Publica, SpringServe, а также некоторая часть display инвентаря.

Ссылка на статью:
https://www.yahooinc.com/press/yahoo-advertising-to-launch-yahoo-backstage-enabling-a-direct-path-to-premium-publisher-inventory
https://www.adexchanger.com/publishers/yahoos-dsp-is-cutting-out-ssps-but-only-for-the-top-10-of-publishers/?__s=idq1qvcg2x9wjh8f7akv

#adtech
👍2
📊 State of Data Engineering 2023

Для тех кто интересуется развитием рынка инструментов обработки данных (или по-английски Data Engineering, DE). Обзор на то, что происходит на рынке DE в 2023 году и основные тенденции. Если в двух словах, то за этот год наблюдается большее число слияний или покупок небольших нишевых продуктов крупными игроками.

Ссылка на исходную статью от LakeFS: https://lakefs.io/blog/the-state-of-data-engineering-2023/

Data Ingestion:
Confluent, создатель Apache Kafka приобрел Immerok, основного контрибьютера в Apache Flink. Все идет к централизации инструментов стриминговой обработки данных вокруг Confluent Cloud. Также проект Memphis https://memphis.dev/ зарелизил систему очередей и обработки сообщений, совместимую с Kubernetes. В ней также можно назначать схему данных (как и для Kafka Schema Registry), алерты и мониторнг.

Open Metadata Management
В этой категории 3 основных игрока: Apache Hudi, Apache Iceberg, Delta Lake. Начиная с прошлого года, в обиход входят форматы Open Table Formats OTF. Эти форматы, по сути, надстройки над бинарными форматами Avro, Parquet, ORC, внедренные в Apache Iceberg (разработан Netflix), Delta Lake (от Databricks), Hudi (от Uber). Предполагается, что вскоре эти форматы станут стандартом, как минимум в работе с табличными данными.

Data Version Control
Здесь по классике несколько основных игроков: DVC https://dvc.org/ , lakeFS, neptune.ai. Компании ищут возможность интегрироваться с облачными провайдерами, например Azure и GoogleCloud. Также многие осваивают трекинг ML экспериментов.

Data-Centric ML
Обычно в ML индустрии различают 2 подхода: Model-Centric и Data-Centric. Если в первом приоритет отдается оптимизации моделей и после стандартной обработки данные, как правило остаются неизменными, то в Data-Centric подходе больше усилий выделяется на сборку и чистку датасеты, чтобы при неизменной модели итеративно повышать их качество. Здесь можно отметить, что стартап Pachyderm https://www.pachyderm.com/ занимающийся продуктами для Data-Centric стека, был куплен Hewlett Packard, которые планируют расширяться на этот сегмент рынка.

Orchestration
В сегменте оркестраторов данных, по классике доминирует Apache Airflow https://airflow.apache.org/. Но за этот год появились новые продукты, например, no-code решение от Shipyard https://www.shipyardapp.com/ , которое позволяет строить пайплайны в UI, также совместим с Whisper API. Также можно отметить Mage https://www.mage.ai/ , который, как и Dagster, имеет удобный API на Питоне и предоставляет не только возможность построения пайплайнов, но и продвинутый мониторинг.

#devops
👍2🔥2
Шпаргалка по командам Docker

Решил собрать основные команды, которые регулярно требуются в работе с Docker контейнерами и образами

docker build -t imgname . - Собрать образ из Dockerfile из текущей директории. Используйте флаг -t, чтобы задать имя образа.
docker run imgname - Запустить контейнер из образа
docker run -it imgname bash - Запустить контейнер в интерактивном режиме и подключиться к командной строке bash внутри контейнера
docker exec imgname - Запустить новый параллельный процесс в существующем контейнере
docker exec -it imgname bash - Аналогично предыдущему, но запуск процесса интерактивном режиме
docker ps -a - Вывести список контейнеров
docker images - Вывести список образов
docker rm containerid - Удалить контейнер по ID
docker rmi imgid - Удалить образ по ID
docker stop imgname - Остановить один и более контейнеров
docker tag imgname remote/imgname - Создать новый тег для образа и привязать его к удаленному репозиторию (например Docker Hub)
docker push remote/imgname - Загрузить образ с локалки в удаленный репозиторий
docker pull remote/imgname - Загрузить образ из удаленного репозитория на локалку. Docker Hub содержит множество готовых образов, которые можно использовать вместо того, чтобы создавать и настраивать свой собственный.
docker volume ls - Показать список томов, которые являются предпочитаемым механизмом для сохранения данных, генерируемых и используемых контейнерами Docker.
docker network - Управление сетями для общения между контейнерами

Полезные флаги:
-a / --all - список всех контейнеров (по умолчанию показывает только запущенные);
-q / --quiet - перечислить только id контейнеров (полезно, когда вам нужны все контейнеры).

Можно комбинировать эти команды.
Например, для очистки всех контейнеров и образов:
docker kill $(docker ps -q) - Останавливаем все запущенные контейнеры .
docker rm $(docker ps -a -q) - Удаляем все остановленные контейнеры.
docker rmi $(docker images -q) - Удаляем все образы.

#devops
👍5🔥2
💻 Data-Centric ML. Анализируем качество разметки с помощью CleanLab

Сегодня у нас речь пойдет про оценку качества меток в задачах классификации, и поможет нам в этом библиотека CleanLab https://cleanlab.ai/.

Что может CleanLab?
- Может находить сомнительные метки в наборе данных.
- Может оценивать качество меток для каждого класса.
- Может определять пересекающиеся классы, которые можно объединить.
- Может создавать подробный отчет о состоянии вашего набора данных.

В этой статье мы разберем, как работает этот функционал для наглядности на примере разметки данных MNIST

https://medium.com/gitconnected/data-centric-machine-learning-cleanlab-guide-to-labels-health-check-bdfbd10da752

#mlops
👍2
🚀️️️️️️ Новости из мира рекламы

Стартап по автоматической генерации рекламных креативов Creatopy https://www.creatopy.com/, привлек $10M в серии A-раунда. C использованием набора из генеративных моделей и LLM платформа предоставляет следующий функционал:

- Вариации текста: можно генерировать несколько версий текста креатива под различную аудиторию
- Создание фона по текстовому промпту в контексте отображаемого продукта
- Автоматическую обрезки под разные форматы. Так например по display и feed форматы могут потребоваться разные формы одного и того же креатива

В настоящее время Creatopy обслуживает 5000 брендов и агентств (Salesforce, Autodesk, Zeiss, Yellowpages и т.д.). Платформа позволяет  A/B-тестировать разные версии креативов и измерять их KPI: viewability, completion, click-through rate. Кроме того, Creatopy планирует интеграции с Photoshop, Canva и Figma, чтобы облегчить импорт готовых дизайнов.

Source: https://www.adexchanger.com/ai/creatopy-uses-10-million-in-series-a-funding-to-make-better-ai-creative/?__s=idq1qvcg2x9wjh8f7akv

#adtech
👍3
Дорожная карта, для тех, кто осваивает или планирует повысить навыки на Python.

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

Сохраняем к себе 💻️️️️

#practices
👍3
🚀 Стратегии деплоя приложения в прод

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


1️⃣ Recreate
Метод recreate или пересоздание. Он заключается в том, что сначала полностью выключается старая версия сервиса, потом поднимается новая на тех же машинах.

Это самый простой метод деплоя. Но есть проблема, downtime что какое то время сервис будет остановлен и недоступен. Это может быть критично, если ваш сервис должен работать 24/7



2️⃣ Rolling Update
Rolling update или постепенное обновление. Заключается в том, что мы постепенно заменяем старую версию на новую на одной машине за другой. В итоге новая версия выкатывается, постепенно наращивая трафик.

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



3️⃣ 🦜 Canary (Канареечный или Smoke деплой)
Исторически название взято у шахтеров. Уходя на работу в шахту, они брали с собой клетку с канарейками, и пока те пели, можно было спокойно работать. Но если канарейки замолкали и умирали, горняки знали, что произошла утечка газа и быстро эвакуировались.

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

У такого способа тоже есть недостатки. Нужно уметь управлять трафиком и в нужный момент перенаправлять его с канарейки на рабочие машины



4️⃣ 🟦🟩 Blue-Green
Суть заключается в том, что мы рядом со старой версией (синей) поднимаем рабочие машины с новой версией (зеленой). А потом просто переключаем трафик с одной среды на другую

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

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



5️⃣ 🅰️🅱️ A/B Testing
Из моего опыта, я бы рассматривал A/B тестирование не как способ деплоя, а скорее как этап, который следует за ним. В рекламе, как правило, каждую новую фичу или модель требуется A/B тестировать на половине продового трафика. В результате чего мы измеряем

- Бизнес метрики: выручку, прибыль, долю просмотров креатива, click-through rate, расходы на оплату издателям
- Технические метрики: network cost, расходы на работу удаленных машин, latency
- ML метрики: AUC, Precision@K

и далее принимаем решение об окончательной выкатке обновлений на весь трафик.

#devops
👍31🔥1
Сегодня мы поговорим про Tensorflow Serving.

https://www.tensorflow.org/tfx/guide/serving

Этот инструмент помогает обслуживать модели ML в распределённой среде продакшна и упрощает развертывание моделей на серверах.

Центральная абстракция, которая обёртывает модели Tensorflow называется Servable. Это, по сути, базовый объект, к которому клиент обращается и использует для выполнения вычислений. Tensorflow Serving поддерживает создание gRPC или REST серверов, которые могут обслуживать сразу несколько ML моделей. Обученные модели экспортируются в формат SavedModel. После этого модель готова к предсказаниям на сервере.

Для работы с Tensorflow Serving достаточно выгрузить базовый Docker образ с хаба


docker pull tensorflow/serving:latest


Далее запускаем сервер модели в Docker контейнере. Там же монтируем каталог модели в ожидаемый каталог контейнера с помощью переменной -v $(pwd)/models:/models/model.


docker run -d -p 9000:8500 \
-v $(pwd)/models:/models/model -e MODEL_NAME=model \
-t tensorflow/serving:latest


На стороне клиента мы можем запрашивать предсказания с сервера REST или gRPC запросом, например


curl -X POST http://host:port/v1/models/model:predict


В качестве альтернативы Tensorflow Serving есть TorchServe, который выполняет те же самые задачи, но только на пайторчовых моделях https://pytorch.org/serve/.

#mlops
👍3🔥2
4 метрики, на которые нужно смотреть, когда тестируешь рекламную кампанию

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


1️⃣ Доля отображений (Scroll rate)
Метрика измеряет, как часто пользователи прокручивают содержимое Web страницы вплоть до рекламного креатива. Scroll rate помогает понять, насколько содержимое сайта или лендинга издателя интересен для пользователя. Событие impression (или отображение) тригерится, когда пользователь увидел определенную долю пикселей креатива, например минимум 10%.

Сама метрика считается для данного издателя, как отношение ивентов отображений (**impression**) к ивентам, когда креатив был размещен на страницу (называется **ad_call**).


scroll_rate = nb_impressions / nb_ad_calls



2️⃣ Полнота просмотра (Completion rate)
Как следует из названия метрика относиться к видео креативам. Показывает, как долго пользователь вовлечен в видео, и нам удалось захватить внимание, до того как начал скролить вниз. Но ее нужно рассматривать совместно с другими метриками CTR и CVR. Например, если полнота просмотра высокая, а конверсии низкие, то возможно люди не понимают призыва к действию, и креатив нужно поправить.

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


completion_rate = nb_completions / nb_impressions



3️⃣ Доля кликов (Click-through rate CTR)
Если полнота просмотра показывает, насколько пользователь заинтересован видео, то доля кликов насколько его или ее заинтересовало предложение. Если кликов мало:
- то если у нас видео, надо проверить, не поздно ли происходит призыв к действию
- нужно проверить таргетинг аудитории
- нужно править зацепку или интригу в креативе на более интересную
- то возможно, нужно выставить скидку ил спец предложение

Считается как отношение ивентов клика к отображениям. Как правило для Web рекламы значение CTR не превышает 5%.


CTR = nb_clicks / nb_impressions



4️⃣ Доля конверсий (Conversion rate CVR)
Конверсия в продажу говорит об эффективности всей совокупности кампании: контента Web страницы издателя, заинтересован ли человек продуктов, кликнул ли он, произвел ли транзакцию или подписался. Если был клик, но после этого ничего не случилось, то возможно предложение оказалось нерелевантным. Здесь важно правильно настраивать таргетинг аудитории.

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


CVR = nb_traffic_acquisitions / nb_clicks


#adtech
👍2🔥1
ML Advertising
Новости из мира Web рекламы Google выпускаeт Privacy Sandbox API для браузера Chrome и будет уходить от стороних cookies. Зачем это пользователям? Пользователи могут управлять API Privacy Sandbox и удалять данные измерения рекламы через настройки Chrome.…
Новости из мира рекламы

В продолжении темы защиты данных пользователей Google начал эксперименты над новой функцией конфиденциальности в Chrome под названием IP Protection. Функция скрывает IP адреса пользователей от третье-сторонних доменов.

Рекламные компании (особенно програматик) сильно зависят от отслеживания браузерами IP адресов пользователей, поскольку в отсутствии third-party cookies это единственный оставшийся инструмент, по которому возможно восстановить историю просмотров рекламных объявлений.

В этом случае у ad tech компаний не останется других вариантов, как использовать Google Privacy Sandbox, в противном случае они столкнутся с меньшим спросом на рекламный инвентарь на RTB аукционах, т.е. меньше рекламодателей будут покупать этот инвентарь.

Релиз IP Protection Google запланировал на 2024-2025 год.

Source: https://www.marketingbrew.com/stories/2023/11/01/ip-addresses-may-not-be-the-post-cookie-data-solution-adtech-wanted?__s=idq1qvcg2x9wjh8f7akv

#adtech
👍2
ML Advertising
This post I would like dedicate to Kafka. Imagine, sometimes you need - to process massive volumes of data - or have a reliable way to log events - or make predictions in real time Apache Kafka can help you in it ! Most of the time the handy examples are…
🚀 Ранее я рассказал об основных элементах Apache Kafka и его функционале и показал как использовать Kafka с Python API confluent-kafka. В этом посте расскажу, как применять Kafka вместе с ML для обучения и предсказания.

- В примере создал топики train и app_messages в Confluent Cloud
- Поднял Kafka Producer, в котором обучаю модель и записываю пути к моделям в топик train и сами артефакты на S3. Для работы с S3 использую boto3
- Поднял Kafka Consumer (он же клиент), который будет читать из топика app_messages предсказания

🛠 Запись сообщений в топики сделал синхронной с помощью метода flush перед завершением работы Producer'а. В результате получил пайплайн приближенный к продовому, где записанные в топик предсказания могут быть использованы клиентскими приложениями в реальном времени.

https://medium.com/gitconnected/kafka-in-machine-learning-for-real-time-predictions-45a4adf4620b

#mlops
🔥3👍1
Сегодня мы поговорим про библиотеки обработки датафреймов. Все мы знаем о широком функционале Pandas, но библиотека часто не подходит, например для тяжеловесных датасетов объемом от 10Гб или для многопоточки. В этих случаях нам на помощь приходят библиотеки для распределенных вычислений, адаптированных под свои кейсы и со своим функционалом.

1️⃣ Dask
Подходит для распараллеливания расчетов в рамках одной машины. В то время, как Pandas нагружает один процесс, Dask считает датафреймы распределено. Из минусов либы, это меньший функционал API и то , что на маленьких датасетах проигрывает по скорости Pandas. Зачастую на практике мы читаем датафрейм на Dask, потом либо делаем простые аггрегации, либо сэмплируем данные и сразу после кастуем в pd.DataFrame для дальнейшей работы. К нему же можно отнести и библиотеку Modin .


import dask.dataframe as dd
df = dd.read_csv('data.csv')
result = df.groupby('column').mean().compute()



2️⃣ Spark
Библиотека подходит для распределенных расчетов на кластере из многих машин. Незаменима особенно в случаях, когда данные не помещаются ни в память одной машины, ни в кэш сессии Jupyter.  Имеет очень широкий функционал, не уступающий Pandas. Даже есть свой движок Spark MLlib для распределенного ML. По Spark написано огромное количество подробной документации. Также чисто на Spark можно писать целые джобы по предобработке данных. Из минусов - это сложность конфигов и запуска SparkSession как отдельного приложения


from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('example').getOrCreate()
df = spark.read.csv('data.csv', header=True, inferSchema=True)
result = df.groupBy('column').mean().show()




3️⃣
Rapids
Часто бывает, что мы обучаем модели на GPU, но в этом случае для нас бутылочным горлышком становится предобработка данных, которая зачастую выполняется либо через numpy, либо через pandas на CPU. Здесь на помощь нам приходит Rapids, оптимизированный под работу на Nvidia CUDA. Проект open source и по сути предоставляет GPU совместимую обертку под pandas cuDF, под sklearn cuML и под вычисления над графами networkx cuGRAPH


import cudf
df = cudf.read_csv('data.csv')
result = df.groupby('column').mean()


#mlops
🔥5👍3
🎉 Ура! Первые 100! 🎉

Мои дорогие читатели, наш канал достиг первых 100 подписчиков 🎉 И это только начало 🚀 Спасибо всем Вам, кто интересуется контентом. Впереди на ждут больше новостей, инсайтов и обзоров, которые помогут прокачать навыки. Спасибо, что делитесь этим путем со мной!
👍6🔥5🏆21
Новости из мира рекламы

Agentio, платформа для покупки рекламных мест у креаторов YouTube, подняла $4.25M на стадии seed funding на расширение и увеличение штата сотрудников.

Что предлагает Agentio?
По сути Agentio выполняет функции и DSP, и SSP одновременно, имитирует некоторые функции программатик закупки. Но она не проводит аукционы для рекламного инвентаря, вместо этого работает как платформа для прямых сделок с контент креаторами на YouTube.

В чем мотивация?
Создатели контента на YouTube, желающие продавать автоматизированные рекламные слоты, используют Google AdSense, который совместим только с видеороликами pre-roll и mid-roll. Встроенная в сам контент реклама не может быть продана через AdSense. Для продажи контекстной рекламы креаторам приходится работать напрямую с покупателем, обычно с менеджером бренда, который утверждает конечное место для рекламы, прежде чем она может быть опубликована в видео создателя. И такой подход не масштабируется.

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

В настоящее время платформа находится в бета-версии.

AdExchanger

#adtech
👍2
🍔 Как приготовить DevOps бургер?

1️⃣ Осваиваем языки Python, Scala, Go

2️⃣ Изучаем взаимодействие клиент-сервер: сетевые протоколы gRPC и REST, HTTP, curl, прокси-серверы Nginx и IIS link

3️⃣ Изучаем контейнеризацию с Docker, и много-контейнерные приложения с docker-compose

4️⃣ Осваиваем оркестраторы приложений на контейнерах Kubernetes link

5️⃣ Знакомимся с понятием Infra as Code, и как использовать Terraform link

6️⃣ Разбираемся с практиками CI/CD, автотестами и механизмом релизов на Github

7️⃣ Учимся мониторить приложения с Prometheus и Grafana link

8️⃣ Набираемся опыта в работе с облачными провайдерами AWS, Azure, GCP, VKCloud etc. aws_link

#devops
👍3🔥2
30 требований к ML проекту. Напоминалка о том, что MLOps это тяжело и трудно

#practices
👨‍💻2👍1🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
🐋Как работает Docker?

Архитектура Docker состоит из трех основных компонентов:

1️⃣ Daemon
Демон предоставляет API и управляет Docker образами. Запускается на хост машине, где планируется запускать контейнеры

2️⃣ Client
Это интерфейс, через который осуществляется взаимодействие с пользователями. Он взаимодействует с Docker демоном по API.

3️⃣ Host
Здесь демон Docker принимает запросы Docker API и управляет различными объектами Docker, включая образы, контейнеры, сети и тома.

4️⃣ Registry
В Docker Registry хранятся образы Docker. Например, широко используется публичный реестр Docker Hub.

#devops
🔥3👍2