TensorFlow на Apache Hadoop с TonY

Deep Learning Hadoop TensorFlow MapReduce TonY примеры курсы обучение, глубокое обучение Data Science Hadoop MapReduce YARN примеры курсы, обучение дата-инженеров и MLOps, ML Machine Learning примеры курсы обучение, Школа Больших Данных Учебный Центр Коммерсант

Как LinkedIn построила масштабируемую инфраструктуру конвейеров машинного обучения, развернув модели TensorFlow на Apache Kafka, Spark и Hadoop YARN. Что такое платформа TonY, как она работает, почему изначально вычислительная парадигма MapReduce не очень хорошо подходила для глубокого обучения и как это исправить через конфигурацию настроек YARN.

MLOps и проблемы глубокого обучения

Соцсеть для профессиональных контактов LinkedIn широко использует в своем бизнесе машинное обучение, чтобы формировать рекомендации для своих пользователей в зависимости от их интересов и рабочего окружения. Для этого MLOps-инженеры компании реализовали собственную инфраструктуру поддержки конвейеров Machine Learning, построенных на методах анализа графов. Ядром MLOps-инфраструктуры LinkedIn является запатентованная система Pro-ML, которая контролирует все жизненные циклы ML-моделей, от обучения до мониторинга их работы в production. Для масштабирования Pro-ML используются соответствующие технологии Big Data с открытым исходным кодом, такие как Apache Kafka, Samza, Spark и Hadoop YARN.

LinkedIn использует тысячи параллельных моделей машинного обучения, которые постоянно развиваются и обновляются. В этих сценариях разработка надежной методологии тестирования необходима для оптимизации производительности моделей машинного обучения во время выполнения. В частности, благодаря A/B-тестированию в Pro-ML, MLOps-инженерa могут развертывать конкурирующие алгоритмы для конкретных сценариев и оценивать тот, который дает наилучшие результаты.

При этом соцсеть использует не только классическое машинное обучение, но и глубокое (Deeep Learning), которое может давать лучшие результаты на немаркированных данных. Также глубокое обучение можно запускать в распределенной среде, чтобы обрабатывать крупномасштабные наборы данных. Глубокие нейросети можно распараллелить на двух основных уровнях:

  • на уровне слоев с помощью массивов графических процессоров для параллельного вычисления активаций слоев и их частой синхронизации. Но изначально этот подход не подходит для кластеров, где данные могут находиться на нескольких компьютерах, соединенных сетью, из-за высоких сетевых затрат
  • на уровне данных, при котором обучение распараллеливается на подмножествах данных. Но, поскольку Deep Learning по своей природе является итеративным, парадигма MapReduce не очень хорошо подходила для запуска этих алгоритмов. Впрочем, с появлением Hadoop0 и управления ресурсами на основе YARN стало возможным писать итеративные приложения, точно контролируя потребляемые ресурсы.

Что такое фреймворк TonY и как он работает

Чтобы масштабировать запуск заданий глубокого обучения в Apache Hadoop, LinkedIn еще в 2018 году разработала фреймворк TonY, адаптировав TensorFlow к работе на платформе YARN. Впрочем, TonY поддерживает не только TensorFlow, но и PyTorch, MXNet, а также Horovod. Благодаря наличию встроенных коннекторов, TonY позволяет запускать одноузловое или распределенное обучение в виде приложений Hadoop. Сам TonY совместим с Hadoop 2.6.0 (CDH5.11.0) и выше. Для изоляции графического процессора от TonY, нужен Hadoop 2.10 или выше для Hadoop 2 или Hadoop 3.1.0 или выше для Hadoop 3.

Цель выпуска TonY в том, чтобы программы TensorFlow могли работать в распределенных кластерах YARN. Хотя рабочие процессы TensorFlow широко поддерживаются в Apache Spark, YARN не слишком популярен для машинного обучения. Чтобы исправить это, необходима гибкая поддержка выполнения заданий TensorFlow в Hadoop, включая согласование ресурсов и настройку среды контейнера.

Tony может распределять по кластеру Hadoop классические задания и задания на GPU, по-разному выделять память на узлах TensorFlow, а также сохранять промежуточные результаты в Hadoop  HDFS и продолжать выполнение с места остановки. По сути, TonY берет программы TensorFlow и разбивает их на несколько параллельных задач, которые можно выполнять в кластере YARN. При этом сохраняется полная поддержка графа вычислений TensorFlow, включая TensorBoard – плагин для визуализации графа, отладки и понимания ML-модели. Есть несколько способов указать конфигурации для задания TonY:

  • создать XML-файл с именем tony.xml и добавить его родительский каталог в свой путь к классам java;
  • передать файл конфигурации conf_file в командную строку java, добавив родительский каталог этого файла в путь к классам java;
  • переопределить конфигурации из файла конфигурации через командную строку, передав пары аргументов -conf <tony.conf.key>=<tony.conf.value> в командной строке.

Пример конфигурации в файле tony.xml может выглядеть следующим образом:

<configuration>
  <property>
    <name>tony.worker.instances</name>
    <value>4</value>
  </property>
  <property>
    <name>tony.worker.memory</name>
    <value>4g</value>
  </property>
  <property>
    <name>tony.worker.gpus</name>
    <value>1</value>
  </property>
  <property>
    <name>tony.ps.memory</name>
    <value>3g</value>
  </property>
</configuration>

Читайте в нашей новой статье про сервера ML-моделей TensorFlow при развертывании системы машинного обучения вместе с приложением Kafka Streams

Как применять эти и другие современные инструменты MLOps в проектах аналитики больших данных, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://pub.towardsai.net/some-open-source-frameworks-linkedin-uses-to-build-machine-learning-at-scale-acef3c2f5ab6
  2. https://github.com/tony-framework/TonY
Поиск по сайту