R в Microsoft Azure для победы на хакатоне. Инструкция по применению |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2016-05-19 20:35
Стандартный план любого хакатона -
R, один из популярнейших языков программирования среди data scientist'ов, получает все большую и большую поддержку как среди opensource-сообщества, так и среди частных компаний, которые традиционно являлись разработчиками проприетарных продуктов. Среди таких компаний - Microsoft, чья интенсивно увеличивающая поддержка языка R в своих продуктах/сервисах, привлекла к себе и мое внимание. Одним из «локомотивов» интеграции R с продуктами Майкрософт является облачная платформа Microsoft Azure. Кроме того, появился отличный повод повнимательнее взглянуть на связку R + Azure - это проходящий в эти выходные (21-22 мая) хакатон по машинному обучению, организованный Microsoft. Хакатон - мероприятие, где R же прекрасно подходит для создания прототипов, для копания (mining) в данных, для быстрой проверки своих гипотез - то есть всего того, что нам нужно на такого типа соревнованиях! Ниже я расскажу, как использовать всю мощь R в Azure - от создания прототипа до публикации готовой модели в Azure Machine Learning. Мотивирующий off-topic Как и в прошлый хакатон (да, это не первый ML хакатон от Microsoft), у вас будет возможность вдоволь напрограммироваться на любимом Python/R/C#, покрутить ручки в Azure Machine Learning, пообщаться с единомышленниками и экспертами, крепко не выспаться, перепить халявного кофе и переесть вкусных печенек. А самые хитрые сделают мир лучше и получат заслуженные призы! 0. Microsoft love R Сразу определимся со списком продуктов/сервисов Microsoft, которые нам позволят работать с R:
И (о радость!) продукты 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-скрипт [источник]: Для удаления кластера на выбор либо нажать одну кнопку и одно подтверждение, либо выполнить следующую строчку PowerShell-скрипта: Remove-AzureRmHDInsightCluster -ClusterName <Cluster Name> 2. Data Science VM Если вам вдруг захотелось: 32x CPU, 448Gb RAM, ~0.5 TB SSD с предустановленными и сконфигурированными:
Если Вы собирайтесь писать на 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 ML будет центральным сервисом, которым вы будете пользоваться, в случае, если захотите обучить модель, в облаке Azure. Подробный рассказ про Azure ML не входит в цели данного поста, в тем более, что о сервисе уже достаточно написано: Azure ML для Data Scientist-ов, Best Practices обучения модели в Azure ML. Сконцентрируемся на следующей задаче: организация командной работы с максимально безболезненным переносом R-скриптов с локального компьютера в Azure ML Studio. 3.1. Начальные требования Для задуманного понадобятся следующие бесплатные программные продукты:
Для работы в Azure понадобится активная подписка Microsoft Azure. 3.2. Начало работы: collaboration everything Один workspace в Azure ML на всех Создаем один(!) на всю команду workspace в Azure ML и расшариваем его между всеми участниками команды. Один репозиторий кода на всех Создаем один облачный Team Project (TFS в Azure) / репозиторий в GitHub и также расшариваем его на всю команду. Думаю, очевидно, что теперь часть команды, работающая над одной задачей хакатона, делает коммиты в один репозиторий, коммитит фичи в бранчи, бранчи мержит в мастер - в общем идет нормальная командная работа над кодом. Один набор начальных данных на всех Зайдите в Azure ML Studio (web IDE), перейдите на вкладку «Datasets» и загрузите набор изначальных данных в облако. Сгенерируйте код доступа (Data Access Code) и разошлите его команде. Так выглядит интерфейс загрузки данных в Azure ML Studio: Листинг 1. R-скрипт для загрузки данных library("AzureML") 3.3. Jupyter Notebook: выполнение R-скриптов в облаке и визуализация результатов После того, как дата, код и проект в Azure ML оказались в общем для всей команды доступе, пора научиться делиться визуальными результатами исследования. Традиционно для этой задачи data science community любит использовать Jupyter Notebook - клиент-серверное веб-приложение, позволяющее разработчику объединить в рамках единого документа: код (R, Python), результаты его выполнения (в т.ч. графики) и rich-text-пояснения к нему. Создадим в Azure ML документы Jupyter Notebook:
В результате на каждую задачу хакатона должны получиться несколько Jupyter Notebook документов:
Вот так это выглядит у меня: 3.4. Prototype to Production На этом этапе у нас есть несколько исследований, по которым получен приемлемый результат и соответствующие этим исследованиям:
Следующий шаг - создание в Azure ML Studio экспериментов (вкладка «Experiments») - далее AzureML-экспериментов. На этом этапе необходимо придерживаться следующих best practices при переносе R-кода в AzureML-эксперимент: Модули:
R-скрипты:
В соответствии с правилами выше перенесем наш R-код в AzureML-эксперимент. Для нам необходим zip-архив, состоящий из 2-ух файлов:
Загрузим полученный архив через Azure ML Studio. И выполним эксперимент, убедившись, что скрипт отработал и мы обучили модель. Теперь можно улучшить существующий модуль, загрузить новый, устроить соревнование между ними - в общем пользоваться благами инкапсуляции и модульной структуры. Заключение По моему мнению R экстремально эффективен в прототипировании, и от этого он прекрасно себя зарекомендовал на различного типа data science хакатонах. В то же время между прототипом и продуктом существует труднопреодолимая пропасть в таких вещах как масштабируемость, доступность, надежность. Используя инструментарий Azure для R, мы довольно долго можем балансировать на грани между гибкостью R и надежностью + другими бенефитами, которые нам дает Azure ML. И еще- Приходите на хакатон по Azure Machine Learning (о нем я писал в начале) и попробуйте все это сами, пообщайтесь с экспертами и единомышленниками Кроме того, для тех кому будет мало офлайн общения, приглашаю в теплый ламповый slack-чат, где участники хакатона смогут задавать вопросы, делится с друг другом опытом, а после хакатона рассказать о своем ML-решении и продолжать поддерживать профессиональные связи. Стучитесь ко мне за инвайтом в slack через личные сообщения в Хабре или по любому из контактов, который найдете в моем блоге (ссылку ставить не буду - через профиль на Хабре найти его не составит труда). Источник: habrahabr.ru Комментарии: |
|