こんにちは、CCCMKホールディングス TECH LABの三浦です。
2023年も残り僅かになりました。10月くらいからバタバタすることが多く、暑い季節が過ぎてからあっという間に年末になってしまった気がします。今年を振り返ってみると、自分にとって一番ホットだった話題は"LLM"だったなぁと思います。これまでの考え方が色々と変わるきっかけになりました。
さて、今回は久しぶりにデバイスを触ってみようかな・・・と思い、Nvidiaのエッジコンピュータ"Jetson AGX Orin開発者キット"をセットアップしてみました。調査不足なところもあり、ところどころ不明確なところもあるのですが、Hugging Faceの7bサイズのLLMを動かしてみるところまで試してみることが出来ました。
Jetson AGX Orin開発者キット
こちらが今回セットアップした"Jetson AGX Orin開発者キット"です。Jetson Orinシリーズは前シリーズの最大で約8倍の処理速度を出すことが出来るとのことでした。
開発者キットにはUSBポートやディスプレイポート、Wi-Fiなどあらかじめ搭載されているため、すぐに動かすことが出来ます。Jetson AGX Orin開発者キットにはOSインストール済みのストレージもあらかじめ搭載されているため、OSイメージを書き込んだSDカードを用意しなくても電源を入れたらすぐにセットアップに移ることが出来ました。
セットアップ
セットアップはNvidiaのこちらの"Getting Started with Jetson AGX Orin Developer Kit"に従って行いました。
セットアップの方法は大きく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が完全にインストール出来ていない旨のメッセージが表示されるので、Installを実行します。
その後再起動すると、日本語入力を選べるようになりました。
jetson-statsのインストール
開発キットのGPUメモリ使用率などを監視できるようにしたいと考え、こちらのモニタリングツールをインストールしました。
インストール手順に従って、以下のコマンドを実行します。
sudo pip3 install -U jetson-stats
その後、一度再起動を行います。再起動後、以下のコマンドをTerminalで実行すると、ツールを起動することが出来ます。
jtop
見た目がとってもカッコいいと思いました!
NVIDIA Jetson Generative AI Lab
以前Jetson Orinシリーズで生成AIが動かせる、という情報を聞き、それ以来いつか試してみたい!と考えていました。とにかく気軽に何か動かしてみよう、ということで調べてみたところ、"NVIDIA Jetson Generative AI Lab"というサイトから色々な生成AIを試すことが出来ることが分かりました。
自然言語系から画像系、マルチモーダル系の様々な生成AIが紹介されているのですが、今回は自然言語系のこちらのチュートリアルを試してみました。
Tutorial - text-generation-webui
このチュートリアルではJetsonの中でLLMを動かし、WebブラウザからそのLLMをチャット形式で利用する、といったことを試すことが出来ます。詳細な情報はGithubのレポジトリで確認することが出来ました。
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
にアクセスすると、以下の画面が起動します。
"Model"タブに切り替えると、使用するLLMをダウンロードしたり、量子化の設定を行ったりすることが出来ます。
今回はHugging Faceからダウンロードが出来る"elyza/ELYZA-japanese-Llama-2-7b-instruct"を使用しました。
ダウンロード後、アプリケーションでロードをするとチャット画面から試すことが出来ました。レスポンスはエッジコンピュータで動かしているとは思えないほど速く、びっくりしました。
まとめ
今回はJetson AGX Orin開発者キットのセットアップから、LLMを動かして動作を確認してみるところまでを試してみることが出来ました。オープンソースのLLMをこれまでGPUを搭載したVMでしか動かしたことはなかったのですが、Jetson AGX Orinでもびっくりするほど高速に動かすことが出来ました。色々と活用できるシーンは多そうです。
今回セットアップが上手くいっていないのか、その他の生成AIのチュートリアルを動かそうとするとCUDA関係のエラーが発生しており、まだ試すが出来ていません。引き続き試行錯誤しつつ、他の生成AIのチュートリアルも試していきたいと思いました。