Ниже приведен сценарий выступления Цзе Цзяна, директора платформы больших данных Tencent и главного эксперта по данным.

Многие знали, что в этом году Tencent одержала четыре победы в рейтинге Sort Benchmark. Некоторые спрашивали меня, как Tencent добилась такого успеха и какие технологии мы использовали.

Сегодня я хочу поделиться некоторыми предысториями.

Думаю, многие видели нашу рекламу в аэропортах многих городов. В этой рекламе изображен спринтер. Сортировка — это как бег на 100 метров на Олимпиаде. Я пытаюсь сказать, что мы больше похожи на марафонцев. Мы бежим марафон, на который у нас ушло семь лет, чтобы чего-то добиться.

Оглядываясь назад на выступления на различных соревнованиях за последние несколько лет, американские компании всегда олигополизировали чемпионов. Наконец, BAT, китайская интернет-компания, три года назад сохранила своих чемпионов. Развитие, которое мы сделали в интернет-технологиях, не меньше, чем прогресс, достигнутый в Штатах, который показывает, что вычислительная мощность на материке не меньше, чем вычислительная мощность в Соединенных Штатах.

В прошлом команда-чемпион обычно использовала Hadoop и Spark, и платформа больших данных Tencent также начинается с Hadoop.

Нам потребовалось несколько лет, чтобы стать чемпионами. Мы пытались добиться идеальной производительности и максимизировать возможности наших машин.
Во-первых, с точки зрения снижения затрат, пока мы максимизируем возможности оборудования, мы минимизируем наши затраты. Мы используем машину, структурированную OpenPower. Масштабы нашего проекта составляют лишь одну шестую часть проекта от прошлогодней команды-чемпиона. Исходя из цен на оборудование в этом году, наша совокупная стоимость владения намного ниже, чем стоимость прошлогоднего чемпиона.

Во-вторых, мы продолжаем оптимизировать большую часть алгоритма, делая процессор, память, сеть, дисковый ввод-вывод каждой машины максимально производительными.

Два теста в этом соревновании связаны с MinuteSort, что означает, что наши результаты в соревновании в основном зависят от объема данных, которые мы можем заказать в течение одной минуты. В этом случае эффективность использования времени становится очень важной. Поэтому наши показатели в MinuteSort в этом году в пять раз лучше, чем в прошлом году. MinuteSort также является одним из тестов, который мы улучшили больше всего. Это также означает, что у нас есть огромное преимущество в эффективном использовании времени. В целом, поскольку мы максимизировали возможности нашего оборудования, наш проект затмил другие в этом соревновании. Кластеры, которые мы использовали для соревнований, теперь используются для Интернета в реальном мире, включая высокопроизводительные вычисления, вычисления графов, глубокое обучение и другие области.
Вспомните последние семь лет, когда мы начали создавать эту платформу для больших данных. использование Hadoop в качестве основы с января 2009 года. За эти семь лет мы прошли через три поколения разработки платформ.

С 2009 по 2011 год было первое поколение нашей платформы. В то время наша платформа поддерживала только сценарии пакетного расчета, такие как таблицы. Мы попытались сосредоточиться на масштабируемости платформы, увеличив масштабы наших кластеров — с менее ста машин в 2009 году до примерно 30 тысяч в этом году. Первое поколение больше ориентировано на «Масштаб».
Второе поколение ориентировано на «Реальное время». С 2012 по 2014 год наша платформа уделяла особое внимание онлайн-анализу и сценариям вычислений в реальном времени, таким как таблицы в реальном времени, поиск в реальном времени, мониторинг в реальном времени и многое другое.

Третье поколение с 2015 года по настоящее время. Мы уделяем больше внимания использованию инструментов или платформ машинного обучения для удовлетворения потребностей в интеллектуальном анализе данных из различных сервисов Tencent. Это означает, что наше внимание сместилось с анализа данных на интеллектуальный анализ данных, что также означает «анализ данных».

Первое поколение имеет структуру автономных вычислений, основанную на Hadoop. Мы назвали его TDW, распределённое хранилище данных Tencent.

Обновление для Hadoop было медленным, а масштаб его кластера довольно мал, с низкой стабильностью и удобством использования. Он не может полностью удовлетворить требования Tencent, поэтому мы решили развивать наш проект на основе бизнес-стандарта Tencent для доступных программных продуктов. Мы сосредоточились на развитии масштабируемости кластеров и решили проблему, заключающуюся в том, что единственное узкое место Мастера не может быть расширено. Мы оптимизировали стратегии планирования для увеличения параллелизма заданий и аварийного восстановления высокой доступности. Что еще более важно, так это то, что мы создали дополнительные инструменты и продукты, чтобы сократить время обучения использованию Hadoop. Лексически наша платформа совместима с грамматикой Oracle, что упростило продуктовым отделам Tencent изменение собственных технологических требований. Hadoop действительно обладает большими возможностями для обработки больших данных, однако его эффективность крайне низка, когда речь идет об обработке небольших наборов данных. Поэтому мы интегрировали PostgreSQL, чтобы улучшить возможности анализа небольших наборов данных, которые объединили Hadoop и PG вместе.

Таким образом, наша платформа начиналась с менее чем ста машин, до нескольких сотен и до нескольких тысяч. Через несколько лет размер наших отдельных кластеров достиг 4400. В 2014 году это число увеличилось до 8800, достигнув вершины в технологической отрасли на материке. Сейчас наша платформа имеет масштаб около 30 тысяч машин.

TDW решила три проблемы, с которыми мы столкнулись в нашей основной деятельности.

Во-первых, он позволяет нам обрабатывать наборы данных размером в миллиард, что занимает всего 30 минут для выполнения вычислений. Это возможность анализа данных на уровне T/P.

Во-вторых, его стоимость довольно низкая. Мы можем использовать обычный ПК-сервер для достижения производительности, которая обычно может быть достигнута только при использовании более крупных машин.
В-третьих, он увеличивает возможности аварийного восстановления. Обычно, если машины выходят из строя, это затрагивает наши бизнес-данные. В это время таблицы или службы поиска данных будут недоступны. Однако, если машины TDW выйдут из строя, это никак не повлияет на наш основной бизнес. Система сама автоматически переключит режимы и получит резервную копию данных.

Поскольку TDW предоставляет пользователям такие важные функции, бизнес-отделы хотели бы размещать свои данные и проводить необходимые расчеты на платформе TDW. К концу 2012 года мы перенесли все наши таблицы из Oracle и MySQL в TDW.

Эта новая платформа позволяет нам интегрировать все наши продукты в единое целое.

Раньше у нас были отдельные базы данных для каждого из наших продуктов; эти базы данных вообще не были связаны. Теперь мы разработали систему, которая имеет миллиарды пользователей и хранит соответствующие пользовательские данные.

Раньше наши пользовательские данные были очень простыми — в основном о фундаментальных характеристиках пользователей, таких как возраст, пол, регион и многое другое. Раньше создание нового пользовательского объекта занимало больше недели, и мы обновляем наши пользовательские данные только ежемесячно. Тем не менее, с TDW мы можем обновлять систему каждый день.

Этот объект пользовательских данных использовался в наших продуктах, связанных с рекомендательными системами.

Система рекомендаций еще шесть лет назад была новаторским приложением, но в настоящее время она стала хорошо известной функцией. TDW предлагает быстрые вспомогательные функции. Используя MapReduce в качестве стандартного метода программирования и TDW в качестве основной основной платформы, мы можем сосредоточиться на том, как добиться значительной производительности различных алгоритмов рекомендаций. Например, мы можем работать с такими распространенными алгоритмами, как CF, MF и LR, а также с другими алгоритмами кластеризации хэшей. Системы рекомендаций, которые у нас есть, больше связаны с предоставлением пользователям услуг поиска в реальном времени.

Первое поколение решает проблему масштабируемости, но у нас осталась проблема со скоростью работы — раз данные офлайн, то и расчет задачи тоже офисный. Там реальная разница во времени. Из-за этой проблемы мы перешли к разработке второго поколения.

Второе поколение не только использовало платформу первого поколения в качестве основы, но также интегрировалось со Spark, которое является вторым поколением Hadoop, и Storm, инфраструктурой потоковых вычислений. Эта новая платформа снижает скорость вычислений с часов до минут или даже секунд.

Что касается сбора данных, мы создали TDBank, который использовал сбор данных в режиме реального времени на уровне миллисекунд, чтобы заменить исходный подход — использование файлов для записи и обновления данных. На этой новой платформе сбора данных мы получили более 650 миллиардов сообщений в рамках нашего исследовательского промежуточного программного обеспечения, что является одним из промежуточных программ с самой высокой нагрузкой сообщений в мире. В то же время это промежуточное программное обеспечение очень надежно и гарантирует, что никакие сообщения не будут потеряны, как в финансовых и бухгалтерских институтах.

Что касается распределения ресурсов, мы разработали платформу распределения Gaia на основе Yarn. Yarn поддерживает только дистрибутивы в процессоре и во внутренней памяти. В дополнение к процессору и внутреннему хранилищу наша Gaia также поддерживает измерения, основанные на Интернет-операциях и операциях ввода-вывода на магнитных дисках. Yarn поддерживает только офлайн-расчеты, а Gaia поддерживает онлайн- и офлайн-расчеты. Кроме того, мы поддерживаем Docker. И теперь на нашей платформе ежедневно загружается более 150 миллионов контейнеров.

Возвращаясь к примеру системы рекомендаций, который у нас был раньше, когда мы разрабатывали платформу второго поколения, мы также столкнулись с двумя проблемами: первая заключается в том, что по мере увеличения количества пользователей и посещений объем производимых данных будет увеличиваться до такой степени, что система не может вычислить их за ограниченное время. Вторая проблема заключается в том, что модели поведения пользователей меняются очень быстро, что требует от нас более частого обновления пользовательских данных дополнительными функциями. Поскольку система собирает данные в режиме реального времени, у нас есть возможность производить вычисления в реальном времени для пользовательских данных, которые формируют поток данных потокового вычисления. Распределенные потоковые вычисления могут обновлять расчеты данных для различных функций в режиме реального времени. Это дополнительно развивает обучающие данные в реальном времени для наших систем рекомендаций. Таким образом, мы преобразовали нашу офлайн-систему рекомендаций в онлайн-систему рекомендаций в реальном времени. В приложении рекомендаций по рекламе мы заметили, что чем быстрее мы обновляли рекомендации в реальном времени, тем больше кликов получали наши рекомендации.

Платформа второго поколения удовлетворила большинство потребностей нашего основного бизнеса благодаря своей работе в режиме реального времени и масштабируемости. Однако по мере увеличения объема данных наша система начала достигать стадии узкого места.

Когда мы обучали наши данные в Spark и пытались обновить данные, мы часто сталкивались с проблемой сети — поскольку было только одно место для обновления данных, вся структура не могла поддерживать обучение многомерным данным. В наших приложениях наша платформа по-прежнему может правильно работать с данными в измерении 10 миллионов уровней. Как только наши данные вырастут до 100 миллионов, система перестанет функционировать или вообще перестанет работать.

Таким образом, мы хотели построить систему, которая поддерживает огромное количество кластеров данных и обучение данных в миллиардном измерении. Более того, эта система должна была удовлетворять промышленным требованиям в наших текущих интернет-приложениях. Он должен быть в состоянии удовлетворить потребности разработчиков в обработке больших данных и больших моделей. Кроме того, мы ожидаем, что он будет обрабатывать параллелизм данных и модели соответственно.

Есть два способа решить эту проблему: первый подход заключается в использовании платформы второго поколения в качестве основы, развитии и разработке нового продукта, который может решать крупномасштабные обмены параметрами; второй метод заключается в создании совершенно новой высокофункциональной вычислительной среды.

Мы также рассмотрели некоторые продукты, которые были популярны в отрасли в то время: GraphLab (для графического моделирования, отказоустойчивости), Disbelief от Google (в то время не было открытого исходного кода) и Petuum, изобретенный Эриком Сином из CMU (был очень популярно, но это было больше похоже на лабораторное приложение с низким удобством использования и стабильностью).

В конце концов, мы решили провести свой исследовательский проект. Первые поколения основаны на ресурсах с открытым исходным кодом, а третье поколение создано в нашей собственной исследовательской лаборатории. Мы пытались развивать наш исследовательский проект, когда разрабатывали платформу второго поколения. Например, наше промежуточное программное обеспечение, ориентированное на работу с сообщениями, отличающееся удобством использования и надежностью, было разработано нами самими. Опыт разработки и тестирования всех этих проектов в Tencent вселил в нас уверенность в том, что наш исследовательский проект состоится.

Поэтому мы решили исследовать и разработать собственную вычислительную среду третьего поколения. Платформа третьего поколения представляет собой вычислительную платформу с высокой функциональностью под названием Angel.

Эта высокофункциональная вычислительная среда также является тем, как мы подходим к методам машинного обучения и глубокого обучения.

В отличие от предыдущих вычислительных сред, Angel поддерживает обучение алгоритмов с данными в миллиардах измерений. Чтобы решить проблемы, вызванные большими моделями, эта новая платформа поддерживает не только параллелизм данных, но и параллелизм моделей. В то же время это третье поколение также поддерживает глубокое обучение графического процессора и неструктурные данные, такие как текст, аудио и изображения.

Angel — это фреймворк, основанный на серверах параметров. Он работает на нашей платформе Gaia. Он также поддерживает три режима вычислений: BSP, SSP и ASP. Мы используем ZhuGeNu, разработанный командой доктора Янга из Гонконгского университета науки и технологий, для планирования наших сетей. Parameter Servers предпочитает обслуживать работников с более низким уровнем обслуживания; эта стратегия может резко сократить время ожидания, поскольку модель становится относительно большой; таким образом, общее время выполнения задачи сократится на 5~15%.

По сравнению с другими платформами, такими как Petuum и Spark, Angel обладает лучшими функциональными возможностями, чем другие платформы с теми же размерами данных. Ниже приведен рисунок, на котором сравнивается производительность Angel и Petuum, когда мы запускаем алгоритмы SGD на обеих платформах, соответственно, используя данные из Netflix.

Кроме того, Angel отлично подходит для крупномасштабного обучения данным. До сих пор мы использовали Angel для многих внутренних бизнес-услуг в Tencent. Вот два примера. Раньше, когда мы использовали Hadoop и Spark для создания среды пользовательских данных, запуск модели для тысячи тем занимал один или несколько дней. Сейчас на Angel более 20 миллиардов файлов, миллионы слов, 300 миллиардов токенов. Ангелу требуется всего один час, чтобы закончить вычисления. То, что мы привыкли запускать на Spark, можно запустить на Angel с гораздо большей скоростью. То, что Spark не может вычислить, может вычислить Angel.

Другой пример касается оценки количества кликов для видео. При том же измерении данных возможности Angel в 44 раза выше возможностей Spark. После того, как наша размерность увеличилась с 10 миллионов до 100 миллионов, время обучения сократилось с дней до получаса с оптимизированной точностью.

Angel — это больше, чем просто платформа для параллельных вычислений. Это тоже экосистема. Используя Angel в качестве центра, мы создаем небольшую экосистему, поддерживающую MLLib на основе Spark, которая поддерживает обучение данных в более чем 100-миллионном измерении. Кроме того, эта система поддерживает более сложные графические вычислительные модели и фреймворки глубокого обучения, например Caffe, TensorFlow, Torch и другие, что позволяет использовать эти фреймворки на нескольких машинах с несколькими ядрами.

В конце этого выступления я просто хочу подвести итог трем этапам эволюции платформы больших данных Tencent: мы начали с офлайн-вычислений, прошли этап вычислений в реальном времени, а затем вошли во время машинного обучения. Мы следовали за открытым исходным кодом, развивались и, наконец, дошли до собственных исследований. Наша разработка меняется с точки зрения масштаба, функциональности в реальном времени и интеллектуализации.

Мы также хотели бы поделиться новостью со всеми здесь. Это то, что наша платформа больших данных будет полностью с открытым исходным кодом.

Мы планируем открыть исходный код Angel и дополняющие его системы в первой половине 2017 года. Наша платформа начинается с открытого исходного кода и использует преимущества открытого исходного кода в процессе разработки. Следовательно, мы хотели бы принять сообщество открытого исходного кода, отдавая. Мы всегда старались открыть исходный код того, что у нас было: в 2014 году мы открыли исходный код ядра платформы больших данных первого поколения под названием TDW-Hive; мы также поделились большим количеством основных исходных кодов с несколькими проектами сообщества и помогли обучить немало коммиттеров. В будущем мы хотели бы внести еще больший вклад в это сообщество.

Исходная статья из Synced China http://www.jiqizhixin.com/article/2016|Автор: Пань Ву, Джойс Чжоу| Локализация выполнена командой Synced Global:Цзяксин Су, Рита Чен