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. Microsoft R Server / R Server для Azure HDInsight
- 2. Data Science VM
- 3. Azure Machine Learning
- 4. SQL Server R Services
- 5. Power BI
- 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.
Комментариев нет:
Отправить комментарий