Featured image of post Colab + Streamlit + Ngrokでアプリデプロイ

Colab + Streamlit + Ngrokでアプリデプロイ

Colab + Streamlit + Ngrok

やりたいこと

MLアプリをStreamlit上で実装した後に、外部に公開するいい方法を探していました。

KDDの論文をまとめた際は、herokuで公開していましたが、無料枠が限られていることもあり、代替案を探していました。

実装と公開を一つのサービス上からまとめて制御できたらいいなと思っていたところ、ngrokで公開までできることを知り調査しました。

Google Colabと組み合わせて非常に簡単に外部公開ができるとのことなので、 以下の記事を参考に動作確認してみました。

これが元情報

コードの内容

Stlreamlitをインストールします。Colab内のIPythonの依存関係の都合で、 Streamlitの最新バージョンをインストールすると問題があったため、v1.0まで下げてインストールしました。

!pip install streamlit==1.0 -q

wgetでngrokをダウンロードします。colabに合わせてOSとシステムのプロセッサに合わせてダウンロードする必要があります。 unzipでダウンロード後のファイルを解凍します。

!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip -qq ngrok-stable-linux-amd64.zip

ngrokをバックグラウンド起動させます。 streamlitのデフォルトのポート番号である8051を指定します。

streamlitのポートとコンフィグについてはこちらの公式ページを参照すると詳しいです。

こちらを実行すると、外部に公開するリンクが返ってきます。

get_ipython().system_raw('./ngrok http 8501 &')
!curl -s http://localhost:4040/api/tunnels | python3 -c "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"

streamlitのhelloデモを実行します。実行した後に、一つ上のセルで返ってきたリンクにstreamlitが作る画面にアクセスできます。

!streamlit hello

これだけでアプリの実装と外部公開ができてしますので、非常に強力な方法だと感じました。プロトタイプの作成だけでなく、公開の敷居も下がったので、Stremalitを学ぶ価値が高まったように感じました。

Licensed under CC BY-NC-SA 4.0