まくら
Eclipse/Che は、他のクラウド IDE と比して、極めてモジュラリティの高い内部構成になっています。
Che7 になって Kubernetes/OpenShift 対応を鮮明にしたので、API サーバとしてブラウザと通信する workspace master と、Language Server 等を司るサイドカーコンテナ群、ビルド・実行・デバッグを司るワークスペースコンテナが、それぞれ協調して動くことは知られてきたかと思います。(…まだ知られていないですかね…日本語の情報が足りていないので…)
加えて、Che ではエディタ (IDE の UI 部分)も差し替えることができます。たとえば Che6 までは独自のエディタを使っていました。Che7 以降は、Eclipse/Theia ベースのエディタがデフォルトになっています。
エディタに関してだけ言うなら、workspace master は、エディタ用のコンテナを管理し、HTTP(S) や WebSocket を使ってエディタ・コンテナとお手元の web ブラウザとの通信を取りつないでいるだけです。
…ということは、任意の web アプリを Che のエディタとして使えるはずです。
実際のところ、エディタ用のコンテナには、事前のお約束に合わせた構成にする必要がありますが、差し替えは可能です。
本稿では、Eclipse/Che 公式がサポートしている Jupyter Notebook を Eclipse/Che のエディタとして立ち上げてみます。
手順
Eclipse/Che の dashboard にアクセス
公式がサポートしているので、どの Che インスタンスを用いていただいても構いません。
本稿では、PizzaFactory/Camino でスクリーンショットを撮っていきました。Red Hat がホスティングしている che.openshift.io でも可能だと思いますが、使用できる RAM が少ないかもしれません。
もちろんお手持ちの Kuberntetes や OpenShift 環境に Che をデプロイしていただくのでも結構だと思います。
こんな感じの画面になります。
ロゴが PizzaFactory になっていますが、気にしなくて大丈夫です。他の環境なら Eclipse/Che となっているはず。
新規 Workspace 作成
上記スクリーンショットにもある青色の Create Workspace
ボタンを押します。
NAME
は適当で構いません。
SELECT STACK
も、今回は適当でよい(エディタ用コンテナ内に Python が存在するので)のですが、なんとなく Python 3.6 が載っている Django を選んでみました。
設定が終わったら作るのですが、右上の CREATE & OPEN
という緑色ボタンは押さず、その右にある逆三角(▽)を押してドロップダウンリストの Create & Proceed Editing
を選んでください。
エディタの入れ替え
編集画面に遷移します。
勘の良い方ならここから先の説明は要らないような気もしますが、続けます。
画面上中央あたりの Editors
を押します。
はい、Jupyter Nodebook
という項目ありますね。Enable
のスイッチを押して、青色にします。
設定変更後は、忘れずに画面右下にある緑色の SAVE
ボタンを押して設定を確定してください。
ワークスペースを開く
さて、次は、設定したワークスペースを開きます。
右上にある緑色の OPEN
ボタンを押してください。
ワークスペースのロードが始まります。
複数の docker コンテナをダウンロードしインスタンスを作成しますので、クラスタノードの状態が良い場合でも、数分待たされます。
カップラーメンにお湯を入れて食べごろになるくらいの時間は覚悟してください。クラスタオートスケーラが新しいノードを建てる場合には、もっとかかるかもしれません。
ロード中は、適宜ログが出ます。赤い文字が出た場合はエラー終了ですが、そうでない場合は、表示が止まっていても裏では作業が進んでいます。
Jupyter Notebook の起動
待ちくたびれた頃(?)に、Jupyter Notebook を見慣れた人にはお馴染みの画面が表示されます。
あとは Eclipse というよりも Jupyter の領域なので、読者の皆さんのほうがお詳しいかもしれません。
[Q&A] 役に立つの?
うーん。
思いつく限りのデメリットを先に挙げるなら…
- デフォルトでは GPU が使えない
- 使えるようにするには Eclipse/Che 側へのパッチが要るかも
- 欲しいライブラリがデフォルトでインストールされていないかも
- SaaS 版では、実行時間の制約が厳しいかも
PizzaFactory/Camino や che.openshift.io では、ブラウザとの通信を監視していて、一定時間の無通信だった場合ワークスペースを落としています。 Jupyter では、この検出が、現行のバージョンでは上手く行っていないようで、思ったよりも短い時間でワークスペースが落とされてしまうようです。
これはおそらくバグなので、治せるはずです。(興味あるかたは本家に issue を投げてください)
"欲しいライブラリ" については、現行では matplotlib さえ入っていないようなので、かなり苦しいかなと思いつつ、単にエディタ用コンテナに含めればよいだけなので、本家に issue を投げれば対応してくれると思います。pull request なら確度が高くなるかも。
GPU が使えないのは、複合要因です。たぶん各 SaaS では、ノード用のインスタンスが高価になるので、対応を渋るかなと思います。サービス提供者とのご相談案件です。自前で立てている場合でも、Eclipse/Che へのパッチは必要になると思います。こちらは本家開発チームとのご相談案件です。1
逆説的に、列挙したデメリットが気にならないケースでは、使い物になるかもしれません。
初学者向けのハンズオンセミナー等は、適切なユースケースの一つでしょう。クラウドのクラスタ・オートスケーラと併せれば、ノードを維持するためにかかるコストを抑制できます。
まとめ
Eclipse/Che で Jupyter Notebook を使うための手順を紹介しました。
本稿で紹介した手順は、本稿執筆時点の、標準的なデプロイを行った場合のものです。今後 SELECT STACK
の一覧に Jupyter 用の項目が増える可能性はありますし、お手元の Che の管理者が独自に追加している可能性もあります。
-
私見ですが、GPU を使いたい場合、Google 魔改造版 Jupyter である Colabolatory の使用を検討したほうが良いのでは、という気もします。 ↩