Edited at

コメント一行でUI生成。Form機能を使った一歩先のGoogle Colab活用術


Form機能とは?

IpywidgetsはJupyterのUIライブラリとして知られていますが、Google Colabではセキュリティ上の理由により現時点(2019/4/25)では使うことができません。


Add Ipywidgets support #60


一方でColabにはFormという、コメントをわずかに書くだけでUIを自動生成する機能が用意されています。詳しくは、下記公式マニュアルをご覧頂ければと思いますが、コンボボックスやスライダー、日付選択ダイアログといったものが用意されています。


Forms - Colaboratory



作図サンプルでForm機能を体感してみよう

このForm機能のインパクトを体感していただくために、matplotlibの作図支援ノートブックを公開しました(下記リンク参照)。スタイルの選択などをUIとして提供することで、改変できるパラメータをビジターにわかりやすく提示することができます。


Chart builder for matplotlib.ipynb


image.png

image.png


インストーラーとしてForm機能を使う

個人的に、Form機能の重要性を感じたのはTensorflowおよびTensorflow Probability(以下、TFP)のバージョン選択UIです。Colaboratoryにインストールされているモジュールは何もしなくとも上がるため、昨日動いていたはずのコードが今日動かなくなったということが普通に起こり得ます。特に、Tensorflowは仕様が大きく異なる2.xが控えており、多くの既存コンテンツが動作しなくなることが予想されます。

そんなとき、例えばTensorflowのバージョン選択機能がUIとして用意されていると心強いものです。下記は、TFPのサンプルから抜粋したものですが、コピペ一つで実用的なバージョン選択UIをあなたのノートブックに加えることができます。


Tensorflowのバージョン選択UI

#@title Install { display-mode: "form" }

TF_Installation = 'TF2 Nightly (GPU)' #@param ['TF2 Nightly (GPU)', 'TF2 Stable (GPU)', 'TF1 Nightly (GPU)', 'TF1 Stable (GPU)','System']

if TF_Installation == 'TF2 Nightly (GPU)':
!pip install -q --upgrade tf-nightly-gpu-2.0-preview
print('Installation of `tf-nightly-gpu-2.0-preview` complete.')
elif TF_Installation == 'TF2 Stable (GPU)':
!pip install -q --upgrade tensorflow-gpu==2.0.0-alpha0
print('Installation of `tensorflow-gpu==2.0.0-alpha0` complete.')
elif TF_Installation == 'TF1 Nightly (GPU)':
!pip install -q --upgrade tf-nightly-gpu
print('Installation of `tf-nightly-gpu` complete.')
elif TF_Installation == 'TF1 Stable (GPU)':
!pip install -q --upgrade tensorflow-gpu
print('Installation of `tensorflow-gpu` complete.')
elif TF_Installation == 'System':
pass
else:
raise ValueError('Selection Error: Please select a valid '
'installation option.')


Tensorflow Probabilityのバージョン選択UI

#@title Install { display-mode: "form" }

TFP_Installation = "Nightly" #@param ["Nightly", "Stable", "System"]

if TFP_Installation == "Nightly":
!pip install -q tfp-nightly
print("Installation of `tfp-nightly` complete.")
elif TFP_Installation == "Stable":
!pip install -q --upgrade tensorflow-probability
print("Installation of `tensorflow-probability` complete.")
elif TFP_Installation == "System":
pass
else:
raise ValueError("Selection Error: Please select a valid "
"installation option.")


UIの表示例

image.png


まとめ

QittaでForm機能を取り上げた記事がなかったので寄稿してみました。この機能は、Jupyterの標準機能として取り入れるべき価値があると自分は思います。今後、Chainerのバージョン選択UIなど様々な用途に応用され、Form機能が広く認知されることを願っています。