Jetson を使用する理由は3つです。
- 安価に CUDA が使用できる(数万円〜)
- Jetpack SDK と Nvidia NGC によりすぐに使えるコンテナが用意されている
- 小型(手のひらサイズ)かつ高電力効率により手軽に始めるられる
ここでは、Nvidia NGC に用意されているコンテナイメージを使用して下記の3つの環境を構築します。
目次
本記事の流れ
下記流れで説明します。
① Jetson のセットアップ
② Github から必要な資産をダウンロードしてコンテナを起動
③ Jupyter notebookより各AI実行環境を実行
①Jetsonのセットアップ
本記事ではコンテナ技術を使用します。
LinuxOSやコンテナ技術について興味がある方は下記記事の「目標①Chromebook上のPython開発環境の全体像を知る」をご参考下さい。
Dockerのセットアップ
JetsonにJetpack 4.6がインストール済とします。
まず初めにターミナルより下記コマンドを実行してアプリケーションを最新化します。
sudo apt update
sudo apt upgrade
Jetsonでは、sudo apt upgradeをするとDockerコンテナがうまく動作しなくなるのでcontainerのグレードダウンを実施します。
wget https://launchpad.net/ubuntu/+source/docker.io/20.10.2-0ubuntu1~18.04.2/+build/21335731/+files/docker.io_20.10.2-0ubuntu1~18.04.2_arm64.deb
sudo dpkg -i docker.io_20.10.2-0ubuntu1~18.04.2_arm64.deb
rm docker.io_20.10.2-0ubuntu1~18.04.2_arm64.deb
sudo apt install containerd=1.5.2-0ubuntu1~18.04.3
参考
リソース使用状況確認ツールのインストール
JetpackはUbuntuベースのOSが使用可能です。
Ubuntuではリソース使用状況確認としてtopコマンドがありますが、GPUの使用状況が確認できません。そこで、GPUの使用状況が確認できるjtopをインストールします。
sudo apt install python-pip
sudo -H pip install jetson-stats
sudo jtop
jtopコマンドを実行することで下記のようにCPU/メモリ/GPUの使用状況が確認できます。
SDカードのマウント
Jetsonは標準ではディスク容量が少ないのでSDカードをマウントします。
exfatを使用可能にする
sudo add-apt-repository universe
sudo apt update
sudo apt install exfat-fuse exfat-utils
SDカードをマウントする
cd <ディレクトリ>
mkdir media
sudo mount /dev/sda1 <ディレクトリ>/media/
起動時に自動でマウントする
uuidを確認します
sudo fdisk -l
sudo blkid /dev/sda1
例)/dev/sda1: LABEL=”Samsung UFS” UUID=”A833-362D” TYPE=”exfat” PARTUUID=”00000001-01″
fstabを編集します
vi /etc/fstab
※fstabに下記を追記します
UUID=A833-362D <ディレクトリ>/media auto defaults 0 0
②Githubから必要な資産をダウンロードしてコンテナを起動
必要な資産のダウンロード
mkdir <作業用ディレクトリ>
cd <作業用ディレクトリ>
rm -rf jetpackcontainers
git clone https://github.com/Kewton/jetpackcontainers.git
バックグラウンドでコンテナを起動
# 各コンテナの/home/mntにマウントするローカルマシンのディレクトリを指定します
# ※3つのコンテナで共通です
# 例) export docker_vol=/home/kewtons-agx/media
export docker_vol=<マウントするディレクトリ>
# コンテナの起動
docker-compose -f jetpackcontainers/docker-compose.yaml up --build -d
コマンドについて
- up:サービス用のコンテナの構築、作成、起動、アタッチを行う
- –build:コンテナを開始前にイメージを構築する
- -d:デタッチモード。バックグラウンドでコンテナを実行し、新しいコンテナ名を表示
良く使うDockerコマンド
作動中のコンテナ一覧を表示
docker ps
# 停止中のコンテナも全て一覧表示
docker ps --all
# 下記でも可
docker ps -a
実行中のコンテナにbashでログイン
# 例)docker exec -it myjet_ml bash
docker exec -it <name> bash
実行中のコンテナ(myjet_ml)にログインし、OS確認のために「cat /etc/lsb-release」を実行
コンテナを停止する
docker stop <name>
停止中のコンテナを削除する
docker rm <name>
【参考】Ubuntuでよく使うコマンド
再起動
sudo shutdown -r now
指定した間隔でコマンドを実行
# 例)1秒間隔で「docker ps -a ※停止中のコンテナも含めてコンテナ一覧表示」を実行
watch -n 1 docker ps -a
指定した間隔でプロセスを確認
# 1秒間隔で確認
top -d 1
SCPでディレクトリ毎ファイル転送
# ローカルPCで実行
# from_dir:ローカルPCの転送元ディレクトリ名
# user:転送先PCのユーザー名
# ip:転送先PCのIPアドレス
# to_dir:転送先のディレクトリ名
scp -r <from_dir> <user>@<ip>:<to_dir>
③Jupyternotebookより各AI実行環境を実行
①tensorflowがセットアップされた環境にアクセス
ブラウザより「http://<Jetsonのipアドレス>:8801/login」を入力します。
下記画面が表示されますのでパスワードに「nvidia」と入力します。
ログイン後、下記画面が表示されます。
Notebookを作成して任意のスクリプトを実行してください。
②pytorchがセットアップされた環境にアクセス
ブラウザより「http://<Jetsonのipアドレス>:8802/login」を入力します。
下記画面が表示されますのでパスワードに「nvidia」と入力します。
Notebookを作成して任意のスクリプトを実行してください。
③機械学習全般がセットアップされた環境にアクセス
ブラウザより「http://<Jetsonのipアドレス>:8888/login」を入力します。
下記画面が表示されますのでパスワードに「nvidia」と入力します。
Notebookを作成して任意のスクリプトを実行してください。
※Notebookの使用方法については、下記記事などを参考にしてください。
おわりに
本記事では、Jetson上にコンテナ技術を使用して複数のAI実行環境を構築しました。
これにより、自宅でAIの実験やサービスの開発が効率的に進められます。
ご参考になりましたら twitter をフォローして SNS でシェアして頂ければ幸いです。
また、Jetsonに興味を持った方は下記をご参考下さい。
ご参考
ちなみに今回は下記 Chromebook を使用しました。
14.0型フルHD × Core i3 × メモリ8GB を満たす数少ない端末です。
軽くて持ち運びしやすく開発に耐えうるスペックなのでおすすめです。
価格:70,510円 |
Chromebook でプログラミングを始める方法については下記記事をご参考下さい。