LoginSignup
0
0

JetPack6.0のJetson AGX Orin DevKit で Triton Inference Server を動かす

Last updated at Posted at 2024-05-27

毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

0. はじめに

NVIDIA Jetson AGX Orin Developer KitにJetpack 6.0をインストールしたらはまった(無限に再起動するようになった)話 #NVIDIA - Qiita
https://qiita.com/ynott/items/94de1d1dad2ff7d11f95

上記の記事で、Jetson AGX Orin Developer KitにJetpack 6.0を日本最速(当社調べ)でインストールしてはまりました。
問題も解消し、ぼちぼち動かそうということで、Triton Inference Serverを動かしてみました。

1. 環境

jetson_releaseの情報は以下の通りです(jetson_releaseについてはこちらを参照)

$ sudo jetson_release
Software part of jetson-stats 4.2.8 - (c) 2024, Raffaello Bonghi
Model: NVIDIA Jetson AGX Orin Developer Kit - Jetpack 6.0 [L4T 36.3.0]
NV Power Mode[0]: MAXN
Serial Number: [XXX Show with: jetson_release -s XXX]
Hardware:
 - P-Number: p3701-0000
 - Module: NVIDIA Jetson AGX Orin
Platform:
 - Distribution: Ubuntu 22.04 Jammy Jellyfish
 - Release: 5.15.136-tegra
jtop:
 - Version: 4.2.8
 - Service: Active
Libraries:
 - CUDA: 12.2.140
 - cuDNN: 8.9.4.25
 - TensorRT: 8.6.2.3
 - VPI: 3.1.5
 - Vulkan: 1.3.204
 - OpenCV: 4.8.0 - with CUDA: NO

2. Dockerのインストール

何も入ってないので、Dockerをインストールします。

2-1. Dockerをインストールするまえの周辺パッケージのインストール

sudo nala update 
sudo nala install \ 
    ca-certificates \
    curl \
    gnupg \
    lsb-release

2-2. Dockerのリポジトリ用の鍵をインストールしてリポジトリを追加

sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo nala update

2-3. Dockerのインストール

特にこだわりも無いので最新版をインストールしました。

sudo nala install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

aptを使う人は、nalaはaptに読み替えてください(以下同じ)

image.png

2-4. インストール確認

$ sudo docker -v
Docker version 26.1.3, build b72abbb

2-5. 現在のユーザーをdockerグループに追加

sudo usermod -aG docker $USER

セッションを再接続しておく

2-5. nvidia container toolkit を有効にする

Jetpackにはnvidia contaier toolkitは入っているはずですが、default-runtimeがnvidiaになってないと思うので、/etc/docker/daemon.jsonを以下のように書き換える

sudo vi /etc/docker/daemon.json

以下のようにする

{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}

dockerを再起動しておく

sudo systemctl restart docker

3. Triton Inference Serverを動かす

GitHubのtriton-inference-server/server: The Triton Inference Server provides an optimized cloud and edge inferencing solution.をやってみる

3-1. Modelのダウンロード

以下を実行するとModelがダウンロードされる。

git clone -b r24.04 https://github.com/triton-inference-server/server.git
cd server/docs/examples
./fetch_models.sh

以下のようにmodelが入る

image.png

3-2. Triton Inference Serverを動かす

Dockerで動かすのは簡単

docker run --gpus=1 --rm --net=host -v ${PWD}/model_repository:/models \
nvcr.io/nvidia/tritonserver:24.05-py3-igpu tritonserver --model-repository=/models
  • コンテナイメージは、igpuと付いているものを使う事
    (チュートリアルとは違うので注意)
  • model_repositoryがあるディレクトリで実行する事
  • Disk空きが12GB以上空きがあること(コンテナイメージが10.9GB)
  • 途中起動メッセージでcould not open file to read NUMA node: /sys/bus/pci/devices/0000:00:00.0/numa_nodeとか出ますが、無視する
I0527 08:24:47.947393 1 grpc_server.cc:2463] "Started GRPCInferenceService at 0.0.0.0:8001"
I0527 08:24:47.948125 1 http_server.cc:4692] "Started HTTPService at 0.0.0.0:8000"
I0527 08:24:47.990732 1 http_server.cc:362] "Started Metrics Service at 0.0.0.0:8002"

まで出ればOK

3-3. Triton Inference Serverをテストする

Serverが動いても何もしてくれないので、何か画像を投げてテストします。
別のターミナルを起動して、以下のコマンドを打ちます。
こちらはファイルを投げつけるだけなので、tritonserverコンテナである必要もありませんが、チュートリアルに沿ってテストします。

docker run -it --rm --net=host nvcr.io/nvidia/tritonserver:24.04-py3-sdk

コンテナ内に入るので、以下のコマンドを実行

/workspace/install/bin/image_client -m densenet_onnx -c 3 -s INCEPTION \
/workspace/images/mug.jpg

こんな風に返ればOK

image.png

4. まとめ

Jetsonには罠が一杯
20GBぐらい容量を利用するので注意する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0