Pular para o conteúdo principal

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

pir

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

pir

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 

pir

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:

pir

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.

Loading Comments...