В докладе рассмотрим нашу старую архитектуру пайплайна машинного обучения, обратим внимание на ее недостатки как с точки зрения инфраструктуры и автоматизации, так и с точки зрения настройки моделей машинного обучения и проведения экспериментов. Разберемся с архитектурой Apache Spark, и почему мы решили его использовать. Подробно ознакомимся с новой архитектурой нашего пайплайна и тем, как она позволила оптимизировать обнаружение и устранение проблем, ускорила и упростила работу data scientist'ов по проведению экспериментов и доведения их до продакшена. Также затронем вопросы написания тестов и процесса разработки ПО на больших данных.
5. Мотивационный пример
• Обучили модель CTR (PySpark,
vowpal wabbit
• Предикт ~= baseline CTR
• Закинули модель в сервис
(Vert.X, VW JNI)
• Предикт != baseline CTR
• В чем дело?
• Из-за sparse-формата,
потерялись некоторые фичи
6. Что хотим от математика-программиста?
• Качественные эксперименты быстро
• Доведение эксперимента до продакшена
• Поддержка и багфиксы
30. Diagnostic Messages for this Task:
Error: java.lang.RuntimeException: Hive Runtime Error
while closing operators
SELECT TRANSFORM(*) USING 'python script.py'
FROM table;
35. Типичный алгоритм эксперимента
• Выгрузить сэмпл из Hive
• Сконвертировать в Pandas
• Поиграть с данными
• Понять, что чего-то не хватает
• Выгрузить другой сэмпл из Hive…
43. SPARK-15139
PySPark TreeEnsemble
missing methods
SPARK-18177
Add missing ‘subsamplingRate’
of pyspark GBTClassifier
SPARK-17025
Cannot persist PySpark ML
Pipeline model that includes
custom Transformer
SPARK-15194
Add Python ML API for
MultivariateGaussian
60. Причина №1
• Vowpal Wabbit и XGBoost в старом пайплайне
• Новый код для напилки фич
61. Причина №2
SPARK-14374
PySpark ml GBTClassifier, Regressor
support export/import
(Resolved: 15/Apr/16)
SPARK-13034
PySpark ml.classification support
export/import
(Resolved: 16/Mar/16)
70. Timing (100 executors – 8gb, 2 vcores)
Подзадача Время
Загрузить и сджойнить фичи 0:08:49
Сконвертировать трейн в Pandas 0:07:43
Настройка модели 0:01:44
Вычисление качества 0:04:44
Применение модели 0:46:07
Сконвертировать вероятность в ответ 0:02:24
Итого 1:13:05