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

В большинстве случаев Colab решает эту проблему. Но что, если вы хотите поделиться своим оптимизированным приложением с другими из Colab.

В этом руководстве мы узнаем, как запустить или развернуть наше оптимизированное приложение из Google Colaboratory.

Давайте начнем. Это простой обзор того, что мы будем делать.

Создайте учетную запись на Ngrok

Ngrok - это мощное решение для предоставления защищенных туннелей от вашей локальной системы к общедоступным. Итак, первая задача - зарегистрироваться на ngrok.com и создать бесплатную учетную запись. Это даст вам доступ к нескольким функциям.

Получите свои токены аутентификации

Чтобы использовать ngrok, вам понадобится токен аутентификации, который можно найти на панели управления вашей учетной записи ngrok (https://dashboard.ngrok.com/get-started/setup).

Это то, что вы будете использовать для аутентификации при работе с ngrok. Вы можете найти свои токены под полем «Подключите свою учетную запись» следующим образом

./ngrok authtokens xxxxxxxxxxxxxxxxxxxx

Это то, что вы будете использовать для подключения своей учетной записи.

Работа в Colab

В своем экземпляре colab вы можете установить необходимые пакеты для вашего приложения. Но два самых важных для запуска streamlit - это конечно streamlit и затем pyngrok.

Поскольку вы работаете внутри Colab a.k.a. Jupyter Notebooks в облаке с быстрыми вычислениями, вам нужно будет использовать! войдите перед любой командой linux / unix для установки и запуска команды на основе unix. Следовательно, в нашем случае мы можем установить streamlit и pyngrok, как показано ниже.

!pip install streamlit
!pip install pyngrok

Напишите свое приложение в песочнице Colab

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

В нашем случае

%%writefile app.py
import streamlit as st
PAGE_CONFIG = {"page_title":"StColab.io","page_icon":":smiley:","layout":"centered"}
st.beta_set_page_config(**PAGE_CONFIG)

def main():
	st.title("Awesome Streamlit for ML")
	st.subheader("How to run streamlit from colab")

	menu = ["Home","About"]
	choice = st.sidebar.selectbox('Menu',menu)
	if choice == 'Home':
		st.subheader("Streamlit From Colab")	
if __name__ == '__main__':
	main()

Чтобы проверить, был ли файл записан в вашу текущую песочницу colab, вы можете использовать команду list, например

!ls

Запустите приложение

Теперь, когда мы написали наше приложение, мы можем запустить его, как если бы мы запускали его локально. Но предостережение - запускать его в фоновом режиме, чтобы после завершения работы ячейки наше приложение продолжало работать как фоновый процесс.

Мы можем сделать это с помощью nohub или disown.

!nohub streamlit run app.py &

В некоторых случаях, если nohub не работает, вы можете использовать базовую команду linux для запуска процессов в фоновом режиме.

!streamlit run app.py &>/dev/null&

Это запустит streamlit на обычном порту по умолчанию 8501, который мы будем использовать для следующего раздела в pyngrok.

Создайте безопасный туннель с помощью Pyngrok

Как мы узнали ранее, ngrok позволяет нам создать безопасный туннель для доступа к нашим локальным приложениям и веб-перехватчикам. Мы будем использовать pyngrok, который действует как оболочка python для ngrok. Установка pyngrok предлагает как пакет python, так и интерфейс командной строки, поэтому вы можете использовать любой по своему желанию.

Чтобы создать туннель, мы будем использовать pyngrok и передавать порт из streamlit (т.е. 8501).

from pyngrok import ngrok
# Setup a tunnel to the streamlit port 8501
public_url = ngrok.connect(port='8501')
public_url

Это сгенерирует общедоступный URL-адрес (что-то вроде https://b546sh556d.ngrok.io), на котором будет работать ваше приложение.

Виола наше приложение работает. Мы успешно развернули наше оптимизированное приложение от Google Colab с помощью Ngrok.

Завершение работы приложения

Если вы хотите закрыть свое приложение, вам нужно сначала проверить, запущен ли процесс streamlit, а затем убить этот процесс.

!pgrep streamlit

or

!ps -eaf | grep streamlit

Затем убейте процесс

kill 445

После этого вы можете выключить ngrok из python

ngrok.kill()

Вы также можете посмотреть видеоурок здесь.

Спасибо за уделенное время

Иисус спасает

Автор: Джесси Э. Агбе (JCharis)