El debate está muy bien, pero creo que todos estáis pasando por alto una opción que encaja perfectamente para cargas batch: los bare metal en proveedores tipo Hetzner o OVH. Para procesamiento por lotes, no necesitas la elasticidad inmediata de la nube; puedes tener un servidor dedicado con GPUs (si es ML) o CPU potente por una fracción del coste de una instancia on-demand de AWS. Eso sí, hay que ser consciente de que la gestión del hardware (actualizaciones, fallos) recae en ti, aunque muchos ofrecen paneles para reinstalar el SO en minutos. Si tu carga es predecible y no necesitas escalar en picos, es la opción más rentable a medio plazo.
Otra cosa: habláis de TCO, pero nadie menciona los costes ocultos de la nube: soporte (si necesitas Business Support, son 100$ al mes mínimo), monitoring, y el tiempo que pierdes configurando VPCs, IAM, roles, etc. En un bare metal, con Docker Compose o Kubernetes ligero, tienes el control total y zero egress. Para el caso de datos, si son terabytes, moverlos a la nube es un error; mantén los datos en el bare metal y usa S3 solo para backup con Lifecycle Policies.
Y sobre las GPUs, si te decides por on-prem para ML, compra un servidor con 2x RTX 4090 y un buen sistema de refrigeración; en un centro de datos no tienes el problema del ruido. Al final, la clave es dimensionar bien: si tu procesamiento es de horas y no de minutos, el bare metal gana.