Llama 3 local en Linux

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

Ejecutar Llama 3 en Linux te otorga el máximo control y rendimiento. Utilizaremos llama.cpp — un motor de inferencia en C++ altamente optimizado que soporta nativamente NVIDIA CUDA, AMD ROCm e inferencia exclusiva por CPU.

Step 1 Introducción

Si bien wrappers como Ollama y LM Studio son excelentes para comenzar rápidamente, abstraen el motor subyacente. Si deseas exprimir hasta la última gota de rendimiento de tu hardware Linux, compilar llama.cpp directamente desde el código fuente es el estándar de oro.

Esta guía te llevará paso a paso por la compilación del motor con soporte NVIDIA CUDA, la descarga del modelo Llama 3 8B y su ejecución directamente desde tu terminal.

Step 2 Requisitos Previos

Primero, necesitamos instalar las herramientas de compilación principales y el kit de herramientas NVIDIA CUDA. Abre tu terminal y ejecuta:

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

Verifica que tus drivers de NVIDIA y CUDA estén funcionando correctamente:

Terminal
nvidia-smi

Step 3 Compilación

Clonaremos el repositorio de llama.cpp desde GitHub y lo compilaremos. Pasamos el flag LLAMA_CUDA=1 al comando make para garantizar que el compilador construya el binario con aceleración GPU de NVIDIA.

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

Una vez finalizada la compilación, tendrás varios archivos ejecutables en el directorio raíz, incluyendo llama-cli y llama-server.

Step 4 Descarga de los Pesos de Llama 3

llama.cpp utiliza el formato de archivo .gguf. Podemos usar el CLI de HuggingFace para descargar de forma segura el modelo Llama 3 8B de Meta directamente a nuestro servidor.

Primero, instala el CLI:

Terminal
pip3 install -U "huggingface_hub[cli]"

Ahora, descarga la versión cuantizada Q4_K_M del modelo. Esta cuantización de 4 bits equilibra perfectamente la velocidad y la inteligencia, al tiempo que cabe cómodamente dentro de 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 Ejecución de Inferencia

Es el momento de conversar con Llama 3. Utilizaremos la herramienta llama-cli.

El flag -ngl 99 es la parte más importante de este comando: le indica a llama.cpp que descargue 99 capas (esencialmente todas ellas en un modelo 8B) a la VRAM de tu 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:"

Deberías ver cómo el motor se inicializa, carga el modelo en la VRAM y te presenta un prompt interactivo.

Step 6 El Servidor de API Local

Si estás alojando esto en un servidor Ubuntu sin interfaz gráfica y deseas acceder al modelo de forma remota (o a través de una UI como Open WebUI), puedes ejecutar el 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

¡Tu backend de alto rendimiento acelerado por CUDA está ahora escuchando en http://YOUR_SERVER_IP:8080 y actúa como un reemplazo directo de la API de OpenAI!