Skip to main content

MLCを使用した高速推論

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

MLC LLMを使用したJetson上での量子化Llama2-7B

はじめに

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

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

ハードウェア構成

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 ..

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

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

./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

ステップ2: 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

ステップ3: 実行とDockerへのログイン

./run.sh <YOUR IMAGE NAME> 
#私の場合はdustynv/mlc:51fb0f4-builder-r35.4.1、ステップ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を実行する動画:

プロジェクトの展望

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

Loading Comments...