Preguntas frecuentes sobre AWS Batch

Información general

AWS Batch es un conjunto de capacidades de gestión por lotes que permite a desarrolladores, científicos e ingenieros ejecutar de manera sencilla y eficaz cientos de miles de trabajos de informática por lotes en AWS. AWS Batch aprovisiona de manera dinámica la cantidad y el tipo óptimos de recursos informáticos (p. ej., CPU o recursos informáticos optimizados para la memoria) según el volumen y los requisitos específicos de recursos de los trabajos por lotes enviados. Con AWS Batch, no es necesario instalar y administrar software de computación por lotes ni clústeres de servidores, lo que le permite centrarse en el análisis de los resultados y la resolución de problemas. AWS Batch planifica, programa y ejecuta sus cargas de trabajo informáticas por lotes con Amazon ECS, Amazon EKS y AWS Fargate con la opción de utilizar instancias de spot.

La informática por lotes es la ejecución de una serie de programas ("trabajos") en uno o más equipos sin intervención manual. Los parámetros de entrada están predefinidos a través de scripts, argumentos de línea de comandos, archivos de control o el lenguaje de control del trabajo. Un trabajo por lotes determinado puede depender de que se completen trabajos anteriores o de la disponibilidad de ciertas entradas, por lo que la secuenciación y la programación de trabajos son importantes, e incompatible con el procesamiento interactivo.

  • Puede cambiar la hora del procesamiento de trabajos a periodos en los que hay más capacidad disponible, o capacidad más económica.
  • Evita mantener recursos informáticos en espera mediante la intervención y supervisión frecuente manual.
  • Mejora la eficacia al fomentar un mayor uso de los recursos informáticos.
  • Permite priorizar trabajos, correspondiendo la asignación de recursos con los objetivos empresariales.

Debería ejecutar sus trabajos en Fargate cuando quiera que AWS Batch se encargue del aprovisionamiento de la computación completamente abstraída de la infraestructura de ECS. Debería ejecutar sus trabajos en ECS si necesita acceder a configuraciones de instancia particulares (procesadores, GPU o arquitectura particulares) o para cargas de trabajo a muy gran escala. Si eligió Kubernetes como tecnología de orquestación de contenedores, puede estandarizar las cargas de trabajo por lotes mediante la integración de Batch con EKS.

Según el caso de uso, actualmente, los trabajos de Fargate se inician más rápido en el caso del escalado inicial del trabajo, ya que no es necesario esperar a que se lancen las instancias de EC2 o los pods. Sin embargo, para cargas de trabajo mayores, EKS o ECS pueden ser más rápidos, ya que Batch reutiliza instancias e imágenes de contenedores para ejecutar trabajos posteriores.

Debería utilizar Fargate cuando desee que AWS Batch controle el aprovisionamiento de la informática completamente abstraída desde la infraestructura de EC2. Por su parte, debería ejecutar sus trabajos en EC2 si necesita acceder a configuraciones de instancias particulares (procesadores, GPU o arquitecturas específicos) o cargas de trabajo de escala muy grande.

Según su caso de uso, sus trabajos pueden iniciarse más rápido si usa EC2 o Fargate. Los trabajos de Fargate se iniciarán más rápido en el caso de los trabajos escalables, ya que no se debe esperar a que se inicie la instancia EC2. Sin embargo, en el caso de cargas de trabajo más grandes, las instancias EC2 pueden ser más veloces, ya que Batch reutiliza las instancias y las imágenes en contenedores para ejecutar trabajos sucesivos.

Sí. Puede configurar los Fargate CE para que tengan la mayor cantidad de CPU virtuales, que es la cantidad total de CPU virtuales de todos los trabajos que se ejecutan en simultáneo en ese CE. Cuando el recuento de CPU virtuales alcanza el máximo en un CE, Batch comienza a programar trabajos en el siguiente Fargate CE adjuntos a la cola, en caso de que haya. Esta acción es útil si, por ejemplo, quiere configurar un Fargate CE en función de los mínimos requisitos comerciales y, luego, ejecutar el resto de sus cargas de trabajo en Fargate Spot.

Cuando se configura un Fargate Spot CE por primera vez, seguido de un Fargate CE, Batch solo pasará a utilizar Fargate cuando la cantidad de CPU virtuales que utilizan sus trabajos sea mayor que la cantidad máxima para ese CE. En caso de que se reclame Fargate Spot, no se alcanzará la cantidad máxima de CPU virtuales, y Batch no solicitará recursos a Fargate en el siguiente CE para ejecutar sus trabajos.

No está permitido conectar una cola de trabajo de AWS Batch a Fargate/Fargate Spot CE ni una EC2 o Spot CE.

Por qué AWS Batch

AWS Batch se ocupa de la ejecución de trabajos y la administración de recursos informáticos, lo que le permite concentrarse en desarrollar aplicaciones o analizar resultados en lugar de configurar y administrar infraestructura. Si está considerando ejecutar o transferir cargas de trabajos por lotes a AWS, debería considerar utilizar AWS Batch.

AWS Batch está optimizado para aplicaciones e informática por lotes que se escalan a través de la ejecución de varios trabajos simultáneamente. El aprendizaje profundo, el análisis genómico, los modelos de riesgo financiero, las simulaciones Monte Carlo, el renderizado de animación, la transcodificación de medios, el procesamiento de imágenes y las simulaciones de ingeniería son ejemplos excelentes de aplicaciones de informática por lotes.

Trabajos con varios contenedores

Debe usar la característica de trabajos con varios contenedores si desea modelar la carga de trabajo de AWS Batch como un conjunto de elementos distintos desde el punto de vista lógico, por ejemplo, el entorno de simulación y el sistema en prueba (SUT), la aplicación principal o el sidecar de telemetría. El uso de esta característica simplifica sus operaciones, facilita el seguimiento de las prácticas arquitectónicas recomendadas y le permite alinear las simulaciones con la arquitectura de varios contenedores de su sistema de sistemas de producción. Ya sea que desee ejecutar contenedores independientes para sus SUT y su entorno de simulación o necesite agregar un sidecar auxiliar, ya no es necesario combinar todos los elementos de la carga de trabajo en un contenedor monolítico y reconstruirlo después de cada cambio de código. Como resultado, puede simplificar DevOps, mantener los contenedores pequeños y rápidos de descargar y facilitar la ejecución de trabajos en paralelo.

AWS Batch admite la ejecución de varios contenedores en todos los tipos de trabajo, incluidos los trabajos normales de un solo nodo, los trabajos de matrices y los trabajos paralelos de varios nodos (MNP).

Puede ejecutar trabajos con varios contenedores en todos los entornos informáticos de AWS Batch, incluidos Amazon ECS, Amazon EC2, AWS Fargate y Amazon EKS.

Características

AWS Batch administra entornos informáticos y colas de trabajos, lo que le permite ejecutar fácilmente miles de trabajos de cualquier escala mediante Amazon ECS, Amazon EKS y AWS Fargate con una opción entre recursos de spot o bajo demanda. Solo tiene que definir y enviar sus trabajos por lotes a una cola. Como respuesta, AWS Batch elige dónde ejecutar los trabajos, implementando capacidad de AWS adicional en caso necesario. AWS Batch controla de manera detallada el progreso de sus trabajos. Cuando ya no se necesite la capacidad, AWS Batch la eliminará. AWS Batch también permite enviar trabajos que forman parte de una canalización o flujo de trabajo, permitiéndole expresar cualquier interdependencia que exista entre ellos al enviar los trabajos.

AWS Batch admite cualquier trabajo que se pueda ejecutar como un contenedor Docker. Los trabajos especifican sus requisitos de memoria y cantidad de vCPU.  

Un recurso informático de AWS Batch es una instancia EC2 o un recurso informático de AWS Fargate.

Un entorno informático de AWS Batch es un conjunto de recursos informáticos en los que se ejecutan trabajos. AWS Batch admite dos tipos de entornos informáticos: entornos informáticos administrados, que AWS aprovisiona y gestiona, y entornos informáticos no administrados, que los clientes administran. Los entornos informáticos no administrados proporcionan un mecanismo para utilizar recursos especializados, como hosts dedicados, configuraciones de almacenamiento de mayor tamaño y Amazon EFS.

Una definición de trabajo describe el trabajo a ejecutar, los parámetros, las variables del entorno, los requisitos informáticos y otra información que se utiliza para optimizar la ejecución de un trabajo. Las definiciones de trabajo se determinan antes de enviar un trabajo y se pueden compartir con otros.

AWS Batch utiliza Amazon ECS para ejecutar trabajos en contenedores y, por lo tanto, requiere que se instale el agente de ECS en los recursos informáticos de sus entornos informáticos de AWS Batch. El agente de ECS viene ya instalado en los entornos informáticos administrados.

Los entornos informáticos de AWS Batch pueden componerse de instancias de spot de EC2. Cuando crea un entorno informático administrado, solo debe especificar que desea utilizar las instancias de spot de EC2 y proporcionar un porcentaje de los precios bajo demanda que está dispuesto a pagar; AWS Batch se ocupará del resto. Los entornos informáticos no administrados también pueden incluir instancias de spot que usted lance, lo que incluye aquellas lanzadas por una flota de spot de EC2.

Precios

No se aplican cargos adicionales por el uso de AWS Batch. Solo paga por los recursos de AWS (por ejemplo, instancias EC2 o AWS Fargate) que crea para almacenar y ejecutar sus trabajos por lotes.

Programación de GPU

Sí, puede utilizar Batch para especificar la cantidad y el tipo de aceleradores que necesitan sus trabajos como variables de entrada de definición de trabajo, junto con las opciones actuales de la CPU virtual y memoria. AWS Batch aumentará las instancias apropiadas para sus trabajos basándose en los aceleradores requeridos y aislará los aceleradores de acuerdo a las necesidades de cada trabajo, de manera que solo los contenedores apropiados puedan acceder a ellos.

Mediante el uso de aceleradores con Batch, puede programar y aprovisionar sus trabajos de forma dinámica de acuerdo con las necesidades del acelerador. Además, Batch se asegurará de que se reserve la cantidad adecuada de aceleradores para sus trabajos. Batch aumentará sus instancias EC2 aceleradas cuando las necesite y las reducirá cuando haya terminado, lo que le permitirá enfocarse en sus aplicaciones. Batch se integra de manera nativa con EC2 Spot, lo que significa que puede aprovechar hasta un 90 % de ahorro con sus trabajos acelerados cuando utiliza instancias aceleradas.

Actualmente, puede utilizar los de GPU en instancias aceleradas P y G.

Puede especificar la cantidad y el tipo de aceleradores en Definición de trabajo. Puede especificar el acelerador mediante la descripción del tipo de acelerador (por ejemplo, GPU, actualmente el único acelerador compatible) y la cantidad de ese tipo que necesita su trabajo. El tipo de acelerador especificado debe estar presente en uno de los tipos de instancia especificados en sus entornos informáticos. Por ejemplo, si su trabajo necesita 2 GPU, asegúrese también de que ha especificado una instancia de la familia P en su entorno informático.

Desde la API:
{
"containerProperties": {
"vcpus": 1,
"image": "nvidia/cuda:9.0-base",
"memory": 2048,
"resourceRequirements" : [
{
"type" : "GPU",
"value" : "1"
}
],

De forma similar a los requisitos de la CPU virtual y la memoria, puede sobrescribir la cantidad y el tipo de aceleradores al enviar el trabajo.

Con el comportamiento actual, Batch evitará programar trabajos que no requieran aceleración en instancias aceleradas siempre que sea posible. Esto es para evitar casos en los que trabajos de larga duración ocupan la instancia acelerada sin aprovechar el acelerador, lo que aumenta el costo. En raras ocasiones, con precios de Spot y con instancias aceleradas como tipos permitidos, es posible que Batch determine que una instancia acelerada es la forma menos costosa de ejecutar sus trabajos, independientemente de las necesidades del acelerador.

Si envía un trabajo a un CE que solo permite que Batch inicie instancias aceleradas, Batch ejecutará los trabajos en esas instancias, independientemente de las necesidades del acelerador.

A partir de ahora, las instancias de tipo p se iniciarán de forma predeterminada con la AMI optimizada para GPU de ECS. Esta AMI contiene las bibliotecas y los tiempos de ejecución necesarios para ejecutar aplicaciones basadas en GPU. Siempre se puede apuntar a una AMI personalizada según sea necesario al crear un CE.

Introducción

Para comenzar, consulte la Guía de introducción de nuestra documentación.

No es necesario implementar manualmente sus propios recursos informáticos para comenzar. La consola web de AWS Batch le guiará a través del proceso de creación de su primer entorno informático y cola de trabajos, para que pueda enviar su primer trabajo. Los recursos de su entorno informático se incrementarán cuando haya trabajos adicionales listos para ejecutarse y se reducirán cuando la cantidad de trabajos ejecutables disminuya.