ݺߣ

ݺߣShare a Scribd company logo
Павел Клеменков
p.klemenkov@rambler-co.ru
Moscow Spark
https://t.me/ramblerapachesparkbot
SSID: RG
Логин: ramblerco
Пароль: ramblerco
Давайте знакомиться!
Moscow Spark
Пайплайн машинного обучения на Apache Spark
Пайплайн машинного обучения на Apache Spark
Пайплайн машинного обучения на Apache Spark
Пайплайн машинного обучения на Apache Spark
В Rambler&Co Spark используют
• Отдел машинного обучения (10 человек)
• DMP (8 человек)
• Топ-100 (3 человека)
Полная версия доклада
«Пайплайн машинного обучения на Apache
Spark» доступна на
http://www.highload.ru/2016/abstracts/2447.html
Пайплайн машинного обучения на Apache Spark
Что хотим от математика-программиста?
• Качественные эксперименты быстро
• Доведение эксперимента до продакшена
• Поддержка и багфиксы
WTF is this shit?!
All my code works!
And I didn’t break the build!
Качественный эксперимент быстро
• Знакомое окружение
• Все новое и крутое
Эксперимент в продакшене
• Простое тестирование
• Окружение как на продакшене
• Автоматизация
Эксплуатация и багфиксы
• Простой и наглядный мониторинг
• Адресные оповещения
• Доступная отладка
С чего стартовали?
HDFS
+
Hive
SCP
NFS
Custom
scripts
Redis
cluster
Hive
streaming
ML
(local)
Cron +
joblocker
Hive
streaming
Monitoring
(DIY)
ML
(local)
You got a problem
with that?!
HDFS
+
Hive
Redis
cluster
Hive
streaming
ML
(local)
Airflow
Hive
streaming
ML
(local)
Kafka
Gobblin
Graphite Grafana
Со стриммингом одни проблемы (
Diagnostic Messages for this Task:
Error: java.lang.RuntimeException: Hive Runtime Error
while closing operators
SELECT TRANSFORM(*) USING 'python script.py’
FROM table;
Очень долго готовить данные
Типичный алгоритм эксперимента
• Выгрузить сэмпл из Hive
• Сконвертировать в Pandas
• Поиграть с данными
• Понять, что чего-то не хватает
• Выгрузить другой сэмпл из Hive…
Пайплайн машинного обучения на Apache Spark
HDFS
+
Hive
Redis
cluster
Hive
streaming
Airflow
Kafka
Gobblin
Graphite Grafana
Spark +
ML
Почему ?
It is in-memory and
there is a Python API!
Pandas vs Spark Dataframe
import pandas as pd
!hive -e "select * from users" >
dt.csv
df = pd.read_csv("dt.csv")
counts = df[df.age > 30]
.groupby("sex")
.count()
from pyspark.sql import HiveContext
ctx = HiveContext(sc)
df = ctx.sql("select * from
users")
counts = df[df.age > 30]
.groupby("sex")
.count()
А на самом деле…
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
Use XGBoost, Luke
© Unknown Kaggler
Почему мы не используем
Spark.ML?
Причина №1
• Vowpal Wabbit и XGBoost в старом пайплайне
• Новый код для напилки фич
Причина №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)
Причина №3Качествонаобучении
Объем обучающей выборки
Но мы верили, что
все изменится :)
СПАСИБО!

More Related Content

Пайплайн машинного обучения на Apache Spark