【簡易版:Androidのブラウザで実現するpython環境】機械学習(pytorch, scikit-learn)や実用的なプログラミング(jupyterlab, pandas, matplotlib, strearmlit)の環境構築について

AI

【経緯】簡易版:Androidのブラウザで実現するpython環境の紹介について

以前に紹介しておりましたTermuxをベースとしたjupyterlab環境について、Termuxをupgradeすると、pythonのバージョンまで上がってしまい、元のpython環境を再現できなくなってしまったようです。。

参考リンク:Termux Wiki

【一部内容を転載します】

Warning: upgrading major/minor version of Python package, for example from Python 3.8 to 3.9, will make all your currently installed modules unusable. You will need to reinstall them. However upgrading patch versions, for example from 3.8.1 to 3.8.2, is safe.

Due to our infrastructure limits, we do not provide older versions of packages. If you accidentally upgraded to unsuitable Python version and do not have backups to rollback, do not complain! We recommend doing backups of $PREFIX for developers and other people who rely on specific software versions.

今回の紹介について

以前紹介したproot化ubuntuベースのpython環境構築のブログから、GUI環境設定部分を省略した内容となっています。もしAndroid端末のメモリに余裕(4G以上)があれば、そのまま以下のリンクで紹介している環境構築をお薦めします。

具体的には、Termuxにproot化ubuntuをインストールし、そこに隔離されたpythonの仮想環境を設定して、各種ライブラリをインストールしていくところまでを紹介しています。Termux(を介したproot化ubuntu)ターミナルからjupyterlabを起動して、Androidのブラウザから、ほぼ同等のpythonプログラミング環境を用意することが可能です。

ubuntu(linux)環境やpythonプログラミング、AIや機械学習に興味ある方が、一通りの作業を楽しみながら気楽にスタートするきっかけになれば、とてもうれしいです。もちろん手持ちのAndroid端末を限界まで使い倒したい方や、キーボードデバイスを愛している方にとっても、ポジティブなトピック提供になったら幸いです。

F-DroidからTermuxをインストール、Termuxにproot化ubuntuをインストール

参考リンク

UDEMY : Linux(ubuntu)環境を学びたい方へのリンク icon 現役シリコンバレーエンジニアが教える NeoVim(VIM) + Tmux + Zsh 入門 icon

F-DroidからTermuxを入手

F-Droid - Free and Open Source Android App Repository
F-Droid is an installable catalogue of FOSS (Free and Open Source Software) applications for the And...

Termuxにproot化ubuntuをインストール

Termuxインストール後の私の環境でのコマンド進行を記載させて頂きます。

$ pkg update -y
$ pkg upgrade -y
$ termux-setup-storage
$ pkg install proot -y
$ pkg install proot-distro -y
$ proot-distro install ubuntu
ubuntu環境へログイン
$ proot-distro login ubuntu
ubuntu環境からのログアウト(Termux環境へ戻る)
root$ exit
$

ubuntu環境:設定(時刻など)

root$ apt update
root$ apt upgrade -y
root$ apt install locales -y
root$ apt install vim -y
root$ vim /etc/locale.gen
    ja_JP.UTF-8のコメントアウト(#)を外す
root$ locale-gen
root$ update-locale LANG=ja_JP.UTF-8
root$ apt install tzdata
    6 アジア
    79 東京

Termux上での作業環境へのパス

root$ cd /data/data/com.termux/files/home

ubuntu環境:ユーザーの作成

python環境構築を見据え、ユーザーを作成しておきます。

ユーザーの作成

root$ adduser cosmo

「cosmo」はユーザー名です。パスワード設定を要求されるので、設定してください。

またuseraddコマンドでもユーザー作成できますが、ホームディレクトリが作成されないので、adduserコマンドにて実施してください。

sudoコマンドのインストール

ユーザー環境下でインストール作業など、root権限をもって実行できるようにsudoコマンドをインストールします。rootユーザーにて、以下のコマンドを実行していきます。

root$ apt install sudo -y

sudo権限の付与

sudoグループにユーザーを追加します。確認は、catコマンドで実行できます。

root$ gpasswd -a cosmo sudo
root$ cat /etc/group | grep sudo
root$ visudo
    cosmo    ALL=(ALL:ALL) ALL  # この内容を追記(cosmoはユーザー名)

こちらで、Termuxを再起動すれば、sudo権限が付与されると思いますが、ちょっと記憶が定かでないので、作業が足りなかったら、ごめんなさい^_^;

作成したユーザーに移る

root$ su cosmo
cosmo$

rootユーザー(スーパーユーザー)に戻る

cosmo$ exit
root$

メンテナンス用シェルスクリプトの作成

以下のようなコードをもつapt_maintenance.shを作成します。

cosmo$ vim apt_maintenance.sh
#!/bin/bash
#最新のアップデートを確認
sudo apt-get update
#最新のアップデートを適用
sudo apt-get -y upgrade
#ディストリビューションを最新のものに更新
sudo apt-get -y dist-upgrade
#依存関係解決後に使われなくなったパッケージを削除
sudo apt-get -y autoremove 
#作業時のaptキャッシュを削除します。キャッシュ(/var/cache/apt/archives)が肥大化することを防止
sudo apt-get -y autoclean

実行権限を付与します。

cosmo$ chmod 755 apt_maintenance.sh

以下のコマンドで実行します。

cosmo$ ./apt_maintenance.sh

ubuntu:ユーザー環境:隔離されたpython仮想環境の作成

作成したユーザー環境下にて、以下のコマンド進行で、必要なものをインストールして、python v.3.10.2をインストールしました。

cosmo$ sudo apt -y update
cosmo$ sudo apt -y install --no-install-recommends make build-essential libssl-dev zlib1g-dev  libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
cosmo$ cd /tmp
cosmo$ curl https://pyenv.run | bash
cosmo$ echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bashrc
cosmo$ echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ~/.bashrc
cosmo$ echo '    export PATH=${PYENV_ROOT}/bin:$PATH' >> ~/.bashrc
cosmo$ echo '    eval "$(pyenv init -)"' >> ~/.bashrc
cosmo$ echo '    eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
cosmo$ echo 'fi' >> ~/.bashrc
cosmo$ exec $SHELL -l
cosmo$ pyenv install 3.10.2

python仮想環境のインストール

「py3102」という名前の仮想環境を作成します。

cosmo$ pyenv shell 3.10.2
cosmo$ python -m venv ~/py3102

python仮想環境を起動

cosmo$ source ~/py3102/bin/activate
py3102$

起動を簡単にするために、エイリアスを作成しておきます。

cosmo$ cd ~
cosmo$ vim ~/.bashrc
     alias py3102='source ~/py3102/bin/activate'  # エイリアスを追記
cosmo$ source ~/.bashrc

以降は、以下のコードにて、仮想環境を起動

cosmo$ py3102
py3102$

python仮想環境の解除

py3102$ exit
root$
参考リンク:隔離された Python 3.7 仮想環境の新規作成(ubuntuの場合)
隔離された Python 3.7 仮想環境の新規作成(Windows とUbuntu を併記)
隔離された Python 3.7 仮想環境の新規作成(Windows とUbuntu を併記)

参考リンク:pythonを学びたい方

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル icon

pipパッケージのインストール

py3102$ python -m pip install <パッケージ名>

インストールしたパッケージ

py3102$ python -m pip install -U pip
py3102$ python -m pip install setuptools
py3102$ python -m pip install numpy
py3102$ python -m pip install pandas
py3102$ python -m pip install matplotlib
py3102$ python -m pip install scipy
py3102$ python -m pip install scikit-learn
py3102$ python -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu

たまにタイムアウトのエラーが出る時がありますが、その際は何度かインストールをトライすれば、完遂できると思います。

参考リンク:pytorchのインストール
https://pytorch.org/

参考リンク:Pythorchを学びたい方

【PyTorch】PyTorchで実装するディープラーニング -CNN、RNN、人工知能Webアプリの構築- icon

sudo権限が必要なpipパッケージのインストール

また、sudoコマンドから単にpythonを実行するとrootのpythonが呼び出されるようなので、仮想環境のpythonで実行するように絶対パスを指定してインストールしました。

py3102$ which python
py3102$ sudo <which pythonで表示されたパス/python> -m pip install <パッケージ名>

sudo権限でインストールしたパッケージ

現状では、localhostを使用するようなサーバー関連のパッケージのインストールにはsudo権限が必要でした。コマンド実行後、ユーザーパスワードを入力すると処理が進んでいきます。

py3102$ sudo /home/cosmo/py3102/bin/python -m pip install jupyterlab
py3102$ sudo /home/cosmo/py3102/bin/python -m pip install streamlit

たまにタイムアウトのエラーが出る時がありますが、その際は何度かインストールをトライすれば、完遂できると思います。

自己啓発の人気オンラインコース

ubuntu:python仮想環境で実行したプログラムをAndroidブラウザで使用する

jupyterlabをAndroidブラウザで使用する

jupyterlabの起動

作業ディレクトリを作成しておきます。

py3102$ cd ~
py3102$ mkdir workspace

コマンドを起動したディレクトリが起動時のrootディレクトリになるので、作業ディレクトリに移動して、jupyterlabを起動します。

py3102$ cd ~/workspace
py3102$ jupyter lab

表示されるURL+トークンをコピーします。

Androidのブラウザを起動し、URL+トークンをペーストして、URLを開けば、そのままjupyterlabを使用できます。

URLを「ホーム画面に追加」すれば、以降はショートカットから起動できます。

jupyterlabの基本的な操作についてのみ、こちらのリンクをご参考に頂ければと思います。

参考:termux(ubuntu)環境で実行したjupyterlabをandroidブラウザで使用する
jupyterlabの制限事項

機能拡張が少し不安定です。それ以外は文句無しなんですけど。。もし解決策を知ってる方がいれば、教えてもらえるとうれしいです^_^;

とはいえ、入力補完はtabを押せばできるので通常の利用に関しては問題無いと思います。

jupyterlabの停止

jupyterlabのブラウザのメニュー「file」から「Shut Down」を選択します。

また、サーバー起動中のターミナルがアクティブな状態で「Ctrl+c」で「y」を選択しても停止できます。

streamlitをAndroidブラウザで使用する

streamlitとは、逐次的に構築できるWebフレームワークです。ただ、今回はチュートリアルの実行のみとし、詳しい使い方については、恐縮ですが割愛させて頂きます^_^;

streamlitの起動(チュートリアルの実行)

py3102$ streamlit hello

表示されるURL+トークンをコピーします。

Androidのブラウザを起動し、URL+トークンをペーストして、URLを開きます。

とても引き出しの多い、魅力的なWebフレームワークだと考えています。

streamlitの停止

サーバー起動中のターミナルがアクティブな状態で「Ctrl+c」で、「y」を選択して停止します。

参考リンク:streamlitを学びたい方

UDEMY : Steamlitを楽しく学ぶリンク icon

まとめ

今回は、Termuxのupgradeで受けるpython環境への影響を回避する目的で、急遽、以前のブログから、一部抜粋するかたちで簡易版のpython環境構築の紹介させて頂きました。

引き続き、Android端末という、とても身近なデバイスでもアプリケーションを作ったり、データを分析して物事の理解を深めるための環境を用意できると思います。

もちろん、より本格的に厳密で複雑なことを実施するには、荷が勝ちすぎますが、それでも個人レベルでは、かなり使えるのではないかなと考えています。より大きな目的のためにも、その初動には耐えうるのでないでしょうか。

AIやアプリケーションなど、それと知らずに触れ合う機会はどんどん増えていくと思いますが、それらを使うだけでなく、作ることにも興味を持つ方が行動を起こすきっかけとなり、その方の自己表現における一助となれば幸いです。

Apendix 1:ユーザーコマンド表記の遷移のまとめ

$                # termux環境
root$            # ubuntu環境のrootユーザー
cosmo$           # ubuntu環境のユーザー
py3102$          # python仮想環境
(py3102) root$   # rootユーザーでのpython仮想環境(vscodeでの実行環境)

Apendix 2:AI、機械学習、統計解析に興味を持って下さった方への書籍リンク

発展的学びのため、プログラム実行実績のある書籍を、いくつか紹介させて頂ければと思います^_^;

書籍:アマゾンリンク

将棋の棋士である谷合廣紀先生の書籍「Pythonで理解する統計解析の基礎」です。ubuntu環境だけでなくTermux環境でもライブラリを追加することで、全てのプログラムが実行可能です^_^

ゼロつくシリーズも、ubuntu環境だけでなくTermux環境でも、全て実行可能なのですが、後半のプログラムでは、私のCosmo communicatorでの環境では、7時間以上掛かったものもあったので、コードを推考している際は、実行epoch数に注意が必要なプログラムもあります^_^;

Termux環境では、pytorchを用いる手前の2章までは実行可能でしたが、今回示したubuntu環境であれば、pytorchをインストールできるので、3章以降も実行可能だと考えています。

6章まで実行確認できました!

私のインストールしたgym==v0.25.1では、4章のMNISTのデータ形式が一部変更されていましたが、こちらは型を変更すれば問題無く実行できました。

また、gym==v0.25.1ではBreakoutは消えていたので、7章の実行は試しておりません。gym==v0.21までは、存在したという情報もあるので、興味のある方は試していただければと思います^_^

尚、一部動画保存が上手くいかないところがありましたが、実行結果は得ることができます^_^;

解決できたら、改めて情報更新したいと思います。

楽天ルーム(書籍)

Apendix 3:ハードウェアに興味を持って下さった方へのリンク

キーボードは、ネットを介した人とのコミュニケーションに必要な入力デバイスとしては、緩やかにその役割を終えつつあるかもしれません。しかし、コンピュータとのコミュニケーションには、より深いところで繋がっていくために、依然として極めて重要な役割を担っていると考えています。

私は、ポケットサイズの小さなキーボード端末が大好きで、今回のブログの内容によって昔から思い描いていた環境をほぼ再現できて、とてもうれしく思っています。

Astroslide 5GやGeminiPDAだけでなく、他のキーボード端末も同士です^_^

端末:アマゾンリンク

もちろん、タブレットなどの普通のAndroid端末でも、十分楽しめると思います。

むしろ、多くの方にとっては、そっちの方が自然なのかもしれません^_^;

楽天ルーム(Android端末)

コメント

タイトルとURLをコピーしました