Llama.cpp en Mac: La Guía para Usuarios Avanzados

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

Si deseas el máximo rendimiento, control absoluto y cero software innecesario, compilar llama.cpp directamente desde el código fuente es la única opción válida. Aquí te mostramos exactamente cómo hacerlo en Apple Silicon.

Step 1 Introducción

llama.cpp es el motor C++ subyacente que impulsa prácticamente todas las herramientas de IA local (incluidas Ollama y LM Studio). Al ejecutarlo de forma nativa desde la terminal, eliminas la sobrecarga de la interfaz gráfica y obtienes control total sobre los parámetros de rendimiento.

Step 2 Requisitos previos

Necesitas las Xcode Command Line Tools de Apple y Homebrew instalados para compilar el código C++.

Terminal
xcode-select --install
brew install cmake python3

Step 3 Compilación

Clonaremos el repositorio y lo compilaremos utilizando el flag LLAMA_METAL=1 para asegurarnos de que aproveche la GPU de Apple.

Terminal
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make -j LLAMA_METAL=1

Step 4 Descarga de pesos

Necesitamos descargar un modelo en formato .gguf. Utilizaremos huggingface-cli para descargar Llama 3 8B.

Terminal
pip3 install huggingface-hub
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

Ahora, conversemos con el modelo. El flag -ngl 99 le indica al motor que descargue todas las capas en la GPU de tu Mac.

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:"

Step 6 Servidor local

Si deseas alojar un endpoint de API compatible con OpenAI directamente desde la terminal, utiliza el binario llama-server:

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

Tu backend de alto rendimiento estará ahora escuchando en http://127.0.0.1:8080.