OncoAgent: IA clínica oncológica privada y abierta | Keryc
OncoAgent es un sistema de soporte a la decisión clínica para oncología diseñado para ser 100% open source y desplegable on‑premises. ¿Por qué importa esto hoy? Porque junta un conjunto de prácticas SOTA —multi‑agent, RAG correctivo, QLoRA y despliegue en AMD MI300X— con una política estricta de Zero‑PHI, todo pensado para hospitales y entornos regulados.
Qué es OncoAgent
OncoAgent combina una arquitectura dual de modelos LLM con una topología multi‑agent implementada en LangGraph. Su objetivo: dar recomendaciones clínicas ancladas en guías profesionales (NCCN, ESMO) sin filtrar datos sensibles a la nube.
En números: entrenamiento QLoRA sobre 266,854 casos (reales y sintéticos), dos tiers de inferencia (9B para triage rápido, 27B para razonamiento profundo), y una base de conocimiento de 70+ guías. El stack corre nativamente en AMD Instinct MI300X bajo ROCm.
Arquitectura dual y diseño multi‑agent
La lógica se reparte en 8 nodos auditables en LangGraph: Router → Ingestion → Corrective RAG → Specialist ↔ Critic → HITL Gate → Formatter → END. Hay un bucle de reflexion (max 2 iteraciones) y un fallback obligatorio si algo falla.
La selección de modelo usa un puntaje de complejidad aditivo:
S = w_cancer + w_stage + w_mutations + w_treatment
Tabla resumida de factores y pesos:
Factor
Condición
Peso
Cancer type
Rare
+0.40
Cancer type
Unknown primary
+0.30
Stage
Stage IV
+0.25
Stage
Stage III
+0.15
Mutations
≥2 identified
+0.30
Mutations
Single
+0.15
Prior treatment
Any keyword match
+0.10
Decisión: si S >= 0.5 → Tier 2 (Qwen 3.6‑27B), si S < 0.5 → Tier 1 (Qwen 3.5‑9B). Ejemplo real de validación: un caso Stage IV pancreatic con KRAS + BRCA2 dio S = 0.80 y fue correctamente enrutado a Tier 2.
Corrective RAG y pipeline anti‑alucinaciones
OncoAgent no usa un RAG simple. Implementa un pipeline en cuatro etapas:
Recall con un bi‑encoder (PubMedBERT) para amplio muestreo - top 15.
Distance Gate con filtro de coseno - umbral duro = 0.10. Si falla, retorno seguro: "Información no concluyente en las guías provistas".
Re‑ranking con cross‑encoder (MS‑MARCO MiniLM) - top 5.
Context trimming para ajustar al máximo de tokens (6,000 caracteres).
Además incorpora HyDE para generar textos hipotéticos y resolver sinónimos médicos críticos (por ejemplo, "neoplasia pulmonar" vs "lung carcinoma"). El nodo CRAG (Corrective RAG) califica cada documento antes de enviarlo al Specialist; documentos irrelevantes disparan reformulación automática (max 1 retry).
Validación, critic y HITL
Antes de llegar al clínico, la salida pasa por un Critic determinista con tres capas:
Formato: cumplimiento con el esquema OncoCoT.
Seguridad: reglas deterministas (no dosis absolutas sin cita, chequeo de interacciones, etc.).
Entailment: verificación de que la recomendación está soportada por el contexto RAG.
Si el Critic falla, su feedback se inyecta de vuelta al Specialist para retry (max 2). Cualquier caso de Tier 2 o rag_confidence < 0.3 obliga un HITL (interruptor humano). El fallback devuelve la frase segura ya mencionada cuando no hay recuperación.
Entrenamiento y optimizaciones en AMD MI300X
OncoAgent hizo QLoRA sobre el corpus combinado (266,854 casos) usando Unsloth y kernels optimizados en MI300X (192 GB HBM3). Dos puntos clave:
Sequence packing (2048 tokens) y kernels Unsloth permitieron pasar de una estimación de 5 horas a ~50 minutos de fine‑tuning completo. Esto redujo pasos y aceleró la tasa de generación sintética.
Quantización NF4 4‑bit via BitsAndBytes y LoRA adapters aplicados a proyecciones clave (q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj).
Configuración esencial por tier:
Parámetro
Tier 1 (9B)
Tier 2 (27B)
Batch por dispositivo
4
2
Gradient accumulation
4
8
Effective batch
16
16
Learning rate
2e-4
1e-4
LoRA rank
16
32
Prácticas ROCm: pasar el tokenizer correcto, evitar inyección incompatible de EOS y usar soluciones específicas de bitsandbytes para ROCm. Unsloth redujo el uso de VRAM en ~60%, estabilizando consumo en ~64 GB.
Privacidad y Zero‑PHI
El primer paso en Ingestion es un módulo de redacción Zero‑PHI. Se detectan y reemplazan nombres, fechas de nacimiento, MRN, direcciones y otros identificadores con marcadores clínicamente neutrales. La representación redacted se guarda en AgentState y el original se descarta. Así se evita que cualquier LLM vea PHI.
El vector store es local (ChromaDB persistente) y las embeddings usan pritamdeka/S-PubMedBert-MS-MARCO, afinadas para búsquedas médicas asimétricas. No hay dependencia obligatoria de APIs en la arquitectura; se permite una caída suave a Featherless.ai solo si se requiere alta disponibilidad.
Resultados y métricas prácticas
Generación sintética acelerada: ~6,800 casos/hr en MI300X vs ~120 cases/hr por API (56×). Rejection rate sintético: 0.65%.
Tiempo de fine‑tuning del corpus: ~50 minutos.
CRAG post‑fix: grading success 100% y RAG confidence 2.3+ en pruebas de uterine cancer.
Throughput estable de entrenamiento: ~11.3 s/iteration; GPU utilization pico ~70%.
Límites, riesgos y próximas validaciones
OncoAgent demuestra viabilidad técnica y operativa, pero no es un producto clínico final. Limitaciones clave:
~36% del corpus es sintético; falta validación a gran escala contra juicios de oncólogos certificados.
Cobertura multilingue y de guías ESMO/no‑inglés es parcial por ahora.
Tier 1 está en checkpoint‑1000; se planea evaluación con benchmarks clínicos (MedQA, subconjuntos oncológicos tipo USMLE).
¿Significa esto que la IA reemplaza al médico? No. Significa que se puede construir una asistencia razonada, trazable y local que reduce riesgos de fuga de datos y de alucinaciones, pero siempre con revisión humana obligatoria.
La contribución de OncoAgent es más que números: ofrece un blueprint reproducible para desplegar IA clínica responsable en entornos regulados, combinando decomposición arquitectural, pipelines de RAG correctivo y capas deterministas de seguridad. Para equipos hospitalarios y R&D, es una referencia práctica sobre cómo transferir investigación de laboratorio a infraestructura con soberanía de datos.