GPTโ€‘OSS 20B: Pruebas Practicas

GPTโ€‘OSS 20B: Pruebas Practicas con Ollama y Streamlit

GPTโ€‘OSS 20B: Pruebas Practicas

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:

  1. Respuesta a Preguntas Tรฉcnicas: Entrada: โ€œExplรญcame la diferencia entre GAN y VAEโ€. Salida: 1โ€ฏ200โ€ฏms.
  2. Generaciรณn de Cรณdigo: Entrada: โ€œGenera una funciรณn en Python que calcule la media mรณvilโ€. Salida: 1โ€ฏ100โ€ฏms.
  3. 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

IA en tu PC con Ollama