SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
Building a Product Assortment
Recommendation Engine for
Brick-and-Mortar Retailers
Justin Morse, Staff Data Scientist, AB InBev
Ethan DuBois, Senior Software Engineer, AB InBev
Agenda
§ Introductions and overview
§ The problem: product
assortment selection
§ The algorithmic solution
§ Deploying the solution
§ Lessons learned
Justin Morse,
Staff Data
Scientist
Ethan DuBois,
Senior Software
Engineer
2k+
Products
150k+
Retailers
30k+
Employees
ABInBev in the North America
Pivoting towards a tech-oriented approach
LOLA team
launched
(5 employees)
Incorporate
Databricks into
workflows
Begin
R&D partnership
with Bud Lab & MIT
National
launch of first
microservice
Begin
development of
sku-level
recommendation engine
BeerTech
Organization
launched
(73 employees)
2018 2019 2020 2021
Launch
recommendation
engine pilot
Which products should a retailer carry?
An average retailer has >10100 ways to select their product
assortment.
How can we develop a quantitative approach to
assortment planning that accounts for customer
preferences, business priorities, and computational
complexity?
Assortment Recommendation Pipeline
Product Demand
Prediction
Make quantitative estimates
of product demand for each
partnering retailer
Select the best product
assortment given business
requirements and estimated
product demand
Assortment
Optimization
Data Model
Transform datasets into a
format required for our
pipeline
Causal Analysis
Measure the effects of our
modeling interventions
Predicting demand for products in partnering retailers
• Custom built library for
family of discrete
choice models using
PyTorch
• Executed on Databricks
clusters with Azure
functions
• Next steps: scale
training with Petastorm
and Horovod
Optimizing retailer performance
• Use traditional
numerical techniques
to optimize revenue
objective function
• Include filters related to
allowable business
outcomes:
- Size restrictions
- Inventory restrictions
- License restrictions
• Recommendation
engine launched in
partnering retailers
in the Ontario region
• Currently working
with software
engineering team to
scale solution for
North American and
Global launch
Demonstrating value through small-scale pilots
Pilot implementation: chained notebooks in Databricks
Scaling and deploying the solution
• Production quality code standards
• Best-practice Code Distribution
• Repository-based, version-controlled, automated CI/CD
• Flexible and lightweight configuration approach
• Decoupled communication between components
• Infrastructure-as-code
• Ability to scale infra up and down as necessary to meet demand
• API for integration with other applications
After a number of successful pilots, we needed to build a more robust solution that at minimum included:
Scaling and deploying the solution
▪ Production quality code
standards
▪ Best-practice code
distribution
▪ Repository-based, version-
controlled, automated CI/CD
• Flexible/lightweight
• Decoupled from code
• Infrastructure-as-code
• Configuration
• Code
• Decoupled communication
between components
• Ability to automatically and
programmatically scale infra
up or down to meet demand
• API for integration with other
applications
• Orchestration
Scaling and deploying the solution: Technologies
• Configuration
• Code • Orchestration
Azure App
Configuration
Azure
Key Vault
Azure App
Insights
Azure
Event Grid
Azure Function Apps
Code: Refactoring ML Processes
Moving from chained Notebooks to end-to-end Pipelines in Python
• Chained Notebooks
• Didn’t provide the ease of maintenance and visibility that we wanted
• Easy to get lost, added complexity
• Difficult to standardize, scan, control quality across workstreams
• Process-controlled Python Pipelines
• Object-oriented approach
• Make use of shared tools and utilities
• Ability to package and distribute more easily
• CI/CD integration with Github workflows (Code scanning, unit/integration tests, etc)
Code: Refactoring ML Processes
Code: Refactoring ML Processes
Code: Refactoring ML Processes
Code: Packaging and Deployment
• Custom Python wheels
• Object-oriented, following best practices approach
• Built and deployed in GitHub Workflows as part of CI/CD
• Distribution: JFrog Artifactory Repository
• Organizational PyPI repo
• Available for installation on all clusters or machines
• Authentication set up with cluster init scripts stored in DBFS
• Roadmap: Move to GitHub Packages once PyPI is supported :’(
Packaging and deploying code to an easily accessible repository for installation on production resources
Code: CI/CD
Code: Package Distribution
Configuration
• Azure App Configuration
• Decoupled, customizable approach
• Service-level configs
• Algorithmic constants and other ML settings
• Validation and consistency checks
• Execution-level configs
• Cluster configuration
• Storage locations, file names
• Logging settings
• Azure Key Vault
• Secret storage
• Keys and connection strings for Data lake, Event Grid,
Application Insights, Azure App Config
• Backs Databricks Secret Scope
• Allows for easy access within init scripts and Spark
environment variable configuration
Creating a generic, highly-customizable configuration solution, decoupled from code
Configuration: Logging and Storage
Configuration: Databricks
Configuration: Code Integration
Configuration: Azure App Config
Orchestration
§ Azure Functions
▪ REST/HTTP
▪ Event Grid
§ Internal Utilities
▪ Wrappers for Databricks Runs API
▪ Internal config management
▪ Read/Write/Storage management
▪ Logging management
▪ Wrapper modules for Azure SDKs
§ Azure Databricks
▪ Interactive or Job Clusters
▪ Programmatic configuration
▪ Dependencies
▪ Environment variables
▪ Init scripts for pip-conf
§ Azure Application Insights
▪ Custom logging written from Python
processes
§ Azure Event Grid
▪ Custom events published for status updates
• Compute/Monitoring
Kickoff
Orchestration: Azure Functions
Orchestration: Databricks Runs
Orchestration: App Insights Logging
Putting It All Together
Conclusion
• MVP Released, in production
• Collecting initial user feedback in preparation for future releases
• Lessons Learned
• Development Process: db-connect vs notebooks, pros and cons
• Configuration: moving configs out of code wherever possible
• Pandas vs PySpark: understanding the distinction and implications
• Future Roadmap
• Increased parallelization/distribution for both model training and optimization process
• Added intelligence throughout service: Job progress and ETAs, different Demand Estimate universes
• Enhanced DevOps approach to cloud resource deployment and environment management
Emmanuel Doro
Justin Morse
Phillip Theron
Gui Neubern
Zi Wang
Senthil
Murugappan
Ethan DuBois
Ravi Kolla Sarosh Ahmad
Griffin Ansel
Ashish Baiju
Chris Stone
Nelson Kandeya
Emily Shapiro
Jessica Zou
Vivek Farias Nikos Trichakis
Tianyi Peng Patricio Foncea
DS
DS
DS
DS
DS
DS SE
SE
SE SE
SE
DE
DE
P
P
Lucas Diffey
DE
Q&A
Feedback
Your feedback is important to us.
Don’t forget to rate and review the sessions.

Mais conteúdo relacionado

Mais procurados

Assortment Planning - United Colors of Benetton
Assortment Planning - United Colors of BenettonAssortment Planning - United Colors of Benetton
Assortment Planning - United Colors of Benetton
Delwin Arikatt
 
Nike Brand Management
Nike Brand ManagementNike Brand Management
Nike Brand Management
louk_ball
 

Mais procurados (20)

Nike: Strategic Analysis, Synthesis & Recommendations
Nike: Strategic Analysis, Synthesis & Recommendations Nike: Strategic Analysis, Synthesis & Recommendations
Nike: Strategic Analysis, Synthesis & Recommendations
 
adidas digital marketing strategies 2016
 adidas digital marketing strategies 2016 adidas digital marketing strategies 2016
adidas digital marketing strategies 2016
 
BUAD 497 Class Project: Adidas Consulting project
BUAD 497 Class Project: Adidas Consulting projectBUAD 497 Class Project: Adidas Consulting project
BUAD 497 Class Project: Adidas Consulting project
 
Adidas
AdidasAdidas
Adidas
 
Adidas brand analyses presentation
Adidas brand analyses presentationAdidas brand analyses presentation
Adidas brand analyses presentation
 
Databricks with R: Deep Dive
Databricks with R: Deep DiveDatabricks with R: Deep Dive
Databricks with R: Deep Dive
 
Adidas vs.nike
Adidas vs.nikeAdidas vs.nike
Adidas vs.nike
 
Nike brand prism
Nike brand prismNike brand prism
Nike brand prism
 
Scaling AI At H&M
Scaling AI At H&MScaling AI At H&M
Scaling AI At H&M
 
Adidas Marketing Case Study
Adidas Marketing Case StudyAdidas Marketing Case Study
Adidas Marketing Case Study
 
NIKE Brand Audit
NIKE Brand Audit NIKE Brand Audit
NIKE Brand Audit
 
Assortment Planning - United Colors of Benetton
Assortment Planning - United Colors of BenettonAssortment Planning - United Colors of Benetton
Assortment Planning - United Colors of Benetton
 
Nike
NikeNike
Nike
 
E-Business analysis of Chaldal.com
E-Business analysis of Chaldal.com E-Business analysis of Chaldal.com
E-Business analysis of Chaldal.com
 
Adidas
AdidasAdidas
Adidas
 
Adidas
Adidas Adidas
Adidas
 
Why Data Virtualization? An Introduction
Why Data Virtualization? An IntroductionWhy Data Virtualization? An Introduction
Why Data Virtualization? An Introduction
 
case stude ppt on nike
case stude ppt on nikecase stude ppt on nike
case stude ppt on nike
 
Nike Brand Management
Nike Brand ManagementNike Brand Management
Nike Brand Management
 
Spykar - 2016
Spykar - 2016Spykar - 2016
Spykar - 2016
 

Semelhante a Building A Product Assortment Recommendation Engine

Skill_Level_ Strider
Skill_Level_ StriderSkill_Level_ Strider
Skill_Level_ Strider
Tushar R
 
Introduction to Microsoft Flow and Azure Functions
Introduction to Microsoft Flow and Azure FunctionsIntroduction to Microsoft Flow and Azure Functions
Introduction to Microsoft Flow and Azure Functions
BIWUG
 
Software Factory Tools Partner Day Final
Software Factory Tools Partner Day FinalSoftware Factory Tools Partner Day Final
Software Factory Tools Partner Day Final
Lek Pongpatimet
 

Semelhante a Building A Product Assortment Recommendation Engine (20)

DevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft AzureDevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft Azure
 
Azure DevOps Best Practices Webinar
Azure DevOps Best Practices WebinarAzure DevOps Best Practices Webinar
Azure DevOps Best Practices Webinar
 
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
 
"Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa..."Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa...
 
Mastering azure devOps - Dot Net Tricks
Mastering azure devOps - Dot Net TricksMastering azure devOps - Dot Net Tricks
Mastering azure devOps - Dot Net Tricks
 
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
Global Azure 2022 - Architecting Modern Serverless APIs with Azure Functions ...
 
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
 
Skill_Level_ Strider
Skill_Level_ StriderSkill_Level_ Strider
Skill_Level_ Strider
 
#SPSBrussels 2017 vincent biret #azure #functions microsoft #flow
#SPSBrussels 2017 vincent biret #azure #functions microsoft #flow#SPSBrussels 2017 vincent biret #azure #functions microsoft #flow
#SPSBrussels 2017 vincent biret #azure #functions microsoft #flow
 
Introduction to Microsoft Flow and Azure Functions
Introduction to Microsoft Flow and Azure FunctionsIntroduction to Microsoft Flow and Azure Functions
Introduction to Microsoft Flow and Azure Functions
 
Evolve Your Web Applications with Microsoft Azure
Evolve Your Web Applications with Microsoft AzureEvolve Your Web Applications with Microsoft Azure
Evolve Your Web Applications with Microsoft Azure
 
Software Factory Tools Partner Day Final
Software Factory Tools Partner Day FinalSoftware Factory Tools Partner Day Final
Software Factory Tools Partner Day Final
 
Inventory managment system
Inventory managment systemInventory managment system
Inventory managment system
 
(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies
 
Implementing dev ops to face a two speed it architecture
Implementing dev ops to face a two speed it architectureImplementing dev ops to face a two speed it architecture
Implementing dev ops to face a two speed it architecture
 
SaaS - Software as a Service - Charles University - Prague - March 2013
SaaS - Software as a Service - Charles University - Prague - March 2013SaaS - Software as a Service - Charles University - Prague - March 2013
SaaS - Software as a Service - Charles University - Prague - March 2013
 
Azure Functions 101
Azure Functions 101Azure Functions 101
Azure Functions 101
 
Migrating from a monolith to microservices – is it worth it?
Migrating from a monolith to microservices – is it worth it?Migrating from a monolith to microservices – is it worth it?
Migrating from a monolith to microservices – is it worth it?
 
Deep-Dive to Application Insights
Deep-Dive to Application Insights Deep-Dive to Application Insights
Deep-Dive to Application Insights
 
Cloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a CacheCloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a Cache
 

Mais de Databricks

Democratizing Data Quality Through a Centralized Platform
Democratizing Data Quality Through a Centralized PlatformDemocratizing Data Quality Through a Centralized Platform
Democratizing Data Quality Through a Centralized Platform
Databricks
 
Stage Level Scheduling Improving Big Data and AI Integration
Stage Level Scheduling Improving Big Data and AI IntegrationStage Level Scheduling Improving Big Data and AI Integration
Stage Level Scheduling Improving Big Data and AI Integration
Databricks
 
Simplify Data Conversion from Spark to TensorFlow and PyTorch
Simplify Data Conversion from Spark to TensorFlow and PyTorchSimplify Data Conversion from Spark to TensorFlow and PyTorch
Simplify Data Conversion from Spark to TensorFlow and PyTorch
Databricks
 
Raven: End-to-end Optimization of ML Prediction Queries
Raven: End-to-end Optimization of ML Prediction QueriesRaven: End-to-end Optimization of ML Prediction Queries
Raven: End-to-end Optimization of ML Prediction Queries
Databricks
 
Processing Large Datasets for ADAS Applications using Apache Spark
Processing Large Datasets for ADAS Applications using Apache SparkProcessing Large Datasets for ADAS Applications using Apache Spark
Processing Large Datasets for ADAS Applications using Apache Spark
Databricks
 

Mais de Databricks (20)

DW Migration Webinar-March 2022.pptx
DW Migration Webinar-March 2022.pptxDW Migration Webinar-March 2022.pptx
DW Migration Webinar-March 2022.pptx
 
Data Lakehouse Symposium | Day 1 | Part 1
Data Lakehouse Symposium | Day 1 | Part 1Data Lakehouse Symposium | Day 1 | Part 1
Data Lakehouse Symposium | Day 1 | Part 1
 
Data Lakehouse Symposium | Day 1 | Part 2
Data Lakehouse Symposium | Day 1 | Part 2Data Lakehouse Symposium | Day 1 | Part 2
Data Lakehouse Symposium | Day 1 | Part 2
 
Data Lakehouse Symposium | Day 2
Data Lakehouse Symposium | Day 2Data Lakehouse Symposium | Day 2
Data Lakehouse Symposium | Day 2
 
Data Lakehouse Symposium | Day 4
Data Lakehouse Symposium | Day 4Data Lakehouse Symposium | Day 4
Data Lakehouse Symposium | Day 4
 
5 Critical Steps to Clean Your Data Swamp When Migrating Off of Hadoop
5 Critical Steps to Clean Your Data Swamp When Migrating Off of Hadoop5 Critical Steps to Clean Your Data Swamp When Migrating Off of Hadoop
5 Critical Steps to Clean Your Data Swamp When Migrating Off of Hadoop
 
Democratizing Data Quality Through a Centralized Platform
Democratizing Data Quality Through a Centralized PlatformDemocratizing Data Quality Through a Centralized Platform
Democratizing Data Quality Through a Centralized Platform
 
Learn to Use Databricks for Data Science
Learn to Use Databricks for Data ScienceLearn to Use Databricks for Data Science
Learn to Use Databricks for Data Science
 
Why APM Is Not the Same As ML Monitoring
Why APM Is Not the Same As ML MonitoringWhy APM Is Not the Same As ML Monitoring
Why APM Is Not the Same As ML Monitoring
 
The Function, the Context, and the Data—Enabling ML Ops at Stitch Fix
The Function, the Context, and the Data—Enabling ML Ops at Stitch FixThe Function, the Context, and the Data—Enabling ML Ops at Stitch Fix
The Function, the Context, and the Data—Enabling ML Ops at Stitch Fix
 
Stage Level Scheduling Improving Big Data and AI Integration
Stage Level Scheduling Improving Big Data and AI IntegrationStage Level Scheduling Improving Big Data and AI Integration
Stage Level Scheduling Improving Big Data and AI Integration
 
Simplify Data Conversion from Spark to TensorFlow and PyTorch
Simplify Data Conversion from Spark to TensorFlow and PyTorchSimplify Data Conversion from Spark to TensorFlow and PyTorch
Simplify Data Conversion from Spark to TensorFlow and PyTorch
 
Scaling your Data Pipelines with Apache Spark on Kubernetes
Scaling your Data Pipelines with Apache Spark on KubernetesScaling your Data Pipelines with Apache Spark on Kubernetes
Scaling your Data Pipelines with Apache Spark on Kubernetes
 
Scaling and Unifying SciKit Learn and Apache Spark Pipelines
Scaling and Unifying SciKit Learn and Apache Spark PipelinesScaling and Unifying SciKit Learn and Apache Spark Pipelines
Scaling and Unifying SciKit Learn and Apache Spark Pipelines
 
Sawtooth Windows for Feature Aggregations
Sawtooth Windows for Feature AggregationsSawtooth Windows for Feature Aggregations
Sawtooth Windows for Feature Aggregations
 
Redis + Apache Spark = Swiss Army Knife Meets Kitchen Sink
Redis + Apache Spark = Swiss Army Knife Meets Kitchen SinkRedis + Apache Spark = Swiss Army Knife Meets Kitchen Sink
Redis + Apache Spark = Swiss Army Knife Meets Kitchen Sink
 
Re-imagine Data Monitoring with whylogs and Spark
Re-imagine Data Monitoring with whylogs and SparkRe-imagine Data Monitoring with whylogs and Spark
Re-imagine Data Monitoring with whylogs and Spark
 
Raven: End-to-end Optimization of ML Prediction Queries
Raven: End-to-end Optimization of ML Prediction QueriesRaven: End-to-end Optimization of ML Prediction Queries
Raven: End-to-end Optimization of ML Prediction Queries
 
Processing Large Datasets for ADAS Applications using Apache Spark
Processing Large Datasets for ADAS Applications using Apache SparkProcessing Large Datasets for ADAS Applications using Apache Spark
Processing Large Datasets for ADAS Applications using Apache Spark
 
Massive Data Processing in Adobe Using Delta Lake
Massive Data Processing in Adobe Using Delta LakeMassive Data Processing in Adobe Using Delta Lake
Massive Data Processing in Adobe Using Delta Lake
 

Último

Call Girls Indiranagar Just Call 👗 9155563397 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 9155563397 👗 Top Class Call Girl Service B...Call Girls Indiranagar Just Call 👗 9155563397 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 9155563397 👗 Top Class Call Girl Service B...
only4webmaster01
 
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get CytotecAbortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Riyadh +966572737505 get cytotec
 
➥🔝 7737669865 🔝▻ Mathura Call-girls in Women Seeking Men 🔝Mathura🔝 Escorts...
➥🔝 7737669865 🔝▻ Mathura Call-girls in Women Seeking Men  🔝Mathura🔝   Escorts...➥🔝 7737669865 🔝▻ Mathura Call-girls in Women Seeking Men  🔝Mathura🔝   Escorts...
➥🔝 7737669865 🔝▻ Mathura Call-girls in Women Seeking Men 🔝Mathura🔝 Escorts...
amitlee9823
 
➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men 🔝Thrissur🔝 Escor...
➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men  🔝Thrissur🔝   Escor...➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men  🔝Thrissur🔝   Escor...
➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men 🔝Thrissur🔝 Escor...
amitlee9823
 
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
amitlee9823
 
Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...
Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...
Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...
amitlee9823
 
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
amitlee9823
 
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
amitlee9823
 
Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...
Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...
Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...
amitlee9823
 
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service BangaloreCall Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
amitlee9823
 
Call Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night StandCall Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
amitlee9823
 

Último (20)

Call Girls Indiranagar Just Call 👗 9155563397 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 9155563397 👗 Top Class Call Girl Service B...Call Girls Indiranagar Just Call 👗 9155563397 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 9155563397 👗 Top Class Call Girl Service B...
 
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get CytotecAbortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
 
➥🔝 7737669865 🔝▻ Mathura Call-girls in Women Seeking Men 🔝Mathura🔝 Escorts...
➥🔝 7737669865 🔝▻ Mathura Call-girls in Women Seeking Men  🔝Mathura🔝   Escorts...➥🔝 7737669865 🔝▻ Mathura Call-girls in Women Seeking Men  🔝Mathura🔝   Escorts...
➥🔝 7737669865 🔝▻ Mathura Call-girls in Women Seeking Men 🔝Mathura🔝 Escorts...
 
➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men 🔝Thrissur🔝 Escor...
➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men  🔝Thrissur🔝   Escor...➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men  🔝Thrissur🔝   Escor...
➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men 🔝Thrissur🔝 Escor...
 
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
 
Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...
Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...
Mg Road Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Banga...
 
(NEHA) Call Girls Katra Call Now 8617697112 Katra Escorts 24x7
(NEHA) Call Girls Katra Call Now 8617697112 Katra Escorts 24x7(NEHA) Call Girls Katra Call Now 8617697112 Katra Escorts 24x7
(NEHA) Call Girls Katra Call Now 8617697112 Katra Escorts 24x7
 
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 nightCheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
 
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Discover Why Less is More in B2B Research
Discover Why Less is More in B2B ResearchDiscover Why Less is More in B2B Research
Discover Why Less is More in B2B Research
 
Midocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFxMidocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFx
 
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
 
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
 
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
 
Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...
Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...
Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...
 
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service BangaloreCall Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
 
Call Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night StandCall Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night Stand
 
hybrid Seed Production In Chilli & Capsicum.pptx
hybrid Seed Production In Chilli & Capsicum.pptxhybrid Seed Production In Chilli & Capsicum.pptx
hybrid Seed Production In Chilli & Capsicum.pptx
 
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
 
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
 

Building A Product Assortment Recommendation Engine

  • 1. Building a Product Assortment Recommendation Engine for Brick-and-Mortar Retailers Justin Morse, Staff Data Scientist, AB InBev Ethan DuBois, Senior Software Engineer, AB InBev
  • 2. Agenda § Introductions and overview § The problem: product assortment selection § The algorithmic solution § Deploying the solution § Lessons learned Justin Morse, Staff Data Scientist Ethan DuBois, Senior Software Engineer
  • 4.
  • 5. Pivoting towards a tech-oriented approach LOLA team launched (5 employees) Incorporate Databricks into workflows Begin R&D partnership with Bud Lab & MIT National launch of first microservice Begin development of sku-level recommendation engine BeerTech Organization launched (73 employees) 2018 2019 2020 2021 Launch recommendation engine pilot
  • 6. Which products should a retailer carry? An average retailer has >10100 ways to select their product assortment.
  • 7. How can we develop a quantitative approach to assortment planning that accounts for customer preferences, business priorities, and computational complexity?
  • 8. Assortment Recommendation Pipeline Product Demand Prediction Make quantitative estimates of product demand for each partnering retailer Select the best product assortment given business requirements and estimated product demand Assortment Optimization Data Model Transform datasets into a format required for our pipeline Causal Analysis Measure the effects of our modeling interventions
  • 9. Predicting demand for products in partnering retailers • Custom built library for family of discrete choice models using PyTorch • Executed on Databricks clusters with Azure functions • Next steps: scale training with Petastorm and Horovod
  • 10. Optimizing retailer performance • Use traditional numerical techniques to optimize revenue objective function • Include filters related to allowable business outcomes: - Size restrictions - Inventory restrictions - License restrictions
  • 11. • Recommendation engine launched in partnering retailers in the Ontario region • Currently working with software engineering team to scale solution for North American and Global launch Demonstrating value through small-scale pilots
  • 12. Pilot implementation: chained notebooks in Databricks
  • 13. Scaling and deploying the solution • Production quality code standards • Best-practice Code Distribution • Repository-based, version-controlled, automated CI/CD • Flexible and lightweight configuration approach • Decoupled communication between components • Infrastructure-as-code • Ability to scale infra up and down as necessary to meet demand • API for integration with other applications After a number of successful pilots, we needed to build a more robust solution that at minimum included:
  • 14. Scaling and deploying the solution ▪ Production quality code standards ▪ Best-practice code distribution ▪ Repository-based, version- controlled, automated CI/CD • Flexible/lightweight • Decoupled from code • Infrastructure-as-code • Configuration • Code • Decoupled communication between components • Ability to automatically and programmatically scale infra up or down to meet demand • API for integration with other applications • Orchestration
  • 15. Scaling and deploying the solution: Technologies • Configuration • Code • Orchestration Azure App Configuration Azure Key Vault Azure App Insights Azure Event Grid Azure Function Apps
  • 16. Code: Refactoring ML Processes Moving from chained Notebooks to end-to-end Pipelines in Python • Chained Notebooks • Didn’t provide the ease of maintenance and visibility that we wanted • Easy to get lost, added complexity • Difficult to standardize, scan, control quality across workstreams • Process-controlled Python Pipelines • Object-oriented approach • Make use of shared tools and utilities • Ability to package and distribute more easily • CI/CD integration with Github workflows (Code scanning, unit/integration tests, etc)
  • 17. Code: Refactoring ML Processes
  • 18. Code: Refactoring ML Processes
  • 19. Code: Refactoring ML Processes
  • 20. Code: Packaging and Deployment • Custom Python wheels • Object-oriented, following best practices approach • Built and deployed in GitHub Workflows as part of CI/CD • Distribution: JFrog Artifactory Repository • Organizational PyPI repo • Available for installation on all clusters or machines • Authentication set up with cluster init scripts stored in DBFS • Roadmap: Move to GitHub Packages once PyPI is supported :’( Packaging and deploying code to an easily accessible repository for installation on production resources
  • 23. Configuration • Azure App Configuration • Decoupled, customizable approach • Service-level configs • Algorithmic constants and other ML settings • Validation and consistency checks • Execution-level configs • Cluster configuration • Storage locations, file names • Logging settings • Azure Key Vault • Secret storage • Keys and connection strings for Data lake, Event Grid, Application Insights, Azure App Config • Backs Databricks Secret Scope • Allows for easy access within init scripts and Spark environment variable configuration Creating a generic, highly-customizable configuration solution, decoupled from code
  • 28. Orchestration § Azure Functions ▪ REST/HTTP ▪ Event Grid § Internal Utilities ▪ Wrappers for Databricks Runs API ▪ Internal config management ▪ Read/Write/Storage management ▪ Logging management ▪ Wrapper modules for Azure SDKs § Azure Databricks ▪ Interactive or Job Clusters ▪ Programmatic configuration ▪ Dependencies ▪ Environment variables ▪ Init scripts for pip-conf § Azure Application Insights ▪ Custom logging written from Python processes § Azure Event Grid ▪ Custom events published for status updates • Compute/Monitoring Kickoff
  • 32. Putting It All Together
  • 33. Conclusion • MVP Released, in production • Collecting initial user feedback in preparation for future releases • Lessons Learned • Development Process: db-connect vs notebooks, pros and cons • Configuration: moving configs out of code wherever possible • Pandas vs PySpark: understanding the distinction and implications • Future Roadmap • Increased parallelization/distribution for both model training and optimization process • Added intelligence throughout service: Job progress and ETAs, different Demand Estimate universes • Enhanced DevOps approach to cloud resource deployment and environment management
  • 34. Emmanuel Doro Justin Morse Phillip Theron Gui Neubern Zi Wang Senthil Murugappan Ethan DuBois Ravi Kolla Sarosh Ahmad Griffin Ansel Ashish Baiju Chris Stone Nelson Kandeya Emily Shapiro Jessica Zou Vivek Farias Nikos Trichakis Tianyi Peng Patricio Foncea DS DS DS DS DS DS SE SE SE SE SE DE DE P P Lucas Diffey DE
  • 35. Q&A
  • 36. Feedback Your feedback is important to us. Don’t forget to rate and review the sessions.