Блог Дмитрия Сошникова

про технологии и человеческое счастье

Создание виртуальной машины для анализа данных в облаке Microsoft Azure

Для задач машинного обучения как правило требуются достаточно большие ресурсы: как вычислительные, так и для хранения данных. Поэтому всё большее количество специалистов по анализу данных (датасайнтистов) обращают свой взгляд в сторону облачных ресурсов.

Для всех, кто хочет использовать облако для машинного обучения или глубокого обучения нейросетей, у нас есть хорошая новость – облако Microsoft Azure прекрасно вам подойдёт! И вот почему:

  • В Azure есть готовый образ Data Science Virtual Machine, как под управлением Windows, так и под Linux, на которых уже установлено всё необходимое вам программное обеспечение!
  • В нашем облаке вам доступны компьютеры с графическими процессорами NVidia (т.н. N-Series VMs), что сильно ускоряет процесс обучения нейросетей.

В этом посте я рассмотрю инструкцию по созданию и настройке виртуальной машины для глубокого обучения в облаке. При этом я буду предполагать, что у вас уже есть облачная подписка Microsoft Azure, привязанная в вашему Microsoft Account – если это не так, то можно обзавестись пробной подпиской.

Data Science Virtual Machine

Для задач обработки данных хорошо подходит специализированная виртуальная машина Data Science Virtual Machine. На ней изначально уже установлены:

  • Visual Studio и Visual Studio Code, с поддержкой R и Python
  • Anaconda – самая популярная cреда для поддержки различных окружений на Python и не только
  • Все необходимые фреймворки для обучения нейросетей: Microsoft Cognitive Toolkit (CNTK), Tensorflow, MXNet и др. Причем если вы используете виртуалку с GPU – все утилиты и библиотеки для работы с GPU (драйвера NVidia, CUDA, cuDNN и др.) будут уже настроены.
  • Jupyter Notebooks
  • Microsoft R
  • Все необходимые библиотеки и утилиты для доступа к Azure
  • Много полезных утилит (github, AzCopy, …) и прочих вкусностей

Виртуальные машины доступны как для Windows, так и для Linux:

image

При этом есть тонкости:

  • Data Science Virtual Machine for Windows 2016 – это самый лучший вариант! Может ставится как на GPU (причем как NC, так и NV – подробнее об этом ниже), так и на обычную VM.
  • Deep Learning Toolkit for DSVM – это более старая версия виртуальной машины для глубокого обучения на базе Windows Server, которая ставится только на виртуалки типа NC (которых иногда может не хватать).
  • Из Linux-вариантов поддержка GPU есть только в Ubuntu, но зато и выбор фреймворков там чуть шире.

Виртуалки с GPU

В Azure есть 2 типа виртуалок с GPU (т.н. N-Series VMs):

  • NC (Compute) – предназначены для вычислений и глубокого обучения. Поскольку такие виртуалки пользуются значительной популярностью, их может иногда не хватать в тех или иных регионах.
  • NV (Visualisation) – предназначены для запуска приложений графической визуализации. Тем не менее, на этих виртуалках теоретически можно считать нейросети, хотя делать это не рекомендуется. И стоят они чуть дороже.

Виртуальные машины с GPU доступны лишь в некоторых регионах, поэтому если вам не предлагают NC или NV в качестве опции при выборе типа виртуалки – попробуйте выбрать другой регион. Начинать стоит с США (South-Central US, East US) или Европы (North Europe). Вот на этой странице можно посмотреть доступность в разных регионах, выбирая их из drop-down вверху страницы.

Процесс создания VM

Ниже описывается процесс создания и настройки Data Science VM на GPU.

1. Заходим на Azure Portal и выбираем вверху пункт “создать”:

image

2. В строке поиска пишем Data Science и получаем на выбор несколько вариантов, приведенных на рисунке выше.

3. Выбираем нужны вариант и нажимаем “Создать”. После этого переходим вот к такому экрану конфигурации:

image

4. При установке машины с GPU в качестве диска обязательно выбрать HDD, поскольку N-Series VM не бывают с SSD, и если выбрать SSD-потом не будет доступна опция выбора N-Series.

5. Выбираем имя пользователя, пароль и т.д. Также выбираем имя новой ресурсной группы, куда будут помещены все облачные объекты, привязанные в этой виртуальной машине – хранилище для дисков, сама виртуалка, сетевые интерфейсы и т.д.

6. В качестве региона выбираем подходящий регион по принципу, описанному выше. Если в выбранном регионе не окажется доступных VM с GPU – потом можно будет вернуться и сменить его.

7. Следующим пунктом выбираем размер и тип виртуалки. NC6 – это самая простая виртуалка с графическим процессором, и как видим на текущий момент она стоит около 60000 руб. в месяц.

image

8. В разделе “дополнительные параметры” в принципе можно ничего не настраивать, если вы просто создаете одну вирталку. Если же у вас уже есть какая-то виртуальная подсеть, или вы настраивали ранее сетевой доступ для другой VM – здесь есть некоторый простор для оптимизации.

9. На последнем экране читаем ещё раз выбранную конфигурацию и нажимаем “Купить”.

image

10. После этого машина долго и мучительно (более 10 минут) создается.

Процесс настройки VM

На этом этапе вы уже можете зайти в свою виртуалку, нажав кнопку “Connect” на страничке настроек (выделено красным):

image

Однако для комфортной работы с виртуальной машиной нужно сделать ещё несколько настроек:

1. Присвоить машине удобное DNS-имя, чтобы обращаться к ней по имени. Для этого надо нажать на IP-адрес на страничке выше (выделено синим), на открывшейся странице ввести DNS-имя и нажать “Сохранить”:

image

Также запомните окончание адреса, который зависит от региона. Для данной машины полный DNS-адрес будет smart8.southcentralus.cloudapp.azure.com. Теперь вы сможете просто подключаться к машине с помощью удалённого рабочего стола, используя DNS-адрес и введя указанные ранее данные о пользователе и пароль:

image

2. Очень удобно проводить обучение нейросетей не через удалённый терминал, а через браузер, используя Jupyter Notebook. Для этого рекомендуется настроить автоматический запуск Jupyter на виртуалке, а также пароль для доступа. Для этого войдите на машину через удалённый рабочий стол и запустите ярлык, показанный ниже:

image

После этого в появившемся текстовом окне необходимо дважды ввести пароль и нажать ENTER.

image

После этого необходимо немного подождать, и можно попробовать войти в Jupyter из локального браузера по адресу https://localhost:9999. При этом игнорируйте сообщения о том, что https-сертификат неверный – смело переходите на страницу, вводите установленный ранее пароль и начинайте работать!

image

3. Для того, чтобы Jupyter Notebook был доступен извне по порту 9999, необходимо добавить запись в Network Security Group для нашей машины (если это не было сделано по умолчанию). В панели управления Azure переходим в группу ресурсов нашей виртуалки и выбираем нечто, заканчивающееся на –nsg:

image

В открывшемся окне мы должны увидеть примерно такие правила:

image

Если правила Jupyter с портом 9999 нет, то его необходимо добавить вручную, указав протокол TCP и порт 9999.

После этого вы должны быть в состоянии зайти на Jupyter Notebook вашей машины, просто указав в браузере адрес https://smart8.southcentralus.cloudapp.azure.com:9999 и введя пароль, установленный на предыдущем шаге.

Простой запуск и остановка VM

Поскольку машины с GPU дорогие, то рекомендуется останавливать виртуалки, когда вы их не используете. Так вы сможете снизить расходы с $1000 в месяц, до $70-150 (таков на данный момент мой типовой счет за облако, если я не делаю чего-то экстраординарного). Чтобы каждый раз не заходить на Azure Portal, очень удобно настроить специального Azure Bot в скайпе, который позволит вам запускать и останавливать машины простыми командами.

Процесс настройки бота такой:

1. Заходите на http://botframework.com в раздел Bot Directory.

image

2. Как правило, Azure Bot будет доступен на первой странице. Если нет – найдите его!

3. Нажимаете на бота и устанавливаете его себе в Skype.

4. При первом диалоге с ботом надо будет аутентифицироваться – перейти по ссылке, залогиниться в Azure и скопировать код с сайта в чат с ботом. После этого бот вас запомнит, и делать это будет не нужно.

5. Для остановки и запуска виртуальных машин используйте команды start vm <имя>, stop vm <имя>

image

Обратите внимание, что только такое выключение машины (DEALLOCATION) ведет к тому, что с вас перестают списывать деньги за её использование. Если вы просто в удалённом терминале скажете Shutdown – машина будет остановлена, но не деаллоцирована, и деньги продолжат списываться. При деаллокации машины освобождаются лишние ресурсы, включая IP-адреса и временные диски.

Хранение данных

В заключение хотелось бы сказать несколько слов о хранении данных. Вместе с созданной машиной автоматически было создано два диска:

  • Диск C: – системный. На нем хранятся все программы и системные файлы, и даже есть немного места. Содержимое этого диска сохраняется при деаллокации машины. Однако захламлять его вашими данными – не слишком хорошая идея.
  • Диск D: – это быстрый диск для временных данных, его содержимое между запусками машины будет теряться.

Для долгосрочного хранения данных, а также для разделения их между машинами, можно использовать следующие подходы:

  • Создать файловое хранилище внутри Azure Storage и затем подключить его к своей машине командой net use. Такой подход имеет тот плюс, что вы сможете также подключить то же хранилище к своей основной машине, и тем самым получите простой способ обмениваться данными. Однако файловое хранилище относительно медленное, а если оно вдруг расположено в другом регионе – то совсем медленное. Кроме того, за пересылку данных между регионами взимается какая-то плата.
  • Создать виртуальный диск (Managed Disk) и подключить его к виртуальной машине. Виртуальные диски быстрее, чем файловые хранилища, но их сложнее подключить к внешним компьютерам.

Best Practice

В последнее время я делаю несколько проектов по анализу данных и обучению нейросетей, поэтому хочу поделиться с вами полезным приёмом использования виртуальных машин с GPU. Как известно, 80% времени обычно тратится на подготовку данных, и лишь 20% – на собственно запуск алгоритмов обучения. Поэтому я обычно имею в своём арсенале две виртуальные машины, подключенные к общему файловому хранилищу:

  • Виртуальная машина для подготовки данных – это обычная виртуалка, без GPU, достаточно мощная, чтобы с ней было комфортно работать по удалённому доступу. Обычно я использую что-то типа DS2.
  • Виртуальная машина для обучения – это NC6.

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

Однако для ускорения обучения я иногда копирую данные с внешнего хранилища на локальный диск (C: или D:, в зависимости от того, насколько долгосрочны должны быть эти данные).

Заключение

Data Science Virtual Machine – это очень простой и быстрый способ начать использовать инструменты анализа данных и глубокого обучения. Я надеюсь, что мой опыт поможет вам использовать эти виртуальные машины в своей работе или исследованиях. Если у вас есть свой опыт использования виртуальных машин с GPU для анализа данных – делитесь опытом в комментариях!

1 comment

Один день из жизни евангелиста

Бывают иногда такие дни, когда чувствуешь себя необыкновенно хорошо. У меня как-то был такой день в Париже, а ещё в Питере. А вот сегодня выдался совершенно замечательный насыщенный рабочий день в Москве. На всякий случай поделюсь в вами – вдруг вам интересно, как бывают устроены рабочие дни технологического евангелиста.

Часть 1: МФТИ

Утром просыпаемся вместе с дочерью, и после короткого завтрака фирменным шпинатом бежим на Физтех. Она – в Физтех-лицей, я – вести курс функционального программирования на ФИВТ. Студенты уже прослушали теоретические материалы курса онлайн, поэтому я рассказываю то, что не вошло в онлайн-курс, разбираем примеры. В некотором смысле, пытаюсь реализовать концепцию “перевернутого класса” – для мотивированных студентов это работает.

20170323_073325944_iOS 20170309_074243039_iOS

Часть 2: Круглый стол на онлайн-конференции

После занятия надо сразу бежать в Останкино – оттуда компания Webinar.ru проводит онлайн-конференцию по образованию EdTech.Space. По дороге читаю статью на хабре про то, как используется SmallBasic в образовании. Интересная мысль: SmallBasic хорош тем, что он ужасен. Пишу в твиттер.

Круглый стол ведет Александр Альперн (ген.директор Webinar.ru), мы вместе с Сергеем Орловским (CEO Nival), Дмитрием Мацкевичем (Flocktory, Icon8) и Дмитрием Кондратьевым (Юниум, ранее Иннополис) обсуждаем, как новые технологии и ИИ могут изменить образование.

20170420_091928321_iOS 

Основная мысль – в современном мире слишком легко получить дофамин, поэтому образованию приходится конкурировать с такими способами легкого получения счастья, как соц.сети или TED-ролики. Это сложно, но можно погружать пользователя в игру (не путать с геймификацией, которая имеет синдром отмены). Искусственный интеллект нам поможет, хотя роль преподавателя на себя не возьмёт и мир не захватит (по крайнем мере, пока). Например, он может сегментировать аудиторию, направляя учащихся к разным персональным тьюторам, или следить за вниманием и указывать, какие части контента надо менять.

Также запомнилась одна важная мысль от Сергея Орловского. Мир усложняется, и важный способ контролировать сложность – это мораль. Поэтому должна возникнуть новая мораль (на смену традиционной религии), а если нет – человеческая культура рискует “схлопнуться”. При этом под моралью понимается набор правил взаимодействия людей, структура социума. Не могу сказать, что полностью согласен (я по-прежнему верю, что сложность может “сворачиваться” и представляться более компактно за счет абстракции)… в общем, это тема для отдельного поста.

После круглого стола не можем долго разойтись, болтаем с Дмитрием Мацкевичем про нейросети, ботов и общих знакомых, с командой Webinar.ru про конференцию и удержание аудитории в онлайн, а потом Александр проводит экскурсию по офису Webinar.ru – очень креативно оформлено пространство, несмотря на недавний ремонт в офисе Microsoft – я им завидую! Посмотрите, с какой любовью выполнена табличка с днями рождения сотрудников!

И кстати, в webinar.ru тоже есть своё кафе!

20170420_120438975_iOS 20170420_120432971_iOS

Часть 3: Обед и монорельс

Время обеденное, и по дороге дальше забегаю в Il Patio. Приятно удивлён, увидев электронное меню на планшете, прямо из которого можно сделать заказ!

20170420_122611566_iOS 20170420_131234824_iOS

После обеда, решаю совершить путешествие на монорельсе. Недавно он был переведен в режим туристического использования, и это значит, что ходит он теперь каждые полчаса. Поначалу стою на платформе один и фотографируюсь в зеркале, потом постепенно платформа наполняется, и минут через 20 приходит поезд, который почти полностью заполняется людьми. Пока жду на платформе – созваниваюсь с коллегами, договариваемся, когда будет делать встречи команд Imagine Cup для подготовки их к финалу.

20170420_134825058_iOS 20170420_131822866_iOS

Параллельно вспоминаю, как я катался на монорельсе первый раз – это было за пару дней до выхода на работу в Microsoft, более 11 лет назад… Я тогда подумал, что пока меня полностью не загрузили работой – надо успеть посмотреть недавно открывшийся монорельс. Кто бы мог подумать, что потом можно будет делать это практически в рабочее время!

Часть 4: Студентка Ася и нейросети

Следующая моя точка – это снова кафешка. Надо провести пару часов перед следующими встречами и мероприятием, поэтому сажусь, открываю ноутбук, захожу в виртуальную машину в облаке и начинаю обучать нейросеть на распознавание изображений. Вот так, из кафешки, работаю с 6-ядерной машиной с 56 Гб памяти и графическим процессором.

20170420_144431550_iOS 20170420_154509444_iOS

Через некоторое время в этой же кафешке встречаюсь с девушкой Асей, которая будет писать диплом по машинному обучению в МАИ под моим руководством. У неё очень нетипичная для студентки МАИ судьба, множество англоязычных курсов на Coursera за плечами (включая легендарный курс по Machine Learning от Andrew Ng), поэтому будет интересно. Придумываем возможный совместный проект с ФКН ВШЭ и Институтом образования ВШЭ.

Часть 5: Презентация карты лидеров инноваций в образовании

Вечером в планетарии проходит презентация карты лидеров инноваций в образовании – масштабного проекта, сделанного центром содействия инновациям в образовании под руководством Жюльнар Асфари. В ходе проекта были проведены беседы с несколькими сотнями людей из образовательной сферы, собраны связи и “знакомства”, в результате построен граф из почти 1000 персоналий, многие из которых были на мероприятии. Прекрасная возможность увидеть в одном месте сразу многих знакомых! Не ожидал, но приехали знакомые из Томска, Казани, Твери.

20170420_170651435_iOS 20170420_192215750_iOS

Подобное мероприятие очень сильно заряжает энергией и энтузиазмом, поскольку ощущаешь себя частью большого сообщества людей, кому небезразлично образование и судьбы подрастающего поколения. Тут же на месте удалось поговорить насчет потенциального обучения детей Machine Learning-у, собрать мнения и придумать идеи совместных проектов.

По дороге домой наслаждаюсь ночной Москвой.

20170420_193109084_iOS 20170420_201524299_iOS

Часть 6: Внезапная самоорганизация любителей F#

Ближе к полуночи еду домой, параллельно читаю соц.сети – что коллеги из Microsoft написали за день. Внезапно натыкаюсь на активную дискуссию на тему F# и понимаю, что оказывается добрые люди уже создали отдельный телеграм-канал для любителей этого языка! Захожу, после чего ещё около часа не могу перестать общаться – как внутри самого канала, так и с отдельными его представителями. Очень тёплый приём!

20170420_210557000_iOS 20170420_234758000_iOS\

Часть 7: Спать?

Когда я прихожу домой – дочь уже спит. Она стала совсем взрослая, и сама готовит себе шпинат по секретному рецепту. Я немного переживаю, что не пообщался с ней сегодня – это единственное, чего не хватило, чтобы день вышел совсем идеальный. Хотя нет – ещё бы пару лишних часов на сон…

Вместо сна решаю написать это статью, чтобы сохранить в памяти прекрасное настроение, и немного на примере показать, какая увлекательная профессия – евангелист. Кстати, если вы хотите подробнее узнать о профессии евангелиста – посмотрите вот это интервью.

В ходе написания статьи вдруг обнаруживаю на странице ФКН ВШЭ свою фотографию:

2017-Hse-ImCup

Заканчиваю писать в блог и наконец ложусь спать. А между тем спать остаётся не так много времени, т.к. завтра будет новый день, также полный удивительных событий.

Add a comment

Hello, Bot! Чат-боты–следующее поколение приложений

Недавно прошла конференция //BUILD, на которой Майкрософт традиционно представляет новые технологии для разработчиков. В ключевом докладе первого дня была высказана одна очень важная мысль – по мере того, как общение с компьютерами становится всё более естественным, возрастает роль диалогового общения на естественном языке. Речь здесь не только о том, что мы сможем просить голосовой помощник Cortana просить поставить нам будильник, но и что множество других задач (заказать пиццу, забронировать гостиницу, купить билеты и т.д.) может быть решено с помощью диалога. Более того, это может быть не только диалог между пользователем и компьютером: в более сложном случае человек может попросить Cortana спланировать путешествие, и затем Cortana будет сама общаться с другими ботами, совершая заказ гостиницы и билетов.

Здесь интересно то, что само “общение” может происходить а различных местах: на десктопе с помощью клиента Cortana, но также и в других традиционно используемых для чата каналах: в Skype, Telegram, Slack и т.д. Личность и память нашего персонального ассистента не зависит от канала общения, а располагается где-то в облаке, готовая пообщаться с нами на любом из так называемых “conversational canvases”.

imageimage

Для создания ботов была представлена предварительная версия Microsoft Bot Framework и соответствующие API. Для работы с ботами используются следующие ключевые элементы:

  • Bot Builder SDK (доступен для C# и для Node.js) предназначен для создания ключевой функциональности бота. Он основан на WebAPI, и определяет протокол общения бота с внешним миром. В рамках SDK есть эмулятор, позволяющий отлаживать ботов, а также набор классов для упрощения реализации некоторых ключевых абстракций, таких, как продолжительные диалоги с состоянием.
  • Cognitive Services (ранее известные как LUIS, составная часть Project Oxford) позволяют упростить анализ естественного языка и выделение смысла из текстовых предложений. С помощью веб-интерфейса мы можем определить основные синтаксические конструкции, и автоматически присвоить им соответствующие намерения пользователя (intents), на которые затем будет реагировать бот.
  • Bot Connector позволяет привязать наш бот к одному или нескольким каналам общения, таким, как Skype, Slack, Telegram и др. Для этого достаточно сконфигурировать соединение бота на сайте botframework.com.
  • Каталог ботов, в котором со временем можно будет публиковать ссылки на различные боты.

Пример: знакомимся с Murphy Bot

Отличный пример бота – это Murphy, созданный в рамках проекта http://www.projectmurphy.net/. Зайдя на сайт, вы можете установить Murphy себе в Skype и начать с ним общаться (только убедитесь, что вы используете последнюю версию Skype, которая поддерживает ботов). Этому боту можно задавать вопросы вида “What if Cindy Crawford were a superman?” (пример диалога вы видите ниже), или “What if I were a programmer” (в этом случае он попросит вас загрузить свою фотографию).

image

Hello, Bot! Пишем себе собеседника

В качестве примера давайте рассмотрим, как создать простейшего бота на базе Bot Framework. Вспомним, что сердце и мозг бота – это веб-сервис, который обычно располагается в облаке.

image

Для создания такого сервиса проще всего скачать Bot Framework Template для Visual Studio (убедитесь, что у вас стоит Visual Studio 2015 Update 1 с веб-инструментами). Полученный ZIP-файл положите в каталог с шаблонами Visual Studio, обычно это “%USERPROFILE%\Documents\Visual Studio 2015\Templates\ProjectTemplates\Visual C#". После этого в Visual Studio вы сможете создать новый проект типа Bot Application:

image

В созданном проекте за основную функциональность бота отвечает метод Post в файле Controllers/MessagesController.cs. Для простейшего Hello-бота реализуем этот метод следующим образом:

public async Task<Message> Post([FromBody]Message message)
{
    if (message.Type == "Message")
    {
        var reply =
            message.Text.ToLower() == "hello" ?
                "Hello!" :
                "I do not understand you!";
        return message.CreateReplyMessage(reply);
    }
    else
    {
        return HandleSystemMessage(message);
    }
}

Чтобы протестировать бота, запустим проект на локальном веб-сервере (F5), скопируем адрес и порт из адресной строки открывшегося браузера, и откроем его в Microsoft Bot Framework Emulator (его необходимо предварительно скачать и установить). Обратите внимание, что к адресной строке сайта необходимо дописать путь /api/messages.

image

Чтобы заставить бот делать что-то чуть более полезное, я использовал порт на C# известной программы Eliza. Получившийся чат-бот вы можете скачать в нашем репозитории GitHub. В первой версии схема построения бота мало чем отличается от приведенной выше программы, только для формирования ответа вызывается метод готовой библиотеки Eliza.

Такая простая реализация не очень подходит для поддержки длительных диалогов с пользователем, поскольку метод Post используется для обработки запросов всех пользователей, и нет разделения состояния между ними. Чтобы это сделать, можно в явном виде смотреть на идентификатор сессии (message.ConversationID), использовать объекты BotUserData/BotConversationData, или же задействовать более продвинутые API с поддержкой диалогов (о них мы расскажем в дальнейших статьях). Пока же не будем обращать внимания на эти детали, считая, что бот является Stateless.

Чтобы запустить бота в облаке, нам для начала нужно опубликовать получившися Web API в Azure. Затем следует войти на сайт http://dev.botframework.com и зарегистрировать нового бота. Важно придумать для бота уникальный AppID, и получить сгенерированный автоматически App Secret.

После этого необходимо сделать важный шаг – в файле Web.Config нашего приложения необходимо добавить App ID и App Key:

<configuration>
  <appSettings>
    <add key="AppId" value="YourAppId" />
    <add key="AppSecret" value="YourAppSecret" />
  </appSettings>

После чего необходимо повторно развернуть бота в облаке, чтобы Web Config обновился.

image

Сделав это, можно протестировать работоспособность бота в панели свойств на сайте Bot Framework, или же воспользоваться уже знакомым нам эмулятором – правда в этом случае надо будет ввести правильные AppID и App Secret:

image

Теперь, когда бот работает в эмуляторе, можно привязать его к различным каналам связи. Для этого в панели управления ботом на сайте Bot Framework необходимо добавить и сконфигурировать эти каналы. Для этого выбираем предпочитаемый канал связи, и следуем инструкциям:

image

Например, в случае с Telegram необходимо создать новый бот в Telegram с помощью беседы со специальным ботом Bot Father, после чего получить Access Tokem, и предоставить его сайту Bot Framework. После этого Bot Connector возьмет на себя все посреднические операции между Telegram API и вашим ботом, и вы сможете общаться с вашим ботом из Telegram. Кстати, мой бот называется в телеграме @ElllizaBot, можете с ним поговорить!

Подробнее про создание бота с нуля с помощью Bot Framework вы можете посмотреть в этом англоязычном докладе в BUILD.

Канальная абстрация

Основная прелесть Bot Framework API состоит в том, что мы можем теперь писать боты, не ориентируясь на какой-то один канал общения. По сути дела, Bot Framework даёт нам правильный уровень абстракции для реализации механизмов беседы и диалогов, а конкретную связь с различными инструментами общения берет на себя Bot Connector. Это разделение позволяет программисту написать бот один раз, а общаться с ним отовсюду.

Write Once – Chat Everywhere

Принцип абстрации от канала, заложенный в Microsoft Bot Framework

Несколько слов про Skype Bot API

Ещё одна новость, объявленная на //BUILD – это доступность отдельного Skype API для создания ботов. На самом деле создавать Skype-ботов можно и через Bot Framework, но возможности Bot Framework пока позволяют нам работать только с текстом (плюс с некоторыми видами attachemnt-ов), в то время как Skype Bot API несколько шире, и позволяет в том числе создавать видео-боты. При выборе технологии следует отдавать предпочтение Bot Framework, из-за её универсальности, однако если вы хотите создать действительно удивительный бот именно для Skype – посмотрите на Skype Bot SDK.

Заключение

Диалог – это естественная форма взаимодействия людей, и может статься, что она станет естественной формой взаимодействия людей и компьютеров. Майкрософт предлагает удобную программную абстракцию в виде Bot Framework, которая позволяет начать достаточно просто создавать свои чат-боты, работающие сразу со многими каналами общения. Это не только перспективно, но ещё и очень занимательно! Давайте пока экспериментировать с созданием ботов, а через несколько лет (или месяцев) посмотрим, являются ли боты заменой веб-сайтам или мобильным приложениям, как о том говорят аналитики.

Add a comment