Вся идея разработки модели машинного обучения состоит в том, чтобы сделать ее доступной для использования целевой аудиторией. Допустим, вы обучили прогностическую модель и построили конвейер данных для преобразования входных признаков. Все, что нужно сделать пользователю, это вызвать модель с входными значениями и получить предсказанное значение. Как мы этого добиваемся? Этого можно достичь без обширного программирования и дорогостоящей инфраструктуры. Модель можно развернуть на сервере или в облаке, чтобы к ней можно было получить доступ через сеть вашей компании или через Интернет. Для этой демонстрации мы развернем его на AWS EC2 и свяжем с ним нашу панель инструментов Tableau.
Облачные провайдеры демократизировали мир технологий, позволив людям развертывать и запускать свои приложения.
- без необходимости покупать и управлять оборудованием
- простая настройка через графический интерфейс
- Установите и снимите в течение нескольких минут
- Платите только за то, что используете
В этой статье мы увидим, как развернуть нашу модель, которая прогнозирует шансы госпитализации на AWS EC2, и получить доступ к модели из панели управления Tableau, чтобы пользователи могли выбирать входные значения и прогнозируемое процентное значение отображается на экране.
Tableau поддерживает расширения Analytics, которые могут получать доступ к API с помощью Tabpy. Tabpy – это пакет Python, разработанный и управляемый Tableau. Мы будем использовать пакет tabpy для интеграции приборной панели Tableau с моделью машинного обучения, разработанной с использованием python. Обратите внимание, что расширения Analytics доступны только в Tableau Desktop и Tableau Cloud. Он недоступен для информационных панелей, опубликованных в Tableau Public.
Вкратце наша архитектура будет такой:
Настройка экземпляра AWS EC2
Установка экземпляра на AWS EC2 с базовой конфигурацией бесплатна, но 2 ГБ памяти может быть недостаточно для экземпляра tabpy. Доступность t2.medium была выше. Он поставляется с 4 ГБ памяти и производительностью сети от низкой до средней. Кроме того, ubuntu — хороший выбор для ОС.
Подробные инструкции по настройке экземпляра AWS EC2 см. на странице https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html.
Запишите имя пары ключей и DNS общедоступного IPv4 и сохраните пару ключей, они необходимы для дальнейших шагов.
Настройка сервера
Когда экземпляр AWS EC2 будет запущен и запущен, давайте выполним необходимую настройку для развертывания модели. Ubuntu поставляется с последней версией Python. Мы установим pip и tabpy. Но сначала рекомендуется обновить среду перед любой установкой.
Следуйте приведенным ниже командам, чтобы подключиться к экземпляру AWS EC2 из командной строки Windows. Убедитесь, что вы вошли в папку, в которой сохранена ваша пара ключей EC2.
Команда для подключения к AWS EC2 из командной строки Windows.
ssh -i «имя_ключа.pem» ubuntu@‹общедоступный DNS IPv4›
Это будет выглядеть примерно так
ssh -i «key_name.pem» ubuntu@ec2–11–222–333–444.ap-southeast-1.compute.amazonaws.com
Команда для обновления среды Ubuntu
sudo apt-получить обновление
Команда для установки pip.
sudo apt-get -y установить python3-pip
Команда для установки tabpy.
pip3 установить таппи
После установки пакета tabpy необходимо повторно инициировать ssh, чтобы иметь возможность запускать tabpy-сервер.
Команда для запуска tabpy-сервера
таппи
Теперь наш tabpy-сервер запущен и готов к размещению модели машинного обучения. Перенесем необходимые файлы в AWS EC2. В идеале это модель и конвейер данных, сохраненные в виде файлов pickle и скрипт Python.
Команда для передачи файлов в AWS EC2
scp -r -i «key_name.pem»./AWS_Files ubuntu@ec2–11–222–333–444.ap-southeast-1.compute.amazonaws.com:~/
Мы можем подтвердить, что рассол модели, рассол pre_process, а также скрипт Python deploy_app.py находятся в AWS EC2 с помощью команды ls.
Скрипт Python для развертывания модели ML на tabpy
from tabpy.tabpy_tools.client import Client import pandas as pd import numpy as np import pickle model = pickle.load(open('rf.pkl', 'rb')) pre_process = pickle.load(open('pre_process.pkl', 'rb')) #Function to receive data, transform it using pipeline, predict #using trained model and return probability of class 1 def Hospitalization_Prediction(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8): input_data = np.column_stack([_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8]) X = pd.DataFrame(input_data, columns=['age', 'MAP', 'triage_acuity', 'triage_heartrate', 'triage_temperature', 'triage_resprate', 'triage_o2sat', 'n_ed_365d']) result = model.predict_proba(pre_process.transform(X)) return [probability[1] for probability in result] client = Client('http://localhost:9004/') # Connect to TabPy server using the client library connection = Client('http://localhost:9004/') connection.deploy('Hospitalization_Prediction', Hospitalization_Prediction, 'Returns prediction of probability of Hospitalization.', override=True)
Давайте теперь запустим deploy_app.py, используя приведенную ниже команду.
python3 deploy_app.py
Сценарий python в deploy_app.py развертывает модель машинного обучения на сервере tabpy. Скрипт также выложен на Github
После запуска приведенного выше скрипта Python мы можем убедиться, что наша функция Hospitalization_Prediction
доступна на tabpy-сервере, используя IP-адрес для экземпляра AWS EC2. 9004 — порт по умолчанию для tabpy.
Настройки на дашборде Tableau
Теперь давайте настроим tableau для доступа к модели машинного обучения из Tableau Desktop → Справка → Настройки и производительность → Управление подключением расширения Analytics, как показано ниже. Нажмите «Проверить соединение», чтобы проверить, доступна ли функция из Tableau.
Имя хоста — это общедоступный IPv4-адрес AWS EC2, а порт — 9004, который является портом по умолчанию для Tabpy.
Теперь вы можете опробовать панель инструментов, изменив входные значения и увидеть, что процент госпитализации обновлен. Панель инструментов размещена на Github.
Шаги, чтобы Tabpy продолжал работать на сервере
Теперь у вас есть панель инструментов, но если вы закроете свой терминал, tabpy будет завершен. Чтобы он продолжал работать, когда вы не подключены к серверу, мы можем установить tmux, который является терминальным мультиплексором для unix-подобных операционных систем.
- Остановить Tabpy с помощью Cntrl X, Cntrl C
- Установить тмукс
sudo apt установить tmux
3. Создайте новую сессию с именем tabpy
tmux новый -s tabpy
4. Запустите tabpy в новом сеансе, введя «tabpy». Итак, теперь сеанс активен, и его можно отсоединить, набрав Cntrl B, D. Теперь сеанс отсоединен и терминал можно закрыть, панель управления Tableau по-прежнему сможет получить доступ к модели машинного обучения, работающей на AWS EC2.
5. Чтобы получить список всех активных сеансов, используйте следующую команду
tmux лс
6. Чтобы подключиться к активной сессии, используйте следующую команду
tmux attach-session -t tabpy
Скриншот терминала ниже для справки:
Ну вот! Модель машинного обучения запущена и доступна на панели инструментов Tableau из любого места.
Надеюсь, вы нашли эту статью полезной. Предложения и отзывы приветствуются и не стесняйтесь пинговать меня на LinkedIn для любых разъяснений.
Следите за другими публикациями в разделе Жизненный цикл проекта машинного обучения :)