Manual para Ejecutar GPT-OSS-20B Localmente con Python
1. Requisitos previos
- PC con al menos 16 GB de RAM (ideal con GPU NVIDIA, pero también funciona en CPU).
- Sistema operativo Linux (o Windows con ajustes).
- Python 3.8+ instalado.
- Conexión a Internet para descargar modelos y dependencias.
2. Preparar entorno virtual y dependencias
python -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate
pip install --upgrade pip
pip install transformers torch huggingface_hub
Nota: Si no usás GPU NVIDIA, para evitar descargar librerías CUDA pesadas, instalá PyTorch para CPU solamente:
pip uninstall torch
pip cache purge
pip install torch --index-url https://download.pytorch.org/whl/cpu
3. Script para inferencia interactiva
Archivo: gpt_oss_20b_interactive.py
import time
from transformers import pipeline
model_id = "openai/gpt-oss-20b"
pipe = pipeline(
"text-generation",
model=model_id,
torch_dtype="auto",
device_map="auto"
)
pregunta = input("¿Cuál es tu pregunta? ")
messages = [
{"role": "system", "content": "Eres un asistente útil."},
{"role": "user", "content": pregunta}
]
start_time = time.time()
output = pipe(messages, max_new_tokens=100)
elapsed_time = time.time() - start_time
print(f"\nRespuesta: {output[0]['generated_text']}")
print(f"\nTiempo de ejecución: {elapsed_time:.2f} segundos")
4. Ejecutar el script
python gpt_oss_20b_interactive.py
El script pedirá que ingreses la pregunta directamente y te devolverá la respuesta junto con el tiempo que tardó en generarla.
5. Extender a servidor web con FastAPI
Instalar dependencias:
pip install fastapi uvicorn transformers torch
Código básico main.py
from fastapi import FastAPI
from pydantic import BaseModel
from transformers import pipeline
model_id = "openai/gpt-oss-20b"
pipe = pipeline(
"text-generation",
model=model_id,
torch_dtype="auto",
device_map="auto"
)
app = FastAPI()
class Message(BaseModel):
role: str
content: str
@app.post("/generate")
async def generate_text(messages: list[Message], max_new_tokens: int = 100):
formatted_messages = [{"role": m.role, "content": m.content} for m in messages]
output = pipe(formatted_messages, max_new_tokens=max_new_tokens)
return {"generated_text": output[0]["generated_text"]}
Ejecutar servidor:
uvicorn main:app --reload
Luego enviar POST a http://localhost:8000/generate
con JSON:
{
"messages": [
{"role": "system", "content": "Eres un asistente útil."},
{"role": "user", "content": "¿Cuál es la capital de Paraguay?"}
],
"max_new_tokens": 100
}
6. Verificar características del sistema (Linux)
free -h
— Memoria RAMdf -h
— Espacio en discolscpu
— Información CPUlspci | grep -i vga
— Verificar GPU
7. Consideraciones
- El modelo GPT-OSS-20B puede correr con 16 GB RAM pero rinde mejor con GPU.
- Si no tienes GPU, la ejecución será más lenta.
- Puedes usar otros modelos más pequeños si tu hardware es limitado.
- Puedes agregar swap en Linux para compensar la falta de RAM, aunque con impacto en rendimiento.
- Usar entorno virtual para aislar dependencias.
Si querés, te puedo ayudar a armar scripts para pasar la pregunta por parámetro o para desplegar en producción con Docker.
Comentarios
Publicar un comentario