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 для обучения и предсказания.
- В примере создал топики
- Поднял Kafka Producer, в котором обучаю модель и записываю пути к моделям в топик
- Поднял Kafka Consumer (он же клиент), который будет читать из топика
🛠 Запись сообщений в топики сделал синхронной с помощью метода
https://medium.com/gitconnected/kafka-in-machine-learning-for-real-time-predictions-45a4adf4620b
#mlops
- В примере создал топики
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
Medium
Kafka in Machine Learning for Real-time Predictions
Run Kafka with scikit-learn for real-time application
🔥3👍1
Сегодня мы поговорим про библиотеки обработки датафреймов. Все мы знаем о широком функционале Pandas, но библиотека часто не подходит, например для тяжеловесных датасетов объемом от 10Гб или для многопоточки. В этих случаях нам на помощь приходят библиотеки для распределенных вычислений, адаптированных под свои кейсы и со своим функционалом.
1️⃣ Dask
Подходит для распараллеливания расчетов в рамках одной машины. В то время, как Pandas нагружает один процесс, Dask считает датафреймы распределено. Из минусов либы, это меньший функционал API и то , что на маленьких датасетах проигрывает по скорости Pandas. Зачастую на практике мы читаем датафрейм на Dask, потом либо делаем простые аггрегации, либо сэмплируем данные и сразу
2️⃣ Spark
Библиотека подходит для распределенных расчетов на кластере из многих машин. Незаменима особенно в случаях, когда данные не помещаются ни в память одной машины, ни в кэш сессии Jupyter. Имеет очень широкий функционал, не уступающий Pandas. Даже есть свой движок Spark MLlib для распределенного ML. По Spark написано огромное количество подробной документации. Также чисто на Spark можно писать целые джобы по предобработке данных. Из минусов - это сложность конфиго
3️⃣ Rapids
Часто бывает, что мы обучаем модели на GPU, но в этом случае для нас бутылочным горлышком становится предобработка данных, которая зачастую выполняется либо через numpy, либо через pandas на CPU. Здесь на помощь нам приходит Rapids, оптимизированный под работу на Nvidia CUDA. Проект open source и по сути предоставляет GPU совместимую обертку под pandas cuDF, под sklearn cuML и под вычисления над графами networkx cuGRAPH
#mlops
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
www.dask.org
Dask | Scale the Python tools you love
Dask is a flexible open-source Python library for parallel computing maintained by OSS contributors across dozens of companies including Anaconda, Coiled, SaturnCloud, and nvidia.
🔥5👍3
Новости из мира рекламы
Agentio, платформа для покупки рекламных мест у креаторов YouTube, подняла $4.25M на стадии seed funding на расширение и увеличение штата сотрудников.
Что предлагает Agentio?
По сути Agentio выполняет функции и DSP, и SSP одновременно, имитирует некоторые функции программатик закупки. Но она не проводит аукционы для рекламного инвентаря, вместо этого работает как платформа для прямых сделок с контент креаторами на YouTube.
В чем мотивация?
Создатели контента на YouTube, желающие продавать автоматизированные рекламные слоты, используют Google AdSense, который совместим только с видеороликами pre-roll и mid-roll. Встроенная в сам контент реклама не может быть продана через AdSense. Для продажи контекстной рекламы креаторам приходится работать напрямую с покупателем, обычно с менеджером бренда, который утверждает конечное место для рекламы, прежде чем она может быть опубликована в видео создателя. И такой подход не масштабируется.
Как работает?
Поэтому Agentio предлагает платформу, которая имитирует программатик продажу рекламного инвентаря брендам для большей автоматизации. Креаторы размещают рекламные слоты для еще неопубликованного контента на открытом рынке. Бренды-покупатели могут выбирать создателя контента, которого они хотят приобрести по контексту. После покупки создатель записывает рекламный ролик и загружает его на платформу для утверждения рекламодателя.
В настоящее время платформа находится в бета-версии.
AdExchanger
#adtech
Agentio, платформа для покупки рекламных мест у креаторов YouTube, подняла $4.25M на стадии seed funding на расширение и увеличение штата сотрудников.
Что предлагает Agentio?
По сути Agentio выполняет функции и DSP, и SSP одновременно, имитирует некоторые функции программатик закупки. Но она не проводит аукционы для рекламного инвентаря, вместо этого работает как платформа для прямых сделок с контент креаторами на YouTube.
В чем мотивация?
Создатели контента на YouTube, желающие продавать автоматизированные рекламные слоты, используют Google AdSense, который совместим только с видеороликами pre-roll и mid-roll. Встроенная в сам контент реклама не может быть продана через AdSense. Для продажи контекстной рекламы креаторам приходится работать напрямую с покупателем, обычно с менеджером бренда, который утверждает конечное место для рекламы, прежде чем она может быть опубликована в видео создателя. И такой подход не масштабируется.
Как работает?
Поэтому Agentio предлагает платформу, которая имитирует программатик продажу рекламного инвентаря брендам для большей автоматизации. Креаторы размещают рекламные слоты для еще неопубликованного контента на открытом рынке. Бренды-покупатели могут выбирать создателя контента, которого они хотят приобрести по контексту. После покупки создатель записывает рекламный ролик и загружает его на платформу для утверждения рекламодателя.
В настоящее время платформа находится в бета-версии.
AdExchanger
#adtech
Agentio
Agentio | The AI-Native Platform for Creator Advertising
Agentio automates campaigns end to end, enabling advertisers to scale creator programs across Meta, YouTube, and beyond in hours, not months, while connecting creators with the world’s top brands.
👍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
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
Nginx
F5 NGINX Product Documentation
Learn how to deliver, manage, and protect your applications using F5 NGINX products.
👍3🔥2
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
Архитектура 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
Дублирование ставок
В этом посте хочу рассказать про такой подход в программатик рекламе, как дублирование ставок (или дублирование трафика). Это процесс, когда на одну Demand Side платформу (DSP, сторона рекламодателя) один и тот же запрос на аукцион отправляется несколько раз. Его применяют Supply Side платформы (SSP, сторона издателя) для увеличения спроса и доходов.
1️⃣ Как обычно работает процесс Real Time Bidding аукционов?
Когда пользователь заходит на web сайт, для каждого рекламного отображения издатель (владелец сайта XY) отправляет запрос на Bid Request (например XY321) на SSP. В свою очередь, SSP подключены ко многим DSP, которые сами аггрегируют рекламодателей. Входящий запрос на ставку пересылается всем подключенным DSP. Рекламодатели принимают участие в аукционе и делают ставку. Тот рекламодатель, чья ставка максимальна, выигрывает аукцион и показывает свою рекламу пользователю.
2️⃣ Что такое дублирование ставок?
Чтобы продублировать запрос на ставку на одно и то же рекламное место SSP могут поменять в нем какой-то из аттрибутов и после это отправить в DSP один и тот же запрос (под номерами XY356, XY656) повторно. Например, если DSP подключена к двум рекламным биржам SSP, то она получит два отдельных запроса на ставку. Поскольку дублирование выявить сложно, то DSP будет вынуждена принимать участие во обоих. Таким образом искусственно повышается спрос, и SSP и издатель могут получить больший доход с продажи рекламного места
3️⃣ На сколько актуальна тема?
Эта тема всплыла, поскольку крупная SSP FreeWheel была замешана в этом для продажи рекламных мест для Connected TV. Сами FreeWheel заявили, что сделали это для увеличения продаж инвентаря для издателей, работающих с Connected TV.
Посмотрим, как этот вопрос разрулится.
source: https://srimarketingstrategy.com/what-is-bid-duplication-impact/
#adtech
В этом посте хочу рассказать про такой подход в программатик рекламе, как дублирование ставок (или дублирование трафика). Это процесс, когда на одну Demand Side платформу (DSP, сторона рекламодателя) один и тот же запрос на аукцион отправляется несколько раз. Его применяют Supply Side платформы (SSP, сторона издателя) для увеличения спроса и доходов.
1️⃣ Как обычно работает процесс Real Time Bidding аукционов?
Когда пользователь заходит на web сайт, для каждого рекламного отображения издатель (владелец сайта XY) отправляет запрос на Bid Request (например XY321) на SSP. В свою очередь, SSP подключены ко многим DSP, которые сами аггрегируют рекламодателей. Входящий запрос на ставку пересылается всем подключенным DSP. Рекламодатели принимают участие в аукционе и делают ставку. Тот рекламодатель, чья ставка максимальна, выигрывает аукцион и показывает свою рекламу пользователю.
2️⃣ Что такое дублирование ставок?
Чтобы продублировать запрос на ставку на одно и то же рекламное место SSP могут поменять в нем какой-то из аттрибутов и после это отправить в DSP один и тот же запрос (под номерами XY356, XY656) повторно. Например, если DSP подключена к двум рекламным биржам SSP, то она получит два отдельных запроса на ставку. Поскольку дублирование выявить сложно, то DSP будет вынуждена принимать участие во обоих. Таким образом искусственно повышается спрос, и SSP и издатель могут получить больший доход с продажи рекламного места
3️⃣ На сколько актуальна тема?
Эта тема всплыла, поскольку крупная SSP FreeWheel была замешана в этом для продажи рекламных мест для Connected TV. Сами FreeWheel заявили, что сделали это для увеличения продаж инвентаря для издателей, работающих с Connected TV.
Посмотрим, как этот вопрос разрулится.
source: https://srimarketingstrategy.com/what-is-bid-duplication-impact/
#adtech
Marketing Strategy
What is bid duplication? How does it affect the programmatic advertising?
Bid duplication is the process of multiplying a single bid of a single ad impression into multiple bids by changing certain attributes in the bid request, which increases the ad revenue by creating more demand.
👍3
💻 MLFlow
Сегодня поговорим про трекинг ML экспериментов. MLFlow - это open source платформа в которой реализованы 4 основных инструмента: Tracking, Projects, Models, Model Registry
1️⃣ MLFlow Tracking
Он отвечает за логирование параметров, метрик и артефактов в эксперименте и предоставляет визуализацию метрик. Также с его помощью можно сравнивать метрики между экспериментами между собой. Трекинг это самый известный компонент MLflow
Код для логирования артефактов эксперимента удобно реализован в API
2️⃣ MLFlow Projects
Это своего рода попытка MLFlow зайти в огород DVC, в плане воспроизводимых пайплайнов данных. Т.е. здесь мы аналогично пишем файл конфигом для того, чтобы запускать пайплайн. Только вместо dvc repro, мы исполняем mlflow run
Из минусов
- Во-первых, неудобная работа со стадиями, все таки в DVC она более интуитивная
- Во-вторых, функционал не очень полезен если ваш стек не на Питоне, например если вы пишете модели на Scala Spark, то с MLFlow Projects будет явно затруднительно работать
3️⃣ MLFlow Models
Models сделан для того, чтобы сохранять модели из
Из минусов все примерно аналогично проектам
- Это чисто питонячая история
- Плюс serving совместим для json, или pd.DataFrame, но не принимает бинарные форматы parquet, avro
- он не поддерживает другие протоколы связи кроме REST, например проблемы с поддержкой gRPC
4️⃣ MLFlow Model Registry
С ним можно зарегистрировать или сохранить модель. В UI можем видеть список всех версий всех моделей. Также можно строить релизные циклы CICD для сборки сервисов сразу для прода и staging (для тестовой среды, но которая примерно повторяет прод)
Подробный пример того, как поднять UI для MLFlow Tracking доступен по ссылке
#mlops
Сегодня поговорим про трекинг ML экспериментов. MLFlow - это open source платформа в которой реализованы 4 основных инструмента: Tracking, Projects, Models, Model Registry
1️⃣ MLFlow Tracking
Он отвечает за логирование параметров, метрик и артефактов в эксперименте и предоставляет визуализацию метрик. Также с его помощью можно сравнивать метрики между экспериментами между собой. Трекинг это самый известный компонент MLflow
Код для логирования артефактов эксперимента удобно реализован в API
import mlflow
from sklearn.metrics import r2_score
def log_experiment_mlflow(model, run_name, xtrain, ytrain, xtest):
with mlflow.start_run(run_name="RUN_{}".format(run_name)) as run:
model.fit(xtrain, ytrain)
preds = model.predict(xtest)
r2 = r2_score(preds, ytest)
plot_preds(model, xtest)
mlflow.log_metric(key='R2_val', value=r2)
mlflow.log_artifact(local_path='artifacts/preds.png')
2️⃣ MLFlow Projects
Это своего рода попытка MLFlow зайти в огород DVC, в плане воспроизводимых пайплайнов данных. Т.е. здесь мы аналогично пишем файл конфигом для того, чтобы запускать пайплайн. Только вместо dvc repro, мы исполняем mlflow run
Из минусов
- Во-первых, неудобная работа со стадиями, все таки в DVC она более интуитивная
- Во-вторых, функционал не очень полезен если ваш стек не на Питоне, например если вы пишете модели на Scala Spark, то с MLFlow Projects будет явно затруднительно работать
3️⃣ MLFlow Models
Models сделан для того, чтобы сохранять модели из
mlflow.run формате пригодном для REST сервисов. Наша задача предоставить заранее написаный инференс сервер, а все вопросы с форматами ложатся на плечи MLFlow. Также модели можно заливать прямо в облачные сервисы, например в Azure или Amazon SageMakerИз минусов все примерно аналогично проектам
- Это чисто питонячая история
- Плюс serving совместим для json, или pd.DataFrame, но не принимает бинарные форматы parquet, avro
- он не поддерживает другие протоколы связи кроме REST, например проблемы с поддержкой gRPC
4️⃣ MLFlow Model Registry
С ним можно зарегистрировать или сохранить модель. В UI можем видеть список всех версий всех моделей. Также можно строить релизные циклы CICD для сборки сервисов сразу для прода и staging (для тестовой среды, но которая примерно повторяет прод)
Подробный пример того, как поднять UI для MLFlow Tracking доступен по ссылке
#mlops
👍2🔥1🤨1
ML Advertising
Сегодня мы поговорим про библиотеки обработки датафреймов. Все мы знаем о широком функционале Pandas, но библиотека часто не подходит, например для тяжеловесных датасетов объемом от 10Гб или для многопоточки. В этих случаях нам на помощь приходят библиотеки…
Numba
Ранее я писал про оптимизацию расчетов датафреймов. Сегодня продолжим тему оптимизации расчетов на Python. Речь пойдет про библиотеку Numba https://numba.pydata.org/.
По сути, Numba это обертка C++ кода на python и один из относительно простых способов ускорить python-код.
1️⃣ Как работает?
Есть два режима, в которых Numba может сократить время исполнения кода:
- Nopython. Здесь Numba компилирует функцию на C++ без интерпретатора, что делает код быстрее
- Object mode. Здесь она оптимизирует только циклы, компилируя их отдельно
По-умолчанию используется Nopython метод, но можно явно указать Object mode. Также можно доб
2️⃣ Как использовать?
Устанавливаем numba с по
3️⃣ Когда использовать?
Если в коде есть много математических расчетов и циклов, то Numba вам сильно поможет. Но прописывать ее везде и всюду не получится по нескольким причинам:
- во-первых, для компиляции кода на плюсах Numba должна знать функции, которые вы хотите оптимизировать. Хотя большинство стандартных питонячих функций уже реализовано в Numba, методы из scipy и openCV там отсутствуют
- во-вторых, Numba тяжело дебажить, например, когда в нее вы обернули высокоуровневую функцию из opencv. Сообщения при отладке не особо явные
#mlops
Ранее я писал про оптимизацию расчетов датафреймов. Сегодня продолжим тему оптимизации расчетов на Python. Речь пойдет про библиотеку Numba https://numba.pydata.org/.
По сути, Numba это обертка C++ кода на python и один из относительно простых способов ускорить python-код.
1️⃣ Как работает?
Есть два режима, в которых Numba может сократить время исполнения кода:
- Nopython. Здесь Numba компилирует функцию на C++ без интерпретатора, что делает код быстрее
- Object mode. Здесь она оптимизирует только циклы, компилируя их отдельно
По-умолчанию используется Nopython метод, но можно явно указать Object mode. Также можно доб
авить parallel=True для распараллеливания кода.2️⃣ Как использовать?
Устанавливаем numba с по
мощью pip install numba. Затем импортируем декораторы @njit и @jit c from numba import njit, jit. После этого прописываем декораторы над функцией, которую хотим оптимизировтаь и получаем ускорение из коробки в несколько раз.
from numba import njit
import random
@njit
def monte_carlo_pi(nsamples):
acc = 0
for i in prange(nsamples):
x = random.random()
y = random.random()
if (x ** 2 + y ** 2) < 1.0:
acc += 1
return 4.0 * acc / nsamples
3️⃣ Когда использовать?
Если в коде есть много математических расчетов и циклов, то Numba вам сильно поможет. Но прописывать ее везде и всюду не получится по нескольким причинам:
- во-первых, для компиляции кода на плюсах Numba должна знать функции, которые вы хотите оптимизировать. Хотя большинство стандартных питонячих функций уже реализовано в Numba, методы из scipy и openCV там отсутствуют
- во-вторых, Numba тяжело дебажить, например, когда в нее вы обернули высокоуровневую функцию из opencv. Сообщения при отладке не особо явные
#mlops
👍2🔥1
📕 RTB Papers
Поскольку канал посвящен рекламным технологиям и MLю, то самое время рассказать про сборник статей рекламных ML алгоритмов rtb-papers https://github.com/wnzhang/rtb-papers.
Здесь вы сможете найти методички, презентации и научные статьи по real-time bidding (RTB) аукционам для display web рекламы. Материал разбит на следующие разделы
1️⃣ Книга Display advertising with RTB and Behavioural targeting
Содержит в себе описание механизмов, как в принципе работают RTB аукционы и краткое описание моделей предсказания цен, ставок, ответов от рекламодателей, фрода и т.д. Очень подойдет для первого знакомства с индустрией, пулом моделей и их ограничениями
2️⃣ Tutorials
Методические указания по основам RTB, подойдут для тех, кто предпочитает изучать материал в форме презентаций
3️⃣ Review papers
Статьи обзоры, аггрегируют в себе результаты сразу из множества исследовательских статей. Подойдет, если вы определились с тематикой (например предсказание ставок), и вам нужен обзор всех значимых работ на эту конкретную тему.
4️⃣ Demand-Side Platform (DSP)
DSP - это платформы, которые аггрегируют множество рекламодателей. Именно через них бренды имеют возможность делать ставки и принимать участие в RTB аукционных.
CTR/ CVR Estimation
Статьи, посвященные предсказанию кликов и конверсий. Это т.н. сегмент Performance в самом низу воронки продаж, и наша задача предсказать клик или покупку товара пользователем. Здесь выборка сильно несбалансирована, поскольку до конверсии доходит, как правило 0.1% пользователей. Задача осложняется еще и тем, что конверсия может быть отложеной (т.е. посмотрев рекламу, пользователь может сделать покупку через неделю). Пулл моделей самый разный, начиная от логистических регрессий, заканчивая Factorization machines и сетками.
Bid Landscape
Задача - оценка распределения ставок на рекламные места. Почему это важно? Потому что иначе предложив слишком мало, DSP не выиграет аукцион, а если слишком много - то DSP купит рекламный слот себе в убыток. Для этого и нужны алгоритмы по оценке распределения ставок, и вероятности победить в аукционе (win rate) на каждом отрезке ставок.
Bidding Strategies
Задача вытекает из предыдущего пункта. После того, как мы оценили кривую распределения ставок и win rate на ней, нам нужен алгоритм, который будет адаптировать ставку для каждого конкретного рекламного места (placement), чтобы максимизировать win rate и уложиться в ограничения по прибыли (margin). Здесь можно найти много алгоритмов с подкреплением (RL), например многоруких бандитов, также и моделей регрессии классического ML, по которым мы предсказываем коэффициенты-множители к ставке.
Budget Pacing
Как мы знаем реклама не продается в единичном экземпляре. Как правило бренды планируют рекламные кампании, назначают на них бюджет и проводят их в определенный промежуток времени (например, за неделю до черной пятницы). Наша задача здесь, как DSP, обеспечить брендам равномерное расходование их бюджета на весь период кампании. Если мы "сожжем" весь бюджет в первый день за месяц до черной пятницы, то не попадем на максимум спроса пользователя, а если не израсходуем бюджет в срок, то накроем недостаточно аудитории. В плане алгоритмов здесь много моделей на PID контроллерах (примерно таких же, которые ставят на автопилоты в машинах), которые помогают ускорить или урезать покупку placement'ов в зависимости от текущего бюджета.
Fraud Detection
В рекламе, как и в медиа индустрии в целом есть своя доля мошенников. Например, это сайты которые запускают ботов, чтобы накрутить скроллы или клики на рекламные места. Наша задача, как DSP, заключается в том, чтобы своевременно выявлять эти пользователей-ботов и сайты и блокировать их.
5️⃣ Supply-Side Platform (SSP)
SSP - это платформы, которые аггрегируют запросы от веб сайтов (сами же сайты собраны в издательства, например Les Echos, Wall Street Journal etc.), продающие рекламные места (еще его называют инвентарем). Также SSP проводит RTB аукционы, на которых разные DSP (и соответственно бренды) покупают эти рекламные места.
#adtech
Поскольку канал посвящен рекламным технологиям и MLю, то самое время рассказать про сборник статей рекламных ML алгоритмов rtb-papers https://github.com/wnzhang/rtb-papers.
Здесь вы сможете найти методички, презентации и научные статьи по real-time bidding (RTB) аукционам для display web рекламы. Материал разбит на следующие разделы
1️⃣ Книга Display advertising with RTB and Behavioural targeting
Содержит в себе описание механизмов, как в принципе работают RTB аукционы и краткое описание моделей предсказания цен, ставок, ответов от рекламодателей, фрода и т.д. Очень подойдет для первого знакомства с индустрией, пулом моделей и их ограничениями
2️⃣ Tutorials
Методические указания по основам RTB, подойдут для тех, кто предпочитает изучать материал в форме презентаций
3️⃣ Review papers
Статьи обзоры, аггрегируют в себе результаты сразу из множества исследовательских статей. Подойдет, если вы определились с тематикой (например предсказание ставок), и вам нужен обзор всех значимых работ на эту конкретную тему.
4️⃣ Demand-Side Platform (DSP)
DSP - это платформы, которые аггрегируют множество рекламодателей. Именно через них бренды имеют возможность делать ставки и принимать участие в RTB аукционных.
CTR/ CVR Estimation
Статьи, посвященные предсказанию кликов и конверсий. Это т.н. сегмент Performance в самом низу воронки продаж, и наша задача предсказать клик или покупку товара пользователем. Здесь выборка сильно несбалансирована, поскольку до конверсии доходит, как правило 0.1% пользователей. Задача осложняется еще и тем, что конверсия может быть отложеной (т.е. посмотрев рекламу, пользователь может сделать покупку через неделю). Пулл моделей самый разный, начиная от логистических регрессий, заканчивая Factorization machines и сетками.
Bid Landscape
Задача - оценка распределения ставок на рекламные места. Почему это важно? Потому что иначе предложив слишком мало, DSP не выиграет аукцион, а если слишком много - то DSP купит рекламный слот себе в убыток. Для этого и нужны алгоритмы по оценке распределения ставок, и вероятности победить в аукционе (win rate) на каждом отрезке ставок.
Bidding Strategies
Задача вытекает из предыдущего пункта. После того, как мы оценили кривую распределения ставок и win rate на ней, нам нужен алгоритм, который будет адаптировать ставку для каждого конкретного рекламного места (placement), чтобы максимизировать win rate и уложиться в ограничения по прибыли (margin). Здесь можно найти много алгоритмов с подкреплением (RL), например многоруких бандитов, также и моделей регрессии классического ML, по которым мы предсказываем коэффициенты-множители к ставке.
Budget Pacing
Как мы знаем реклама не продается в единичном экземпляре. Как правило бренды планируют рекламные кампании, назначают на них бюджет и проводят их в определенный промежуток времени (например, за неделю до черной пятницы). Наша задача здесь, как DSP, обеспечить брендам равномерное расходование их бюджета на весь период кампании. Если мы "сожжем" весь бюджет в первый день за месяц до черной пятницы, то не попадем на максимум спроса пользователя, а если не израсходуем бюджет в срок, то накроем недостаточно аудитории. В плане алгоритмов здесь много моделей на PID контроллерах (примерно таких же, которые ставят на автопилоты в машинах), которые помогают ускорить или урезать покупку placement'ов в зависимости от текущего бюджета.
Fraud Detection
В рекламе, как и в медиа индустрии в целом есть своя доля мошенников. Например, это сайты которые запускают ботов, чтобы накрутить скроллы или клики на рекламные места. Наша задача, как DSP, заключается в том, чтобы своевременно выявлять эти пользователей-ботов и сайты и блокировать их.
5️⃣ Supply-Side Platform (SSP)
SSP - это платформы, которые аггрегируют запросы от веб сайтов (сами же сайты собраны в издательства, например Les Echos, Wall Street Journal etc.), продающие рекламные места (еще его называют инвентарем). Также SSP проводит RTB аукционы, на которых разные DSP (и соответственно бренды) покупают эти рекламные места.
#adtech
GitHub
GitHub - wnzhang/rtb-papers: A collection of research and survey papers of real-time bidding (RTB) based display advertising techniques.
A collection of research and survey papers of real-time bidding (RTB) based display advertising techniques. - wnzhang/rtb-papers
❤4👍4
6️⃣ Data Management Platform (DMP)
Поскольку реклама нацелена на людей, нам нужно иметь представление о них и об их предпочтениях. SSP покупают информацию о пользователях у третье-сторонних DMP, которые собирают информацию об активностях пользователей через cookies. Кроме этого рассмотрены алгоритмы построения профиля пользователя, например с помощью embedding'ов или кластеризации. Поверх этих эмбеддингов обучаются look-alike модели, которые относят конкретного пользователя к группе со схожими интересами.
7️⃣ Privacy
Говоря о пользователях, также нужно помнить про защиту их персональных данных. В более ранних постах (раз, два) я рассказывал, что Google Chrome планирует отказываться от трекинга пользователей с помощью third-party cookies. И в скором времени, данные о пользователях будут предоставляться SSP через платформу Privacy Sandbox.
В заключении поста, если вы только начинаете осваиваться с индустрией рекламных технологий, то я вам советую сначала прочесть книгу Display advertising with RTB and Behavioural target и туториалы, чтобы иметь представление в целом об индустрии. Дальше выбрать интересующую вас тематику и фокусироваться на ней.
Сохраняем к себе! ➡️
#adtech
Поскольку реклама нацелена на людей, нам нужно иметь представление о них и об их предпочтениях. SSP покупают информацию о пользователях у третье-сторонних DMP, которые собирают информацию об активностях пользователей через cookies. Кроме этого рассмотрены алгоритмы построения профиля пользователя, например с помощью embedding'ов или кластеризации. Поверх этих эмбеддингов обучаются look-alike модели, которые относят конкретного пользователя к группе со схожими интересами.
7️⃣ Privacy
Говоря о пользователях, также нужно помнить про защиту их персональных данных. В более ранних постах (раз, два) я рассказывал, что Google Chrome планирует отказываться от трекинга пользователей с помощью third-party cookies. И в скором времени, данные о пользователях будут предоставляться SSP через платформу Privacy Sandbox.
В заключении поста, если вы только начинаете осваиваться с индустрией рекламных технологий, то я вам советую сначала прочесть книгу Display advertising with RTB and Behavioural target и туториалы, чтобы иметь представление в целом об индустрии. Дальше выбрать интересующую вас тематику и фокусироваться на ней.
Сохраняем к себе! ➡️
#adtech
GitHub
GitHub - wnzhang/rtb-papers: A collection of research and survey papers of real-time bidding (RTB) based display advertising techniques.
A collection of research and survey papers of real-time bidding (RTB) based display advertising techniques. - wnzhang/rtb-papers
👍8❤2
🚘 Об автономных электромобилях и безопасности
В контексте автономных машин из ML практики мы наслышены об алгоритмах компьютерного зрения и инструментах
- обнаружения объектов на базе моделей YOLO, Faster R-CNN
- распознавание дорожных знаков
- контроль полосы движения (Tensorflow Object Detection API)
- планирование маршрута
🔐 Но современный автомобиль - это не просто набор камер и лидаров. Всегда нужно помнить о важных компонентах
- кибербезопасности водителя (авторизация, защита данных водителя и телеметрии, которые хранятся у облачного провайдера)
- архитектура SDK
- безопасность сторонних приложений
Об этом, а также о других решениях в области кибербезопасности вы сможете узнать на канале КиберБезОскара. Оскар также пишет про то, как противодействовать Adversarial атакам на датасеты. Например данных распознавания объектов на трассе такие артефакты (например гауссовские шумы или патчи размером в 1-2 пикселя) не видны человеческому глазу, но после обучения на которых качество CV моделей резко падает.
В контексте автономных машин из ML практики мы наслышены об алгоритмах компьютерного зрения и инструментах
- обнаружения объектов на базе моделей YOLO, Faster R-CNN
- распознавание дорожных знаков
- контроль полосы движения (Tensorflow Object Detection API)
- планирование маршрута
🔐 Но современный автомобиль - это не просто набор камер и лидаров. Всегда нужно помнить о важных компонентах
- кибербезопасности водителя (авторизация, защита данных водителя и телеметрии, которые хранятся у облачного провайдера)
- архитектура SDK
- безопасность сторонних приложений
Об этом, а также о других решениях в области кибербезопасности вы сможете узнать на канале КиберБезОскара. Оскар также пишет про то, как противодействовать Adversarial атакам на датасеты. Например данных распознавания объектов на трассе такие артефакты (например гауссовские шумы или патчи размером в 1-2 пикселя) не видны человеческому глазу, но после обучения на которых качество CV моделей резко падает.
Telegram
КиберБезОскара
Когда видел рекламу российского автомобиля АТОМ думал, что это обычный электромобиль, который в стране пытаются создать далеко не в первый раз. Оказалось, что с точки зрения ИТ, идея у АТОМа намного интереснее.
Это, как называет его производитель, — программно…
Это, как называет его производитель, — программно…
👍4❤1🔥1
Метрики в рекламных кампаниях ч.2
Сегодня мы продолжаем разбираться в том, как оценивать эффективность рекламной кампании. Ранее мы рассмотрели метрики Scroll rate, Completion rate, CTR, CVR. Сегодня мы рассмотрим метрики расходов на рекламу:
1️⃣ CPM (Cost per mille)
Стоимость тысячи отображений рекламы.
Эта метрика показывает динамику спроса и предложения на вашу целевую аудиторию. Обратно коррелирует с Scroll rate
2️⃣ CPC (Cost per click)
Стоимость за клик на рекламный баннер. Показывает отношение между CPM и CTR (Click-through rate).
3️⃣ CPA (Cost per action или Cost per acquisition)
Стоимость одного целевого действия, которое совершил пользователь после клика по баннеру. Целевое действие - это покупка, регистрация, подписка и т.д. Обратно коррелирует с CRV (Conversion rate).
По сути это самая важная метрика внизу воронки продаж, т.к. если кампания генерирует дешевый трафик, но он не конвертируется в продажи, то где-то есть проблема.
#adtech
Сегодня мы продолжаем разбираться в том, как оценивать эффективность рекламной кампании. Ранее мы рассмотрели метрики Scroll rate, Completion rate, CTR, CVR. Сегодня мы рассмотрим метрики расходов на рекламу:
1️⃣ CPM (Cost per mille)
Стоимость тысячи отображений рекламы.
CPM = ads_budget / (nb_impressions
/ 1000)
Эта метрика показывает динамику спроса и предложения на вашу целевую аудиторию. Обратно коррелирует с Scroll rate
2️⃣ CPC (Cost per click)
Стоимость за клик на рекламный баннер. Показывает отношение между CPM и CTR (Click-through rate).
CPC = ads_budget / nb_clicks
3️⃣ CPA (Cost per action или Cost per acquisition)
Стоимость одного целевого действия, которое совершил пользователь после клика по баннеру. Целевое действие - это покупка, регистрация, подписка и т.д. Обратно коррелирует с CRV (Conversion rate).
По сути это самая важная метрика внизу воронки продаж, т.к. если кампания генерирует дешевый трафик, но он не конвертируется в продажи, то где-то есть проблема.
CPA = ads_budget / nb_transactions
#adtech
Telegram
ML Advertising
4 метрики, на которые нужно смотреть, когда тестируешь рекламную кампанию
Когда мы создаем рекламную кампанию или тестируем креативы, часто встает вопрос, как оценивать их эффективность. Сегодня мы рассмотрим основные метрики, по которым можно это сделать.…
Когда мы создаем рекламную кампанию или тестируем креативы, часто встает вопрос, как оценивать их эффективность. Сегодня мы рассмотрим основные метрики, по которым можно это сделать.…
👍2🔥2
NVIDIA Triton
https://developer.nvidia.com/triton-inference-server
Сегодня поговорим про библиотеку Triton. Она создана для того, чтобы упростить процесс развертки ML модели на инференс. Поскольку в названии присутствует NVIDIA, то понятно, что модели можно будет использовать для инференса на GPU. Triton поддерживает разные форматы моделей, например, Tensorflow, TorchScript, ONNX, OpenVINO. Поддерживается почти всеми крупными облачными провайдерами AWS, GCP, Azure, Tencent etc. и на обоих типах процессоров x86 и ARM CPUs.
https://github.com/triton-inference-server/server/blob/r22.01/docs/model_repository.md
Часть, как установить nvidia-cuda-toolkit я проскипаю и опишу потом.
Запустить Triton Inference Server можно разными путями, в частности в Docker контейнере
После этого вы можете обращаться к серверу с помощью curl HTTP запросов. Например, проверим статус поднятого сервера
Мы также можем руками добавить в модель в Triton Inference Server дополнительные конфиги. Их нужно прописать в формате protobuf файла
https://github.com/triton-inference-server/server/tree/r22.01/docs/examples/model_repository
Далее прописываем скрипт клиента на Python, где загружаем, например, модель ONNX. Затем мы создаем клиент и передаем ему адрес Triton сервера . После этого мы создаем запрос InferRequest и задаем имя модели. Затем мы из proto файла конфигов model_config.pbtxt передаем содержимое о параметрах модели в запрос
#mlops
https://developer.nvidia.com/triton-inference-server
Сегодня поговорим про библиотеку Triton. Она создана для того, чтобы упростить процесс развертки ML модели на инференс. Поскольку в названии присутствует NVIDIA, то понятно, что модели можно будет использовать для инференса на GPU. Triton поддерживает разные форматы моделей, например, Tensorflow, TorchScript, ONNX, OpenVINO. Поддерживается почти всеми крупными облачными провайдерами AWS, GCP, Azure, Tencent etc. и на обоих типах процессоров x86 и ARM CPUs.
https://github.com/triton-inference-server/server/blob/r22.01/docs/model_repository.md
Часть, как установить nvidia-cuda-toolkit я проскипаю и опишу потом.
Запустить Triton Inference Server можно разными путями, в частности в Docker контейнере
$ docker run --gpus=1 --rm -p8000:8000 -p8001:8001 -p8002:8002 -v/full/path/to/docs/examples/model_repository:/models nvcr.io/nvidia/tritonserver:<xx.yy>-py3 tritonserver --model-repository=/models
После этого вы можете обращаться к серверу с помощью curl HTTP запросов. Например, проверим статус поднятого сервера
curl -v localhost:8000/v2/health/ready
Мы также можем руками добавить в модель в Triton Inference Server дополнительные конфиги. Их нужно прописать в формате protobuf файла
https://github.com/triton-inference-server/server/tree/r22.01/docs/examples/model_repository
package triton.server.model;
message ModelConfig {
string name = 1;
string version = 2;
string description = 3;
repeated Input inputs = 4;
repeated Output outputs = 5;
map<string, string> metadata = 6;
}
message Input {
string name = 1;
string description = 2;
string data_type = 3;
repeated shape shape = 4;
}
message Output {
string name = 1;
string description = 2;
string data_type = 3;
repeated shape shape = 4;
}
message shape {
int64 dim = 1;
}
Далее прописываем скрипт клиента на Python, где загружаем, например, модель ONNX. Затем мы создаем клиент и передаем ему адрес Triton сервера . После этого мы создаем запрос InferRequest и задаем имя модели. Затем мы из proto файла конфигов model_config.pbtxt передаем содержимое о параметрах модели в запрос
import torch
import tritonclient.grpc as grpc_client
# Загружаем модель
model = onnx.load("model.onnx")
# Создаем клиент Triton
client = grpc_client.InferenceServerClient("localhost:8000")
# Создаем запрос
request = grpc_client.InferRequest()
request.model_name = "my_model"
# Задаем параметры запроса
with open("model_config.pbtxt", "r") as f:
config = f.read()
request.config = config
# Отправляем запрос
response = client.infer(request)
# Получаем результат
output = response.outputs["output"]
#mlops
NVIDIA Developer
NVIDIA Triton Inference Server
An open-source inference serving software that helps standardize model deployment and delivers fast and scalable AI in production.
🔥2👍1
💻️️️️️️ Потоковый Feature Pipeline для крипто-обменника Coinbase
Недавно прочел интересный блог пост. Его автор показывает, как написать feature pipeline. Для справки, feature pipeline это не весь ML конвейер, а только его составная часть, в которой мы собираем и обогащаем фичи.
Входные данные он забирает из API обменника Coinbase Websocket API. Парсит текствый файл, извлекает строчки данных посекундно. Далее считает аггрегации цен крипто пар на окне в 30 сек: открытие, закрытие, high, low. После того, как аггрегации посчитаны, складывает фичи в Feature Store.
В качестве инструмента использует библиотеку bytewax https://github.com/bytewax/bytewax . Это такая библиотека для обработки потока данных, аналогично Spark Streaming, Flink, Kafka Streams. Единственным ее отличием является то, что подкапотно операции выполняются на Rust, преимущество которого - это низкий runtime duration.
Во всем остальном синтаксис - это классчиеские операции MapReduce. Также как и в Spark, мы сначала декларируем набор трансформов и после этого запускаем action на исполнение.
В принципе, ничего сверхъестественного, но инструмент имеет смысл попробовать
source: https://www.realworldml.xyz/blog/real-time-pipelines-in-python
#mlops
Недавно прочел интересный блог пост. Его автор показывает, как написать feature pipeline. Для справки, feature pipeline это не весь ML конвейер, а только его составная часть, в которой мы собираем и обогащаем фичи.
Входные данные он забирает из API обменника Coinbase Websocket API. Парсит текствый файл, извлекает строчки данных посекундно. Далее считает аггрегации цен крипто пар на окне в 30 сек: открытие, закрытие, high, low. После того, как аггрегации посчитаны, складывает фичи в Feature Store.
В качестве инструмента использует библиотеку bytewax https://github.com/bytewax/bytewax . Это такая библиотека для обработки потока данных, аналогично Spark Streaming, Flink, Kafka Streams. Единственным ее отличием является то, что подкапотно операции выполняются на Rust, преимущество которого - это низкий runtime duration.
Во всем остальном синтаксис - это классчиеские операции MapReduce. Также как и в Spark, мы сначала декларируем набор трансформов и после этого запускаем action на исполнение.
В принципе, ничего сверхъестественного, но инструмент имеет смысл попробовать
source: https://www.realworldml.xyz/blog/real-time-pipelines-in-python
#mlops
GitHub
GitHub - bytewax/bytewax: Python Stream Processing
Python Stream Processing. Contribute to bytewax/bytewax development by creating an account on GitHub.
👍3