✨
Colabでウェブアプリを実行する
Google Colaboratry は機械学習向けの実験環境で、とても便利なんですが、そこで構築したモデルやツールのデモなどで、Colaboratry 上でウェブアプリや API を一時的に公開したいことがあります。
そんな時、今までは ngrok などの外部サービスを使って、半ば強引にポートを公開していたのですが、実はそんなことする必要がないことを知りました。
サーバーの立ち上げ
まずは公開したいサーバーを立ち上げます。バックグラウンドで実行して欲しいので、 nohup
と &
を使ってやります。
PORT = 8000
PATH = ''
# 検証用に適当なサーバーを立ち上げておく
!nohup python3 -m http.server $PORT > server.log 2>&1 &
方法1: 別タブで開く
1つ目は、 google.colab.kernel.proxyPort
を使って、URLを取得する方法です。
出力された URL をクリックするだけです。
from google.colab import output
output.serve_kernel_port_as_window(PORT, path=PATH)
こんな感じになります。
表示上は https://localhost:8000/
となっていますが、実際には proxy へのリンクとなっていて、localhost にアクセスするわけではありません。
方法2: ノートブックの出力に埋め込む
別タブで開きたくない場合は
code
from google.colab import output
output.serve_kernel_port_as_iframe(PORT, path=PATH)
こんな感じになります。
まとめ
Google Colaboratry 上で、ウェブアプリを実行して公開する方法をまとめました。
Colab には TensorBoard 拡張が用意されていて、方法2 のように TensorBoard をノートブックの出力に埋め込めるのですが、試行錯誤するたびにスクロールが発生してイライラすることがありました。 方法1 がこれだけ簡単なのであれば、今後はこちらを使うことの方が増えそうです。
Discussion