Conclusiones clave
- Descarga todo en una máquina conectada: binario de Ollama, modelo GGUF, configuraciones del tokenizador y cualquier dependencia de RAG
- Transfiere mediante USB SSD, recurso compartido de red interno o portátil air-gapped — nunca dependas de la sincronización en la nube
- Establece la variable de entorno
OLLAMA_MODELSpara que apunte a tu directorio de modelos offline - Qwen2.5 14B en Q4_K_M (9,5 GB) es el predeterminado offline recomendado — capacidad amplia, cabe en 16 GB de memoria unificada
- Dimensionamiento de NAS: planifica 20 GB por modelo de 7B, 50 GB por modelo de 14B y 100 GB por modelo de 32B en Q4_K_M
- Cumplimiento normativo de datos: la inferencia local satisface los requisitos de residencia de datos independientemente del origen del modelo
Lista de comprobación previa — Descarga antes de desconectarte
Marca cada elemento en una máquina conectada antes de pasar al entorno air-gapped.
- 1Binario de Ollama — descárgalo desde ollama.com para tu sistema operativo (Linux x86_64, macOS arm64, Windows). Se recomienda la versión ≥0.3.0.
- 2Archivo GGUF del modelo — ejecútalo con
ollama pull qwen2.5:14b-instruct-q4_K_Men la máquina conectada. Los modelos se almacenan en caché en~/.ollama/models/. - 3Tokenizador + plantilla de chat — Ollama los incluye junto con el manifiesto del modelo; no es necesaria una descarga aparte si usas Ollama.
- 4Binario de llama.cpp (si usas llama.cpp) — descarga una versión precompilada desde github.com/ggerganov/llama.cpp/releases.
- 5Modelo de embedding (para RAG offline) —
ollama pull nomic-embed-textomxbai-embed-large. - 6Binario de base de datos vectorial (para RAG offline) — Chroma standalone, binario de Qdrant o SQLite+sqlite-vss (no se requiere instalación de Python).
- 7Wheels de Python (si usas herramientas Python) — descarga los archivos
.whlconpip downloadusando--no-depsy transfiérelos. - 8Hash de verificación — ejecuta
sha256sumen cada archivo GGUF antes de la transferencia para detectar corrupción.
Comandos de descarga para la máquina conectada
Ejecuta todos estos comandos en la máquina con acceso a Internet antes de la transferencia. Reemplaza las etiquetas del modelo según sea necesario.
ollama pull qwen2.5:14b-instruct-q4_K_M— 9,5 GB, predeterminado recomendadoollama pull qwen2.5:7b-instruct-q4_K_M— 5,5 GB, para máquinas con menos VRAMollama pull nomic-embed-text— 274 MB, para embeddings en RAG offlineollama pull deepseek-r1:7b— 5,5 GB, si matemáticas/razonamiento es el caso de uso principal- Ubicación de los archivos del modelo:
~/.ollama/models/en Linux/macOS,%USERPROFILE%\.ollama\modelsen Windows - Para llama.cpp: descarga el GGUF directamente desde HuggingFace y verifica el SHA256 antes de la transferencia
Flujo de trabajo air-gap con Ollama
Después de transferir los archivos a la máquina offline:
- 1Copia el directorio completo
~/.ollama/de la máquina conectada a la misma ruta en el host offline. - 2Instala el binario de Ollama:
chmod +x ollama && sudo mv ollama /usr/local/bin/ - 3Establece el directorio del modelo:
export OLLAMA_MODELS=/ruta/al/directorio/offline/ollama/models - 4Inicia el servidor:
ollama serve— verifica en los logs que arranca sin llamadas de red. - 5Prueba offline:
ollama run qwen2.5:14b— debería responder de inmediato sin acceder a ninguna URL externa. - 6Vincula a todas las interfaces para acceso LAN:
OLLAMA_HOST=0.0.0.0:11434 ollama serve
Flujo de trabajo air-gap con llama.cpp
llama.cpp es completamente autocontenido una vez que el binario y el GGUF están disponibles — no se necesitan dependencias en tiempo de ejecución.
- Transfiere el binario precompilado y tu archivo GGUF a la máquina offline.
- Ejecuta:
./llama-server -m ./qwen2.5-14b-instruct-q4_K_M.gguf --port 8080 - El flag
--no-mmapdesactiva la E/S con memoria mapeada si se ejecuta desde un recurso compartido de red. - Usa
--n-gpu-layers 35para descargar capas a la GPU en NVIDIA;--n-gpu-layers -1descarga todo en Apple Silicon. - API compatible con OpenAI disponible en
http://localhost:8080/v1— reemplazo directo para cualquier SDK de OpenAI.
Dimensionamiento de NAS para bibliotecas de modelos offline
Una biblioteca de modelos para un equipo pequeño suele contener entre 3 y 6 modelos de distintos tamaños. Planifica el almacenamiento antes de la compra.
- NAS recomendado para almacenamiento de modelos: Synology DS923+ con 4 discos de 4 TB en RAID 5 (~12 TB utilizables)
- Mínimo para una biblioteca de 2-3 modelos: SSD de 2 TB (un disco portátil es suficiente para despliegues en una sola máquina)
- Monta el NAS por NFS en el servidor de inferencia; establece
OLLAMA_MODELScon la ruta NFS
Cumplimiento normativo de residencia de datos
Muchas organizaciones operan bajo normativas que exigen que los datos sensibles se procesen y almacenen localmente. La inferencia local simplifica significativamente el cumplimiento de estas obligaciones.
- Residencia de datos: La inferencia local significa que los datos nunca salen de tu hardware. Esto satisface los requisitos de residencia de datos de la mayoría de normativas sectoriales, independientemente del origen del modelo.
- Procedencia del modelo: Documentar el proveedor y la versión del modelo facilita las auditorías internas de cumplimiento. Qwen2.5 (Alibaba) y DeepSeek (DeepSeek AI) son ejemplos de modelos con cadena de custodia documentada.
- Servicios de IA orientados al público: Si tu despliegue es accesible por usuarios externos (no es puramente interno), verifica las obligaciones de notificación aplicables en tu jurisdicción. Los despliegues internos y offline usados solo por empleados suelen estar fuera del ámbito de aplicación.
- Verificación del aislamiento de red: Usa
iptableso una regla de cortafuegos para confirmar que no hay conexiones salientes desde el servidor de inferencia — documéntalo para los registros de cumplimiento. - Registros de auditoría: Ollama no registra los pares prompt-respuesta por defecto; añade middleware si la política interna de gobernanza de datos lo requiere. Almacénalos localmente, nunca en la nube.
Configuración de RAG offline
La Generación Aumentada por Recuperación (RAG) completamente offline requiere: un LLM local + un modelo de embedding local + una base de datos vectorial local.
- 1Modelo de embedding: Ejecuta
ollama pull nomic-embed-texten la máquina conectada. Transfiérelo junto con el resto del directorio de modelos de Ollama. - 2Base de datos vectorial: Chroma puede ejecutarse como un binario standalone (sin necesidad de Python); alternativamente, usa el binario de Qdrant o SQLite con la extensión
sqlite-vss. - 3Ingesta de documentos: Usa LangChain o LlamaIndex offline (instala los wheels antes de desconectarte). Apunta el cargador de documentos a archivos locales — sin rastreo web.
- 4Flujo de consulta: Documento → embedding mediante nomic-embed-text local → recupera los top-k fragmentos de la base de datos vectorial local → pasa al Qwen2.5 local → respuesta. Cero llamadas externas.
- 5Pruebas: Confirma con
tcpdump -i any -n port 443que no se genera tráfico HTTPS durante un ciclo completo de consulta RAG.
Preguntas frecuentes
¿Ollama realiza llamadas de red cuando se ejecuta sin conexión?
Por defecto, Ollama no realiza llamadas de red cuando sirve un modelo almacenado en caché localmente. Solo contacta ollama.com para descargar o actualizar modelos. Ejecutar ollama serve con OLLAMA_MODELS apuntando a una caché local no genera ninguna conexión saliente.
¿Puedo ejecutar Qwen2.5 72B desde una ruta montada en NAS?
Sí, pero espera tiempos de carga más lentos (10-30 segundos) debido a la latencia de NFS durante la carga del modelo. Una vez cargado, el rendimiento de la inferencia depende únicamente de la VRAM de la GPU/CPU, no de la velocidad del almacenamiento.
¿Cuál es el modelo más pequeño que maneja bien el español offline?
Qwen2.5 7B en Q4_K_M (5,5 GB de VRAM). Maneja el español con tokenización nativa y produce respuestas coherentes a 50-80 tok/s en una RTX 3060.
¿Necesito una evaluación de seguridad regulatoria para un despliegue offline interno?
Generalmente no. La mayoría de normativas regulatorias sobre IA se aplican a servicios orientados al público. Los despliegues internos accesibles solo por empleados suelen estar fuera del ámbito de aplicación. Consulta a un profesional de cumplimiento normativo para tu situación específica.
¿Puede llama.cpp ejecutarse sin dependencias del sistema?
En Linux, el binario precompilado requiere GLIBC 2.28+ (estándar en Ubuntu 20.04+). En macOS arm64, el binario es autocontenido. En Windows, la compilación con CUDA requiere las DLL del runtime de CUDA.
¿Cómo actualizo los modelos en un entorno air-gapped?
Descarga el GGUF actualizado en una máquina conectada, verifica el hash SHA256, transfiérelo mediante USB/SSD y reemplaza el GGUF antiguo en tu directorio de modelos. Reinicia el servidor de Ollama para que detecte el nuevo archivo.