SlideShare a Scribd company logo
1 of 29
Як Preply зменшила час
розробки ML моделі з 1 місяця
до 1 дня
Євген Євсюгов, Senior Software Engineer @ Preply
Що таке Preply?
З чого ми почали?
Як працювала модель спочатку?
Розробка і тренування: Jupyter Notebooks на локальних машинах
Джерело даних: декілька баз даних, що join’ились за допомогою pandas
Калькуляція ранжування: Jenkins job
Інтеграція з бекендом: Elasticsearch
Час на ітерацію: більше місяця
Як ми це вирішували?
Поступово.
1. Джерело даних.
2. Розробка (і production).
3. Джерело даних (ще раз).
4. Розробка і production (ще раз).
Джерело даних
Джерело даних
Стало краще
1. Pandas всередині Jenkins “тупив”, бо даних було забагато
2. Перевикористали уже готову інфраструктуру (Snowflake)
3. Стало набагато зручніше рахувати features
a. Було: SQL in python, pandas to join
b. Стало: SQL in python
Які проблеми залишились?
1. Jenkins досі виглядає, як “костиль”.
2. Розробка і тренування моделі досі відбуваються на локальних машинах.
3. SQL запити туплять.
Що зробили з SQL запитами?
Оптимізували.
1. Йшли від найбільш “важких” до найбільш “легких” запитів.
2. Більшість запитів оптимізувати було тривіально — використання pre-computed tables для
зменшення часу на сканування таблиці.
Тренуємо моделі в хмарах
Мінуси Sagemaker
1. AWS Console UI
2. Доволі “сирий” продукт
a. Ноутбуки “помирали”, якщо сесія закінчиться
b. Виглядає як швидка обгортка AWS над Jupyter notebooks
Рішення
Переваги databricks
1. Легка інтеграція з існуючими хмарними вендорами: AWS, GCP тощо
2. PySpark з коробки
3. “Вертикальне” рішення для data-задач:
a. Notebooks
b. Jobs
c. Data Lake
d. Streaming
e. MLFlow
f. MLOps
Нова архітектура
Нова архітектура
Checkpoint
1. Snowflake
2. Databricks
3. Sagemaker
Проблемa
model_a
– collect_impressions_features.sql
– collect_profile_views_features.sql
model_b
– collect_impressions_features.sql
– collect_profile_views_features.sql
– collect_lessons_features.sql
model_c
– collect_impressions_features.sql
– collect_profile_views_features_new.sql
– collect_lessons_features.sql
Feature store
Ціль: перевикористання features
Вирішення:
1. Обраховуємо features кожного дня і зберігаємо
2. SQL використовує features з feature store
Підхід:
1. Feast
2. Databricks feature store
3. Самописний “фреймворк” поверх Snowflake
Чому самописний “фреймворк”?
1. Готові продукти не вирішують основної задачі: “як рахувати features?”.
2. Можливість власних абстракцій для калькуляції features
a. Testing
b. Monitoring
c. Вимоги специфічні до нашої моделі
Проблема: абстракції над features лімітують архітектуру моделі.
Пролемa залишилась
model_a
– collect_impressions_features.sql
– collect_profile_views_features.sql
model_b
– collect_impressions_features.sql
– collect_profile_views_features.sql
– collect_lessons_features.sql
1. Зменшили к-сть рядків в SQL запитах з тисяч
до десятків/сотень
2. Значно пришвидшилась швидкість збирання
даних для тренування
MLFlow / MLOps
1. Data scientists можуть натренувати модель “однією кнопокою”
2. Версіонування
3. Облік: які features використовує модель, на якому наборі даних тренувались
4. Статистичні метрики (AUC, NDCG тощо) зберігаються в одному місці (databricks)
5. Бізнес метрики автоматични рахуються та збергіються в одному місці (databricks)
Як зараз проходить тренування моделі?
1. (Опціонально) Додати нові features у feature store
2. Описати модель:
a. Які features з feature store використовувати
b. Прописати SQL для targets
c. Прописати “пост-процессинг”, наприклад feature_c = feature_a / feature_b
3. Натиснути “одну кнопку” в databricks інтерфейсі
Результат
Проблеми нашого підходу
Feature store і MLOps лімітовані під нашу задачу:
1. Features калькулюються раз в день
a. Якщо захочемо перераховуати ранжування погодинно — доведеться доробляти
2. Привʼязані до певного формату input/output
a. Якщо захочемо робити іншу архітектуру, наприклад, real time — доведеться переробляти
3. Складність додавання features
a. Накидати SQL-скриптик простіше, ніж додати feature у feature store по процесу
Плюси нашого підходу
Час на ітерацію: більше 1 місяця -> 1 день
Дякую!

More Related Content

Similar to "How Preply reduced ML model development time from 1 month to 1 day",Yevhen Yevsyuhov

10 клас инф технолог профиль Завадський програм.
10 клас  инф технолог профиль Завадський програм.10 клас  инф технолог профиль Завадський програм.
10 клас инф технолог профиль Завадський програм.af1311
 
9 информ пилипчук_шестопалов_пособ_2011_укр
9 информ пилипчук_шестопалов_пособ_2011_укр9 информ пилипчук_шестопалов_пособ_2011_укр
9 информ пилипчук_шестопалов_пособ_2011_укрAira_Roo
 
Розробка презентацій за допомогою додатку MS PowerPoint
Розробка презентацій за допомогою додатку MS PowerPointРозробка презентацій за допомогою додатку MS PowerPoint
Розробка презентацій за допомогою додатку MS PowerPointVladyslavKochkin
 
Вибір і експлуатація систем керування автоматизованим виробництвом
Вибір і експлуатація систем керування автоматизованим виробництвомВибір і експлуатація систем керування автоматизованим виробництвом
Вибір і експлуатація систем керування автоматизованим виробництвомirko514
 
інформатика 6 клас
інформатика 6 класінформатика 6 клас
інформатика 6 класUlyana Yakubiv
 
Калентарно-тематичне планування для 11 класу
Калентарно-тематичне планування для 11 класуКалентарно-тематичне планування для 11 класу
Калентарно-тематичне планування для 11 класуVsimPPT
 
відкритий урок місто
відкритий урок містовідкритий урок місто
відкритий урок містоCshkilniy
 
Informatyka 7-klas-bondarenko-2020
Informatyka 7-klas-bondarenko-2020Informatyka 7-klas-bondarenko-2020
Informatyka 7-klas-bondarenko-2020kreidaros1
 
7 in b_2020
7 in b_20207 in b_2020
7 in b_20204book
 
10 клас инф технолог профиль завадський икт
10 клас инф технолог профиль завадський икт10 клас инф технолог профиль завадський икт
10 клас инф технолог профиль завадський иктaf1311
 
10 клас инф технолог профиль завадський икт
10 клас инф технолог профиль завадський икт10 клас инф технолог профиль завадський икт
10 клас инф технолог профиль завадський иктaf1311
 
10 клас инф технолог профиль Завадський икт
10 клас инф технолог профиль Завадський икт10 клас инф технолог профиль Завадський икт
10 клас инф технолог профиль Завадський иктaf1311
 
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...GoQA
 
11 информ костриба_лещук_2_пособ_2011_укр
11 информ костриба_лещук_2_пособ_2011_укр11 информ костриба_лещук_2_пособ_2011_укр
11 информ костриба_лещук_2_пособ_2011_укрAira_Roo
 

Similar to "How Preply reduced ML model development time from 1 month to 1 day",Yevhen Yevsyuhov (20)

10 клас инф технолог профиль Завадський програм.
10 клас  инф технолог профиль Завадський програм.10 клас  инф технолог профиль Завадський програм.
10 клас инф технолог профиль Завадський програм.
 
cpp-2013 #3 OOP Basics
cpp-2013 #3 OOP Basicscpp-2013 #3 OOP Basics
cpp-2013 #3 OOP Basics
 
9 информ пилипчук_шестопалов_пособ_2011_укр
9 информ пилипчук_шестопалов_пособ_2011_укр9 информ пилипчук_шестопалов_пособ_2011_укр
9 информ пилипчук_шестопалов_пособ_2011_укр
 
Розробка презентацій за допомогою додатку MS PowerPoint
Розробка презентацій за допомогою додатку MS PowerPointРозробка презентацій за допомогою додатку MS PowerPoint
Розробка презентацій за допомогою додатку MS PowerPoint
 
7 9 класи
7 9 класи7 9 класи
7 9 класи
 
Вибір і експлуатація систем керування автоматизованим виробництвом
Вибір і експлуатація систем керування автоматизованим виробництвомВибір і експлуатація систем керування автоматизованим виробництвом
Вибір і експлуатація систем керування автоматизованим виробництвом
 
інформатика 6 клас
інформатика 6 класінформатика 6 клас
інформатика 6 клас
 
Калентарно-тематичне планування для 11 класу
Калентарно-тематичне планування для 11 класуКалентарно-тематичне планування для 11 класу
Калентарно-тематичне планування для 11 класу
 
ктп 5-9-а
ктп 5-9-актп 5-9-а
ктп 5-9-а
 
Drupal Optimization
Drupal OptimizationDrupal Optimization
Drupal Optimization
 
відкритий урок місто
відкритий урок містовідкритий урок місто
відкритий урок місто
 
Informatyka 7-klas-bondarenko-2020
Informatyka 7-klas-bondarenko-2020Informatyka 7-klas-bondarenko-2020
Informatyka 7-klas-bondarenko-2020
 
1
11
1
 
7 in b_2020
7 in b_20207 in b_2020
7 in b_2020
 
10 клас инф технолог профиль завадський икт
10 клас инф технолог профиль завадський икт10 клас инф технолог профиль завадський икт
10 клас инф технолог профиль завадський икт
 
10 клас инф технолог профиль завадський икт
10 клас инф технолог профиль завадський икт10 клас инф технолог профиль завадський икт
10 клас инф технолог профиль завадський икт
 
10 клас инф технолог профиль Завадський икт
10 клас инф технолог профиль Завадський икт10 клас инф технолог профиль Завадський икт
10 клас инф технолог профиль Завадський икт
 
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
 
11 информ костриба_лещук_2_пособ_2011_укр
11 информ костриба_лещук_2_пособ_2011_укр11 информ костриба_лещук_2_пособ_2011_укр
11 информ костриба_лещук_2_пособ_2011_укр
 
інформатика 2017 2018
інформатика 2017 2018інформатика 2017 2018
інформатика 2017 2018
 

More from Fwdays

"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil TopchiiFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro SpodaretsFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...Fwdays
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...Fwdays
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...Fwdays
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...Fwdays
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...Fwdays
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...Fwdays
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...Fwdays
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...Fwdays
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra MyronovaFwdays
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...Fwdays
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...Fwdays
 
"Leadership, Soft Skills, and Personality Types for IT teams", Sergiy Tytenko
"Leadership, Soft Skills, and Personality Types for IT teams",  Sergiy Tytenko"Leadership, Soft Skills, and Personality Types for IT teams",  Sergiy Tytenko
"Leadership, Soft Skills, and Personality Types for IT teams", Sergiy TytenkoFwdays
 

More from Fwdays (20)

"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 
"Leadership, Soft Skills, and Personality Types for IT teams", Sergiy Tytenko
"Leadership, Soft Skills, and Personality Types for IT teams",  Sergiy Tytenko"Leadership, Soft Skills, and Personality Types for IT teams",  Sergiy Tytenko
"Leadership, Soft Skills, and Personality Types for IT teams", Sergiy Tytenko
 

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Yevsyuhov

  • 1. Як Preply зменшила час розробки ML моделі з 1 місяця до 1 дня Євген Євсюгов, Senior Software Engineer @ Preply
  • 3. З чого ми почали?
  • 4. Як працювала модель спочатку? Розробка і тренування: Jupyter Notebooks на локальних машинах Джерело даних: декілька баз даних, що join’ились за допомогою pandas Калькуляція ранжування: Jenkins job Інтеграція з бекендом: Elasticsearch Час на ітерацію: більше місяця
  • 5. Як ми це вирішували? Поступово. 1. Джерело даних. 2. Розробка (і production). 3. Джерело даних (ще раз). 4. Розробка і production (ще раз).
  • 8. Стало краще 1. Pandas всередині Jenkins “тупив”, бо даних було забагато 2. Перевикористали уже готову інфраструктуру (Snowflake) 3. Стало набагато зручніше рахувати features a. Було: SQL in python, pandas to join b. Стало: SQL in python
  • 9. Які проблеми залишились? 1. Jenkins досі виглядає, як “костиль”. 2. Розробка і тренування моделі досі відбуваються на локальних машинах. 3. SQL запити туплять.
  • 10. Що зробили з SQL запитами? Оптимізували. 1. Йшли від найбільш “важких” до найбільш “легких” запитів. 2. Більшість запитів оптимізувати було тривіально — використання pre-computed tables для зменшення часу на сканування таблиці.
  • 12. Мінуси Sagemaker 1. AWS Console UI 2. Доволі “сирий” продукт a. Ноутбуки “помирали”, якщо сесія закінчиться b. Виглядає як швидка обгортка AWS над Jupyter notebooks
  • 14. Переваги databricks 1. Легка інтеграція з існуючими хмарними вендорами: AWS, GCP тощо 2. PySpark з коробки 3. “Вертикальне” рішення для data-задач: a. Notebooks b. Jobs c. Data Lake d. Streaming e. MLFlow f. MLOps
  • 18. Проблемa model_a – collect_impressions_features.sql – collect_profile_views_features.sql model_b – collect_impressions_features.sql – collect_profile_views_features.sql – collect_lessons_features.sql model_c – collect_impressions_features.sql – collect_profile_views_features_new.sql – collect_lessons_features.sql
  • 19. Feature store Ціль: перевикористання features Вирішення: 1. Обраховуємо features кожного дня і зберігаємо 2. SQL використовує features з feature store Підхід: 1. Feast 2. Databricks feature store 3. Самописний “фреймворк” поверх Snowflake
  • 20. Чому самописний “фреймворк”? 1. Готові продукти не вирішують основної задачі: “як рахувати features?”. 2. Можливість власних абстракцій для калькуляції features a. Testing b. Monitoring c. Вимоги специфічні до нашої моделі Проблема: абстракції над features лімітують архітектуру моделі.
  • 21. Пролемa залишилась model_a – collect_impressions_features.sql – collect_profile_views_features.sql model_b – collect_impressions_features.sql – collect_profile_views_features.sql – collect_lessons_features.sql 1. Зменшили к-сть рядків в SQL запитах з тисяч до десятків/сотень 2. Значно пришвидшилась швидкість збирання даних для тренування
  • 22. MLFlow / MLOps 1. Data scientists можуть натренувати модель “однією кнопокою” 2. Версіонування 3. Облік: які features використовує модель, на якому наборі даних тренувались 4. Статистичні метрики (AUC, NDCG тощо) зберігаються в одному місці (databricks) 5. Бізнес метрики автоматични рахуються та збергіються в одному місці (databricks)
  • 23. Як зараз проходить тренування моделі? 1. (Опціонально) Додати нові features у feature store 2. Описати модель: a. Які features з feature store використовувати b. Прописати SQL для targets c. Прописати “пост-процессинг”, наприклад feature_c = feature_a / feature_b 3. Натиснути “одну кнопку” в databricks інтерфейсі
  • 24.
  • 25.
  • 27. Проблеми нашого підходу Feature store і MLOps лімітовані під нашу задачу: 1. Features калькулюються раз в день a. Якщо захочемо перераховуати ранжування погодинно — доведеться доробляти 2. Привʼязані до певного формату input/output a. Якщо захочемо робити іншу архітектуру, наприклад, real time — доведеться переробляти 3. Складність додавання features a. Накидати SQL-скриптик простіше, ніж додати feature у feature store по процесу
  • 28. Плюси нашого підходу Час на ітерацію: більше 1 місяця -> 1 день

Editor's Notes

  1. Доброго дня, мене звати Євген Євсюгов, я Senior Software Engineer в компанії Preply. Сьгогодні я буду розповідати про те, як Preply зменшила час розробки ML моделі з 1 місяця до 1 дня. Хочу зазначити, що ця доповідь буде більше про процеси, ніж про технології, але певні інструменти я тут також згадаю. Оскільки це доповідь про data science, тому я почну з того, яку задачу ми вирішуємо, а для цього спочатку розповім чим ми в Preply займаємось.
  2. Preply — це продукт, який дозволяє вам знайти викладачів для занять 1 на 1. В основному це заняття з англійської, німецької, іспанської та інших мов, але також є викладачі з математики, музики тощо. Рано чи пізно блукаючи по Preply ви потрапите на оцю сторінку, яку ми називаємо сторінкою пошукової видачі. Тут є список репетиторів, заняття з якими ви можете забронювати. І їх порядок дуже важливий, бо якщо ми покажемо вам тут не дуже привабливих для вас як студента викладачів, то ви підете з платформи і не повернетесь, а якщо покажемо хороших — то ви будете дуже довго користуватись нашим продуктом. І моя команда займається якраз тим, що ми за допомогою ML-моделі намагаємось вирішити цю задачу.
  3. Коли команда сформувалась, то у нас було 2 дата саянтиста і 1 модель, що була ними натренована. Дата саянтисти робили модель “як могли” і раз в місяць-два приходили до бекенд розробників з .pkl файлом, щоб ті запустили новий АБ-тест. Ідея нової команди була в тому, щоб докинути в команду інженерів, і швидше ітерувати над моделлю. Одним з цих інженерів був і я.
  4. Як же ж зʼявлявся цей .pkl файл? Уся розробка велась на локальних машинах, де піднімались джупітер ноутбуки і збирали дані або тренували модель. Було декілька різних джерел даних, які джойнились прямо у ноутбуці за допомогою pandas. Для того, щоб це все якось рахувалось в production, запускалась окрема дженкінс джоба. І коли ця джоба відпрацьовувала, результати моделі потрапляли в elasticsearch, який вже підхоплював бекенд. Як можна зрозуміти, проблеми тут є на кожному з етапів — від того, що модель може впасти, бо відвалиться вай-фай вдома або в офісі, до того, що jenkins джоба також може впасти, бо їй не вистачить памʼяті. Зібрати дані для тренування також займало більше тижня.
  5. Як ми це вирішували? Поступово. Ми почали з того, щоб зробити єдину точку входу для джерела даних. Потім ми почали покращувати інструменти розробки і запуску всього цього в production. Потім ми знову подивилось на те, що у нас вийшло і вирішили ще покращити джерело даних і розробку.
  6. Приблизно таку архітектуру ви можете собі уявити. У нас були дві основні бази даних — AWS Redshift, де зберігались івенти і постгрес, де зберігалась основні дані. Це все добро потрапляло в дженкінс, який вже за допомогою пандас це все джойнив, запихував в модель і потім зберігав.
  7. Перше, що ми зробили — це замінили постгрес і редшифт на сноуфлейк. Тут нам пощастили, адже паралельно інша команда уже налаштувала всі реплікації і ETL потрібні для цього, тому тут нам залишалось лише трішки переписати SQL. Ми також забрали механізм join з pandas, адже тепер всі дані лежали в сноуфлейку і джойнити їх можна було прямо там.
  8. Як я вже казав, стало краще. Основну частину по роботі з даними ми перенесли в Snowflake, що значно полеглшило нам як і локальну розробку, так і роботу наших джобів в проді.
  9. Але ми все ще були далекі від ідеалу. Jenkins досі виглядає як “костиль”. Розробка і тренування моделі досі відбуваються на локальних машинах. SQL запити дуууужее повільні, навіть зі сноуфлейком.
  10. Ми вирішили почати з SQL. Оптимізовувати його було досить тривіально — просто налаштували щоденні ETL, які готували дані для основних запитів, що значно пришвидшило швидкодію.
  11. Далі ми вирішили взятись за розробку самих моделей. Ми вирішили переїжджати з локальних ноутбуків на cloud-рішення, яке дозволить нам тренувати моделі на потужніших машинах, ніж макбуки. Оскільки ми дуже активно використоємо AWS в преплі, то ми зразу обрали AWS Sagemaker. Це такий сервіс від AWS, який по факту є обгорткою над jupyter ноутбуками і дозволяє запускати ці самі ноутбуки на AWS машинах.
  12. Працюючи з Sagemaker ми зразу стикнулись з проблемами. Слід зазначити, що це був стан речей 2 роки назад, можливо зараз все змінилось. На мою думку, sagemaker був доволі сирим продуктом на той — працюючи з ним вам доведеться працювати з AWS Console UI, який є далеко не найкращим UI у світі. Але основна наша проблема була в тому, що ноутбуки “помирали” через деякий час. Уявіть собі ситуацію, ви заходите в Sagemaker, запускаєте тренування моделі в свому ноутбуці, потім ідете гуляти, в цей час ноутбук засинає, сесія з AWS перестає бути дійсною і ноутбук помирає. Ви повертаєтесь, бачите це і сумуєте. Консультанти з AWS нам намагались пояснити, що це було звʼязано з тим, що sagemaker — це обгортка над jupyter ноутбуками, а це сам їх логіка так помирати, але я досі не до кінця розумію, як це повинно було працювати на практиці.
  13. Отож тоді нам порадили також глянути на databricks.
  14. І датабрікс виявився коханням з першого погляду: у ньому було все, що нам потрібно та навіть більше. Він ідеально інтегрується з AWS, дає нам доступ до pyspark, а також надає вертикальне рішення для сучасних задач повʼязаних з даними: …. І ви можете щось з цього використовувати, щось не використовувати, щось підлаштовувати під себе. Плюсом також є те, що різні їх продукти класно інтегруються між собою, наприклад MLOps і Feature store тощо. Обіцяю, що датабрікс мені не заплатили, щоб я їх рекламував, вони просто класні.
  15. Отож резюмуючи, ми прийшли до такої архітектури. Локальна розробка відбувається в датабріксі, прод ми також туди перевели. Дані тягнуться з сноуфлейку, процесяться в датабріксі за допомогою пандас, а потім потрапляють в еластік. Однією з проблем досі лишався перформанс, а саме перформанс пандасу для препроцесингу даних, перед тим як закинути їх в модель.
  16. І тут нам на допомогу також прийшов датабрікс. Він з коробки дозволяє працювати з pyspark. Якщо ви не знаєте, то pyspark — це такий фремворк для розподілених обчислень, можете уявити, як пандас, що запускається на кластері, а не на одній машині. Ми досить просто переписали наш процесинг з pandas на pyspark і залишились задоволені нашим пайплайном.
  17. З нашого досвіду snowflake і датабрікс — це класно, sagemaker — не класно. Основна проблема — за все треба платити, і ці продукти можуть бути доволі дорогими. Тут важливо зробити чекпойнт. Все що я до цього описував і те, до чого ми прийшли, теоретично лягає на будь-яку команду або компанію, яка займається ML. Далі я буду розповідати про речі, які вже більше специфічні для преплі і можуть не працювати для вас. Коли ми нарешті налаштували доступ до даних, в нас зʼявився класний датабрікс, то ми перейшли на наступну сходинку піраміди маслоу. Ми почали собі задавати питання: “а як правильно діставати дані?”, “а як правильно організовувати код?”, “а як правильно трекати модель?”. І таким чином у нас зʼявилась ціль — ми хочемо тренувати модель “однією кнопкою”.
  18. Перша проблема, яка стояла на нашому шляху до тренування однією кнопкою, це наша організація коду. Не забувайте, що ми весь час вирішуємо одну і ту саму задачу — ранжування викладачів.