Llama 3 Local no Linux

laptop_mac macOS Sonoma Intermediate schedule 8 min read
Author by Alex Rivera • May 14, 2024

Executar o Llama 3 no Linux oferece controle e desempenho máximos. Usaremos o llama.cpp — um motor de inferência C++ altamente otimizado que suporta nativamente NVIDIA CUDA, AMD ROCm e inferência apenas via CPU.

Step 1 Introdução

Embora wrappers como Ollama e LM Studio sejam ótimos para começar rapidamente, eles abstraem o motor subjacente. Se você deseja extrair até a última gota de desempenho do seu hardware Linux, compilar o llama.cpp diretamente do código-fonte é o padrão ouro.

Este guia irá orientá-lo na compilação do motor com suporte a NVIDIA CUDA, no download do modelo Llama 3 8B e na execução diretamente pelo seu terminal.

Step 2 Pré-requisitos

Primeiro, precisamos instalar as ferramentas de build essenciais e o kit de ferramentas NVIDIA CUDA. Abra seu terminal e execute:

Terminal
sudo apt update
sudo apt install build-essential git python3-pip
sudo apt install nvidia-cuda-toolkit

Verifique se seus drivers NVIDIA e o CUDA estão funcionando corretamente:

Terminal
nvidia-smi

Step 3 Compilação

Vamos clonar o repositório do llama.cpp do GitHub e compilá-lo. Passamos a flag LLAMA_CUDA=1 ao comando make para garantir que o compilador construa o binário com aceleração de GPU NVIDIA.

Terminal
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make -j$(nproc) LLAMA_CUDA=1

Assim que a compilação terminar, você terá vários arquivos executáveis no diretório raiz, incluindo llama-cli e llama-server.

Step 4 Baixando os Pesos do Llama 3

O llama.cpp utiliza o formato de arquivo .gguf. Podemos usar o CLI do HuggingFace para baixar com segurança o modelo Llama 3 8B da Meta diretamente para o nosso servidor.

Primeiro, instale o CLI:

Terminal
pip3 install -U "huggingface_hub[cli]"

Agora, baixe a versão quantizada Q4_K_M do modelo. Esta quantização de 4 bits equilibra perfeitamente velocidade e inteligência, cabendo confortavelmente em 8 GB de VRAM.

Terminal
huggingface-cli download bartowski/Meta-Llama-3-8B-Instruct-GGUF Meta-Llama-3-8B-Instruct-Q4_K_M.gguf --local-dir ./models

Step 5 Executando a Inferência

É hora de conversar com o Llama 3. Usaremos a ferramenta llama-cli.

A flag -ngl 99 é a parte mais importante deste comando: ela instrui o llama.cpp a descarregar 99 camadas (essencialmente todas elas para um modelo 8B) para a VRAM da sua GPU NVIDIA.

Terminal
./llama-cli -m ./models/Meta-Llama-3-8B-Instruct-Q4_K_M.gguf \
  -n 512 \
  -ngl 99 \
  --color \
  -i -r "User:" \
  -p "You are a helpful AI assistant.\n\nUser: Hello!\nAI:"

Você deverá ver o motor inicializar, carregar o modelo na VRAM e apresentar um prompt interativo.

Step 6 O Servidor de API Local

Se você estiver hospedando isso em um servidor Ubuntu headless e quiser acessar o modelo remotamente (ou por meio de uma interface como o Open WebUI), pode executar o servidor HTTP integrado.

Terminal
./llama-server -m ./models/Meta-Llama-3-8B-Instruct-Q4_K_M.gguf -ngl 99 --host 0.0.0.0 --port 8080

Seu backend de alto desempenho, acelerado por CUDA, agora está ouvindo em http://YOUR_SERVER_IP:8080 e funciona como um substituto direto para a API da OpenAI!