Ir al contenido principal

Llama.cpp en Linux con modelo local y servicio systemd

Servidor Llama.cpp en Linux con modelo local

1. Estructura de directorios

Organiza todo bajo /opt/llama-app:

/opt/llama-app/
├── bin/               # Ejecutables compilados de llama.cpp
│   └── llama-server
└── models/            # Modelos de lenguaje
    └── Meta-Llama-3-8B-Instruct.Q4_K_M.gguf

2. Levantar el servidor manualmente

cd /opt/llama-app/bin
./llama-server \
  -m /opt/llama-app/models/Meta-Llama-3-8B-Instruct.Q4_K_M.gguf \
  --host 0.0.0.0 \
  --port 9000 \
  --ctx-size 4096 \
  --n-gpu-layers 0

3. Probar la API

Desde la misma máquina:

curl http://127.0.0.1:9000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Meta-Llama-3-8B-Instruct.Q4_K_M",
    "messages": [
      {"role": "system", "content": "Eres un asistente útil en español."},
      {"role": "user", "content": "Explícame qué es la inteligencia artificial en 3 oraciones."}
    ],
    "max_tokens": 100,
    "temperature": 0.7
  }'

Desde otra máquina en la red local:

curl http://TU_IP_LOCAL:9000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Meta-Llama-3-8B-Instruct.Q4_K_M",
    "messages": [
      {"role": "user", "content": "Hola, prueba API"}
    ],
    "max_tokens": 50
  }'

4. Crear un servicio systemd

Archivo del servicio:

sudo nano /etc/systemd/system/llama-server.service

Contenido del archivo:

[Unit]
Description=Servidor Llama.cpp local
After=network.target

[Service]
Type=simple
User=sistema
WorkingDirectory=/opt/llama-app/bin
ExecStart=/opt/llama-app/bin/llama-server \
    -m /opt/llama-app/models/Meta-Llama-3-8B-Instruct.Q4_K_M.gguf \
    --host 0.0.0.0 \
    --port 9000 \
    --ctx-size 4096 \
    --n-gpu-layers 0
Restart=always
StandardOutput=append:/var/log/llama-server.log
StandardError=append:/var/log/llama-server.log

[Install]
WantedBy=multi-user.target

Recargar systemd y habilitar el servicio:

sudo systemctl daemon-reload
sudo systemctl enable llama-server
sudo systemctl start llama-server
sudo systemctl status llama-server

5. Usar la API desde Python

import requests

url = "http://TU_IP_LOCAL:9000/v1/chat/completions"

data = {
    "model": "Meta-Llama-3-8B-Instruct.Q4_K_M",
    "messages": [
        {"role": "system", "content": "Eres un asistente útil en español."},
        {"role": "user", "content": "Explícame qué es la inteligencia artificial en 3 oraciones."}
    ],
    "max_tokens": 100,
    "temperature": 0.7
}

response = requests.post(url, json=data)
print(response.json())

¡Todo el procesamiento se hace localmente en tu servidor! No dependes de APIs externas ni modelos de pago.

Comentarios

Entradas populares de este blog

Instalar Evolution API en Docker con Redis y PostgreSQL Local

Instalar Evolution API en Docker con Redis y PostgreSQL Local En este tutorial vamos a levantar Evolution API usando Docker , con soporte de Redis para sesiones y PostgreSQL local para almacenar datos de manera persistente y compartida entre varios usuarios. 1. Estructura del proyecto Crea una carpeta para tu proyecto y colócate en ella: mkdir -p ~/docker/evolution-api cd ~/docker/evolution-api 2. Archivo docker-compose.yml Este compose levanta Redis y Evolution API : version: "3.9" services: # ✅ SERVICIO REDIS redis: container_name: evolution_redis image: redis:7-alpine restart: unless-stopped ports: - "6379:6379" volumes: - redis_data:/data command: redis-server --save 60 1 --loglevel warning # ✅ SERVICIO EVOLUTION API evolution-api: container_name: evolution_api image: atendai/evolution-api restart: unless-stopped ports: - "8085:8080" env_file: - .env ...

Instalación y Configuración de MySQL 5.7 en Ubuntu 24.04 LTS

Instalar MySQL 5.7 en Ubuntu 24.04 1. Descargar e instalar MySQL Copiar mkdir ~/mysql57 cd ~/mysql57 wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz sudo mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql sudo ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql 2. Instalar dependencias necesarias IMPORTANTE: Se descargan las versiones nuevas de las librerías y se las vincula con las librerías que necesita MySQL. Copiar sudo apt update # Reemplazo de libaio sudo apt install libaio1t64 # Reemplazo de libtinfo y ncurses sudo apt install libtinfo6 libncurses6 Copiar # Crear los enlaces simbólicos sudo ln -sf /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/libaio.so.1 sudo ln -sf /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5 sudo ln -sf /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64...

Instalar Jasper Studio 6.21 para Ubuntu 24.04

Instalar js-studiocomm_6.21.3 en Ubuntu 24.4 Para instalar Jaspersoft Studio en Ubuntu 24.4, sigue estos pasos: 1. Descargar Jasper Studio Descarga la versión js-studiocomm_6.21.3 desde el siguiente enlace: Jaspersoft Studio 6.21.3 2. Crear el directorio de instalación mkdir /opt/jasperstudio 3. Mover el archivo descargado mv /dir_descarga/js-studiocomm_6.21.3_linux_x86_64.tgz /opt/jasperstudio/ cd /opt/jasperstudio 4. Extraer el archivo tar -xvzf js-studiocomm_6.21.3_linux_x86_64.tgz cd js-studiocomm_6.21.3 5. Ejecutar Jaspersoft Studio ./Jaspersoft\ Studio 6. Crear acceso directo en el escritorio Para facilitar el acceso, crea un archivo .desktop en el escritorio: gedit ~/Escritorio/jaspersoft-studio.desktop En el archivo jaspersoft-studio.desktop , agrega lo siguiente: [Desktop Entry] Version=1.0 Ty...