Вся идея разработки модели машинного обучения состоит в том, чтобы сделать ее доступной для использования целевой аудиторией. Допустим, вы обучили прогностическую модель и построили конвейер данных для преобразования входных признаков. Все, что нужно сделать пользователю, это вызвать модель с входными значениями и получить предсказанное значение. Как мы этого добиваемся? Этого можно достичь без обширного программирования и дорогостоящей инфраструктуры. Модель можно развернуть на сервере или в облаке, чтобы к ней можно было получить доступ через сеть вашей компании или через Интернет. Для этой демонстрации мы развернем его на 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-подобных операционных систем.

  1. Остановить Tabpy с помощью Cntrl X, Cntrl C
  2. Установить тмукс

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 для любых разъяснений.

Следите за другими публикациями в разделе Жизненный цикл проекта машинного обучения :)