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

Для связи: @evgenii_munin
Download Telegram
Всем привет, выпустил новую статью про виртуальную рекламу в спорте. 🏀⚽️ Спорт прочно вошел в нашу жизнь, от походов на матчи до просмотра вместе с семьей и друзьями. Мы вкладываем эмоции и финансы в успех наших команд. Бренды тоже понимают силу спортивной культуры и стремятся связать свою репутацию с этим миром. Теперь с развитием дополненной реальности (AR) возможности рекламы только растут!

В этой статье я рассмотрел форматы рекламы в спортивных трансляциях и фокусируемся на виртуальной рекламе. Здесь вы сможете узнать, как баннеры, зеленый экран и LED-периметры используются для эффективной рекламы. А также, как виртуальная реклама проникает в киберспорт! 🎮

Подробности и бизнес-кейсы - в статье! Не забудьте оставить свой отзыв и поделиться своими мыслями. Ссылки на источники в конце статьи.

#adtech
👍1
Hi everyone 👋

Let's imagine that you need to train on a dataset that is several terabytes in size. However, your workstation only has an RTX 3070, and you don't have access to a cluster or even a machine.

What do you do? The solution is to move to the cloud! In my latest article, we discover the main tools necessary to train ML models in AWS

I guide you through the process of moving your data to AWS S3, launching virtual machines (EC2 instances), and optimizing your workflow. From data storage and transfer to instance selection and automation 💪

I will appreciate your feedback and comments.

https://medium.com/aws-in-plain-english/tools-you-need-to-know-to-run-machine-learning-experiments-in-aws-24096a63d19b

#mlops
👍3
Удобная шпаргалка https://www.ml4devs.com/ для сравнения инструментов хранения днных AWS, GCloud, Azure и Cloud Agnostic хранилищ, разбитая по типам данных и юзкейсам. Подойдет для тех, кто рассматривает альтернативы DE инструментов

#devops
👍3
Новости из мира Web рекламы

Google выпускаeт Privacy Sandbox API для браузера Chrome и будет уходить от стороних cookies.

Зачем это пользователям?
Пользователи могут управлять API Privacy Sandbox и удалять данные измерения рекламы через настройки Chrome. Предполагается, что это поможет лучше защитить конфиденциальность.

Какой импакт для издателей?
Издателей (web сайты) обяжут соблюдать нормы конфиденциальности, особенно в части получения согласия пользователя и управления доступом и удалением данных.

Какой импакт для Ad Tech компаний?
Поставщикам рекламы (SSPs, DSPs) ранее использовавшим third-party cookies для Chrome предложат провести тестирование Privacy Sandbox, чтобы гладко адаптироваться под новые данные пользователей. Данные, скорее всего, будут зашумлены и собраны в анонимные кластеры.

https://developer.chrome.com/blog/cookie-countdown-2023oct/?__s=idq1qvcg2x9wjh8f7akv

#adtech
👍2
С недавнего времени попробовал разные инструменты для работы с Docker контейнерами, а точнее перешел с хорошо известного Docker Desktop на OrbStack https://orbstack.dev/. Поэтому, хочу поделиться впечатлениями о нем.

Из плюсов это более высокая скорость сборки образов и запуска контейнеров, особенно тяжеловесных. С OrbStack меньше нагружается CPU. Также заявляется, что OrbStack одинаково хорошо работает с Маками на базе процессеров, как amd64, так и arm64, при том что у Docker Desktop на М1 были значительные проблемы.

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

В целом для работы с контейнерами OrbStack подходит вполне неплохо, советую поробовать!

#devops
👍2
На работе периодически сталкиваюсь с Terraform, поэтому этот пост будет посвящен управлению инфрой как кодом.

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

- Множество облаков: Terraform поддерживает множество облачных платформ (AWS, Google Cloud, Azure и др.).
- Читаемые настройки: Формат конфигов в Terraform легко читаем
- Отслеживание изменений: Terraform следит за изменениями в ресурсах.
- Совместная работа: Конфиги в Terraform можно хранить в репозиториях на GitHub, что упрощает совместную работу команд.

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

https://medium.com/gitconnected/how-to-deploy-machine-learning-application-on-aws-ec2-using-terraform-802074fbffcf

#devops
👍32
Новости из мира рекламы

🛒 Стандарт OpenRTB для Retail Media

Ad Tech стартап Kevel https://www.kevel.com/ начал работа над стандартизацией розничных медиа (retail media). Цель - разработать для них стандарты OpenRTB.

Как работает стандарт? Он устанавливает общие принципы проведения аукционов в реальном времени (real time bidding) и общие форматы. Это позволяет участникам торгов быстро торговать рекламным инвентарем. Кроме того, OpenRTB поддерживает большинство рекламных форматов, включая display баннеры, inRead, видеоролики, карусель и т.д.

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

Полная спецификация стандарта доступна на сайте IAB https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf

https://www.adexchanger.com/commerce-roundup/new-working-group-wants-to-expedite-retail-media-openrtb-standards/?__s=idq1qvcg2x9wjh8f7akv

#adtech
👍3
🚀 Топ языков программирования которые стоит иметь в портфолио, чтобы стать успешным разработчиком?

🌐 В мире языков программирования, как в мире акций на бирже - если бы вы составляли портфель для хорошего дохода, какие бы языки вы выбрали?

🌍 В этой статье, приводя аналогию с акциями, автор дает топ 10 языков, которые подходят для различных областей: веб-разработка, мобильные приложения, DevOps, ML.

💼 Large Cap:
1. Python: Лидер в веб-разработке, ML и анализе данных. Must have язык для DSов.
2. JavaScript / TypeScript: веб-разработка, front-end и back-end. Также TensorFlow.JS дает возможность писать ML модели browser side.
3. Java: промышленная разработки и приложения для Android.
4. C#: экосистема Microsoft, включая разработку веб-приложений.
5. Swift: Лидер для создания приложений для iOS.

🖥️ Mid Cap:
6. Kotlin: Кросс-платформенный язык на основе Java, для Android разработки.
7. Go: Эффективный и масштабируемый язык от Google, подходящий для серверной разработки. Используется для работы с инфрой и для DevOps'а.
8. Scala: Статически-типизированный, объектно-ориентированный язык с интересными фреймворками. Must have для Data Engineer'ов, поскольку на нем, как и на Java, реализованы инструменты Apache Spark, Flink, Kafka и т.д.

💡Small Cap:
9. Rust: Для разработки высокопроизводительных сервисов, обещает стать альтернативой для fullstack разработчиков.
10. Dart: Проект Flutter делает Dart потенциальным лидером в разработке front-end'а.

Также добавлю, что для DS, DE, MLE полезно знать как минимум языки из Large Cap Python, Java, и один язык из Mid Cap в зависимости от задач, например Scala или Go.

Ccылка на статью:
https://www.ml4devs.com/articles/top-10-programming-languages/
👍1
Новости из мира рекламы

🔥 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