SlideShare a Scribd company logo
Павел Велихов, Chief Science Officer @ Toprater.com
Миллиард отзывов и
комментариев и Big Data
Полезные советы, опыт и
грабли по продвинутому
NLP на больших объемах
данных
Toprater.com - площадка, где собираются мнения со всего интернета
относительно любых объектов e-commerce.
Первый шаг - собрать существующие мнения и их
проанализировать. Нас интересуют сотни и тысячи критериев, о
которых писалось в отзывах и которые помогают выбрать лучшее
Как пользоваться такой системой?
❖ Хочу поехать на лыжах покататься, но чтобы был
бассейн для детей и аниматоры, которым их сдать. А
ночью танцы!
❖ Хочу фильм с самым классным 3D, где мощно бьются
на мечах и много крови!
Western sentimental orchestral melodies permeating every last gouge and lunge, and
especially throughout the sentimental scenes at the end.
Надо просто понимать отзывы :)
❖ Отзывы могут быть:
❖ Фейковые
❖ Саркастические/Юморные
❖ Написаны на языке Engrish
❖ и так далее
❖ После этого - загоняем данные в поисковик, и все!
❖ “It is day 87 and the horses have
accepted me as one of their own. I have
grown to understand and respect their
gentle ways. Now I question
everything I thought I once knew and
fear I am no longer capable of following
through with my primary objective. I
know that those who sent me will not
relent. They will send others in my
place... But we will be ready”
Amazon: Accoutrements Horse Head Mask
Не все отзывы оказываются полезными :)
Как понять смысл отзыва
❖ Научное название: Aspect-based sentiment analysis +
information extraction
❖ Задача сложная (вообще-то нерешаемая), но оказывается
достаточно высокой точности добиться можно.
❖ Для решения в ход идет все из арсенала NLP (Natural
Language Processing):
❖ грамматический разбор, онтологии, словари, ручные
системы, векторные представления слов и фраз,
“традиционное” и глубокое обучение.
Постановка задачи
Если вы ищете спокойную гостиницу
для отдыха с детьми, вам не сюда.
Отличный отель, уютные просторные комнаты,
но в ресторане шумно и курят.
Аспекты Сентименты
Постановка задачи
Текст
отзыва
Выделение
Аспектов
Оценка
по каждому
выделенному
аспекту
Набор
оценок
по аспектам
Данные для машинного обучения
❖ Если уже выделен критерий, легко собрать данные по оценке:
❖ Например, берем Amazon Mechanical Turk
❖ Кидаем туда задания, платим $0.01 за каждый ответ
❖ Несколько раз дублируем задание, чтобы не было левых ответов
❖ Можно даже потом сравниться с бенчмарками (но есть
проблемы, написал пост на linkedin: “Something is really wrong
with sentiment analysis and nobody seems to notice”).
❖ Для задачи выделения критерия - все сложнее, легче делать своими
людьми
Попробуем простое решение:
❖ По старинке (например, как в курсе у Ng):
❖ Берем простую модель bag-of-words:
❖ Строим классификатор в аспекты
❖ Вычисляем тональность каждого аспекта
Модель: {“был”, ”а”, ”но”, “номер”, “удобным”,
“ресторан”, “прокуренным”, “приятный”}
Попробуем простое решение:
❖ По старинке (например, как в курсе у Ng):
❖ Берем простую модель bag-of-words:
❖ Строим классификатор в аспекты
❖ Вычисляем тональность каждого аспекта
Модель: {“был”, ”а”, ”но”, “номер”, “удобным”,
“ресторан”, “прокуренным”, “приятный”}
Текст: “Номер был удобным, но
прокуренным, а ресторан приятный”
Более продвинутый NLP
❖ Части речи: существительное, глагол, прилагательное, наречие и т.п.
❖ Омонимия (разные значения одного слова):
❖ пример: Картина
❖ - картина на стене (“на стене висит картина”)
❖ - фильм (“снял хорошую картину”)
❖ - ситуация (“картина событий последних дней Помпей”)
❖ В английском тексте ~ 40% слов омонимичны (!)
❖ Грамматический разбор. Тут обычно 2 варианта:
❖ Constituency Tree
❖ Dependency Tree
Пример dependency tree
Very nice hotel with clean rooms,
but we didn't like the restaurant
Части речи
Зависимости
Точность разбора
❖ Стэнфорд дает около 92-93% точности
❖ .92^20 = 18%
❖ То есть обязательно накосячит в достаточно длинном
предложении
❖ Еще одна причина не налегать 100% на результаты
парсера
Небольшая экскурсия в Deep Learning
❖ Основные ключевые идеи Deep Learning для NLP:
❖ word embeddings. word2vec - только начало
❖ Recurrent NNs
❖ LSTM
❖ Recursive NNs
Deep Learning: Embeddings
wt-2 wt-1 wt wt+1 wt+2
wt
Размерность = 50…300
Слово, чье скалярное произведение с
wt максимально
Интересные под-пространства word2vec
PCA проекция на 2-х мерное пространство
Есть и проблемы:
Упс, мы сами не можем разделить классы,
ну и ни один алгоритм не сможет
Deep Learning: Embeddings
❖ Семантическое пространство слов
❖ Но:
❖ Омонимия?
❖ Разные подпростанства, насколько они хороши? Не
очень, но их можно подчинить, задав априорные
знания
❖ Например синтаксические подпростанства можно с
дополнением частей речи делать
❖ Смешанные модели (слова + символы)
Интеграция prior knowledge в word2vec
❖ Пихать в word2vec еще и разного рода ограничения:
❖ принадлежность к одному классу = минимальное
расстояние
❖ если класс маленький - более сильное
ограничение
❖ если большой - не так страшно
Deep Learning: примитивное использование
❖ word2vec - просто признак для машинного обучения
в модели bag-of-words. Не очень, даже
кластеризация - лучше
❖ С текстом мы имеем дело с последовательностью
слов, имеет смысл word2vec грамотнее.
❖ В глубоком обучении очень простая модель:
рекурентная нейронная сеть.
Recurrent Neural Network
Fruit flies like napalm in the morning
Классификатор
или
Регрессор
LTSM
❖ С рекуррентными сетями есть проблемы
❖ По сути, они почти ничего не запоминают
❖ LTSM: Long Term Short Memory
❖ Отдельные нейроны (gates) в сети отвечают за память:
❖ Запись, чтение, keep
❖ При эксплуатации - понятно, что это значит
❖ При тренировке - помогают правильно отправить ошибку
назад в прошлое
LTSM мини-пример
input
P
Write Keep
также называют
input gate
также называют
forget gate
P
Sum
P
Read
также называют
output gate
t0 t1 t2
https://class.coursera.org/neuralnets-2012-001/lecture/95
Recursive NN:
dep
dep
dep
dep
Что мы имеем с DL для NLP?
❖ Обычная история с DL - тренируем на огромных
объемах на GPUs, потом эксплуатируем на CPU
❖ В NLP (особенно LSTM и Recursive NNs) - сложно
переложить на GPU + алгоритм тренировки backprop во
времени или по структуре, да еще и embeddings.
Например, пока Theano грандиозного выигрыша не дает
❖ Плюс: если хотите использовать bleeding edge - надо
писать все самим. Иначе 1-2 годовалой давности
алгоритмы
Перейдем к теме Big Data!
❖ Изначально отзывы занимают какие-то GB
❖ Но “готовый” корпус занимает беспрецедентные объемы
данных, например:
❖ 20 тыс предложений = 400Mb данных
❖ В production - поменьше (не всегда), но просто раздать
людям поиграться - уже накладно
❖ Как организовать хранение и обработку данных, чтобы было
возможно ставить много экспериментов и быстро внедрять в
production?
Big Data: первый блин
❖ 200 машин на Google Cloud
❖ Cassandra на выделенном сервере
❖ GNU Parallel
❖ Новые пакеты Stanford NLP увеличили
производительность в 50-100x
❖ Зато в это время мы прикрутили свой deep learning и
другие недешевые алгоритмы
❖ Все равно дешевле свой кластер на Hetzner
Текущая архитектура Big Data
❖ Кластер на “дорогих” машинах
❖ Хранение - Cassandra
❖ Быстрая запись и чтение, как последовательное, так и по
ключу, масштабируется
❖ Колоночное хранение с компрессией - очень удачно
подходит для такого класса задач
❖ Параллельная обработка
❖ Apache Spark - сейчас только для структурированных
данных, были проблемы с Cassandra
❖ GNU Parallel + HDFS, в будущем - миграция на Spark
Неожиданный классный инструмент
❖ У нас куча разных обработчиков на разных языках
(C,Java,Jython,Python,Julia), интегрировать легче всего через раздачу
id в Cassandra и параллельной обработкой
❖ get_ids | parallel -j 8 -S $SERVERS --progress my_script {}
❖ Очень удобно, если надо быстро (буквально минуты) что-то запустить
❖ Может стать долгосрочным временным решением! :)
❖ Планируем переход на Apache Spark в будущем, но пока глючил
драйвер Cassandra, решили подождать
Кроме отзывов, еще куча структурированных данных
❖ Apache Spark + GreenplumDB
❖ GreenplumDB - параллельная SQL СУБД класса Vertica, Redshift, т.п.
❖ Совсем недавно вышла в open-source
❖ 2 типа хранилища:
❖ Распределенное кортежное (tuple-based)
❖ Распределенное колоночное с компрессией
❖ По скорости намного медленнее, чем Cassandra для массивно-
параллельной записи (MVCC, что делать), но отлично выполняет
сложные SQL на больших объемах. + не надо бэкапить!
Спасибо за внимание!
Вопросы и Ответы
https://ru.linkedin.com/in/velikhov
Общие вопросы: feedback@toprater.com
Для команд: startup@toprater.com

More Related Content

Similar to TopRater.com Машинное понимание миллионов отзывов / Павел Велихов (TopRater) (20)

PDF
Data Science Weekend 2017. 1С-Битрикс. Чатбот для подсказки ответов на вопросы
Newprolab
 
PPTX
Крадущийся сервер, затаившийся диод
Andrew Aksyonoff
 
PPTX
Крадущийся сервер, затаившийся диод (Андрей Аксенов)
Ontico
 
PDF
SQL+NoSQL: On the Way to Converged Data Management Platforms
Andrei Nikolaenko
 
PDF
Мой modern Perl (весенняя встреча Piter United)
Alex Chistyakov
 
PDF
Perl, и с чем его едят. Доклад нашего Главного Инженера (ГИ) Александра Чистя...
Serguei Gitinsky
 
PDF
Methods for building dialog agents and the technologies we used
Grid Dynamics
 
PPTX
[ИТ-лекторий ФКН ВШЭ]: Диалоговые системы. Татьяна Ландо
NLPseminar
 
PDF
Repeatability on DevOps-40 meetup Apr 2014
Alex Chistyakov
 
PDF
Выявление неполадок в Java приложениях
Pavel Grushetzky
 
PDF
SentiScan: система автоматической разметки тональности в social media
Dmitry Kan
 
PDF
Chef, Puppet, Salt, Ansible on SECON 2014
Alex Chistyakov
 
ODP
GetDev.NET: Снова Эрланг
Maxim Krentovskiy
 
PDF
Wargaming: Оценка задач для котиков
Slava Lukyanenka
 
PPTX
ML on the Edge - Highload++ Siberia 2019
Andrey Tatarinov
 
PPTX
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Fwdays
 
PPT
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
Vadim Kosov
 
PPT
Низкоуровневая Оптимизация (Андрей Аксенов)
Ontico
 
PPT
Cpp
Max Klyga
 
PDF
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
GeeksLab Odessa
 
Data Science Weekend 2017. 1С-Битрикс. Чатбот для подсказки ответов на вопросы
Newprolab
 
Крадущийся сервер, затаившийся диод
Andrew Aksyonoff
 
Крадущийся сервер, затаившийся диод (Андрей Аксенов)
Ontico
 
SQL+NoSQL: On the Way to Converged Data Management Platforms
Andrei Nikolaenko
 
Мой modern Perl (весенняя встреча Piter United)
Alex Chistyakov
 
Perl, и с чем его едят. Доклад нашего Главного Инженера (ГИ) Александра Чистя...
Serguei Gitinsky
 
Methods for building dialog agents and the technologies we used
Grid Dynamics
 
[ИТ-лекторий ФКН ВШЭ]: Диалоговые системы. Татьяна Ландо
NLPseminar
 
Repeatability on DevOps-40 meetup Apr 2014
Alex Chistyakov
 
Выявление неполадок в Java приложениях
Pavel Grushetzky
 
SentiScan: система автоматической разметки тональности в social media
Dmitry Kan
 
Chef, Puppet, Salt, Ansible on SECON 2014
Alex Chistyakov
 
GetDev.NET: Снова Эрланг
Maxim Krentovskiy
 
Wargaming: Оценка задач для котиков
Slava Lukyanenka
 
ML on the Edge - Highload++ Siberia 2019
Andrey Tatarinov
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Fwdays
 
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
Vadim Kosov
 
Низкоуровневая Оптимизация (Андрей Аксенов)
Ontico
 
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
GeeksLab Odessa
 

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 
Ad

TopRater.com Машинное понимание миллионов отзывов / Павел Велихов (TopRater)

  • 1. Павел Велихов, Chief Science Officer @ Toprater.com Миллиард отзывов и комментариев и Big Data Полезные советы, опыт и грабли по продвинутому NLP на больших объемах данных
  • 2. Toprater.com - площадка, где собираются мнения со всего интернета относительно любых объектов e-commerce. Первый шаг - собрать существующие мнения и их проанализировать. Нас интересуют сотни и тысячи критериев, о которых писалось в отзывах и которые помогают выбрать лучшее
  • 3. Как пользоваться такой системой? ❖ Хочу поехать на лыжах покататься, но чтобы был бассейн для детей и аниматоры, которым их сдать. А ночью танцы! ❖ Хочу фильм с самым классным 3D, где мощно бьются на мечах и много крови!
  • 4. Western sentimental orchestral melodies permeating every last gouge and lunge, and especially throughout the sentimental scenes at the end.
  • 5. Надо просто понимать отзывы :) ❖ Отзывы могут быть: ❖ Фейковые ❖ Саркастические/Юморные ❖ Написаны на языке Engrish ❖ и так далее ❖ После этого - загоняем данные в поисковик, и все!
  • 6. ❖ “It is day 87 and the horses have accepted me as one of their own. I have grown to understand and respect their gentle ways. Now I question everything I thought I once knew and fear I am no longer capable of following through with my primary objective. I know that those who sent me will not relent. They will send others in my place... But we will be ready” Amazon: Accoutrements Horse Head Mask Не все отзывы оказываются полезными :)
  • 7. Как понять смысл отзыва ❖ Научное название: Aspect-based sentiment analysis + information extraction ❖ Задача сложная (вообще-то нерешаемая), но оказывается достаточно высокой точности добиться можно. ❖ Для решения в ход идет все из арсенала NLP (Natural Language Processing): ❖ грамматический разбор, онтологии, словари, ручные системы, векторные представления слов и фраз, “традиционное” и глубокое обучение.
  • 8. Постановка задачи Если вы ищете спокойную гостиницу для отдыха с детьми, вам не сюда. Отличный отель, уютные просторные комнаты, но в ресторане шумно и курят. Аспекты Сентименты
  • 10. Данные для машинного обучения ❖ Если уже выделен критерий, легко собрать данные по оценке: ❖ Например, берем Amazon Mechanical Turk ❖ Кидаем туда задания, платим $0.01 за каждый ответ ❖ Несколько раз дублируем задание, чтобы не было левых ответов ❖ Можно даже потом сравниться с бенчмарками (но есть проблемы, написал пост на linkedin: “Something is really wrong with sentiment analysis and nobody seems to notice”). ❖ Для задачи выделения критерия - все сложнее, легче делать своими людьми
  • 11. Попробуем простое решение: ❖ По старинке (например, как в курсе у Ng): ❖ Берем простую модель bag-of-words: ❖ Строим классификатор в аспекты ❖ Вычисляем тональность каждого аспекта Модель: {“был”, ”а”, ”но”, “номер”, “удобным”, “ресторан”, “прокуренным”, “приятный”}
  • 12. Попробуем простое решение: ❖ По старинке (например, как в курсе у Ng): ❖ Берем простую модель bag-of-words: ❖ Строим классификатор в аспекты ❖ Вычисляем тональность каждого аспекта Модель: {“был”, ”а”, ”но”, “номер”, “удобным”, “ресторан”, “прокуренным”, “приятный”} Текст: “Номер был удобным, но прокуренным, а ресторан приятный”
  • 13. Более продвинутый NLP ❖ Части речи: существительное, глагол, прилагательное, наречие и т.п. ❖ Омонимия (разные значения одного слова): ❖ пример: Картина ❖ - картина на стене (“на стене висит картина”) ❖ - фильм (“снял хорошую картину”) ❖ - ситуация (“картина событий последних дней Помпей”) ❖ В английском тексте ~ 40% слов омонимичны (!) ❖ Грамматический разбор. Тут обычно 2 варианта: ❖ Constituency Tree ❖ Dependency Tree
  • 14. Пример dependency tree Very nice hotel with clean rooms, but we didn't like the restaurant Части речи Зависимости
  • 15. Точность разбора ❖ Стэнфорд дает около 92-93% точности ❖ .92^20 = 18% ❖ То есть обязательно накосячит в достаточно длинном предложении ❖ Еще одна причина не налегать 100% на результаты парсера
  • 16. Небольшая экскурсия в Deep Learning ❖ Основные ключевые идеи Deep Learning для NLP: ❖ word embeddings. word2vec - только начало ❖ Recurrent NNs ❖ LSTM ❖ Recursive NNs
  • 17. Deep Learning: Embeddings wt-2 wt-1 wt wt+1 wt+2 wt Размерность = 50…300 Слово, чье скалярное произведение с wt максимально
  • 18. Интересные под-пространства word2vec PCA проекция на 2-х мерное пространство
  • 19. Есть и проблемы: Упс, мы сами не можем разделить классы, ну и ни один алгоритм не сможет
  • 20. Deep Learning: Embeddings ❖ Семантическое пространство слов ❖ Но: ❖ Омонимия? ❖ Разные подпростанства, насколько они хороши? Не очень, но их можно подчинить, задав априорные знания ❖ Например синтаксические подпростанства можно с дополнением частей речи делать ❖ Смешанные модели (слова + символы)
  • 21. Интеграция prior knowledge в word2vec ❖ Пихать в word2vec еще и разного рода ограничения: ❖ принадлежность к одному классу = минимальное расстояние ❖ если класс маленький - более сильное ограничение ❖ если большой - не так страшно
  • 22. Deep Learning: примитивное использование ❖ word2vec - просто признак для машинного обучения в модели bag-of-words. Не очень, даже кластеризация - лучше ❖ С текстом мы имеем дело с последовательностью слов, имеет смысл word2vec грамотнее. ❖ В глубоком обучении очень простая модель: рекурентная нейронная сеть.
  • 23. Recurrent Neural Network Fruit flies like napalm in the morning Классификатор или Регрессор
  • 24. LTSM ❖ С рекуррентными сетями есть проблемы ❖ По сути, они почти ничего не запоминают ❖ LTSM: Long Term Short Memory ❖ Отдельные нейроны (gates) в сети отвечают за память: ❖ Запись, чтение, keep ❖ При эксплуатации - понятно, что это значит ❖ При тренировке - помогают правильно отправить ошибку назад в прошлое
  • 25. LTSM мини-пример input P Write Keep также называют input gate также называют forget gate P Sum P Read также называют output gate
  • 28. Что мы имеем с DL для NLP? ❖ Обычная история с DL - тренируем на огромных объемах на GPUs, потом эксплуатируем на CPU ❖ В NLP (особенно LSTM и Recursive NNs) - сложно переложить на GPU + алгоритм тренировки backprop во времени или по структуре, да еще и embeddings. Например, пока Theano грандиозного выигрыша не дает ❖ Плюс: если хотите использовать bleeding edge - надо писать все самим. Иначе 1-2 годовалой давности алгоритмы
  • 29. Перейдем к теме Big Data! ❖ Изначально отзывы занимают какие-то GB ❖ Но “готовый” корпус занимает беспрецедентные объемы данных, например: ❖ 20 тыс предложений = 400Mb данных ❖ В production - поменьше (не всегда), но просто раздать людям поиграться - уже накладно ❖ Как организовать хранение и обработку данных, чтобы было возможно ставить много экспериментов и быстро внедрять в production?
  • 30. Big Data: первый блин ❖ 200 машин на Google Cloud ❖ Cassandra на выделенном сервере ❖ GNU Parallel ❖ Новые пакеты Stanford NLP увеличили производительность в 50-100x ❖ Зато в это время мы прикрутили свой deep learning и другие недешевые алгоритмы ❖ Все равно дешевле свой кластер на Hetzner
  • 31. Текущая архитектура Big Data ❖ Кластер на “дорогих” машинах ❖ Хранение - Cassandra ❖ Быстрая запись и чтение, как последовательное, так и по ключу, масштабируется ❖ Колоночное хранение с компрессией - очень удачно подходит для такого класса задач ❖ Параллельная обработка ❖ Apache Spark - сейчас только для структурированных данных, были проблемы с Cassandra ❖ GNU Parallel + HDFS, в будущем - миграция на Spark
  • 32. Неожиданный классный инструмент ❖ У нас куча разных обработчиков на разных языках (C,Java,Jython,Python,Julia), интегрировать легче всего через раздачу id в Cassandra и параллельной обработкой ❖ get_ids | parallel -j 8 -S $SERVERS --progress my_script {} ❖ Очень удобно, если надо быстро (буквально минуты) что-то запустить ❖ Может стать долгосрочным временным решением! :) ❖ Планируем переход на Apache Spark в будущем, но пока глючил драйвер Cassandra, решили подождать
  • 33. Кроме отзывов, еще куча структурированных данных ❖ Apache Spark + GreenplumDB ❖ GreenplumDB - параллельная SQL СУБД класса Vertica, Redshift, т.п. ❖ Совсем недавно вышла в open-source ❖ 2 типа хранилища: ❖ Распределенное кортежное (tuple-based) ❖ Распределенное колоночное с компрессией ❖ По скорости намного медленнее, чем Cassandra для массивно- параллельной записи (MVCC, что делать), но отлично выполняет сложные SQL на больших объемах. + не надо бэкапить!
  • 34. Спасибо за внимание! Вопросы и Ответы https://ru.linkedin.com/in/velikhov Общие вопросы: [email protected] Для команд: [email protected]