
Ejecutando Ollama para Preparación de Datos Asistida por IA en Entornos Empresariales Air-Gapped
Guía paso a paso para desplegar Ollama para etiquetado de datos asistido por IA en entornos air-gapped — transferencia de modelos, configuración offline, configuración de GPU y modos de falla comunes.
El flujo de trabajo normal de Ollama asume acceso a internet: ollama pull mistral descarga pesos del modelo desde un registro. En un entorno air-gapped, no hay internet. Sin acceso al registro, sin descargas de dependencias, sin telemetría de comunicación. Todo lo necesario para ejecutar debe transferirse físicamente a través de un proceso aprobado.
Esta es la realidad para proyectos de preparación de datos en defensa, inteligencia, infraestructura crítica y entornos financieros de alta seguridad. El flujo de trabajo de etiquetado asistido por IA que funciona en tu laptop con ollama run necesita una ruta de despliegue diferente cuando la máquina destino nunca ha visto internet.
Esta guía cubre el flujo completo de despliegue air-gapped de Ollama: desde la preparación del modelo en una máquina conectada a internet hasta la operación validada en el destino aislado.
Prerrequisitos
Antes de iniciar el proceso de transferencia, confirma lo siguiente en la máquina destino air-gapped:
Sistema operativo: Linux (Ubuntu 22.04/24.04, RHEL 8/9, Rocky Linux) o Windows 10/11. macOS es posible pero menos común en entornos empresariales air-gapped.
Controladores GPU: Los controladores NVIDIA deben estar ya instalados y funcionales en el destino. Ejecuta nvidia-smi para verificar. Si los controladores GPU no están instalados, ese es un proceso de instalación offline separado (y frecuentemente doloroso) — los paquetes de controladores NVIDIA tienen su propia cadena de dependencias.
Toolkit CUDA: Requerido para inferencia GPU. Debe coincidir con la versión del controlador. Verifica con nvcc --version o revisa /usr/local/cuda/version.txt.
Espacio en disco: El almacenamiento de modelos de Ollama por defecto está en ~/.ollama/models. Un modelo 7B Q4 ocupa ~4 GB. Un modelo 14B Q4 ocupa ~8 GB. Presupuesta 50–100 GB para almacenamiento de modelos si mantendrás múltiples modelos y variantes de cuantización.
Medios de transferencia aprobados: Unidades USB, medios ópticos o lo que la política de transferencia de información de la instalación permita. Algunos entornos requieren tipos de medios específicos con protección contra escritura o cifrado.
Paso 1: Preparar Modelos en una Máquina Conectada a Internet
En una máquina con acceso a internet (tu estación de trabajo de desarrollo o una máquina de staging designada):
Instalar Ollama
curl -fsSL https://ollama.ai/install.sh | sh
Descargar Modelos Objetivo
Descarga cada modelo y variante de cuantización que necesitarás. No puedes descargar modelos adicionales después de la transferencia.
# Modelos principales de etiquetado
ollama pull mistral:7b-instruct-v0.3-q4_K_M
ollama pull mistral:7b-instruct-v0.3-q8_0
ollama pull qwen2.5:14b-instruct-q4_K_M
ollama pull qwen2.5:14b-instruct-q5_K_M
# Modelo más pequeño para tareas ligeras
ollama pull phi3:3.8b-mini-instruct-4k-q4_K_M
# Modelo de embeddings (si es necesario para dedup/similitud)
ollama pull nomic-embed-text
Verificar que los Modelos Funcionan
Ejecuta una inferencia de prueba para cada modelo para confirmar que cargan y generan correctamente:
ollama run mistral:7b-instruct-v0.3-q4_K_M "Classify this text as positive or negative: The product arrived on time."
Localizar Archivos del Modelo
Ollama almacena los blobs del modelo en su directorio de modelos:
# Ubicaciones por defecto
# Linux: ~/.ollama/models
# macOS: ~/.ollama/models
# Windows: C:\Users\<user>\.ollama\models
ls ~/.ollama/models/manifests/registry.ollama.ai/library/
ls ~/.ollama/models/blobs/
El directorio manifests contiene metadatos (archivos JSON que mapean nombres de modelos a hashes de blobs). El directorio blobs contiene los pesos reales del modelo y archivos de configuración.
Paso 2: Empaquetar para Transferencia
Opción A: Copiar el Directorio Completo de Ollama
El enfoque más simple — copiar el directorio completo ~/.ollama al medio de transferencia.
# Calcular el tamaño total
du -sh ~/.ollama/models
# Copiar al medio de transferencia (ej. unidad USB cifrada)
cp -r ~/.ollama/models /media/transfer-drive/ollama-models/
Ventaja: Garantiza incluir todo — manifiestos, blobs y metadatos. Desventaja: Incluye todos los modelos, incluso los que podrías no necesitar en el destino. Puede ser muy grande si has descargado muchos modelos.
Opción B: Exportación Selectiva de Modelos
Para entornos con límites estrictos de tamaño de transferencia, exporta solo los modelos que necesitas.
# Crear un directorio limpio de exportación
mkdir -p /media/transfer-drive/ollama-export
# Copiar manifiestos para modelos específicos
for model in mistral qwen2.5 phi3 nomic-embed-text; do
cp -r ~/.ollama/models/manifests/registry.ollama.ai/library/$model \
/media/transfer-drive/ollama-export/manifests/registry.ollama.ai/library/
done
# Leer los manifiestos para identificar blobs requeridos, luego copiar esos blobs
# (Cada manifiesto referencia hashes SHA256 de blobs)
Esto es más complejo pero produce un paquete de transferencia más pequeño. Se recomienda un enfoque con scripts para evitar perder blobs que los manifiestos referencian.
Opción C: Usar Archivos GGUF Directamente (Fallback llama.cpp)
Si el enfoque de copia del directorio de Ollama no funciona limpiamente, descarga archivos GGUF directamente de HuggingFace y planea usar llama.cpp en el destino:
# Descargar archivos GGUF
wget https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.3-GGUF/resolve/main/mistral-7b-instruct-v0.3.Q4_K_M.gguf
Los archivos GGUF son autocontenidos — un solo archivo tiene los pesos del modelo, tokenizador y configuración. Este es el formato más portable para despliegue air-gapped.
Preparar el Binario de Ollama
También transfiere el binario de Ollama:
# Descargar el binario de Ollama para el SO/arquitectura destino
# Linux x86_64:
curl -L https://ollama.ai/download/ollama-linux-amd64 -o ollama
chmod +x ollama
# Copiar al medio de transferencia
cp ollama /media/transfer-drive/ollama-binary/
Calcular y Registrar Checksums
Verifica la integridad de la transferencia:
sha256sum /media/transfer-drive/ollama-binary/ollama > /media/transfer-drive/checksums.txt
find /media/transfer-drive/ollama-models/ -type f -exec sha256sum {} + >> /media/transfer-drive/checksums.txt
Paso 3: Transferir a la Máquina Air-Gapped
Este paso sigue la política de transferencia de información de tu organización. Patrones comunes:
- Unidad USB: Copia archivos a una unidad USB aprobada. Algunos entornos requieren unidades cifradas o unidades que hayan sido escaneadas por un diodo de datos.
- Medios ópticos: Grabar en DVD o Blu-ray. Los medios de solo lectura a veces se prefieren por seguridad — no pueden ser escritos por el sistema receptor.
- Transferencia por diodo de datos: Algunos entornos de alta seguridad usan diodos de datos de hardware que permiten transferencia de datos unidireccional de redes de baja seguridad a redes de alta seguridad.
Cualquiera que sea el mecanismo, verifica los checksums después de la transferencia:
sha256sum -c checksums.txt
Cualquier discrepancia de checksum significa que el archivo se corrompió durante la transferencia. No procedas con archivos de modelo corruptos — o fallarán al cargar o producirán salidas incorrectas.
Paso 4: Instalar y Configurar en la Máquina Destino
Instalar el Binario de Ollama
# Copiar binario a la ruta del sistema
sudo cp /media/transfer/ollama-binary/ollama /usr/local/bin/
sudo chmod +x /usr/local/bin/ollama
Configurar el Directorio de Modelos
# Si usas la Opción A (copia completa del directorio):
mkdir -p ~/.ollama
cp -r /media/transfer/ollama-models ~/.ollama/models
# Verificar que Ollama puede ver los modelos
ollama list
La salida esperada debe mostrar todos los modelos transferidos con sus tamaños.
Configurar el Entorno
# Prevenir que Ollama intente cualquier acceso a red
export OLLAMA_HOST=127.0.0.1:11434
export OLLAMA_ORIGINS=*
# Opcional: ubicación personalizada de almacenamiento de modelos
export OLLAMA_MODELS=/path/to/custom/model/directory
# Para sistemas con múltiples GPUs, especificar cuál usar
export CUDA_VISIBLE_DEVICES=0
# Establecer conteo de solicitudes paralelas
export OLLAMA_NUM_PARALLEL=2
Iniciar y Validar
# Iniciar servidor Ollama
ollama serve &
# Verificar que el modelo carga y ejecuta
ollama run mistral:7b-instruct-v0.3-q4_K_M "Respond with 'OK' if you are working."
Si el modelo carga y genera una respuesta, el despliegue es funcional.
Selección de Modelos para Tareas de Preparación de Datos
Para entornos air-gapped, la selección de modelos requiere más reflexión porque no puedes intercambiar modelos fácilmente después del despliegue. Transfiere los modelos correctos desde el inicio.
Clasificación y Etiquetado
Primario: Mistral 7B Instruct o Llama 3.1 8B Instruct en Q4_K_M. Rápido, preciso para clasificación binaria y multi-clase. Maneja la mayoría de tareas de categorización de documentos.
Respaldo: El mismo modelo en Q8_0 para mayor precisión si Q4 resulta insuficiente. Transfiere ambas cuantizaciones para tener la opción.
Extracción de Entidades
Primario: Qwen 2.5 14B Instruct en Q4_K_M o Q5_K_M. El modelo más grande proporciona mejor precisión en la extracción de entidades específicas (nombres, fechas, montos, citas legales) de documentos complejos.
Generación de Datos Sintéticos
Primario: Qwen 2.5 14B Instruct en Q5_K_M. La calidad de generación se beneficia más de una cuantización más alta que la clasificación.
Tareas Ligeras
Primario: Phi-3 Mini 3.8B en Q4_K_M. Para clasificación binaria simple, detección de formato o identificación de idioma donde un modelo 7B es excesivo y un modelo 3.8B ejecuta más rápido.
Paquete de Transferencia Recomendado
Para un despliegue de preparación de datos de propósito general, transfiere:
| Modelo | Cuantización | Tamaño | Propósito |
|---|---|---|---|
| Mistral 7B Instruct v0.3 | Q4_K_M | ~4 GB | Clasificación/etiquetado primario |
| Mistral 7B Instruct v0.3 | Q8_0 | ~7.5 GB | Respaldo de alta precisión |
| Qwen 2.5 14B Instruct | Q4_K_M | ~8 GB | Extracción de entidades, generación |
| Qwen 2.5 14B Instruct | Q5_K_M | ~10 GB | Generación de alta calidad |
| Phi-3 Mini 3.8B | Q4_K_M | ~2.3 GB | Tareas ligeras |
| nomic-embed-text | Default | ~275 MB | Embeddings (dedup/similitud) |
| Total | ~32 GB |
Este paquete cabe en una sola unidad USB de 64 GB con espacio para el binario de Ollama y documentación.
Consideraciones Operacionales
Actualizaciones de Modelos Sin Internet
Cuando se lanza una nueva versión de modelo que mejora la precisión del etiquetado, el ciclo de actualización es:
- Descargar el nuevo modelo en la máquina de staging conectada a internet
- Verificar que funcione con datos de prueba representativos
- Transferir mediante el proceso aprobado
- Instalar en la máquina air-gapped
- Validar contra un conjunto de prueba reservado para confirmar la mejora
Este ciclo toma días a semanas dependiendo del proceso de aprobación de transferencia de la organización. Planifícalo. No prometas iteración rápida de modelos en entornos air-gapped.
Gestión de Múltiples Versiones de Modelos
Mantén versiones anteriores de modelos en la máquina destino hasta que la nueva versión esté validada. El costo de espacio en disco es mínimo comparado con el riesgo de desplegar un modelo que rinde peor en tu tarea específica.
# Ollama maneja el versionado por tag
# Ambas versiones coexisten
ollama list
# mistral:7b-instruct-v0.3-q4_K_M 4.1 GB
# mistral:7b-instruct-v0.2-q4_K_M 4.0 GB
Gestión de Memoria GPU
Ollama carga el modelo en memoria GPU en la primera solicitud y lo mantiene ahí. En una máquina con VRAM limitada sirviendo múltiples tamaños de modelo:
# Establecer timeout para descargar modelos inactivos (en minutos)
export OLLAMA_KEEP_ALIVE=5m
Con un keep-alive de 5 minutos, cambiar entre un modelo 7B y 14B toma ~10–15 segundos (tiempo de carga del modelo) después de que el modelo anterior es desalojado.
Modos de Falla Comunes
Bibliotecas CUDA Faltantes
Síntoma: Ollama inicia pero la inferencia ejecuta en CPU (extremadamente lento) o falla con un error de CUDA.
Causa: Toolkit CUDA o bibliotecas cuDNN no instaladas, o la versión instalada no coincide con el controlador GPU.
Solución: Verifica que nvidia-smi muestre la GPU. Verifica que nvcc --version muestre el toolkit CUDA. Asegúrate de que la versión del toolkit CUDA sea compatible con la versión del controlador instalado. NVIDIA mantiene una matriz de compatibilidad.
Corrupción de Pesos del Modelo Durante la Transferencia
Síntoma: El modelo falla al cargar con un error críptico sobre header GGUF inválido o incompatibilidad de forma de tensor.
Causa: Archivo corrupto durante el proceso de transferencia — copia incompleta, sector defectuoso en medio USB o interrupción de transferencia.
Solución: Compara checksums contra el original. Re-transfiere los archivos corruptos.
VRAM Insuficiente
Síntoma: El modelo carga parcialmente, luego falla con un error de memoria insuficiente.
Causa: El modelo (incluyendo caché KV para la ventana de contexto configurada) no cabe en la VRAM de la GPU.
Solución: Usa un modelo más pequeño o cuantización más baja. O reduce OLLAMA_NUM_PARALLEL a 1 (menos ventanas de contexto concurrentes). O reduce el tamaño de la ventana de contexto.
Ollama No Encuentra Modelos
Síntoma: ollama list no muestra modelos a pesar de que los archivos están presentes en disco.
Causa: La estructura del directorio de modelos no coincide con lo que Ollama espera. Los manifiestos referencian hashes de blobs que deben existir en el directorio de blobs.
Solución: Asegúrate de que la estructura del directorio bajo ~/.ollama/models/ esté intacta: manifests/registry.ollama.ai/library/<nombre-modelo>/<tag> debe apuntar a blobs en blobs/sha256-<hash>.
Errores de DNS/Red al Inicio
Síntoma: Los logs de Ollama muestran fallos de resolución DNS o timeouts de conexión.
Causa: Ollama intenta verificar actualizaciones o resolver el hostname de su registro.
Solución: Establece OLLAMA_HOST=127.0.0.1:11434 y asegúrate de que no haya variables de entorno de proxy establecidas (unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY). Ollama debería funcionar sin acceso a red, pero configuraciones de proxy obsoletas pueden causar timeouts que retrasan el inicio.
Integración con Herramientas de Preparación de Datos
Ollama expone una API compatible con OpenAI en localhost:11434. Cualquier herramienta que pueda llamar a la API de OpenAI puede apuntarse a Ollama cambiando la URL base.
Ertas Data Suite se integra con Ollama y llama.cpp nativamente. En un despliegue air-gapped, la aplicación detecta Ollama ejecutándose en localhost y presenta los modelos disponibles en la interfaz de etiquetado. El usuario selecciona un modelo, configura plantillas de prompt para su esquema de etiquetado y comienza la anotación asistida por IA — todo sin ninguna conectividad de red.
La arquitectura de escritorio nativa significa que la herramienta de preparación de datos en sí tampoco requiere acceso a red. No hay servidor de licencias que contactar, no hay telemetría que enviar, no hay servicio en la nube contra el cual autenticarse. Toda la pila — aplicación, backend de inferencia y datos — opera en una sola máquina air-gapped.
Lista de Verificación de Despliegue
Antes de declarar el despliegue air-gapped operacional:
-
nvidia-smimuestra la(s) GPU(s) correcta(s) -
ollama listmuestra todos los modelos esperados - Cada modelo ejecuta inferencia exitosamente
- La utilización de GPU durante la inferencia es mayor a 0% (confirmando GPU, no CPU, en ejecución)
- La velocidad de inferencia coincide con las expectativas (~30–60 tok/s para 7B Q4 en GPU de consumo)
- Sin errores de red en los logs de Ollama
- Checksums de todos los archivos transferidos verificados
- Salidas del modelo validadas contra ejemplos conocidos del entorno de staging
Resuelve esto antes de que llegue el equipo de engagement. Depurar controladores GPU en un SCIF air-gapped no es cómo nadie quiere gastar horas facturables.
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.
Keep reading

On-Premise Runtime Architecture for Enterprise AI Data Preparation
Architectural guide for running AI data preparation on-premise — deployment models, compute tiers, local LLM inference, and storage strategies for enterprise datasets.

Local LLM-Assisted Data Labeling Without Data Egress
How to use local LLMs via Ollama and llama.cpp for AI-assisted data labeling — covering pre-annotation, quality checks, and active learning without sending data off-premise.

Synthetic Data Generation in Air-Gapped Environments for Fine-Tuning
How to generate synthetic training data in air-gapped environments — covering paraphrasing, instruction generation, DPO pairs, and seed expansion using local LLMs only.