Skip to main content

Jetson上でMLC LLMを使用したQuantized Llama2-7B

はじめに

近年、GPT-3などの大規模言語モデルは自然言語処理タスクに革命をもたらしました。しかし、これらのモデルの多くは大規模なデータセットで訓練されており、強力な計算リソースを必要とし、エッジデバイスでの展開には適していません。この問題に対処するため、研究者たちは性能を犠牲にすることなく大規模モデルをより小さなモデルに圧縮する量子化技術を開発しました。

このプロジェクトでは、1.5TBのデータで訓練された大規模言語モデルであるLlama2-7Bの量子化版を紹介し、Jetson Orin上に展開します。また、Machine Learning Compiler Large Language Modle(MLC LLM)を活用してモデルの推論速度を加速します。Jetson Orin NX上でMLC LLMを使用した量子化Llama2-7Bを展開することで、開発者はエッジデバイス上で高精度かつ低遅延を実現する強力な自然言語処理アプリケーションを構築できます。

ハードウェアコンポーネント

reComputer(またはJetsonベースの他のデバイス)

依存関係のインストール

sudo apt-get update && sudo apt-get install git python3-pip
git clone --depth=1 https://github.com/dusty-nv/jetson-containers
cd jetson-containers pip3 install -r requirements.txt
cd ./data && git clone https://github.com/LJ-Hao/MLC-LLM-on-Jetson-Nano.git && cd ..

コンテナのインストールと実行

第一ステップ:イメージのインストール

./run.sh --env HUGGINGFACE_TOKEN=<YOUR-ACCESS-TOKEN> $(./autotag mlc) /bin/bash -c 'ln -s $(huggingface-downloader meta-llama/Llama-2-7b-chat-hf) /data/models/mlc/dist/models/Llama-2-7b-chat-hf'

sudo docker imagesを使用してイメージがインストールされているかどうかを確認してください

pir

第二ステップ:Llama2-7b-chat-hfのインストールとMLCによるモデルの量子化

./run.sh $(./autotag mlc) \
python3 -m mlc_llm.build \
--model Llama-2-7b-chat-hf \
--quantization q4f16_ft \
--artifact-path /data/models/mlc/dist \
--max-seq-len 4096 \
--target cuda \
--use-cuda-graph \
--use-flash-attn-mqa

第三ステップ:Dockerの実行と入力

./run.sh <YOUR IMAGE NAME> 
#私の場合はdustynv/mlc:51fb0f4-builder-r35.4.1 第一ステップの結果を確認してください

pir

実行してみましょう

MLC LLMによる量子化なしでLlamaを実行

cd /data/MLC-LLM-on-Jetson && python3 Llama-2-7b-chat-hf.py 

pir

MLCによる量子化なしでは、Jetson Nano 16GBはモデルをロードできますが実行できないことがわかります。

MLC LLMによる量子化ありでLlamaを実行

cd /data/MLC-LLM-on-Jetson && python3 Llama-2-7b-chat-hf-q4f16_ft.py 

結果は以下の通りです:

pir

Jetson Orin NX 16GB上でMLCを使用してLlamaを実行する動画

プロジェクトの展望

このプロジェクトでは、Jetson Orin上でMLC LLMを使用したLlama2-7Bの量子化版を展開する方法を実証しました。Jetson Orinの強力な計算能力により、開発者はエッジデバイス上で高精度かつ低遅延を実現する自然言語処理アプリケーションを構築できます。今後も、エッジデバイス上での大規模言語モデル展開の可能性を探求し続け、より効率的で最適化された展開方法を開発していきます。

Loading Comments...