Saltar al contenido

Recursos · 17/10/2026

LM Studio + Hugging Face: guía práctica para ejecutar LLMs en local

Guía completa para descargar modelos GGUF de Hugging Face, ejecutarlos con LM Studio y exponerlos como API compatible con OpenAI: cuantizaciones, memoria, RAG, n8n y resolución de errores.

0. Resumen en 60 segundos

  1. Instala LM Studio (macOS, Windows o Linux).
  2. Crea una cuenta en Hugging Face y un token de lectura.
  3. Busca un modelo en formato GGUF, preferiblemente cuantización Q4_K_M.
  4. Descárgalo desde el buscador integrado de LM Studio, desde la web de Hugging Face o con la CLI hf.
  5. Carga el modelo, ajusta context length, GPU offload y plantilla de chat.
  6. Usa el chat o activa el servidor local compatible con OpenAI en http://localhost:1234/v1.
  7. Para RAG, añade un modelo de embeddings y una base vectorial.
  8. Para automatizar, usa la CLI lms y el servidor headless.

1. Las piezas del ecosistema

Antes de tocar nada conviene entender qué hace cada componente:

Pieza Qué es Papel
Hugging Face Hub de modelos, datasets y demos Repositorio donde viven los pesos
GGUF Formato de pesos cuantizados para llama.cpp El formato que consume LM Studio
LM Studio Aplicación de escritorio + runtime + servidor Interfaz, carga del modelo, API local
Cuantización Compresión con pérdida de los pesos Permite ejecutar modelos grandes en hardware modesto
llama.cpp Motor de inferencia en C/C++ Base técnica de LM Studio para GGUF
Embeddings Representaciones vectoriales de texto Necesarios para RAG, búsqueda semántica y clustering

LM Studio no entrena modelos: ejecuta inferencia. Si quieres fine-tuning, necesitarás herramientas como Unsloth, Axolotl, PEFT o llama.cpp para convertir y quantizar.


2. Requisitos de hardware

No hay una regla universal, pero esta tabla orienta bastante bien para modelos densos en Q4_K_M:

Memoria disponible Modelos razonables Experiencia
8 GB RAM 1B–3B Q4 Justo; contextos cortos
16 GB RAM 7B–8B Q4 Uso general fluido en CPU/GPU moderada
24 GB RAM/VRAM 13B–14B Q4, 8B Q8 Buena calidad
32 GB RAM/VRAM 30B Q4, 14B Q6 Muy buena, algo más lento
64 GB RAM/VRAM 70B Q4, 30B Q6/Q8 Posible, pero exigente
128 GB+ 70B Q6/Q8, modelos MoE grandes Nivel estación de trabajo

Regla rápida de memoria

  • Q4_K_M ≈ 0,5–0,6 GB por cada 1B de parámetros.
  • Q8_0 ≈ 1 GB por cada 1B.
  • F16 ≈ 2 GB por cada 1B.
  • Añade 20–40 % extra para caché KV, contexto, overhead del runtime y sistema operativo.

Ejemplos:

  • 7B en Q4_K_M ≈ 4–5 GB.
  • 8B en Q4_K_M ≈ 5 GB.
  • 14B en Q4_K_M ≈ 8–9 GB.
  • 32B en Q4_K_M ≈ 19–21 GB.
  • 70B en Q4_K_M ≈ 42–45 GB.

Apple Silicon, NVIDIA y CPU

  • Apple Silicon: memoria unificada; la GPU puede usar buena parte de la RAM. Empieza con GPU Offload = Max y baja si hay presión de memoria.
  • NVIDIA: instala drivers actualizados. LM Studio aprovecha CUDA cuando está disponible.
  • AMD/Intel: funcionará por Vulkan/ROCm según plataforma y versión; el rendimiento varía.
  • CPU sola: útil para modelos pequeños o para probar; la velocidad será mucho menor.

3. Instalación de LM Studio

macOS

  1. Descarga el .dmg desde lmstudio.ai.
  2. Arrastra la app a /Applications.
  3. Si Gatekeeper lo bloquea, abre con clic derecho → Abrir.
  4. En el primer arranque, elige la carpeta de modelos. Por defecto: ~/.lmstudio/models.

Windows

  1. Descarga el instalador desde la web oficial.
  2. Instala y abre.
  3. Verifica que detecta tu GPU en Settings → Hardware.
  4. Carpeta por defecto: %USERPROFILE%\.lmstudio\models.

Linux

  1. Descarga el AppImage.
  2. Dale permisos: chmod +x LM-Studio-*.AppImage.
  3. Ejecútalo. Si FUSE no está disponible, usa --appimage-extract-and-run.
  4. La CLI suele quedar en ~/.lmstudio/bin/lms.

Primer arranque

  • Revisa Settings → General: carpeta de modelos, idioma, telemetría.
  • Revisa Settings → Hardware: GPU detectada, VRAM, hilos de CPU.
  • Instala la CLI si quieres automatizar: en la app suele haber una opción tipo Install CLI o Enable CLI.
  • Comprueba en terminal:
lms --help

Si no aparece, añade al PATH:

export PATH="$HOME/.lmstudio/bin:$PATH"

4. Preparar Hugging Face

Cuenta y token

  1. Crea una cuenta en huggingface.co.
  2. Ve a Settings → Access Tokens.
  3. Crea un token con permiso de lectura (read).
  4. Guárdalo en un gestor de secretos, no en el repositorio.

Modelos con acceso restringido

Algunos modelos (por ejemplo, ciertas versiones de Llama o Gemma) requieren aceptar una licencia en la model card. Si no lo haces, la descarga devolverá 401 o 403.

Buscar modelos GGUF

En Hugging Face:

  • Filtra por GGUF.
  • Ordena por Trending o Most downloads.
  • Revisa que exista una carpeta con ficheros .gguf.
  • Lee la model card: licencia, contexto máximo, idiomas, plantilla de chat y requisitos.

Búsqueda típica:

https://huggingface.co/models?search=gguf

Repositorios interesantes:

  • lmstudio-community: conversiones GGUF mantenidas por la comunidad de LM Studio.
  • bartowski: gran catálogo de cuantizaciones.
  • TheBloke: histórico, aunque menos actualizado en algunos modelos.
  • Repos oficiales de Qwen, Mistral, Meta, Google, Microsoft, DeepSeek.

5. Cuatro formas de llevar un modelo de Hugging Face a LM Studio

5.1 Buscador integrado de LM Studio

Es la ruta más sencilla:

  1. Abre la pestaña Search o Discover.
  2. Busca el modelo, por ejemplo Qwen2.5 7B Instruct.
  3. Filtra por GGUF si hace falta.
  4. Elige la cuantización Q4_K_M.
  5. Pulsa Download.
  6. Cuando termine, ve a Chat o My Models y cárgalo.

Ventajas: gestiona carpetas, dependencias y actualizaciones. Desventaja: el catálogo integrado no contiene todos los modelos de Hugging Face.

5.2 Descarga manual desde la web de Hugging Face

  1. Abre la pestaña Files and versions del repositorio.
  2. Descarga el .gguf deseado.
  3. Colócalo en una carpeta dentro de tu directorio de modelos:
~/.lmstudio/models/
  lmstudio-community/
    Qwen2.5-7B-Instruct-GGUF/
      Qwen2.5-7B-Instruct-Q4_K_M.gguf
  1. En LM Studio, pulsa Refresh en My Models.
  2. Si no aparece, usa Import Model y selecciona el fichero o la carpeta.

En Windows:

%USERPROFILE%\.lmstudio\models\lmstudio-community\Qwen2.5-7B-Instruct-GGUF\

Consejo: mantén la estructura editor/repositorio/fichero.gguf. Evita nombres con espacios raros y verifica el tamaño y el hash si el repo lo publica.

5.3 CLI de Hugging Face

Instala la CLI:

python3 -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\activate
pip install -U "huggingface_hub[cli]"

Autentícate:

hf auth login

O usa variable de entorno:

export HF_TOKEN="***"

Descarga solo el fichero que te interesa:

hf download lmstudio-community/Qwen2.5-7B-Instruct-GGUF \
  --include "*Q4_K_M.gguf" \
  --local-dir ~/.lmstudio/models/lmstudio-community/Qwen2.5-7B-Instruct-GGUF

Para un modelo con visión necesitarás también el proyector multimodal (mmproj):

hf download <repo> --include "*Q4_K_M.gguf" --include "*mmproj*.gguf" --local-dir ./modelo

Ventajas: reproducible, scriptable, permite fijar revisión:

hf download <repo> --revision <commit_sha> --include "*.gguf" --local-dir ./modelo

5.4 CLI de LM Studio

La CLI lms permite buscar, descargar, cargar y servir modelos:

lms --help
lms ls
lms get qwen2.5

lms get abre un buscador o descarga desde el catálogo según la versión. Para cargar:

lms load <identificador-del-modelo> --gpu max --context-length 8192

Para arrancar el servidor:

lms server start --port 1234

Para ver qué está cargado:

lms ps

Para descargar de memoria:

lms unload --all

Consejo: usa lms ls para obtener el identificador exacto que LM Studio asigna al modelo.


6. Elegir modelo y cuantización

6.1 Instruct vs. base

  • Base: solo predice el siguiente token. Útil para fine-tuning o experimentos.
  • Instruct / Chat: ajustado para seguir instrucciones y conversar. Es lo que quieres para el 95 % de casos.
  • Reasoning: modelos que generan cadenas de razonamiento antes de responder (por ejemplo, destilados de DeepSeek-R1). Útiles para matemáticas y lógica, pero más lentos y verbosos.

6.2 Tabla de cuantizaciones

Cuantización Bits aprox. Calidad Tamaño 7B Recomendación
Q2_K ~2,5 Baja ~2,8 GB Último recurso
Q3_K_M ~3,5 Aceptable ~3,5 GB Hardware muy limitado
Q4_0 4 Buena ~3,8 GB Compatibilidad
Q4_K_M ~4,5 Muy buena ~4,4 GB Punto de partida
Q5_K_M ~5,5 Excelente ~5,1 GB Si sobra memoria
Q6_K ~6,5 Casi sin pérdida ~5,9 GB Calidad alta
Q8_0 ~8,5 Prácticamente idéntica a F16 ~7,5 GB Si hay RAM/VRAM
F16 16 Referencia ~14 GB Conversión, no uso diario

Para uso general: Q4_K_M. Para código, extracción de datos o tareas sensibles: Q5_K_M o Q6_K. Para modelos pequeños (1B–3B), considera Q8_0 porque el ahorro de Q4 no compensa tanto.

6.3 Modelos recomendados para empezar

Modelo Tamaño Licencia Punto fuerte
Qwen2.5-7B-Instruct 7B Apache 2.0 Multilingüe, español decente, generalista
Llama-3.1-8B-Instruct 8B Llama 3.1 Generalista, herramientas, ecosistema enorme
Mistral-7B-Instruct-v0.3 7B Apache 2.0 Rápido, ligero, buena base
Gemma-2-9B-it 9B Gemma Terms Buena calidad conversacional
Phi-3.5-mini-instruct 3,8B MIT Muy pequeño y capaz para su tamaño
DeepSeek-R1-Distill-Qwen-7B 7B MIT Razonamiento
Qwen2.5-Coder-7B-Instruct 7B Apache 2.0 Código
nomic-embed-text-v1.5 137M Apache 2.0 Embeddings
bge-m3 568M MIT Embeddings multilingües
Qwen2-VL-7B-Instruct 7B Apache 2.0 Visión (requiere mmproj)

Comprueba siempre la licencia en la model card: no es lo mismo Apache 2.0 que una licencia con cláusulas de uso comercial o límites de usuarios.


7. Cargar y configurar el modelo

7.1 Context length

Es el número máximo de tokens que el modelo puede “ver” a la vez (prompt + respuesta + historial). Más contexto:

  • Consume más memoria (especialmente caché KV).
  • Puede ralentizar la generación.
  • No siempre mejora la calidad; a veces diluye la atención.

Recomendación:

  • Chat general: 4k–8k.
  • Documentos largos: 16k–32k.
  • No pongas 128k “porque el modelo lo soporta” si no lo necesitas.

7.2 GPU offload

Número de capas que se envían a la GPU. En LM Studio suele haber un control de capas o un botón Max.

Estrategia:

  1. Prueba Max.
  2. Si hay error de memoria, baja capas progresivamente.
  3. Si va lento, comprueba que realmente está usando GPU y no CPU.
  4. En Apple Silicon, vigila la presión de memoria del sistema.

7.3 Opciones avanzadas

  • Flash Attention: actívalo si tu hardware y la versión lo soportan; suele reducir memoria y mejorar velocidad.
  • K/V cache quantization: Q8_0 suele ser seguro; Q4_0 ahorra más pero puede degradar.
  • Batch size: más batch acelera el prompt processing, pero consume memoria.
  • Keep model in memory: útil si vas a hacer muchas peticiones; innecesario en un portátil con poca RAM.
  • mmap: deja que el sistema gestione el fichero; útil si no cabe entero en RAM, aunque puede ir más lento.

7.4 Plantilla de chat

Cada modelo espera un formato concreto (ChatML, Llama 3, Mistral, Gemma…). LM Studio normalmente lo detecta desde los metadatos GGUF. Si el modelo responde mal, con roles raros o repite el prompt:

  1. Revisa la model card.
  2. Selecciona manualmente la plantilla correcta.
  3. Prueba una pregunta simple antes de construir un flujo encima.

7.5 Parámetros de muestreo

Uso Temperature Top-p Repeat penalty
Chat general 0,7 0,9 1,1
Código 0,1–0,3 0,95 1,05
Creatividad 0,9–1,1 0,95 1,1
Extracción/JSON 0,0–0,2 1,0 1,0
RAG factual 0,1–0,3 0,9 1,05

Temperature controla la aleatoriedad; top-p recorta la cola de probabilidad; repeat penalty evita bucles. No cambies cinco parámetros a la vez: prueba uno y evalúa.

7.6 System prompt

Ejemplo para un asistente técnico en español:

Eres un asistente técnico especializado en análisis de datos y Python.
Responde en español, con ejemplos concretos y código ejecutable.
Si no sabes algo, dilo y propone cómo verificarlo.
No inventes APIs ni rutas de archivos.

7.7 Structured output

LM Studio permite definir un esquema JSON para forzar la salida. Ejemplo conceptual:

{
  "type": "object",
  "properties": {
    "sentimiento": {
      "type": "string",
      "enum": ["positivo", "neutral", "negativo"]
    },
    "confianza": {
      "type": "number",
      "minimum": 0,
      "maximum": 1
    }
  },
  "required": ["sentimiento", "confianza"]
}

Esto es muy útil para clasificación, extracción de entidades y pipelines de datos. Aun así, valida siempre la salida con Pydantic o JSON Schema.

7.8 Tool use / function calling

Algunos modelos soportan herramientas. La calidad varía mucho: Llama 3.1, Qwen2.5 y Mistral suelen defenderse bien. Si el modelo no soporta tool calling nativo, puedes simularlo pidiendo JSON y ejecutando tú la función.


8. Usar el chat de LM Studio

Funciones útiles:

  • Comparar modelos en paralelo para una misma pregunta.
  • Presets con system prompt y parámetros guardados.
  • Chat with documents para probar RAG sin escribir código.
  • Adjuntar imágenes si el modelo es multimodal.
  • Historial y carpetas para organizar conversaciones.

Buenas prácticas de prompting:

  1. Da contexto y objetivo antes de la pregunta.
  2. Especifica formato de salida.
  3. Incluye ejemplos si la tarea es ambigua.
  4. Divide tareas complejas en pasos.
  5. Para RAG, pide al modelo que cite el fragmento usado.
  6. No confíes en el modelo para cálculos críticos sin verificación.

9. Servidor local compatible con OpenAI

LM Studio puede exponer una API HTTP que imita la de OpenAI. Esto permite conectar cualquier herramienta que acepte un base_url personalizado.

9.1 Arrancar el servidor

Desde la interfaz:

  1. Ve a Developer o Local Server.
  2. Selecciona el modelo cargado.
  3. Activa Start Server.
  4. Puerto por defecto: 1234.
  5. Si quieres acceso desde la red local, activa la opción correspondiente y revisa el firewall.

Desde CLI:

lms server start --port 1234

Endpoint base:

http://localhost:1234/v1

9.2 Endpoints habituales

  • GET /v1/models
  • POST /v1/chat/completions
  • POST /v1/completions
  • POST /v1/embeddings

9.3 curl

curl http://localhost:1234/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5-7b-instruct",
    "messages": [
      {"role": "system", "content": "Responde en español y con ejemplos."},
      {"role": "user", "content": "Explica qué es la cuantización GGUF en 5 líneas."}
    ],
    "temperature": 0.7,
    "max_tokens": 300
  }'

9.4 Python con el SDK de OpenAI

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:1234/v1",
    api_key="***",  # cualquier string si no has activado auth
)

respuesta = client.chat.completions.create(
    model="qwen2.5-7b-instruct",
    messages=[
        {"role": "system", "content": "Eres un analista de datos riguroso."},
        {"role": "user", "content": "Dame 3 comprobaciones antes de unir dos tablas."},
    ],
    temperature=0.3,
)

print(respuesta.choices[0].message.content)

Streaming:

stream = client.chat.completions.create(
    model="qwen2.5-7b-instruct",
    messages=[{"role": "user", "content": "Escribe un haiku sobre datos."}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

9.5 JavaScript / TypeScript

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "http://localhost:1234/v1",
  apiKey: "***",
});

const res = await client.chat.completions.create({
  model: "qwen2.5-7b-instruct",
  messages: [{ role: "user", content: "Resume este texto en 3 bullets." }],
});

console.log(res.choices[0].message.content);

9.6 LangChain

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    base_url="http://localhost:1234/v1",
    api_key="***",
    model="qwen2.5-7b-instruct",
    temperature=0.2,
)

print(llm.invoke("¿Qué es un embedding?").content)

9.7 n8n

Dos opciones:

  1. OpenAI node: crea una credencial de OpenAI y cambia el Base URL a http://localhost:1234/v1. La API key puede ser cualquier texto.
  2. HTTP Request node: llama directamente a POST http://localhost:1234/v1/chat/completions con el JSON del ejemplo.

Si n8n corre en Docker, localhost dentro del contenedor no es tu Mac. Usa http://host.docker.internal:1234/v1 o la IP de tu máquina en la red local.

9.8 Embeddings

resp = client.embeddings.create(
    model="text-embedding-nomic-embed-text-v1.5",
    input=["primera frase", "segunda frase"],
)

vector = resp.data[0].embedding
print(len(vector))

Usa el identificador exacto que aparezca en LM Studio para el modelo de embeddings.

9.9 Seguridad del servidor

  • Por defecto, escucha en localhost. No lo expongas a Internet sin protección.
  • Si activas acceso en red, usa firewall y, idealmente, un reverse proxy con autenticación.
  • No subas conversaciones con datos personales a modelos remotos si puedes resolverlo en local.
  • Revisa los logs y limita el tamaño de las peticiones.

10. RAG local paso a paso

RAG (Retrieval-Augmented Generation) combina búsqueda semántica con generación. En local es totalmente viable y es uno de los usos más potentes de LM Studio.

Arquitectura

Documentos → extracción de texto → chunks → embeddings → base vectorial
                                                              ↓
Pregunta → embedding → búsqueda top-k → contexto → LLM → respuesta

Paso 1: modelo de embeddings

Carga en LM Studio un modelo como nomic-embed-text-v1.5 o bge-m3. Arranca el servidor y comprueba que /v1/embeddings responde.

Paso 2: extracción de texto

Para PDFs:

pip install pypdf
from pypdf import PdfReader

reader = PdfReader("documento.pdf")
texto = "\n".join(page.extract_text() or "" for page in reader.pages)

Para HTML, Markdown o DOCX, usa unstructured, beautifulsoup4, python-docx o markitdown.

Paso 3: chunking

Reglas prácticas:

  • 500–1.000 tokens por chunk.
  • 10–20 % de solapamiento.
  • Respeta párrafos y secciones.
  • Guarda metadatos: fuente, página, título, fecha.
def chunks(texto, tamaño=800, solape=120):
    palabras = texto.split()
    paso = tamaño - solape
    for i in range(0, len(palabras), paso):
        yield " ".join(palabras[i:i + tamaño])

Para producción, usa un tokenizador real y no partas tablas o código por la mitad.

Paso 4: base vectorial

Opciones: Chroma, FAISS, LanceDB, Qdrant, pgvector. Para empezar, Chroma es muy cómodo:

pip install chromadb
import chromadb
from openai import OpenAI

client = OpenAI(base_url="http://localhost:1234/v1", api_key="***")
chroma = chromadb.PersistentClient(path="./chroma_db")
coleccion = chroma.get_or_create_collection("documentos")

fragmentos = list(chunks(texto))
resp = client.embeddings.create(
    model="text-embedding-nomic-embed-text-v1.5",
    input=fragmentos,
)
vectores = [d.embedding for d in resp.data]

coleccion.add(
    documents=fragmentos,
    embeddings=vectores,
    ids=[f"doc-{i}" for i in range(len(fragmentos))],
    metadatas=[{"fuente": "documento.pdf"} for _ in fragmentos],
)

Paso 5: consulta

pregunta = "¿Qué requisitos de hardware recomienda la guía?"
q = client.embeddings.create(
    model="text-embedding-nomic-embed-text-v1.5",
    input=[pregunta],
).data[0].embedding

resultados = coleccion.query(query_embeddings=[q], n_results=4)
contexto = "\n\n---\n\n".join(resultados["documents"][0])

prompt = f"""Responde usando solo el contexto. Si no está, di que no lo sabes.
Cita la fuente entre corchetes.

Contexto:
{contexto}

Pregunta: {pregunta}
"""

resp = client.chat.completions.create(
    model="qwen2.5-7b-instruct",
    messages=[{"role": "user", "content": prompt}],
    temperature=0.1,
)
print(resp.choices[0].message.content)

Buenas prácticas RAG

  • Evalúa la recuperación por separado de la generación.
  • Guarda el chunk_id y la fuente para poder auditar.
  • Prueba distintos top-k (3, 5, 8).
  • Añade reranking si la calidad es crítica.
  • No metas 20 documentos en el prompt: diluye la atención.
  • Para documentación técnica, conserva títulos y rutas.

11. Automatización y modo headless

Comandos útiles

lms ls
lms ps
lms load <modelo> --gpu max --context-length 8192
lms server start --port 1234
lms unload --all

Script de arranque

#!/usr/bin/env bash
set -euo pipefail

MODELO="${1:-qwen2.5-7b-instruct}"

lms server start --port 1234
lms load "$MODELO" --gpu max --context-length 8192

echo "Servidor listo en http://localhost:1234/v1"

Health check

curl -s http://localhost:1234/v1/models | jq .

Programar el arranque

  • macOS: launchd con un .plist.
  • Linux: systemd service.
  • Windows: Programador de tareas.
  • Docker/CI: no es el entorno natural de LM Studio; para servidores multiusuario considera vLLM, TGI o llama.cpp server.

Integración con n8n

Flujo típico:

  1. Trigger (webhook, cron, email).
  2. HTTP Request a LM Studio.
  3. Parseo de JSON.
  4. Validación con un nodo Code.
  5. Acción: guardar en base de datos, enviar email, publicar en WordPress.

Consejo: añade timeouts y reintentos. Un modelo local puede tardar más que una API en frío, sobre todo la primera petición.


12. Convertir y quantizar modelos de Hugging Face

LM Studio consume GGUF. Si el modelo solo está en formato transformers (safetensors), tienes que convertirlo con llama.cpp.

Requisitos

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Convertir a GGUF F16

python convert_hf_to_gguf.py ./mi-modelo \
  --outfile mi-modelo-f16.gguf \
  --outtype f16

Quantizar

./llama-quantize mi-modelo-f16.gguf mi-modelo-Q4_K_M.gguf Q4_K_M

Subir a Hugging Face

hf upload <usuario>/<repositorio> mi-modelo-Q4_K_M.gguf

Añade una model card con:

  • Modelo base y licencia.
  • Comandos de conversión y quantización.
  • Tamaño y requisitos.
  • Limitaciones conocidas.
  • Ejemplo de uso con LM Studio.

No todos las arquitecturas están soportadas el mismo día. Revisa issues de llama.cpp y prueba una generación corta antes de publicar.


13. Problemas comunes y soluciones

Síntoma Causa probable Solución
401 o 403 al descargar Modelo con acceso restringido Acepta la licencia y configura HF_TOKEN
El modelo no aparece Carpeta incorrecta o formato no GGUF Revisa ruta, refresca, importa manualmente
out of memory Contexto o capas GPU demasiado altas Baja contexto, cuantización o capas
Generación lentísima Modelo en CPU, poca VRAM, contexto enorme Aumenta offload, usa Q4_K_M, reduce contexto
Texto incoherente Cuantización muy baja, plantilla incorrecta, descarga corrupta Prueba Q5_K_M, revisa chat template, redescarga
Repite el prompt Plantilla de chat incorrecta Selecciona la plantilla de la model card
Error de contexto Prompt + historial superan el límite Aumenta contexto o recorta historial
El servidor no responde No está iniciado, puerto ocupado, firewall lms server start, cambia puerto, revisa red
Se cae en macOS Presión de memoria, Metal, versión antigua Actualiza, reduce contexto, cierra apps
Respuestas en inglés System prompt débil o modelo pequeño Refuerza idioma, prueba Qwen/Llama
JSON inválido Modelo pequeño o esquema complejo Baja temperatura, usa structured output, valida
Embeddings fallan Modelo de chat en vez de embeddings Carga un modelo dedicado a embeddings

Diagnóstico rápido

  1. Prueba el modelo en el chat de LM Studio.
  2. Si falla ahí, el problema es del modelo o del hardware.
  3. Si funciona ahí pero no en la API, revisa endpoint, modelo y JSON.
  4. Si funciona en local pero no en Docker/n8n, revisa red y host.docker.internal.
  5. Mira los logs de LM Studio antes de tocar parámetros al azar.

14. Seguridad, privacidad y licencias

Privacidad

  • Todo el procesamiento ocurre en tu máquina.
  • Una vez descargado el modelo, no necesitas Internet.
  • Cuidado con plugins, telemetría y herramientas que envíen datos fuera.
  • Si procesas datos personales, documenta el flujo y limita el acceso al servidor local.

Licencias

Antes de usar un modelo en un producto:

  1. Lee la licencia en la model card.
  2. Comprueba si permite uso comercial.
  3. Revisa límites de usuarios, atribución o restricciones sectoriales.
  4. Guarda una copia de la licencia y de la revisión usada.
  5. No asumas que “está en Hugging Face” significa “es libre para todo”.

Buenas prácticas

  • Fija versiones y revisa actualizaciones.
  • Evalúa con un conjunto propio de preguntas.
  • No uses el modelo como única fuente de verdad.
  • Revisa sesgos y alucinaciones en dominios sensibles.
  • Mide latencia, tokens/segundo y memoria antes de escalar.
  • Guarda presets y prompts en control de versiones.

15. Comparativa de alternativas

Herramienta Facilidad API OpenAI Rendimiento Multiusuario Ideal para
LM Studio Muy alta Sí Bueno en local Limitado Escritorio, prototipos, aprendizaje
Ollama Alta Sí Bueno Medio CLI, scripts, Docker
llama.cpp Media Sí (server) Muy bueno Medio Control fino, embebidos
vLLM Media-baja Sí Excelente en GPU Sí Producción, alto throughput
text-generation-webui Media Parcial Variable No Experimentación

LM Studio es probablemente la mejor opción para empezar y para uso personal/profesional en escritorio. Para servir a muchos usuarios o integrar en producción, mira vLLM o un despliegue gestionado.


16. Glosario

  • LLM: modelo de lenguaje grande.
  • GGUF: formato de pesos para llama.cpp.
  • Cuantización: reducción de precisión de los pesos.
  • Context length: tokens máximos de entrada + salida.
  • Token: unidad mínima de texto; no equivale a palabra.
  • Temperature: aleatoriedad de la muestreo.
  • Top-p: recorte acumulado de probabilidad.
  • KV cache: memoria de claves/valores para no recalcular el contexto.
  • GPU offload: capas ejecutadas en GPU.
  • Embedding: vector que representa significado.
  • RAG: generación aumentada por recuperación.
  • LoRA: adaptador de bajo rango para fine-tuning.
  • MoE: mezcla de expertos; activa solo parte de la red.

17. Recursos

— FIN —

Víctor González