Вступление

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

  • H2O поддерживает наиболее широко используемые алгоритмы статистического и машинного обучения, обобщенные линейные модели, глубокое обучение и многое другое.
  • Это делает вычисления чрезвычайно быстрыми и эффективными.

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

Вы можете представить кластер как группу узлов, разделяющих память и вычисления. Узел может быть сервером, экземпляром EC2 или вашим ноутбуком. Это дает преимущество перед традиционным способом машинного обучения с одним экземпляром и загрузки вещей в память Python. А основной код H2O написан на Java, что дает дополнительный прирост скорости. Эти уникальные функции H2O помогают ускорить машинное обучение и идеально подходят для обработки больших объемов данных.

Этот пост является частью серии, которая демистифицирует H2O.ai для людей :)

Часть 1: Демистификация H2O.ai | Обзор

Часть 2: Демистификация H2O.ai | Использование Python

Часть 3: Демистификация H2O.ai | Использование H2O Flow

Часть 4: Демистификация H2O.ai | Производство

Давайте посмотрим на различные аспекты H2O.

Импорт данных в H2O:

H2O поддерживает множество распространенных форматов импорта данных, таких как локальная файловая система, удаленный файл, SQL, S3, HDFS, JDBC и Hive.

Поддержка интерфейса в H2O:

H2O имеет расширенный интерфейс для таких языков, как Scala, Python, R и других. Это означает, что мы можем писать код на известном нам языке, а фреймворк переводит его в код Java для работы в кластере и возвращает результаты на том же языке, на котором мы написали код.

Алгоритмическая поддержка в H2O:

Фреймворк H2O поддерживает множество алгоритмов, тщательно оптимизированных, чтобы максимально использовать базовый распределенный фреймворк.

Поддерживаемые алгоритмы: Распределенный случайный лес, линейная регрессия, логистическая регрессия, XGBoost, Gradient Boosting Machine, Deeplearning (многоуровневый персептрон с обратным распространением и стохастическим градиентным спуском), K-means Clustering, PCA, Naïve Bayes classifier и word2vec. . Он также поддерживает стек и ансамбли, чтобы получить максимальную отдачу от совместной игры отдельных алгоритмов.

Обработка данных во фреймах H2O (например, Pandas и R):

Поддерживаемые операции с данными в кадрах H2O: объединение столбцов из двух наборов данных, объединение строк из двух наборов данных, заполнение Nas, группировка по, ввод данных, объединение двух наборов данных, сводные таблицы, замена значений в кадре, срезы столбцов. , Нарезка строк, сортировка столбцов, разделение наборов данных на обучение / тестирование / проверку и целевое кодирование.

Поддерживаемые показатели в H2O:

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

Для задач на основе регрессии: оценка R2, RMSE, MSE, MAE и т. Д.

Для задач классификации: AUC, потеря журнала, точность, F1, оценка F2, коэффициент Джини, матрица неточностей.

Функция AutoML в H2O:

В H2O есть автоматическая опция для поиска лучшей модели для любых данных. Функция H2O AutoML требует установки модуля pandas. Это можно вызвать, просто вызвав H2OAutoML (). Результаты можно просмотреть с помощью тензорной панели, такой как панель инструментов.

Производство:

В конце фазы моделирования H2O предоставляет функциональные возможности для сохранения моделей как POJO или MOJO.

POJO - обычный старый объект Java t, MOJO - объект модели, оптимизированный

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

Требования для поддержки H2O:

Операционная система - Windows 7 или новее, OS X 10.9 или новее, Ubuntu 12.04 или новее, CentOS 6 или новее. Java 7 или более поздние версии являются основным требованием для установки и запуска H2O.

Настройка многоузлового кластера H2O:

ШАГ 1

Чтобы загрузить H2O, включая .jar, перейдите на страницу загрузок H2O и выберите версию, подходящую для вашей среды.

ШАГ 2

Убедитесь, что один и тот же файл h2o.jar доступен на каждом хосте.

ШАГ 3

Лучший способ заставить несколько узлов H2O найти друг друга - это предоставить плоский файл, в котором перечислен набор узлов.

Создайте файл flatfile.txt с IP-адресом и портом для каждого экземпляра H2O. Ставьте по одной записи в строке. Например:

192.168.1.163:54321
192.168.1.164:54321

(Обратите внимание, что параметр -flatfile сообщает одному узлу H2O, где искать другие. Он не заменяет спецификации -ip и -port.)

ШАГ 4

Скопируйте файл flatfile.txt на каждый узел кластера.

ШАГ 5

Параметр Xmx в командной строке java указывает объем памяти, выделенной одному узлу H2O. Объем памяти кластера - это сумма всех узлов H2O в кластере.

Например, если пользователь создает кластер с четырьмя узлами по 20 ГБ (указав Xmx20g), H2O будет доступно в общей сложности 80 ГБ памяти.

Для лучшей производительности мы рекомендуем размер кластера примерно в четыре раза больше размера ваших данных (но во избежание подкачки Xmx не должен быть больше, чем физическая память на любом данном узле). Настоятельно рекомендуется предоставить всем узлам одинаковый объем памяти (H2O лучше всего работает с симметричными узлами).

Обратите внимание на необязательные параметры -ip (не показаны в приведенном ниже примере) и -port, которые сообщают этому узлу H2O, какие IP-адрес и порты (порт и порт + 1) используются для привязки. Параметр -ip особенно полезен для хостов с несколькими сетевыми интерфейсами.

$ java -Xmx20g -jar h2o.jar -flatfile flatfile.txt -port 54321

Вы увидите результат, подобный следующему:

08:35:33.553 main      INFO WATER: ----- H2O started -----
08:35:33.555 main      INFO WATER: Build git branch: master
08:35:33.555 main      INFO WATER: Build git hash: f253798433c109b19acd14cb973b45f255c59f3f
08:35:33.555 main      INFO WATER: Build git describe: f253798
08:35:33.555 main      INFO WATER: Build project version: 1.7.0.520
08:35:33.555 main      INFO WATER: Built by: 'jenkins'
08:35:33.555 main      INFO WATER: Built on: 'Thu Sep 12 00:01:52 PDT 2013'
08:35:33.556 main      INFO WATER: Java availableProcessors: 32
08:35:33.558 main      INFO WATER: Java heap totalMemory: 1.92 gb
08:35:33.559 main      INFO WATER: Java heap maxMemory: 17.78 gb
08:35:33.559 main      INFO WATER: ICE root: '/tmp/h2o-tomk'
08:35:33.580 main      INFO WATER: Internal communication uses port: 54322
+                                  Listening for HTTP and REST
                                   traffic
                                   on  http://192.168.1.163:54321/
08:35:33.613 main      INFO WATER: H2O cloud name: 'MyClusterName'
08:35:33.613 main      INFO WATER: (v1.7.0.520) 'MyClusterName' on /192.168.1.163:54321, static configuration based on -flatfile flatfile.txt
08:35:33.615 main      INFO WATER: Cloud of size 1 formed [/192.168.1.163:54321]
08:35:33.747 main      INFO WATER: Log dir: '/tmp/h2o-tomk/h2ologs'

Когда вы добавляете больше узлов в свой кластер, вывод H2O сообщит вам:

INFO WATER: Cloud of size 2 formed [/...]...

ШАГ 6 (необязательно)

Получите доступ к веб-интерфейсу H2O в своем браузере. Укажите в браузере ссылку HTTP, указанную в поле «Прослушивание HTTP- и REST-трафика…» в выходных данных H2O.

Как подключиться к многоузловому кластеру H2O:

После создания кластера с помощью описанных выше шагов получите IP-адрес и номер порта из выходных данных.

INFO WATER: Internal communication uses port: Listening for HTTP and REST traffic on  http://192.168.1.163:54321/

Шаг 1. Импортируйте модуль H2O из своего скрипта Python или записной книжки.

# Import module
import h2o

Шаг 2. Подключитесь к кластеру H2O с IP-адресом.

# In order to connect to a H2O cluster in the cloud, you need to specify the IP address
h2o.connect(ip = "xxx.xxx.xxx.xxx") # fill in the real IP

Это все, что нам нужно сделать. Теперь мы можем использовать всю мощь скорости кластера и вычислений из записной книжки Python на любом локальном компьютере.

Примечание. Данные и манипуляции с данными, выполняемые в записной книжке, на самом деле хранятся не в памяти python, а в самом кластере (распределенном между узлами), и только указатель используется в записной книжке python для ссылки на данные.

Просмотрите серию, чтобы узнать больше о платформе H2O.

Обо мне

Я старший эксперт по машинному обучению в Wavelabs.ai. Мы в Wavelabs помогаем вам использовать искусственный интеллект (AI), чтобы революционизировать пользовательский опыт и сократить расходы. Мы уникальным образом улучшаем ваши продукты с помощью ИИ, чтобы полностью раскрыть ваш рыночный потенциал. Мы стараемся внедрять передовые исследования в ваши приложения.

У нас есть опыт работы с платформой H2O, чтобы предоставить вам быстрое и масштабируемое машинное обучение, как никогда раньше.

Не стесняйтесь узнать больше на Wavelabs.ai

Ну вот и все в этом блоге. Спасибо за прочтение :)

Оставайтесь любопытными!

Вы можете связаться со мной в LinkedIn.