2022年10月28日金曜日

Jetson でjupytre labサーバー作成

 折角の機械学習や分析の手法を共有する為のサーバーを作ってみます。

ネットの情報そのままではライブラリ等で躓いたので追記しました。Windowsのファイル指定がかえってなれないのと

今後新しい人が来た時に使いやすく独立したサーバーにしておきます。



Jetson にアナコンダをインストールしてからサーバー化

Sudoで直接インストールはseaborn等でエラーが出るのでanaconda環境で

jupyterlabをインストール

https://www.pc-koubou.jp/magazine/38846

上記参考にUBUNTUanacondaをインストール

但しアームコアなので下記ファイルでインストール

https://github.com/Archiconda/build-tools/releases

$ cd ~/Download

※日本語化して使用している方はディレクトリ名が『ダウンロード』の場合もあり

ます。

bashで実行する

ディレクトリを移動したら先程ダウンロードしたファイルをbashで実行します。

今回ダウンロードしたファイル名はArchiconda3-0.2.3-Linux-aarch64.shですの

で、そのまま入力します。

 

$bash Archiconda3-0.2.3-Linux-aarch64.sh

source ~/.bashrc

conda activate

(base)

conda list

conda install pip

conda detactivate

conda install jupyterlab

jupyter lab

取り敢えず起動の確認

その後以下を良く使うのでインストール

 

conda install pandas

conda install matplotlib

conda install seaborn

conda install openpyxl

conda install scikit-learn

 

matplotlibの文字化け様に日本語フォントインストール

 

https://self-development.info/ipaexgothic%e3%81%ab%e3%82%88%e3%82%8bmatplo

tlib%e3%81%ae%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%8c%96%e3%80%90python%e3%80%91/

IPAexGothicのインストール

文字化けを解消するためには、日本語のフォントが必要です。

ただ、Ubuntuには、デフォルトでIPAフォントから派生した「Takaoフォント」がイ

ンストールされています。

それを使うという手もありますが、一般に普及しているIPAexGothicを使うことに

します。

 

IPAexGothicは、IPAexゴシックのことです。

findfont: Font family ['IPAexGothic'] not found. Falling back to DejaVu

Sans.

IPAexGothicフォントなんてないよ!!」というエラーです。

このエラーが出る場合は、ほぼキャッシュが原因となります。

 

ちなみに、キャッシュはユーザー毎にあります。

場所は、ホームの下ですね。

なお、ファイル名が同じとは限りません。

 

$ ls ~/.cache/matplotlib/

fontlist-v330.json

このファイルを削除します。

rm」コマンドで適当に削除してください。

 

再度、「japanse.png」を作成するプログラムを実行します。

文字化けせずに「日本語title」で表示されれば、成功です。

 

以上、「IPAexGothicによりMatplotlibを日本語に対応させる」でした。

 

ここから先はconda acvitaeして(base)wiwao@wiwao-desktop:~で作業する。

 

#AnacondaVersion確認

#root@XXX tmp]# anaconda -V

#anaconda Command line client (version 1.7.2)

 

jetson nano nvidia-l4t-bootloader errorが出る場合は下記処理

 

sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/backup/

sudo mkdir /var/lib/dpkg/info/

sudo apt-get update

sudo apt-get -f install

sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/backup/

sudo rm -rf /var/lib/dpkg/info

sudo mv /var/lib/dpkg/backup/ /var/lib/dpkg/info/

sudo apt update

sudo apt upgrade

sudo apt dist-upgrade

 

 

jupyterVesion確認

[root@XXX tmp]# jupyter --version

4.4.0

 

Path確認

[root@XXX tmp]# jupyter --path

config:

   /root/.jupyter

   /root/anaconda3/etc/jupyter

   /usr/local/etc/jupyter

   /etc/jupyter

data:

   /root/.local/share/jupyter

   /root/anaconda3/share/jupyter

   /usr/local/share/jupyter

   /usr/share/jupyter

runtime:

   /run/user/0/jupyter

 

ここからWEBサーバーの設定

 

JupyterNotebookの設定ファイルを生成する

$jupyter notebook --generate-config

設定ファイルの編集をする

$sudo vi /home/takeo/.jupyter/jupyter_notebook_config.py

Writing default config to: /home/takeo/.jupyter/jupyter_notebook_config.py

 

Vi/を押して

/c.NotebookApp.allow_origin

として検索します。

自己サーバーにアクセス許可設定します。

######c.NotebookApp.allow_origin = ''

コメントアウト(#)は削除し

c.NotebookApp.allow_origin = '*'

に変更し、同じ様にc.NotebookApp.ipを検索します。

#####c.NotebookApp.ip = 'localhost'

コメントアウト#をはずしすべてのIPをリッスン

c.NotebookApp.ip = '0.0.0.0'

に変更します。

ローカルでブラウザを立ち上げないようにします。TrueからFalseに変更。

c.NotebookApp.open_browser = False

:xを実行しviを終了します。

 

jupyterのパスワードを設定いたします。設定ファイルにハッシュが入ります。

 

$ jupyter notebook password

 

[NotebookPasswordApp] Wrote hashed password to

/home/takeo/.jupyter/jupyter_notebook_config.json

jupyterを起動します。

 

$jupyter lab

外部デバイスからブラウザの検索バーにipアドレス:8888でアクセス可能に

 

参考

 

https://jupyter-notebook.readthedocs.io/en/latest/config.html

https://jupyter-server.readthedocs.io/en/latest/operators/public-server.html

 

これでも下記エラーが出るのでその処理。

私の環境では、

train_test_split(テストデータ分割関数)を使用するために

 

from sklearn.model_selection import train_test_split

をソースコードの記載し、実行すると

 

ImportError: /usr/lib/aarch64-linux-gnu/libgomp.so.1: cannot allocate memory in static TLS block

となってしまうので、

 

$ export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1

を実行しました。

 

コマンドラインでは、その端末のみ有効となるため、恒久的に行う場合には、

 

~/.bashrc

export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1

を追加して下さい。

この対処が正しいかはわかっていませんが、とりあえず実行できるようになりました。

 

 

遣っ付けの書き方もいずれ直します。すみません。