NVIDIAの組み込みシングルボードコンピュータであるJetson上にコンテナ技術を使用して複数のAI実行環境を構築します。
Jetsonを使用する理由は3つです。
- 安価にCUDAが使用できる(数万円〜)
- Jetpack SDKとNvidia NGCによりすぐに使えるコンテナが用意されている
- 小型(手のひらサイズ)かつ高電力効率により手軽に始めるられる
ここでは、Nvidia NGCに用意されているコンテナイメージを使用して下記の3つの環境を構築します
① tensorflowがセットアップされた環境
② pytorchがセットアップされた環境
③ 機械学習全般がセットアップされた環境
-
アプリケーションの最新化
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
- タスクマネージャー相当のリソースの使用状況確認用ツールをインストール
sudo apt install python-pip sudo -H pip install jetson-stats sudo jtop
- 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/ -
ubuntu起動時にマウント
- uuidを確認
例)/dev/sda1: LABEL="Samsung UFS" UUID="A833-362D" TYPE="exfat" PARTUUID="00000001-01"
sudo fdisk -l sudo blkid /dev/sda1 - 編集
vi /etc/fstabUUID=A833-362D <ディレクトリ>/media auto defaults 0 0
- uuidを確認
-
必要な資産をダウンロードします
mkdir <作業用ディレクトリ> cd <作業用ディレクトリ> rm -rf jetpackcontainers git clone https://github.com/Kewton/jetpackcontainers.git -
imageを構築・コンテナを構築しバックグラウンドでコンテナを起動
# 各コンテナの/home/mntにマウントするローカルマシンのディレクトリを指定します # ※3つのコンテナで共通です export docker_vol=<マウントするディレクトリ> # コンテナの起動 docker-compose -f jetpackcontainers/docker-compose.yaml up --build -d- up:コンテナの構築・起動
- --build:image構築
- -d:デタッチモード。バックグラウンドで実行
- docker-composeを使用してdockerをrun
docker-compose -f docker-compose.yaml up --build -d - 作動中のコンテナ一覧を表示
docker ps # 停止中のコンテナも全て一覧表示 docker ps --all - 実行中のコンテナにbashでログイン
docker exec -it <name> bash - コンテナを停止する
docker stop <name> - 停止中のコンテナを削除する (Remove)
docker rm <name>
sudo shutdown -r now
watch -n 1 docker ps -a
top -d 1
- ローカルのターミナルで実行
scp -r <from_dir> <user>@<ip>:<to_dir>
-
tensorflowがセットアップされた環境にアクセス
- URL:http://<Jetsonのipアドレス>:8801/login
- 初期PW:nvidia
-
pytorchがセットアップされた環境にアクセス
- http://<Jetsonのipアドレス>:8802/login
- 初期PW:nvidia
-
機械学習全般がセットアップされた環境にアクセス
- http://<Jetsonのipアドレス>:8888/login
- 初期PW:nvidia