CCCMKホールディングス TECH Labの Tech Blog

TECH Labスタッフによる格闘記録やマーケティング界隈についての記事など

Jetson AGX Orin開発者キットをセットアップしてLLMを動かしてみました。

こんにちは、CCCMKホールディングス TECH LABの三浦です。

2023年も残り僅かになりました。10月くらいからバタバタすることが多く、暑い季節が過ぎてからあっという間に年末になってしまった気がします。今年を振り返ってみると、自分にとって一番ホットだった話題は"LLM"だったなぁと思います。これまでの考え方が色々と変わるきっかけになりました。

さて、今回は久しぶりにデバイスを触ってみようかな・・・と思い、Nvidiaのエッジコンピュータ"Jetson AGX Orin開発者キット"をセットアップしてみました。調査不足なところもあり、ところどころ不明確なところもあるのですが、Hugging Faceの7bサイズのLLMを動かしてみるところまで試してみることが出来ました。

Jetson AGX Orin開発者キット

こちらが今回セットアップした"Jetson AGX Orin開発者キット"です。Jetson Orinシリーズは前シリーズの最大で約8倍の処理速度を出すことが出来るとのことでした。

Jetson AGX Orin開発者キット

www.nvidia.com

開発者キットにはUSBポートやディスプレイポート、Wi-Fiなどあらかじめ搭載されているため、すぐに動かすことが出来ます。Jetson AGX Orin開発者キットにはOSインストール済みのストレージもあらかじめ搭載されているため、OSイメージを書き込んだSDカードを用意しなくても電源を入れたらすぐにセットアップに移ることが出来ました。

セットアップ

セットアップはNvidiaのこちらの"Getting Started with Jetson AGX Orin Developer Kit"に従って行いました。

developer.nvidia.com

セットアップの方法は大きく2パターンあり、一つはディスプレイやキーボード、マウスを接続して行う"Initial setup with display attached"でもう一つは別のPCから開発者キットに通信を行い、セットアップを行う"Initial setup in a headless configuration"です。今回は"display attached"の方法でセットアップを行いました。

起動までの手順は特に複雑なところはなく、リージョンの設定などを行ったり、設定が不明なところはデフォルト値のままにして順に行っていきました。

OSが起動したら、Jetsonでアプリケーションを開発するために必要なツールが一式含まれているJetPackのインストールを行います。こちらも先ほどのドキュメントに従います。

最初にJetson用のボードサポートパッケージ"L4T"のバージョンの確認を行います。JetPackはL4Tのバージョンに対応したものをインストールする必要があるためです。

Terminalを開き、以下のコマンドを実行すると、L4Tのバージョンを確認することが出来ます。

cat /etc/nv_tegra_release
# R34 (release), REVISION: 0.1,...

ドキュメントの実行例では# R34 (release), REVISION: 1.0,...となっており、REVISIONが以前のものになっていました。ドキュメントではこれよりも古いバージョンのL4Tの場合は以下のコマンドを使用してaptリポジトリのエントリを手動で追加するように、とありました。私も今回実行してみたものの、バージョンはR34で一致していたので不要な操作だったのかもしれません。

sudo bash -c 'echo "deb https://repo.download.nvidia.com/jetson/common r34.1 main" >> /etc/apt/sources.list.d/nvidia-l4t-apt-source.list'
sudo bash -c 'echo "deb https://repo.download.nvidia.com/jetson/t234 r34.1 main" >> /etc/apt/sources.list.d/nvidia-l4t-apt-source.list'

あとは以下のコマンドを順に実行していきました。ドキュメントにもあるように、かなり時間がかかりました。

sudo apt update
sudo apt dist-upgrade
sudo reboot
sudo apt install nvidia-jetpack

日本語入力を可能にする

このままでは日本語が入力出来なかったため、日本語の入力を出来るようにしました。

アプリケーション一覧から"Language Support"を起動します。

Language Supportの起動

するとLanguage Supportが完全にインストール出来ていない旨のメッセージが表示されるので、Installを実行します。

Installを実行します。

その後再起動すると、日本語入力を選べるようになりました。

日本語の入力が選択可能になりました。

jetson-statsのインストール

開発キットのGPUメモリ使用率などを監視できるようにしたいと考え、こちらのモニタリングツールをインストールしました。

github.com

インストール手順に従って、以下のコマンドを実行します。

sudo pip3 install -U jetson-stats

その後、一度再起動を行います。再起動後、以下のコマンドをTerminalで実行すると、ツールを起動することが出来ます。

jtop

jetson-stats

見た目がとってもカッコいいと思いました!

NVIDIA Jetson Generative AI Lab

以前Jetson Orinシリーズで生成AIが動かせる、という情報を聞き、それ以来いつか試してみたい!と考えていました。とにかく気軽に何か動かしてみよう、ということで調べてみたところ、"NVIDIA Jetson Generative AI Lab"というサイトから色々な生成AIを試すことが出来ることが分かりました。

www.jetson-ai-lab.com

自然言語系から画像系、マルチモーダル系の様々な生成AIが紹介されているのですが、今回は自然言語系のこちらのチュートリアルを試してみました。

www.jetson-ai-lab.com

Tutorial - text-generation-webui

このチュートリアルではJetsonの中でLLMを動かし、WebブラウザからそのLLMをチャット形式で利用する、といったことを試すことが出来ます。詳細な情報はGithubのレポジトリで確認することが出来ました。

github.com

Dockerで動かすことが出来、ImageをJetsonの中でBuildする方法もあるのですが、私の環境で上手く動かすことが出来ませんでした・・・。一番簡単に動かす方法は、以下の様に構築済みのDocker Imageをpullして動かす方法だと思います。

sudo docker run --runtime nvidia -it --rm --network=host dustynv/text-generation-webui:r35.3.1

起動が完了したら、Jetsonの中でブラウザを立ち上げ、http://0.0.0.0:7860にアクセスすると、以下の画面が起動します。

text-generation-webuiを起動

"Model"タブに切り替えると、使用するLLMをダウンロードしたり、量子化の設定を行ったりすることが出来ます。

Modelの設定画面

今回はHugging Faceからダウンロードが出来る"elyza/ELYZA-japanese-Llama-2-7b-instruct"を使用しました。

huggingface.co

ダウンロード後、アプリケーションでロードをするとチャット画面から試すことが出来ました。レスポンスはエッジコンピュータで動かしているとは思えないほど速く、びっくりしました。

これがエッジデバイスで稼働していることにびっくりしました。

まとめ

今回はJetson AGX Orin開発者キットのセットアップから、LLMを動かして動作を確認してみるところまでを試してみることが出来ました。オープンソースのLLMをこれまでGPUを搭載したVMでしか動かしたことはなかったのですが、Jetson AGX Orinでもびっくりするほど高速に動かすことが出来ました。色々と活用できるシーンは多そうです。

今回セットアップが上手くいっていないのか、その他の生成AIのチュートリアルを動かそうとするとCUDA関係のエラーが発生しており、まだ試すが出来ていません。引き続き試行錯誤しつつ、他の生成AIのチュートリアルも試していきたいと思いました。