JetsonでAI入門 – Dockerを使用して複数のAI実行環境を構築する方法 –

5 min

本記事では、NVIDIA の組み込みシングルボードコンピュータである Jetson 上にコンテナ技術を使用して複数の AI 実行環境を構築することを目指します。

Jetson を使用する理由は3つです。

  • 安価に CUDA が使用できる(数万円〜)
  • Jetpack SDKNvidia NGC によりすぐに使えるコンテナが用意されている
  • 小型(手のひらサイズ)かつ高電力効率により手軽に始めるられる

ここでは、Nvidia NGC に用意されているコンテナイメージを使用して下記の3つの環境を構築します。

  • ①tensorflowがセットアップされた環境
    コンテナイメージはこちら
  • ②pytorchがセットアップされた環境
    コンテナイメージはこちら
  • ③機械学習全般がセットアップされた環境
    コンテナイメージはこちら
広告_零号機

本記事の流れ

下記流れで説明します。

① 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 を満たす数少ない端末です。
軽くて持ち運びしやすく開発に耐えうるスペックなのでおすすめです。

富士通|FUJITSU ノートパソコン FMV Chromebook 14F(タッチパネル) ダーククロム FCB143FB [14.0型 /Chrome OS /intel Core i3 /メモリ:8GB /SSD:128GB /タッチパネル対応 /2021年12月モデル]【point_rb】

価格:70,510円
(2022/2/23 18:35時点)
感想(1件)

Chromebook でプログラミングを始める方法については下記記事をご参考下さい。

広告_零号機-エリア2
kewton

kewton

大学院卒業後、某大手SIerで10年以上SEとして従事。
社会人3年目までに基本情報・応用情報技術者、データベーススペシャリスト、簿記3級・2級を取得。
基幹系システム・IoTシステム開発のプロジェクト経験多数。AI活用システムの企画・プロト開発経験あり。
強みは、プロマネだけでなく自身で開発も実施してきたこと。
【扱える言語】
C#、java、python、javascript、Excel VBA
【扱えるDB】
oracle、sql server、postgreSQL、mongoDB

FOLLOW

タグ:
関連記事

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA