5.6 KiB
5.6 KiB
🚀 Guía Rápida: Sistema LLM Categorizer
✅ Estado Actual
- ✓ Aplicación RSS2 levantada y funcionando correctamente
- ✓ Todos los contenedores están operativos
- ✓ Web accesible en http://localhost:8001
- ✓ Nuevo sistema LLM Categorizer creado y configurado
📋 Próximos Pasos
1. Descargar el Modelo LLM (REQUERIDO)
cd /home/x/rss2
./scripts/download_llm_model.sh
Selecciona la opción 1 (Mistral-7B-Instruct-v0.2 GPTQ) - Recomendado para RTX 3060 12GB
⏱️ Tiempo estimado: 10-30 minutos según tu conexión
💾 Espacio necesario: ~4.5 GB
2. Probar el Sistema (OPCIONAL pero recomendado)
# Instalar dependencias para prueba local
pip3 install exllamav2 torch
# Ejecutar prueba
python3 scripts/test_llm_categorizer.py
Esto te permite verificar que el modelo funciona ANTES de levantar el contenedor.
3. Levantar el Servicio LLM
# Construir y levantar el contenedor
docker compose up -d --build llm-categorizer
# Monitorear los logs
docker compose logs -f llm-categorizer
Primera ejecución: El contenedor tardará 2-5 minutos en cargar el modelo en GPU.
4. Verificar Funcionamiento
# Ver estado
docker compose ps llm-categorizer
# Ver últimas categorizaciones
docker exec -it rss2_db psql -U rss -d rss -c \
"SELECT llm_categoria, COUNT(*) FROM noticias WHERE llm_processed = TRUE GROUP BY llm_categoria;"
🔧 Configuración
Archivos Creados
/home/x/rss2/
├── workers/
│ └── llm_categorizer_worker.py # Worker principal
├── Dockerfile.llm_worker # Dockerfile específico
├── scripts/
│ ├── download_llm_model.sh # Descarga del modelo
│ └── test_llm_categorizer.py # Script de prueba
├── docs/
│ └── LLM_CATEGORIZER.md # Documentación completa
└── docker-compose.yml # Actualizado con servicio llm-categorizer
Servicio en docker-compose.yml
llm-categorizer:
build:
context: .
dockerfile: Dockerfile.llm_worker
environment:
LLM_BATCH_SIZE: 10 # Noticias por lote
LLM_SLEEP_IDLE: 30 # Segundos entre lotes
LLM_MODEL_PATH: /app/models/llm
deploy:
resources:
limits:
memory: 10G
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [ gpu ]
🎯 Cómo Funciona
- Recopilación: El worker consulta la BD y obtiene 10 noticias sin categorizar
- Procesamiento: Envía cada noticia al LLM local (Mistral-7B)
- Categorización: El LLM determina la categoría más apropiada
- Actualización: Guarda la categoría y confianza en la BD
- Loop: Repite el proceso continuamente
Categorías Disponibles
- Política
- Economía
- Tecnología
- Ciencia
- Salud
- Deportes
- Entretenimiento
- Internacional
- Nacional
- Sociedad
- Cultura
- Medio Ambiente
- Educación
- Seguridad
- Otros
📊 Rendimiento Esperado
Con RTX 3060 12GB + Mistral-7B GPTQ
- VRAM utilizada: ~6-7 GB
- Tiempo por noticia: 2-5 segundos
- Throughput: ~120-300 noticias/hora
- Precisión: ~85-90% (depende del contenido)
🔍 Consultas SQL Útiles
Ver distribución de categorías
SELECT llm_categoria, COUNT(*) as total,
AVG(llm_confianza) as confianza_media
FROM noticias
WHERE llm_processed = TRUE
GROUP BY llm_categoria
ORDER BY total DESC;
Ver noticias de una categoría
SELECT titulo, llm_categoria, llm_confianza, fecha
FROM noticias
WHERE llm_categoria = 'Tecnología'
AND llm_processed = TRUE
ORDER BY fecha DESC
LIMIT 20;
Resetear procesamiento (para reprocesar)
-- Resetear últimas 100 noticias
UPDATE noticias
SET llm_processed = FALSE
WHERE id IN (
SELECT id FROM noticias
ORDER BY fecha DESC
LIMIT 100
);
🐛 Troubleshooting Rápido
❌ "Out of memory"
# Reducir batch size en docker-compose.yml
LLM_BATCH_SIZE: 5
LLM_CACHE_MODE: Q4
❌ "Model not found"
# Verificar descarga
ls -la models/llm/
# Re-descargar si necesario
./scripts/download_llm_model.sh
❌ No procesa noticias
# Verificar cuántas faltan
docker exec -it rss2_db psql -U rss -d rss -c \
"SELECT COUNT(*) FROM noticias WHERE llm_processed = FALSE;"
# Resetear algunas para probar
docker exec -it rss2_db psql -U rss -d rss -c \
"UPDATE noticias SET llm_processed = FALSE LIMIT 20;"
📚 Documentación Completa
Para más detalles, consulta:
cat docs/LLM_CATEGORIZER.md
O abre: /home/x/rss2/docs/LLM_CATEGORIZER.md
🎓 Comandos Útiles
# Ver todos los servicios
docker compose ps
# Reiniciar solo el LLM
docker compose restart llm-categorizer
# Ver uso de GPU
nvidia-smi
# Ver logs + seguir
docker compose logs -f llm-categorizer
# Detener el LLM
docker compose stop llm-categorizer
# Eliminar completamente (rebuild desde cero)
docker compose down llm-categorizer
docker compose up -d --build llm-categorizer
⚡ Optimizaciones Futuras
Si quieres mejorar el rendimiento:
- Usar EXL2 en lugar de GPTQ (más rápido en ExLlamaV2)
- Aumentar batch size si sobra VRAM
- Fine-tune el modelo con tus propias categorizaciones
- Usar vLLM para servidor de inferencia más eficiente
🤝 Soporte
Si encuentras problemas:
- Revisa logs:
docker compose logs llm-categorizer - Consulta documentación:
docs/LLM_CATEGORIZER.md - Verifica GPU:
nvidia-smi
¡Listo! El sistema está completamente configurado. Solo falta descargar el modelo y levantarlo. 🚀