Chrome OS Flexを日常で使う(10)Jupyter(Python)編


既存のサービスを使う

Chrome OSにはLinux開発環境があるので、基本的にコンソールからLinux開発環境上でコードを書いて動かす分には普通のLinuxとなんら変わりません。しかし、Chrome OSは画面の解像度が高くない場合が多いため、ちょっとしたコードを調べながら書きたい場合などはブラウザとコンソールの複数アプリを起動しておくのは不便なことがあります。
そんなときはブラウザ上でPythonが実行できると便利です。
ブラウザ上で使える代表的なPythonの実行環境には以下のサービスがあります。

いずれも個人が学習用途で使うには無料ですが、無料で使う場合はそれなりの制限が課せられます。
具体的な制限で大きなものは、1日あたりの使用時間制限と、セッションの制限の2つです。
前者は1日あたりの利用時間が数時間に制限されるというものです。Pythonの学習用途であれば十分なケースが多いですが、それなりに大きな課題の学習に取り組む場合は時間が足りなくなる可能性もあります。

そしてより大きな課題は後者のセッション制限です。
これはブラウザからサービスに接続している時間に関係するものです。
例えば調べ物をするために別のページを表示していたり、休憩するなどで席を離れていると、サービスから切断されてしまうことがあります。
時には使っている最中に切断されることもあります。
もしそのときに長時間にわたる処理が動いていた場合、セッションの切断とともに中断されてしまいます。
また、セッションが切断されると当然作業を再開するときに再接続する必要がありますが、無料サービスの常としてセッションの空きがないと繋がらない場合があります
特にGPUランタイムでは頻繁におこります。
もしGPUランタイムを頻繁に使うのであれば、これを回避するために料金を払って有料ユーザになるのが一番よい方法です。料金もそれほど高くないのでハードウェアの設備代と電気代を考えると悪い選択肢ではありません。
一概には言えませんが、私の経験上ではAIモデルの学習などを自宅のPC(GPU)で実行すると1日あたりでも数百円はかかると思います。月の電気代を見ると数千円にもなる事もざらなので検討の余地は十分にあります。
余談ですが電気代の他に自宅でモデル学習を実行すると騒音も相当なものですので、個人的には自宅にこのような環境を作るのはやめました・・・。

Chrome OS上でJupyterを動かす

GPUを使うほどではないが、ちょっとしたpythonコードを書く環境としてJupyter notebookが使えると便利です。
そこでChromeOS Flex上でJupyter notebookを使ってみます。

Jupyterのインストール方法はいくつかありますが、ここでは素直にOS提供のaptリポジトリのものを使います。
$ sudo apt install python3-notebook
とすると依存関係があるパッケージと合わせてインストールされます。

narusawa@penguin:~$ sudo apt install python3-notebook

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  fonts-font-awesome fonts-glyphicons-halflings fonts-mathjax gir1.2-glib-2.0 jupyter-core jupyter-nbextension-jupyter-js-widgets jupyter-notebook
  libcmark-gfm-extensions0 libcmark-gfm0 libgirepository-1.0-1 libjs-backbone libjs-bootstrap libjs-bootstrap-tour libjs-codemirror
  libjs-es6-promise libjs-jed libjs-jquery-typeahead libjs-jquery-ui libjs-marked libjs-mathjax libjs-moment libjs-requirejs libjs-requirejs-text
  libjs-text-encoding libjs-xterm libnorm1 libpgm-5.3-0 libsodium23 libzmq5 node-jed pandoc pandoc-data python3-argon2 python3-attr
  python3-backcall python3-bleach python3-cffi-backend python3-dateutil python3-decorator python3-defusedxml python3-entrypoints python3-gi
  python3-html5lib python3-importlib-metadata python3-ipykernel python3-ipython python3-ipython-genutils python3-ipywidgets python3-jedi
  python3-jinja2 python3-jsonschema python3-jupyter-client python3-jupyter-core python3-markupsafe python3-mistune python3-more-itertools
  python3-nbconvert python3-nbformat python3-packaging python3-pandocfilters python3-parso python3-pexpect python3-pickleshare
  python3-prometheus-client python3-prompt-toolkit python3-ptyprocess python3-pygments python3-pyparsing python3-pyrsistent python3-send2trash
  python3-six python3-terminado python3-testpath python3-tornado python3-traitlets python3-wcwidth python3-webencodings python3-widgetsnbextension
  python3-zipp python3-zmq
Suggested packages:
  libjs-jquery-lazyload libjs-json libjs-jquery-ui-docs fonts-mathjax-extras fonts-stix libjs-mathjax-doc texlive-latex-recommended texlive-xetex
  texlive-luatex pandoc-citeproc texlive-latex-extra context wkhtmltopdf librsvg2-bin groff ghc nodejs php python ruby r-base-core node-katex
  citation-style-language-styles python-argon2-doc python-attr-doc python-bleach-doc python3-genshi python3-lxml python-ipython-doc
  python-ipywidgets-doc python-jinja2-doc python-jsonschema-doc python-nbconvert-doc texlive-fonts-recommended texlive-plain-generic
  python-notebook-doc python-pexpect-doc python-pygments-doc ttf-bitstream-vera python-pyparsing-doc python-terminado-doc python3-pycurl
  python-tornado-doc python3-twisted
The following NEW packages will be installed:
  fonts-font-awesome fonts-glyphicons-halflings fonts-mathjax gir1.2-glib-2.0 jupyter-core jupyter-nbextension-jupyter-js-widgets jupyter-notebook
  libcmark-gfm-extensions0 libcmark-gfm0 libgirepository-1.0-1 libjs-backbone libjs-bootstrap libjs-bootstrap-tour libjs-codemirror
  libjs-es6-promise libjs-jed libjs-jquery-typeahead libjs-jquery-ui libjs-marked libjs-mathjax libjs-moment libjs-requirejs libjs-requirejs-text
  libjs-text-encoding libjs-xterm libnorm1 libpgm-5.3-0 libsodium23 libzmq5 node-jed pandoc pandoc-data python3-argon2 python3-attr
  python3-backcall python3-bleach python3-cffi-backend python3-dateutil python3-decorator python3-defusedxml python3-entrypoints python3-gi
  python3-html5lib python3-importlib-metadata python3-ipykernel python3-ipython python3-ipython-genutils python3-ipywidgets python3-jedi
  python3-jinja2 python3-jsonschema python3-jupyter-client python3-jupyter-core python3-markupsafe python3-mistune python3-more-itertools
  python3-nbconvert python3-nbformat python3-notebook python3-packaging python3-pandocfilters python3-parso python3-pexpect python3-pickleshare
  python3-prometheus-client python3-prompt-toolkit python3-ptyprocess python3-pygments python3-pyparsing python3-pyrsistent python3-send2trash
  python3-six python3-terminado python3-testpath python3-tornado python3-traitlets python3-wcwidth python3-webencodings python3-widgetsnbextension
  python3-zipp python3-zmq
0 upgraded, 81 newly installed, 0 to remove and 0 not upgraded.
Need to get 37.2 MB of archives.
After this operation, 267 MB of additional disk space will be used.
Do you want to continue? [Y/n] 

そして、以上でもう使えるようになりました。
$ jupyter notebook
とするとブラウザで自動的にjupyterを開いてくれます。

narusawa@penguin:~$ jupyter notebook
[I 23:27:39.947 NotebookApp] Writing notebook server cookie secret to /home/narusawa/.local/share/jupyter/runtime/notebook_cookie_secret
[I 23:27:40.763 NotebookApp] Serving notebooks from local directory: /home/narusawa
[I 23:27:40.763 NotebookApp] Jupyter Notebook 6.2.0 is running at:
[I 23:27:40.764 NotebookApp] http://localhost:8888/?token=32e20eb83d127d55805fbcd7f1513af5e789a17c561056cc
[I 23:27:40.764 NotebookApp]  or http://127.0.0.1:8888/?token=32e20eb83d127d55805fbcd7f1513af5e789a17c561056cc
[I 23:27:40.765 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 23:27:41.109 NotebookApp] 
    
    To access the notebook, open this file in a browser:
        file:///home/narusawa/.local/share/jupyter/runtime/nbserver-2980-open.html
    Or copy and paste one of these URLs:
        http://localhost:8888/?token=32e20eb83d127d55805fbcd7f1513af5e789a17c561056cc
     or http://127.0.0.1:8888/?token=32e20eb83d127d55805fbcd7f1513af5e789a17c561056cc

もしブラウザが自動で開かない場合は、コンソールに表示されているURLをブラウザに貼り付けてみましょう。

ブラウザでjupyterが開かれた

実際に動くか試してみます。
右上の「New」からnotebook: python3を選択すると、新しいタブが開かれます。
簡単なコードを書いてShift+Enterで実行してみると、

簡単なコードで動作確認

動きましたね。
これでちょっとしたコードはブラウザ上で試せるようになりました。
なお、ChromeOSの「Linux開発環境」の制限事項があるためGPUは使えません。その点は以下の記事も参照してみてください。

pythonでちょっとしたコードがかけるだけでも便利ですね。

いいなと思ったら応援しよう!