Jetson AGX Orin 32GBでStable Diffusion 

Jetson AGX Orin 32GBが到着した。
Webで調べた限り割と簡単にStable Diffusionは動かせそうなので試してみたけど、案外ハマったという話。

結論から言うと、JetsonをUbuntuからクリーンインストールをして、何もUpgradeせずに進めばすんなり動く。

# ハマった（むかついた）ポイントと回避方法。

#
①ビデオ出力がDisplay Portの為USB TypeCからシリアル接続するも途中からBlack outしてウンともスンとも。
    >>既知のバグ。どうやっても無理ぽい。
    以下のStep2で詰む。
    https://developer.nvidia.com/embedded/learn/get-started-jetson-agx-orin-devkit
#
②よくあるパッシブタイプのDP-HDMI変換アダプタは非対応。
    >>新規にアクティブタイプのアダプタ購入（￥5,000）
    買ったのはコレ
    https://www.elecom.co.jp/products/AD-DPHBK.html
#    
③DP to HDMIで画面は出たが、Jetpack5インストール後また消える。
     >バグっぽいのであきらめて1から焼き直す。
#
④焼き直すためのsdkmanagerがUbuntu20.04オンリー。
     >新規でUbuntu 20.04 Linuxを別のサーバーにインストール。
# 
⑤sdkmanagerの認証がErrorで通らない。
     > QRコードなら通る。
# 
⑥sdkmanagerでJetpack6.0をインストールした後にJetpack6.2(R36)にUpgradeしたら諸々動かない。
     > 主にDockerとPyTouchがまともに動かないので、もう一回クリーンインストール。
#

##
# 上手くいく方法

# ①どこかのマシンにUbuntu20.04をインストールして、sdkmanagerを入れる
https://developer.nvidia.com/embedded/downloads
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478729/c28124ec-ec95-e5e2-da04-4560ff5e8e81.png)
```
$sudo apt install ./sdkmanager_[version]-[build#]_amd64.deb
$sdkmanager
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478729/c47f0e79-e4c6-cbbd-afa4-cca5175309ed.png)

#
# ②付属のケーブルでサーバーのUSB TypeAとJetsonのTypeC（電源の反対側）を接続し、３つあるボタンの真ん中を押しながら電源のUSB TypeCを指してPowerOnし、LED点灯を確認。
(ピンヘッダーの隣のUSB TypeC)
![nvidia-jetson-agx-orin-dev-kit-2c50-p@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478729/e7e3a84c-58ac-7a20-3516-250bede8a328.png)

sdkmanager起動後は以下リンクの通り。
https://docs.nvidia.com/sdk-manager/install-with-sdkm-jetson/index.html
Host machineのチェックは外す。
Jetson側もInternetに繋ぐ必要あり。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478729/6e81fedf-c5e5-caee-8565-59df332dc9f3.png)

CUDAとはContainer関連が入っているか指差し確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478729/6b8f7ebe-02cc-567e-c46f-3e83058aee0b.png)

#
# ③インストール終わったら本体のリセットボタンと電源長押しでシャットダウン

# ④DPまたはアクティブタイプのDP-HDMI変換で本体に直接モニター、キーボードマウス接続して起動

# ⑤余計なことをせず、Chromiumブラウザだけ入れる。
```
$ sudo apt update
$ sudo apt install chromium-browser
```

だけやる

https://developer.nvidia.com/embedded/learn/get-started-jetson-agx-orin-devkit
このリンクを参照して以下のアップデートをすると、色々と難しい状況に陥り結局やり直すことに。。。
~~sudo apt dist-upgrade
sudo reboot
sudo apt install nvidia-jetpack~~
#
# ⑥Stablediffusionのインストラクション通り

https://www.jetson-ai-lab.com/tutorial_stable-diffusion.html

前準備
$sudo vi /etc/docker/daemon.json

```

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }, <==,を追記
        <==１行空けて
    "default-runtime": "nvidia"　<==追記
}

```
インストール
```
$ git clone https://github.com/dusty-nv/jetson-containers
$ cd jetson-containers
$ sudo apt update; sudo apt install -y python3-pip
$ pip3 install -r requirements.txt
$ ./run.sh $(./autotag stable-diffusion-webui)
```
最後の./run.sh $(./autotag stable-diffusion-webui)がどうにも進まない事が何回かあったが、
最終的に余計なことをしなければ進んだ、或いはたまたまだったのかもしれない。
またネットワークが途中で切れると、繋げ直しても結局エラーになるので要注意。

最終的にインストールが終わると、http://<IP_ADDRESS>:7860でアクセスするようなメッセージがあるので、ブラウザでアクセスすればインストールは完了。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478729/e45124a9-dd0c-a073-b7e4-aa4c55af88f3.png)

#

以上誰かの役に立ちますように。