Создание модели машинного обучения — это здорово, но превратить ее в живое веб-приложение — это совсем другая история. Необходимо принимать во внимание такие вещи, как безопасность, масштабируемость, мониторинг, управление API и возможность совместного использования. Сегодня я хочу показать вам, как вы можете легко превратить свою модель Python в живое веб-приложение, используя только знания Python, Ubiops и Streamlit. Большим преимуществом объединения этих двух вещей является то, что вам не нужно ни глубоких знаний в области ИТ, ни опыта в разработке интерфейса.
Об УбиОпс
UbiOps — это сервис SaaS, который превращает ваш код Python или R в масштабируемое живое приложение за считанные минуты. UbiOps работает с развертываниями и конвейерами. Короче говоря, UbiOps создает контейнер вокруг вашего кода, запуская его как микросервис внутри UbiOps, способный получать запросы на преобразование входных данных в выходные данные. UbiOps также создает конечную точку API для развертывания.
Также можно объединить разные развертывания в цепочку для создания конвейера, но давайте поговорим об этом в другой раз.
Что такое Стримлит?
Streamlit — это платформа приложений, созданная для инженеров машинного обучения. Самое замечательное в Streamlit то, что если вы знаете, как писать сценарии Python, вы можете создавать приложения Streamlit. Приложения Streamlit, которые вы создаете, в основном представляют собой просто сценарии, которые выполняются сверху вниз. Все это он делает без использования обратных вызовов, что дает преимущество в том, что код всегда выглядит чистым и понятным. Чтобы обеспечить безопасность и убедиться, что ваши данные легко повторно использовать, Streamlit использует примитив кэша для хранения ваших данных.
1. Вариант использования
Недавно я создал модель, которая берет написанную от руки цифру и предсказывает, какое это число. Теперь я хочу вывести свою модель на следующий шаг и превратить ее в живое веб-приложение.
В этом примере мы притворяемся, что нам нужно распознавать рукописные цифры, чтобы определить номер чьего-то банковского счета и оцифровать его.
2. Пошаговое руководство и инструкции по скрипту
Ниже я покажу наиболее важные шаги для подключения вашего файла Streamlit к вашей среде UbiOps. Показанные шаги следующие:
(1) Как подключиться к вашей среде UbiOps,
(2) Как подключить среду UbiOps к Streamlit,
(3) Как запустить приложение Streamlit.
Чтобы превратить вашу модель в работающее веб-приложение, необходимо выполнить несколько шагов. Первый — подключиться к вашей среде UbiOps, создав токен API в веб-приложении UbiOps и заполнив этот токен и имя вашего проекта.
Шаг 1) показывает, как это выглядит в коде. Шаг 2) — подключить Streamlit к вашей среде UbiOps. Это делается путем копирования того же токена API и имени проекта из шага 1) в ваш файл Streamlit. Последний шаг (3) — запустить файл Sstreamlit и увидеть, как ваше веб-приложение оживает.
1. Подключитесь к вашей среде UbiOps
API_TOKEN = '<INSERT API_TOKEN WITH PROJECT EDITOR RIGHTS>' # Make sure this is in the format "Token token-code" PROJECT_NAME = '<INSERT PROJECT NAME IN YOUR ACCOUNT>' DEPLOYMENT_NAME = 'mnist-streamlit' DEPLOYMENT_VERSION = 'v1' #import all necessary libraries: import os import ubiops client = ubiops.ApiClient(ubiops.Configuration( api_key={'Authorization': API_TOKEN}, host="https://api.ubiops.com/v2.1" )) api = ubiops.CoreApi(client)
2. Подключите Streamlit к вашей среде UbiOps.
st.title("Streamlit and UbiOps example") # Connect with your UbiOps environment API_TOKEN = '<INSERT API_TOKEN WITH PROJECT EDITOR RIGHTS>' # Make sure this is in the format "Token token-code" PROJECT_NAME = '<INSERT PROJECT NAME IN YOUR ACCOUNT>' DEPLOYMENT_NAME = 'mnist-streamlit' # API setup if PROJECT_NAME and API_TOKEN and DEPLOYMENT_NAME: # Only reconnect if API object is not in session state if 'ubiops_api' not in st.session_state: with st.spinner("Connecting to UbiOps API"): configuration = ubiops.Configuration(host="https://api.ubiops.com/v2.1") configuration.api_key['Authorization'] = API_TOKEN client = ubiops.ApiClient(configuration) st.session_state.ubiops_api = ubiops.CoreApi(client) deployment_info = st.session_state.ubiops_api.deployments_get(PROJECT_NAME,DEPLOYMENT_NAME) print(deployment_info) sleep(2) # sleep for 2s to showcase progress spinners # Use the streamlit session to store API object if(st.session_state.ubiops_api.service_status().status == 'ok' ): st.success("Connected to UbiOps API!") else: st.error("Not connected!")
3. Запустите файл Streamlit
!streamlit run mnist-streamlit.py
После запуска файла mnist-streamlit.py и первого запроса он должен выглядеть так:
3. Подведение итогов
И это все, что нужно, чтобы превратить вашу модель в живое веб-приложение! Мы надеемся, что это поможет вам в ваших повседневных проектах.
Если у вас есть какие-либо вопросы или предложения, присоединяйтесь к сообществу Slack Channel UbiOps или свяжитесь с нашей службой поддержки.
Загрузите блокнот Jupyter здесь.