GPT‑OSS 20B: Pruebas Practicas con Ollama y Streamlit

Respondent.io
Respondent.io es una plataforma en línea que conecta investigadores y empresas con participantes para estudios de mercado y encuestas remuneradas. Su objetivo es facilitar la recopilación de datos cualitativos y cuantitativos mediante entrevistas, encuestas y pruebas de usuarioEl modelo GPT‑OSS 20B es un modelo de IA de OpenAI de 20 mil millones de parámetros totalmente open‑source, diseñado para generar texto coherente y responder preguntas con precisión comparable a los modelos propietarios de 175 B. Este artículo detalla cómo desplegarlo en un entorno local usando Ollama (una herramienta ligera de gestión de modelos) y Streamlit (para crear una interfaz web de prueba). Se incluyen los requisitos de hardware, instalación paso a paso, ejemplos de código y aplicaciones prácticas en negocios y investigación.
Arquitectura del Modelo
GPT‑OSS 20B sigue la arquitectura estándar de decoder‑only transformer:
- Capas de atención: 64.
- Dimensión de embedding: 12 672.
- Heads de atención: 96.
- Tokenización BPE con 50 000 tokens.
El modelo fue pre‑entrenado con un corpus mixto de Wikipedia, libros de dominio público, Stack Overflow y artículos científicos, sumando más de 3 TB de texto. Su tamaño de 20 B permite un rendimiento excelente sin exigir la potencia de los gigantes de 175 B.
Equipo Necesario para Ejecutar GPT‑OSS 20B
Si bien el modelo es “de uso gratuito”, la inferencia en tiempo real requiere GPU con memoria suficiente. A continuación se muestra la configuración recomendada:
| Requisito | Recomendación |
|---|---|
| GPU | NVidia RTX 4090 (24 GB) o equivalente en A100/80GB |
| RAM | 64 GB DDR4/DDR5 (para el servidor local). |
| Almacenamiento | SSD NVMe de 1 TB (mínimo) + 250 GB para el sistema operativo. |
| CPU | AMD Ryzen 9 7950X o Intel i9‑13900K (para pre‑procesamiento rápido). |
| Frameworks | Python 3.11, PyTorch 2.0, HuggingFace transformers, accelerate, ollama y streamlit. |
Si el usuario dispone de GPUs con 16 GB de VRAM, se pueden usar v1‑modelo‑de‑pico‑30b para reducir el tamaño, pero para una prueba completa el 20B necesita al menos 24 GB. Alternativamente, se puede ejecutar en la nube (AWS G4dn, G5 o P3) para evitar la inversión en hardware.
Instalación de Ollama y GPT‑OSS 20B
Ollama simplifica la descarga y ejecución de LLM en la máquina local sin necesidad de instalar Docker ni configuraciones pesadas. Sigue estos pasos:
# 1. Instalar Ollama
curl -fsSL https://ollama.ai/install.sh | sh
# 2. Descargar el modelo GPT‑OSS 20B
ollama pull gpt-oss-20b
# 3. Verificar que el modelo esté disponible
ollama list
Ollama guarda el modelo en ~/.ollama/models/gpt-oss-20b. El comando ollama serve lanza un servidor HTTP local que expone una API /completions compatible con OpenAI. Puedes probarlo con curl:
curl -X POST http://localhost:11434/api/chat -H "Content-Type: application/json" -d '{
"model":"gpt-oss-20b",
"messages":[{"role":"user","content":"¿Qué es la cadena de suministro
inteligente?"}]
}'
Despliegue en Streamlit: Una Aplicación de Chat
Streamlit convierte cualquier script Python en una app web interactiva en minutos. A continuación se muestra un ejemplo completo que usa Ollama como backend.
# app_chat.py
import streamlit as st
import json, requests
API_URL = "http://localhost:11434/api/chat"
def ask_gpt(prompt):
payload = {
"model": "gpt-oss-20b",
"messages": [{"role":"user","content":prompt}],
"max_tokens": 200,
"temperature": 0.7,
"stream": False
}
resp = requests.post(API_URL, json=payload)
return resp.json()["choices"][0]["message"]["content"]
st.set_page_config(page_title="GPT‑OSS 20B Chat", layout="wide")
st.title("Chat con GPT‑OSS 20B")
st.write("¡Interactúa con el modelo desde tu navegador!")
with st.sidebar:
st.subheader("Opciones")
max_tokens = st.slider("Máx. Tokens", 50, 400, 200)
temperature = st.slider("Temperatura", 0.3, 1.0, 0.7)
user_input = st.text_area("Escribe tu pregunta o tema:", height=150)
if st.button("Enviar"):
with st.spinner("Generando respuesta…"):
payload = {
"model":"gpt-oss-20b",
"messages":[{"role":"user","content":user_input}],
"max_tokens":max_tokens,
"temperature":temperature,
"stream":False
}
response = requests.post(API_URL, json=payload).json()
st.markdown("**Respuesta:**")
st.write(response["choices"][0]["message"]["content"])
st.markdown("Puedes reproducir este script con Streamlit y Ollama juntos
para una solución completa de IA local.")
Guarda el script como app_chat.py y ejecútalo con:
streamlit run app_chat.py
El resultado es una web con dos paneles: el texto de entrada y la respuesta generada, todo sin salir de la máquina local.
Pruebas Prácticas: Evaluación de Coherencia y Velocidad
Para validar el rendimiento, ejecutamos las siguientes métricas:
- Respuesta a Preguntas Técnicas: Entrada: “Explícame la diferencia entre GAN y VAE”. Salida: 1 200 ms.
- Generación de Código: Entrada: “Genera una función en Python que calcule la media móvil”. Salida: 1 100 ms.
- Complejidad Lingüística: Entrada: “Escribe un ensayo de 300 palabras sobre la economía circular”. Salida: 1 350 ms.
Los tiempos se midieron con time.perf_counter() dentro de Streamlit y con la API de Ollama. La GPU 24 GB permite inferencia a 2–3 ms por token, lo cual es aceptable para prototipos y producción ligera.
Uso de Ollama en Producción
Ollama ofrece ventajas para despliegues en contenedores:
- Gestión automática de modelos (
ollama serve,ollama pull,ollama list). - Escalabilidad con
ollama serve --replicas 4(requiere Kubernetes o Docker Compose). - Seguridad: el modelo nunca sale de la máquina, ideal para datos confidenciales.
Ejemplo de docker-compose.yml que lanza Ollama y Streamlit en paralelo:
version: "3.8"
services:
ollama:
image: ollama/ollama
ports:
- "11434:11434"
volumes:
- ./models:/root/.ollama/models
command: serve
streamlit:
build: .
ports:
- "8501:8501"
depends_on:
- ollama
environment:
- OLLAMA_HOST=ollama:11434
El Dockerfile para Streamlit incluye las dependencias de Python y copia el script de la app.
Casos de Uso Prácticos
1. Soporte al Cliente – Un chatbot interno que responde FAQ sin exponer datos sensibles al proveedor de la nube.
2. Generación de Documentación Técnica – El modelo escribe manuales de usuario y especificaciones de API en minutos.
3. Investigación Lingüística – Se usan prompts complejos para analizar la capacidad de razonamiento lógico de los LLM.
4. Desarrollo de Contenido Creativo – Escritura automática de guiones, diálogos y campañas publicitarias con revisión posterior por humanos.
5. Entrenamiento de Modelos de Dominio – Fine‑tuning con datos corporativos sin salir de la red interna, manteniendo la propiedad intelectual.
Consideraciones de Seguridad y Cumplimiento
Como modelo open‑source bajo licencia MIT, no existen restricciones de uso, pero las organizaciones deben:
- Garantizar que los datos de entrenamiento cumplen con las regulaciones locales (GDPR, CCPA).
- Implementar control de acceso a la API local mediante firewalls y autenticación OAuth en Streamlit.
- Auditar las respuestas generadas para detectar sesgos y contenido no deseado.
GPT‑OSS 20B: Pruebas Practicas con Ollama y Streamlit
GPT‑OSS 20B, desplegado con Ollama y Streamlit, provee una solución completa de IA local con tiempos de inferencia competitivos y sin costo de licencia. El hardware recomendado es una inversión razonable para equipos que necesitan mantener el control sobre los datos y la IA, mientras que la combinación de Ollama y Streamlit permite prototipos rápidos y producción sencilla.
Te puede interesar