GPT‑OSS 20B: Pruebas Practicas con Ollama y Streamlit
El 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.
GPT‑OSS 20B sigue la arquitectura estándar de decoder‑only transformer:
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.
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.
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?"}]
}'
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.
Para validar el rendimiento, ejecutamos las siguientes métricas:
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.
Ollama ofrece ventajas para despliegues en contenedores:
ollama serve, ollama pull, ollama list).ollama serve --replicas 4 (requiere Kubernetes o Docker Compose).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.
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.
Como modelo open‑source bajo licencia MIT, no existen restricciones de uso, pero las organizaciones deben:
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