SlideShare a Scribd company logo
Дмитрий Носов
Математик-программист
Тестируем Vowpal Wabbit, XGBoost и Spark.ML на больших данных
Criteo 1 TiB benchmark
Criteo 1 TiB benchmark
Мотивация
• Появилась задача, не укладывающаяся в традиционную
схему “Local fit + Distributed apply” – предсказание CTR
• В открытых источниках не существует полноценного
(распределенного) теста Spark.ML
Criteo 1 TiB benchmark
Данные
• Открытый датасет – логи показов рекламы Criteo
• 1 TiB, около 4 млрд строк, 24 дня
• 40 колонок:
зависимая переменная (факт клика – {0, 1})
13 числовых фичей
26 категориальных фичей (хэши)
Criteo 1 TiB benchmark
Данные
Criteo 1 TiB benchmark
Подготовка данных
• Сэмплы для обучения – , строк, n ∈ {4, 5, …, 9},
все дни кроме последнего
• Сэмпл для теста – 1 млн строк, последний день
• Criteo → LibSVM (для XGBoost) → VW (для Vowpal Wabbit)
↳DataFrame (для Spark.ML)
3⋅10
n
10
n
Criteo 1 TiB benchmark
План эксперимента
1.Взять сэмпл 10000 строк и обучить модель с настройками
по-умолчанию
2.Повторять, увеличивая сэмпл, пока хватает терпения
ждать результат
3.Сделать пункты 1, 2 для VW и XGBoost, замеряя время
обучения, качество модели, используемые ресурсы
4.Сделать пункты 1, 2 для моделей Spark.ML и сравнить с VW
и XGBoost
Criteo 1 TiB benchmark
Модели
• Vowpal Wabbit
• XGBoost in-memory
(exact greedy algorithm)
• XGBoost out-of-core
(approximate algorithm)
• Spark.ML classifiers:
• Logistic regression
• Decision tree
• Random forest
• Gradient-boosted trees
• Multilayer perceptron
• Naive Bayes
Criteo 1 TiB benchmark
Но...
Criteo 1 TiB benchmark
“Но” №1 – XGBoost
Criteo 1 TiB benchmark
“Но” №1 – XGBoost
У XGBoost по-умолчанию всего 10 деревьев!
Criteo 1 TiB benchmark
“Но” №1 – XGBoost
Нужно делать оптимизацию гиперпараметров моделей:
• Сэмпл в 1 млн строк
• 5-fold cross-validation
• Случайная выборка из сетки значений параметров
Criteo 1 TiB benchmark
“Но” №2 – Spark.ML
Spark.ML:
• Gradient-boosted trees
• Multilayer perceptron
– нет предсказания вероятности классов, только {0, 1}
⇒ не подходят для предсказания CTR
Criteo 1 TiB benchmark
“Но” №3 – Spark.ML
Criteo 1 TiB benchmark
“Но” №3 – Spark.ML
Criteo 1 TiB benchmark
“Но” №3 – Spark.ML
Spark.ML – оставили только:
• Binomial logistic regression
• Random forest
Criteo 1 TiB benchmark
Часть 1
Локальное обучение VW & XGBoost
Criteo 1 TiB benchmark
VW & XGBoost – качество
Criteo 1 TiB benchmark
VW & XGBoost – время
Criteo 1 TiB benchmark
VW & XGBoost – ресурсы
Criteo 1 TiB benchmark
VW & XGBoost – выводы
• XGBoost out-of-core ≈ in-memory по качеству, но на
порядок медленнее
• XGBoost in-memory на порядок медленнее VW
• XGBoost ≈ VW по качеству на большем на порядок
сэмпле
Criteo 1 TiB benchmark
Часть 2
Распределенное обучение Spark.ML
Criteo 1 TiB benchmark
Spark.ML – данные
• Binomial logistic regression – one-hot-encoding (*) hashing
trick, 100k hashes
• Random forest – данные как есть, 39 фичей (так как даже
на 1000 hashes очень долго обучается)
(*) – очень высокая кардинальность категориальных фичей
Criteo 1 TiB benchmark
Почему 100k hashes?
Criteo 1 TiB benchmark
Spark.ML – настройки
Кластер:
• 4 ядра и 16 GiB памяти на executor
• (сэмпл < строк) 64 executors – всего 256 ядер и 1 TiB
памяти
• (сэмпл ⩾ строк) 128 executors – всего 512 ядер и 2 TiB
памяти
10
9
10
9
Criteo 1 TiB benchmark
Spark.ML – качество
Criteo 1 TiB benchmark
Spark.ML – время
Criteo 1 TiB benchmark
Spark.ML – time vs. cores
• Сэмпл
• Число ядер от 5 до 50
10
7
Criteo 1 TiB benchmark
Spark.ML – выводы
• Random forest – медленный, а с большим числом фичей
очень медленный
• Logistic regression нельзя хорошо приготовить
одновременно на всем диапазоне сэмплов
• Не стоит выделять слишком много ресурсов на
небольшие задачи
Criteo 1 TiB benchmark
Сравнение
Локальные и распределенные модели
Criteo 1 TiB benchmark
Качество
Criteo 1 TiB benchmark
Время
Criteo 1 TiB benchmark
Выводы
• На больших данных Spark.ML быстрее, чем и XGBoost, и VW
• Но есть нюансы:
медленная работа с большими векторами
высокие побочные затраты на параллельные вычисления
для мелких задач
• В целом: для разных объемов данных – разные инструменты
Criteo 1 TiB benchmark
Мы на Github
https://git.io/v9sNz
Criteo 1 TiB benchmark
Спасибо!

More Related Content

Similar to Criteo 1TiB Benchmark

Правильная работа с динамической памятью в высоконагруженных проектах (Максим...
Правильная работа с динамической памятью в высоконагруженных проектах (Максим...Правильная работа с динамической памятью в высоконагруженных проектах (Максим...
Правильная работа с динамической памятью в высоконагруженных проектах (Максим...Ontico
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDB
Sergey Petrunya
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
Ontico
 
High Load
High LoadHigh Load
High Load
alexeymaykov
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreet
Ontico
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
it-people
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data
MATLAB
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Ontico
 
#dotnetby meetup - 32 Как и зачем готовить ’кластерные’ СУБД
#dotnetby meetup - 32 Как и зачем готовить ’кластерные’ СУБД#dotnetby meetup - 32 Как и зачем готовить ’кластерные’ СУБД
#dotnetby meetup - 32 Как и зачем готовить ’кластерные’ СУБД
Anatoly Popov
 
Не бойся, это всего лишь данные... просто их много
Не бойся, это всего лишь данные... просто их многоНе бойся, это всего лишь данные... просто их много
Не бойся, это всего лишь данные... просто их много
Roman Dvornov
 
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере ResharperCodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере ResharperCodeFest
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Platonov Sergey
 
"Многомерные индексы в РСУБД с открытым кодом" Бородин Андрей , Октоника, УрФУ
"Многомерные индексы в РСУБД с открытым кодом" Бородин Андрей , Октоника, УрФУ"Многомерные индексы в РСУБД с открытым кодом" Бородин Андрей , Октоника, УрФУ
"Многомерные индексы в РСУБД с открытым кодом" Бородин Андрей , Октоника, УрФУ
it-people
 
Cassandra:Курс молодого бойца
Cassandra:Курс молодого бойцаCassandra:Курс молодого бойца
Cassandra:Курс молодого бойца
Igor Khokhryakov
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Ontico
 
Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...
Ontico
 
Scala performance под капотом
Scala performance под капотомScala performance под капотом
Scala performance под капотом
Roman Grebennikov
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данныхSiel01
 
20100307 virtualization igotti_lecture05
20100307 virtualization igotti_lecture0520100307 virtualization igotti_lecture05
20100307 virtualization igotti_lecture05Computer Science Club
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Ontico
 

Similar to Criteo 1TiB Benchmark (20)

Правильная работа с динамической памятью в высоконагруженных проектах (Максим...
Правильная работа с динамической памятью в высоконагруженных проектах (Максим...Правильная работа с динамической памятью в высоконагруженных проектах (Максим...
Правильная работа с динамической памятью в высоконагруженных проектах (Максим...
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDB
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
 
High Load
High LoadHigh Load
High Load
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreet
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
 
#dotnetby meetup - 32 Как и зачем готовить ’кластерные’ СУБД
#dotnetby meetup - 32 Как и зачем готовить ’кластерные’ СУБД#dotnetby meetup - 32 Как и зачем готовить ’кластерные’ СУБД
#dotnetby meetup - 32 Как и зачем готовить ’кластерные’ СУБД
 
Не бойся, это всего лишь данные... просто их много
Не бойся, это всего лишь данные... просто их многоНе бойся, это всего лишь данные... просто их много
Не бойся, это всего лишь данные... просто их много
 
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере ResharperCodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
 
"Многомерные индексы в РСУБД с открытым кодом" Бородин Андрей , Октоника, УрФУ
"Многомерные индексы в РСУБД с открытым кодом" Бородин Андрей , Октоника, УрФУ"Многомерные индексы в РСУБД с открытым кодом" Бородин Андрей , Октоника, УрФУ
"Многомерные индексы в РСУБД с открытым кодом" Бородин Андрей , Октоника, УрФУ
 
Cassandra:Курс молодого бойца
Cassandra:Курс молодого бойцаCassandra:Курс молодого бойца
Cassandra:Курс молодого бойца
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
 
Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...
 
Scala performance под капотом
Scala performance под капотомScala performance под капотом
Scala performance под капотом
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
 
20100307 virtualization igotti_lecture05
20100307 virtualization igotti_lecture0520100307 virtualization igotti_lecture05
20100307 virtualization igotti_lecture05
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 

More from RamblerML

Погружаемся в Catalyst
Погружаемся в CatalystПогружаемся в Catalyst
Погружаемся в Catalyst
RamblerML
 
Про аналитику и серебряные пули
Про аналитику и серебряные пулиПро аналитику и серебряные пули
Про аналитику и серебряные пули
RamblerML
 
Декларативные даги в Apache Airflow
Декларативные даги в Apache AirflowДекларативные даги в Apache Airflow
Декларативные даги в Apache Airflow
RamblerML
 
Тензорные разложения для рекомендаций на Spark
Тензорные разложения для рекомендаций на Spark Тензорные разложения для рекомендаций на Spark
Тензорные разложения для рекомендаций на Spark
RamblerML
 
Динамическая аллокация ресурсов или как жить в условиях общежития?
Динамическая аллокация ресурсов или как жить в условиях общежития? Динамическая аллокация ресурсов или как жить в условиях общежития?
Динамическая аллокация ресурсов или как жить в условиях общежития?
RamblerML
 
Пайплайн машинного обучения на Apache Spark
Пайплайн машинного обучения на Apache SparkПайплайн машинного обучения на Apache Spark
Пайплайн машинного обучения на Apache Spark
RamblerML
 
Программирование на PySpark
Программирование на PySparkПрограммирование на PySpark
Программирование на PySpark
RamblerML
 
Минуты из жизни со Spark
Минуты из жизни со SparkМинуты из жизни со Spark
Минуты из жизни со Spark
RamblerML
 
Архитектура Apache Spark
Архитектура Apache SparkАрхитектура Apache Spark
Архитектура Apache Spark
RamblerML
 

More from RamblerML (9)

Погружаемся в Catalyst
Погружаемся в CatalystПогружаемся в Catalyst
Погружаемся в Catalyst
 
Про аналитику и серебряные пули
Про аналитику и серебряные пулиПро аналитику и серебряные пули
Про аналитику и серебряные пули
 
Декларативные даги в Apache Airflow
Декларативные даги в Apache AirflowДекларативные даги в Apache Airflow
Декларативные даги в Apache Airflow
 
Тензорные разложения для рекомендаций на Spark
Тензорные разложения для рекомендаций на Spark Тензорные разложения для рекомендаций на Spark
Тензорные разложения для рекомендаций на Spark
 
Динамическая аллокация ресурсов или как жить в условиях общежития?
Динамическая аллокация ресурсов или как жить в условиях общежития? Динамическая аллокация ресурсов или как жить в условиях общежития?
Динамическая аллокация ресурсов или как жить в условиях общежития?
 
Пайплайн машинного обучения на Apache Spark
Пайплайн машинного обучения на Apache SparkПайплайн машинного обучения на Apache Spark
Пайплайн машинного обучения на Apache Spark
 
Программирование на PySpark
Программирование на PySparkПрограммирование на PySpark
Программирование на PySpark
 
Минуты из жизни со Spark
Минуты из жизни со SparkМинуты из жизни со Spark
Минуты из жизни со Spark
 
Архитектура Apache Spark
Архитектура Apache SparkАрхитектура Apache Spark
Архитектура Apache Spark
 

Criteo 1TiB Benchmark

  • 1. Дмитрий Носов Математик-программист Тестируем Vowpal Wabbit, XGBoost и Spark.ML на больших данных Criteo 1 TiB benchmark
  • 2. Criteo 1 TiB benchmark Мотивация • Появилась задача, не укладывающаяся в традиционную схему “Local fit + Distributed apply” – предсказание CTR • В открытых источниках не существует полноценного (распределенного) теста Spark.ML
  • 3. Criteo 1 TiB benchmark Данные • Открытый датасет – логи показов рекламы Criteo • 1 TiB, около 4 млрд строк, 24 дня • 40 колонок: зависимая переменная (факт клика – {0, 1}) 13 числовых фичей 26 категориальных фичей (хэши)
  • 4. Criteo 1 TiB benchmark Данные
  • 5. Criteo 1 TiB benchmark Подготовка данных • Сэмплы для обучения – , строк, n ∈ {4, 5, …, 9}, все дни кроме последнего • Сэмпл для теста – 1 млн строк, последний день • Criteo → LibSVM (для XGBoost) → VW (для Vowpal Wabbit) ↳DataFrame (для Spark.ML) 3⋅10 n 10 n
  • 6. Criteo 1 TiB benchmark План эксперимента 1.Взять сэмпл 10000 строк и обучить модель с настройками по-умолчанию 2.Повторять, увеличивая сэмпл, пока хватает терпения ждать результат 3.Сделать пункты 1, 2 для VW и XGBoost, замеряя время обучения, качество модели, используемые ресурсы 4.Сделать пункты 1, 2 для моделей Spark.ML и сравнить с VW и XGBoost
  • 7. Criteo 1 TiB benchmark Модели • Vowpal Wabbit • XGBoost in-memory (exact greedy algorithm) • XGBoost out-of-core (approximate algorithm) • Spark.ML classifiers: • Logistic regression • Decision tree • Random forest • Gradient-boosted trees • Multilayer perceptron • Naive Bayes
  • 8. Criteo 1 TiB benchmark Но...
  • 9. Criteo 1 TiB benchmark “Но” №1 – XGBoost
  • 10. Criteo 1 TiB benchmark “Но” №1 – XGBoost У XGBoost по-умолчанию всего 10 деревьев!
  • 11. Criteo 1 TiB benchmark “Но” №1 – XGBoost Нужно делать оптимизацию гиперпараметров моделей: • Сэмпл в 1 млн строк • 5-fold cross-validation • Случайная выборка из сетки значений параметров
  • 12. Criteo 1 TiB benchmark “Но” №2 – Spark.ML Spark.ML: • Gradient-boosted trees • Multilayer perceptron – нет предсказания вероятности классов, только {0, 1} ⇒ не подходят для предсказания CTR
  • 13. Criteo 1 TiB benchmark “Но” №3 – Spark.ML
  • 14. Criteo 1 TiB benchmark “Но” №3 – Spark.ML
  • 15. Criteo 1 TiB benchmark “Но” №3 – Spark.ML Spark.ML – оставили только: • Binomial logistic regression • Random forest
  • 16. Criteo 1 TiB benchmark Часть 1 Локальное обучение VW & XGBoost
  • 17. Criteo 1 TiB benchmark VW & XGBoost – качество
  • 18. Criteo 1 TiB benchmark VW & XGBoost – время
  • 19. Criteo 1 TiB benchmark VW & XGBoost – ресурсы
  • 20. Criteo 1 TiB benchmark VW & XGBoost – выводы • XGBoost out-of-core ≈ in-memory по качеству, но на порядок медленнее • XGBoost in-memory на порядок медленнее VW • XGBoost ≈ VW по качеству на большем на порядок сэмпле
  • 21. Criteo 1 TiB benchmark Часть 2 Распределенное обучение Spark.ML
  • 22. Criteo 1 TiB benchmark Spark.ML – данные • Binomial logistic regression – one-hot-encoding (*) hashing trick, 100k hashes • Random forest – данные как есть, 39 фичей (так как даже на 1000 hashes очень долго обучается) (*) – очень высокая кардинальность категориальных фичей
  • 23. Criteo 1 TiB benchmark Почему 100k hashes?
  • 24. Criteo 1 TiB benchmark Spark.ML – настройки Кластер: • 4 ядра и 16 GiB памяти на executor • (сэмпл < строк) 64 executors – всего 256 ядер и 1 TiB памяти • (сэмпл ⩾ строк) 128 executors – всего 512 ядер и 2 TiB памяти 10 9 10 9
  • 25. Criteo 1 TiB benchmark Spark.ML – качество
  • 26. Criteo 1 TiB benchmark Spark.ML – время
  • 27. Criteo 1 TiB benchmark Spark.ML – time vs. cores • Сэмпл • Число ядер от 5 до 50 10 7
  • 28. Criteo 1 TiB benchmark Spark.ML – выводы • Random forest – медленный, а с большим числом фичей очень медленный • Logistic regression нельзя хорошо приготовить одновременно на всем диапазоне сэмплов • Не стоит выделять слишком много ресурсов на небольшие задачи
  • 29. Criteo 1 TiB benchmark Сравнение Локальные и распределенные модели
  • 30. Criteo 1 TiB benchmark Качество
  • 31. Criteo 1 TiB benchmark Время
  • 32. Criteo 1 TiB benchmark Выводы • На больших данных Spark.ML быстрее, чем и XGBoost, и VW • Но есть нюансы: медленная работа с большими векторами высокие побочные затраты на параллельные вычисления для мелких задач • В целом: для разных объемов данных – разные инструменты
  • 33. Criteo 1 TiB benchmark Мы на Github https://git.io/v9sNz
  • 34. Criteo 1 TiB benchmark Спасибо!