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
Publicar un comentario