Простота, которую предлагает 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)