こすたろーんエンジニアの試行錯誤部屋

作成物の備忘録を書いていきますー

setup nodejs and npm in a docker container

It is a memorandum on setting up nodejs and npm in a docker container with Jetson Xavier NX.

requirement

Jetson Xavier NX
ubuntu18.04
docker
python3.x

contents

スポンサーリンク

Introduction

When I tried to setup npm within a docker container, I got error...

Unable to locate package npm

This is a note on the solution.
↓↓↓

solution

1.do a curl command

curl -sL https://deb.nodesource.com/setup_10.x | bash -  

2.apt install

apt-get install -y nodejs  

3.check

node --version
npm --version

->If the version of each module is displayed, it is OK.

reference

stackoverflow.com

スポンサーリンク

Jetson Xavier NXとdockerでjupyter notebook環境を構築

データ分析環境を構築するため、Jetson Xavier NXとDockerでjupyter notebookの環境構築を行いました

目次

スポンサーリンク

この記事でわかること

Jetson Xavier NXとDockerでjupyter notebookの環境構築方法

1.実行環境

Jetson Xavier NX
ubuntu18.04
docker
python3.x

2.環境構築手順

1.以下のコマンドでdocker imageを取得

sudo docker pull jupyter/base-notebook:9e63909e0317

2.docker containerを起動

sudo docker run -it --rm --runtime nvidia --network host jupyter/base-notebook:9e63909e0317

3.ブラウザでアクセスする
container立ち上げ時に表示されるURを使って、jupyterへアクセスする

スポンサーリンク

3.参考

hub.docker.com github.com

Setup a Tensorflow environment with Jetson Xavier NX and docker

It is a memorandum on setting up a Tensorflow environment with Jetson Xavier NX.

contents

スポンサーリンク

requirement

Jetson Xavier NX
ubuntu18.04
docker
python3.x

procedure

1.getting docker image

sudo docker pull nvcr.io/nvidia/l4t-tensorflow:r32.4.3-tf1.15-py3

2.enter in a container

sudo docker run -it --rm --runtime nvidia --network host nvcr.io/nvidia/l4t-tensorflow:r32.4.3-tf1.15-py3

3.check the version of tensorflow

pip3 list

reference

ngc.nvidia.com

It is easy to setup a complicated environment using ngc & docker!!!

スポンサーリンク

【streamlit】htmlを埋め込んでkey-bindを対応してみた

スポンサーリンク

streamlitの操作をキーボードでできないかなと思い調べてみたところcomponents.htmlを使えばできそうなので備忘録です
コードは以前に作成したものを改良してます
technoxs-stacker.hatenablog.com

目次

スポンサーリンク

この記事でわかること

streamlitをキーボード操作するためのkey-bind

1.実行環境

Jetson Xavier NX
ubuntu18.04
docker
python3.x

2.改良版コード

components.htmlを使ってhtmlを埋め込みます
htmlではキー入力を検出する処理を入れます
callback関数でキー入力時の処理を入れてます

import streamlit as st
import configparser
import argparse
import streamlit.components.v1 as components

def z_callback():
    st.write('z button!!!')

def a_callback():
    st.write('a button!!!')

z_col, right_col, _ = st.sidebar.columns([1, 1, 3])

with z_col:
    st.button('Z', on_click=z_callback)

with right_col:
    st.button('A', on_click=a_callback)

components.html(
    """
<script>
const doc = window.parent.document;
buttons = Array.from(doc.querySelectorAll('button[kind=primary]'));
const z_button = buttons.find(el => el.innerText === 'Z');
const a_button = buttons.find(el => el.innerText === 'A');
doc.addEventListener('keydown', function(e) {
    switch (e.keyCode) {
        case 90: // (90 = z)
            z_button.click();
            break;
        case 65: // (65 = a
            a_button.click();
            break;
    }
});
</script>
""",
    height=0,
    width=0,
)

def main(args):
    # arg parse
    config_file_path = args.config

    config_ini = configparser.ConfigParser()
    config_ini.read(config_file_path, encoding='utf-8')
    # parse config
    mode = config_ini['COMMON']['mode']
    st.markdown("# debug")
    st.write(mode)
    

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--config')
    args = parser.parse_args()
    main(args)

スポンサーリンク

感想

key-bind処理とcallback関数、st.session_stateを組み合わせると、より使い勝手がよくなりました

参考

github.com https://web-designer.cman.jp/javascript_ref/keyboard/keycod

Setup a machine learning environment with Jetson Xavier NX and docker

It is a memorandum on setting up a machine learning environment with Jetson Xavier NX.

contents

スポンサーリンク

requirement

Jetson Xavier NX
ubuntu18.04
docker
python3.x

procedure

1.getting docker image

sudo docker pull nvcr.io/nvidia/l4t-ml:r32.5.0-py3

2.enter in a container

sudo docker run -it --rm --runtime nvidia --network host nvcr.io/nvidia/l4t-ml:r32.5.0-py3

3.check the version of modules

pip3 list

->if TensorFlow, PyTorch, scikit-learn, scipy and Pandas are in this list, It's OK

reference

catalog.ngc.nvidia.com

スポンサーリンク

Jetson Xavier NX上でfacebookresearchの画像分類フレームワーク ClassyVision を使う

facebookresearchが公開している画像分類フレームワークClassyVisionをJetson Xavier NX上で動かす際の備忘録です
強引なやり方をしてますので、もっとスマートなやり方をご存じの方はコメントで教えてくれると嬉しいです・・・

目次

スポンサーリンク

この記事でわかること

Jetson Xavier NXでClassyVisionを使う方法

1.実行環境

Jetson Xavier NX
ubuntu18.04
docker
python3.x
pytorch
->Jetson Xavier NX上におけるpytrorch環境構築は以下でやってますので、ご参考までに~ technoxs-stacker.hatenablog.com

2.環境構築

2.1 docker containerの起動

sudo docker run -it --rm --runtime nvidia --network host -v /path/to/classy_vision/workspace/:/workspace nvcr.io/nvidia/l4t-pytorch:r32.4.4-pth1.6-py3

2.2 モジュールのインストール

git clone https://github.com/facebookresearch/ClassyVision.git
cd ClassyVision
pip install .

pipでもインストール可能なようですが、私の環境では必要なコードがうまく入らなかったため
git cloneでインストールしています

2.3 その他モジュールのアップデート及びインストール

pytorchは1.8以上が必要みたいなので、アップデートします
またtensorboardが必要なのでインストールします

pip3 install torch==1.8.0 torchvision==0.11.3 torchaudio==0.10.0
pip3 install tensorboard

以下コマンドで必要モジュールが入ったか確認します

python3 -c 'import torch; print(torch.__version__) '
python3 -c "import torchvision;print(torchvision.__version__);"

2.4 一部コードの改良

Classy Visionでは 「classy-project project名」でプロジェクトを作成し、プロジェクト内のコードをいじって、
画像分類モデルの学習を行います
私の環境では、「classy-project project名」を実行すると「classy_train.pyが見つからない」とエラーが
出るのでclassy-projectを改造して対応します
ファイル:/bin/classy-project 42行目

    # if dev_install:
    #     classy_train_path = root / "classy_train.py"
    # else:
    #     classy_train_path = Path(sys.prefix) / "classy_vision" / "classy_train.py"
    classy_train_path = "./classy_train.py"

3.テストプロジェクトの実行

環境構築が完了したので、テストプロジェクトを作成して実行してみます

3.1 テストプロジェクトの作成

python3 ./bin/classy-project my-project

3.2 学習実行

cd my-project
./classy_train.py --config configs/template_config.json

テスト完了後に以下のメッセージが表示され、output_xxxディレクトリに「checkpoints」「tensorboard」が
生成されていれば動作テスト完了です

INFO:root:Training successful!

関連記事

technoxs-stacker.hatenablog.com

感想

configをいじるだけで、torchvisionにあるモデルやオープンデータセットは使えるみたいで便利です
カスタムでデータセットやモデル、loss関数なんかも作れるみたいなので、今後やってみようかなと思います

スポンサーリンク

参考

classyvision.ai github.com

abseilで複数の引数をflagfileで一括設定する

目次

スポンサーリンク

この記事でわかること

abseilとテキストファイルを使った引数処理方法

1.実行環境

Jetson Xavier NX
ubuntu18.04
docker
python3.x
pytorch
->Jetson Xavier NX上におけるpytrorch環境構築は以下でやってますので、ご参考までに~
technoxs-stacker.hatenablog.com

2.基本的な使い方

2.1テキストファイルに引数設定を記述
2.2python実行時にテキストファイルを指定する

2.1テキストファイルに引数設定を記述

--arch=resnet50
--gpu=0
--batch_size=8
--print_freq=10
--pred_dim=256

2.2python実行時にテキストファイルを指定する

CUDA_VISIBLE_DEVICES=0 python3 main_simsiam_single.py --flagfile ./config/simsiam.txt

関連記事

technoxs-stacker.hatenablog.com

感想

複数の引数を実行時に毎回記述するのはめんどくさいので、flagfileで指定できるのは
非常に助かります

スポンサーリンク

参考

abseil.io xvideos.hatenablog.com github.com