18 мая 2016

Data Science с R в Microsoft Azure (часть 1)

Data Science с R в Microsoft Azure (часть 1)

R, один из популярнейших языков программирования среди data scientist'ов, получает все большую и большую поддержку как среди opensource-сообщества, так и среди частных компаний, которые традиционно являлись разработчиками проприетарных продуктов. Среди таких компаний – Microsoft, чья интенсивно увеличивающая поддержка языка R в своих продуктах/сервисах, привлекла к себе и мое внимание.

Одним из «локомотивов» интеграции R с продуктами Майкрософт является облачная платформа Microsoft Azure. Кроме того, появился отличный повод повнимательнее взглянуть на связку R + Azure – это проходящий в эти выходные (21-22 мая) хакатон по машинному обучению, организованный Microsoft [1].

Хакатон – мероприятие, где кофе время чрезвычайно ценный ресурс. В контексте этого я ранее писал о best practices обучения моделей в Azure Machine Learning. Но Azure ML – это не лучший инструмент для прототипирования; это скорее сервис для создания готового продукта со всеми вытекающими отсюда затратами как на время разработки, так и на стоимость владения.

R же прекрасно подходит для создания прототипов, для копания (mining) в данных, быстрой проверки своих гипотез – то есть всего того, что нам нужно на такого типа соревнованиях! Ниже я расскажу, как использовать всю мощь R в Azure – от создания прототипа до публикации готовой модели в Azure Machine Learning.


Мотивирующий off-topic

Как и в прошлый хакатон (да, это не первый ML хакатон от Microsoft), у вас будет возможность вдоволь напрограммироваться на любимом Python/R/C#, покрутить ручки в Azure Machine Learning, пообщаться с единомышленниками и экспертами, крепко не выспаться, перепить халявного кофе и переесть вкусных печенек. А самые хитрые сделают мир лучше и получат заслуженные призы!

0. Microsoft ♥ R

Сразу определимся со списком продуктов/сервисов Microsoft, которые нам позволят работать с R:

  1. 1. Microsoft R Server / R Server для Azure HDInsight
  2. 2. Data Science VM
  3. 3. Azure Machine Learning
  4. 4. SQL Server R Services
  5. 5. Power BI
  6. 6. R Tools for Visual Studio

И (о радость!) продукты 1-3 нам доступны в Azure по модели IaaS/PaaS. Рассмотрим их по очереди.

1. Microsoft R Server (+ для Azure HDInsight)

После покупки в прошлом году небезызвестной Revolution Analytics, Revolution R Open (RRO) и Revolution R Enterprise (RRE) были переименованы в Microsoft R Open (MRO) и Microsoft R Server, соответственно. Сейчас Microsoft R Server – хорошо сложенная экосистема, состоящая как из opensource-продуктов, так и проприетарных модулей Revolution Analytics.

Центральное место занимает R+CRAN, гарантируется 100%-ая совместимость как с языком R, так и совместимость с существующими пакетами. Еще один центральный компонент R Server – Microsoft R Open, представляющий собой среду выполнения с улучшенными показателями скорости работы с матрицами, математическими функциями, улучшенную поддержку многопоточности.

Модуль ConnectR позволяет получать доступ к данным, хранящимся в Hadoop, Teradata Database и др.

R Server для Azure HDInsight добавляет ко всему возможность выполнять R-скрипты непосредственно на Spark-кластере в облаке Azure. Таким образом, решена проблема того, что данные не помещаются в RAM машины, локально, по отношению которой, исполняется R-скрипт. Инструкция прилагается.

Сам же Azure HDInsight – облачный сервис, предоставляющий Hadoop/Spark-кластер по требованию. Так как это сервис, то из задач администрирования стоит только развертывание и удаления кластера. Все! Ни секунды потраченного времени на конфигурацию кластера, установку обновлений, настройку доступов и т.п.

Создание/удаление кластера Hadoop (HDI 3.3) из 8 нод

Для создания Spark-кластера нам на выбор нужно нажать либо 3 кнопки (изображение выше), либо выполнить следующий несложный PowerShell-скрипт [источник]:

Login-AzureRmAccount
# Set these variables
$clusterName = $containerName # As a best practice, have the same name for the cluster and container
$clusterNodes = 8 # The number of nodes in the HDInsight cluster
$credentials = Get-Credential -Message "Enter Cluster user credentials" -UserName "admin"
$sshCredentials = Get-Credential -Message "Enter SSH user credentials"
# The location of the HDInsight cluster. It must be in the same data center as the Storage account.
$location = Get-AzureRmStorageAccount -ResourceGroupName $resourceGroupName `
    -StorageAccountName $storageAccountName | %{$_.Location}
# Create a new HDInsight cluster
New-AzureRmHDInsightCluster -ClusterName $clusterName `
    -ResourceGroupName $resourceGroupName -HttpCredential $credentials `
    -Location $location -DefaultStorageAccountName "$storageAccountName.blob.core.windows.net" `
    -DefaultStorageAccountKey $storageAccountKey -DefaultStorageContainer $containerName  `
    -ClusterSizeInNodes $clusterNodes -ClusterType Hadoop  `
    -OSType Linux -Version "3.3" -SshCredential $sshCredentials
                    

Для удаления кластера на выбор либо нажать одну кнопку и одно подтверждение, либо выполнить следующую строчку PowerShell-скрипта:

Remove-AzureRmHDInsightCluster -ClusterName <Cluster Name>

2. Data Science VM

Если вам вдруг захотелось: 32x CPU, 448Gb RAM, ~0.5 TB SSD с предустановленными и сконфигурированными:

  • Microsoft R Server Developer Edition,
  • Anaconda Python distribution,
  • Jupyter Notebooks для Python и R,
  • Visual Studio Community Edition с Python и R Tools,
  • Power BI desktop,
  • SQL Server Express edition.

Если Вы собирайтесь писать на R, Python, C# и использовать SQL. А потом еще решили, что вам не помешает xgboost, Vowpal Wabbit, CNTK (open source deep learning library от Microsoft Research). Тогда Data Science Virtual Machine то, что вам нужно - там предуставновлены и готовы к работе все перечисленные выше продукты и не только. Развертывание несложное, но и для него есть инструкция.

3. Azure Machine Learning

Azure Machine Learning – облачный сервис для выполнения задач, связанных с машинным обучением. Почти наверняка Azure ML будет центральным сервисом, которым вы будете пользоваться, в случае, если захотите обучить модель, в облаке Azure.

Во второй части рассмотрим, как при помощи Azure Machine Learning организовать совместную работу команды как над прототипом будущей модели, так и, позже, над созданием модели в Azure ML.

Полезные ссылки

  1. [1] Хакатон по Azure Machine Learning

Автор статьи

,
DS/ML Preacher, Microsoft MVP && Coffee Addicted