Llama2-7B Quantizado com MLC LLM no Jetson
Introdução
Nos últimos anos, grandes modelos de linguagem como o GPT-3 revolucionaram as tarefas de processamento de linguagem natural. No entanto, a maioria desses modelos é treinada em conjuntos de dados em larga escala, o que exige recursos computacionais poderosos e não é adequado para implantação em dispositivos de borda. Para resolver esse problema, pesquisadores desenvolveram técnicas de quantização para comprimir grandes modelos em modelos menores sem sacrificar o desempenho.
Neste projeto, apresentamos uma versão quantizada do Llama2-7B, um grande modelo de linguagem treinado em 1,5 TB de dados, e o implantamos no Jetson Orin. Também aproveitamos o Machine Learning Compiler Large Language Modle(MLC LLM) para acelerar a velocidade de inferência do modelo. Ao implantar o Llama2-7B quantizado com MLC LLM no Jetson Orin NX, os desenvolvedores podem criar aplicações poderosas de processamento de linguagem natural que oferecem alta precisão e baixa latência em dispositivos de borda.

Componentes de hardware
| reComputer (ou outros dispositivos baseados em Jetson) |
|---|
![]() |
Instalar dependências
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 ..
Instalar e executar o contêiner
primeiro passo: instalar a imagem
./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'
use sudo docker images para verificar se a imagem está instalada ou não

segundo passo: instalar Llama2-7b-chat-hf e usar o MLC para quantificar o modelo
./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
terceiro passo: executar e entrar no docker
./run.sh <YOUR IMAGE NAME>
#for me dustynv/mlc:51fb0f4-builder-r35.4.1 check result of first step

Vamos executá-lo
executar Llama sem quantificar e sem MLC LLM quantificado
cd /data/MLC-LLM-on-Jetson && python3 Llama-2-7b-chat-hf.py

você pode ver que, sem quantificar com MLC, o Jetson Nano 16GB consegue carregar o modelo mas não consegue executá-lo.
executar Llama com quantificação com MLC LLM quantificado
cd /data/MLC-LLM-on-Jetson && python3 Llama-2-7b-chat-hf-q4f16_ft.py
aqui está o resultado:

Vídeo de execução do Llama com MLC no Jetson Orin NX 16GB
Perspectivas do projeto
Neste projeto, demonstramos como implantar uma versão quantizada do Llama2-7B com MLC LLM no Jetson Orin. Com os poderosos recursos de computação do Jetson Orin, os desenvolvedores podem criar aplicações de processamento de linguagem natural que oferecem alta precisão e baixa latência em dispositivos de borda. No futuro, continuaremos a explorar o potencial de implantação de grandes modelos de linguagem em dispositivos de borda e a desenvolver métodos de implantação mais eficientes e otimizados.
