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.
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