Descripción general de la creación y ejecución de trabajos

En este documento, se explican el proceso de ejecución y las opciones de creación para los trabajos. Los trabajos por lotes te permiten ejecutar cargas de trabajo de procesamiento por lotes en Google Cloud. Para obtener información sobre los componentes de un trabajo y los requisitos previos para usar Batch, consulta Cómo comenzar a usar Batch.

Cómo funcionan la creación y ejecución de trabajos

Para usar Batch, debes crear un trabajo que especifique tu carga de trabajo y sus requisitos y, luego, lo ejecuta automáticamente.

Se describen los detalles de cómo funcionan la creación y ejecución de trabajos en las siguientes secciones:

Ciclo de vida de los trabajos

En esta sección, se describe el ciclo de vida de un trabajo y sus tareas, desde su creación hasta su eliminación.

Para cada carga de trabajo que deseas ejecutar en Batch, debes seguir el siguiente proceso básico:

  1. Crea un trabajo: Para definir la carga de trabajo que deseas ejecutar, especifica los elementos ejecutables, las tareas y cualquier otro requisito de un trabajo. Los detalles para crear un trabajo se presentan en la sección Opciones de creación de trabajos de este documento.
  2. Supervisar y solucionar problemas del trabajo: cuando terminas de crear un trabajo, la automáticamente se pone en cola, se programa y se ejecuta en la de Google Cloud. Puedes ver los detalles de un trabajo creado o cualquiera de sus tareas para ver el estado actual. Si es necesario, puedes cancelar un trabajo (Vista previa) para detenerlo o evitar antes de que se ejecute. También puedes supervisar después de que un trabajo se ejecute o finalice. y analizar el trabajo con registros. Si un trabajo falla, puedes solucionar el problema con mensajes de error, eventos de estado o registros para diagnosticar el problema antes de volver a crearlo.
  3. Borrar o exportar el trabajo: La información de un trabajo en Batch permanece disponible hasta que tú o Google Cloud lo borren. Google Cloud borra un trabajo de forma automática 60 días después de que finaliza. Antes de que eso suceda, tienes la opción de borrar el trabajo tú mismo o, si necesitas para retener la información, puedes exportarla en por lotes antes de que se borre el trabajo. La información sobre una tarea que se almacena en otros servicios de Google Cloud no se ve afectada cuando se borra una tarea y tiene políticas de retención independientes. Por ejemplo, los registros de una tarea se retienen y borran automáticamente según la política de retención de Cloud Logging.

Después de crear un trabajo, pasa a los siguientes estados:

  1. En cola (QUEUED): La solicitud de trabajo se admitió y está esperando en la cola. La tarea permanece en la cola hasta que los recursos necesarios están disponibles y se evaluaron las tareas que la preceden.
  2. Programado (SCHEDULED): Se seleccionó la tarea de la cola para que comience a ejecutarse y se están asignando los recursos.
  3. Running (RUNNING): Los recursos del trabajo se crearon correctamente y sus tareas pueden comenzar a ejecutarse.

    Cuando se ejecuta un trabajo, cada una de sus tareas pasa por los siguientes estados:

    1. Pendiente (PENDING): La tarea está esperando que se ejecute una VM.
    2. Asignada (ASSIGNED): Se asignó una VM en la que se ejecutará la tarea.
    3. En ejecución (RUNNING): La tarea se está ejecutando en una VM.
    4. Una tarea finaliza en uno de los siguientes estados:

      • Completada (SUCCEEDED): la tarea se realizó correctamente porque cada sus ejecutables cumplen con una de las siguientes condiciones:

        • El comando succeeded ejecutable (devolvió un código de salida de cero).
        • El elemento ejecutable falló (mostró un código de salida distinto de cero), pero era un elemento ejecutable no crítico (habilitaste el campo ignoreExitStatus del elemento ejecutable).
        • El ejecutable no finalizó, pero era un ejecutable en segundo plano (se puede habilitó el entorno de ejecución background).
      • Con errores (FAILED): La tarea falló y dejó de ejecutarse porque al menos uno ejecutable no cumplía con las condiciones anteriores.

  4. Un trabajo finaliza en uno de los siguientes estados:

    • Succeeded (SUCCEEDED): El trabajo se realizó correctamente porque todas sus tareas se completaron de forma correcta.
    • Con errores (FAILED): el trabajo falló y dejó de ejecutarse porque a las al menos una de sus tareas falló.
    • Cancelada (CANCELLED): Un usuario canceló el trabajo (Vista previa) antes de que tenga éxito o falló.

Para obtener más información, consulta estados de trabajos y estados de las tareas en la documentación de referencia.

Poner en cola y programar trabajos

Por lo general, es más probable que las tareas se ejecuten y finalicen antes si son más pequeñas y requieren solo algunos recursos comunes. En el caso de los trabajos de ejemplo de la documentación de Batch, que suelen ser muy pequeños y usan recursos mínimos, es posible que veas que terminan de ejecutarse en solo unos minutos.

Específicamente, el tiempo que tarda un trabajo en terminar de colocarse en cola y programarse varía para diferentes trabajos y en diferentes momentos en función de los siguientes factores:

  • Disponibilidad de recursos de trabajo: Es la disponibilidad de los recursos necesarios del trabajo dentro de las ubicaciones permitidas.

    En primer lugar, un trabajo no se puede ejecutar si especificas algún recurso que no se ofrecen en esa ubicación. Cuando esto sucede, el trabajo falla con un error de disponibilidad de zona.

    En segundo lugar, es más probable que un trabajo se retrase o falle si alguna de sus los recursos requeridos tienen una capacidad baja en relación con la demanda actual debido al errores de disponibilidad de recursos. Como resultado, tu trabajo podría ejecutarse antes cuando necesites menos recursos más comunes y no restrinjan la ejecución del trabajo en cualquier zona de una región.

    Para obtener más información sobre los recursos de un trabajo, consulta Ejecución de trabajos en este documento. Para obtener más información sobre las ubicaciones que puedes especificar para un trabajo de Batch y sus recursos, consulta la página Ubicaciones.

  • Prioridad del trabajo: la prioridad para un trabajo en relación con las prioridades de otros trabajos en tu proyecto.

    También puedes especificar la prioridad de un trabajo incluyendo el Marca --priority para gcloud CLI o el campo JSON priority. Puedes definir la prioridad de una tarea como un número entre 0 (prioridad más baja) y 99 (prioridad más alta). Establecer una prioridad más alta puede ayudar a que una tarea se ejecute antes que las tareas de menor prioridad en tu proyecto.

    Si no configuras la prioridad de un trabajo, se usará la prioridad más baja, 0, de forma predeterminada. Si dos trabajos en cola tienen la misma prioridad, que se creó primero tiene la prioridad más alta.

  • Cuotas y límites: Los umbrales que tiene tu proyecto. para recursos y solicitudes de Google Cloud.

    Un trabajo no puede ejecutarse si excede un límite o la cuota de tu proyecto para los recursos o solicitudes necesarios. Cuando esto sucede, Batch puede retrasar un trabajo y volver a intentarlo más tarde. hacer que el trabajo falle y mostrar un error relacionado.

    Puedes ayudar a evitar retrasos y errores en tu trabajo si creas trabajos que cumplir con todos los límites relevantes y garantizar que tu proyecto tenga suficientes la cuota correspondiente. Para obtener más información, consulta Cuotas y límites por lotes.

Ejecución del trabajo

El tiempo que tarda en ejecutarse un trabajo puede variar según la programación de la tarea. y los recursos del trabajo.

Programación de tareas

Cuando se ejecuta un trabajo, sus tareas se programan según campo de la política de programación (schedulingPolicy), que te permite especificar una de las siguientes opciones:

  • Lo antes posible (AS_SOON_AS_POSSIBLE) (predeterminado): Las tareas se ejecutan en cuanto los recursos están disponibles y pueden ejecutarse en paralelo. La cantidad de tareas que se ejecutan a la vez depende de las tareas en paralelo por VM que permiten los recursos de la tarea y otras opciones de configuración, como se explica en Recursos de trabajo en este documento.
  • En orden (IN_ORDER): Las tareas se ejecutan una a la vez en orden de índice creciente.

Recursos de trabajo

Cada trabajo por lotes se ejecuta en un grupo de instancias administrado regional (MIG), que es un grupo de una o más instancias de máquina virtual (VM) de Compute Engine coincidentes que se encuentran en una de las zonas incluidas. Cada VM tiene hardware dedicado para los núcleos de CPU (específicamente, CPU virtuales (vCPU)) y la memoria, que afectan el rendimiento de tu trabajo, y un disco de arranque, que almacena una imagen del sistema operativo (SO) y las instrucciones para ejecutar tu trabajo.

Durante el tiempo de ejecución de un trabajo, Batch crea y borra automáticamente los recursos que cumplen con tus especificaciones. Cuando creas un trabajo, debes configurar sus recursos especificando lo siguiente:

  • Recursos de procesamiento por tarea: A menos que los valores predeterminados sean suficientes, debes especificar los recursos de procesamiento (CPUs virtuales, memoria y, si es necesario, almacenamiento adicional en el disco de inicio) que se requieren para que se ejecute cada tarea. Para obtener más información, consulta los campos de recursos de procesamiento por tarea (computeResource).

  • Recursos de VM: De manera opcional, también puedes especificar las VM del trabajo, como el tipo de máquina y el SO, y los recursos adicionales, como las GPUs y los volúmenes de almacenamiento, con los campos de la política de recursos de VM (instances[].policy) o el campo alternativo instances[].instanceTemplate. Si no defines estos campos, Batch selecciona VMs compatibles y no agrega recursos adicionales.

La cantidad de VMs y de tareas que se pueden ejecutar de forma simultánea en cada VM variar según el trabajo según la programación de la tarea y la con los requisitos de hardware especificados. Si especificas que se ejecuten las tareas de un trabajo IN_ORDER, el trabajo tiene una VM y solo ejecuta una tarea a la vez. De lo contrario, si las tareas de un trabajo ejecutan AS_SOON_AS_POSSIBLE, puedes estimar la cantidad de VMs y la cantidad de tareas simultáneas con la siguiente fórmula:

\[{vmsPerJob}=\frac{taskCount}{parallelTasksPerVm}\]

Esta fórmula tiene los siguientes valores:

  • \({vmsPerJob}\): Es la cantidad máxima de VMs para un trabajo. La cantidad real de VMs creado para un trabajo puede ser más pequeño, por ejemplo, si Batch espera que sea más rápido ejecutar un trabajo con menos recursos. que esperar más recursos. Este valor también está limitado por el límites de VMs simultáneas por trabajo.
  • \({taskCount}\): Es la cantidad total de tareas de la tarea, que defines con el campo recuento de tareas (taskCount).
  • \({parallelTasksPerVM}\): Es la cantidad máxima de tareas que se pueden ejecutar en una VM. al mismo tiempo.

    Este valor se determina según todos los criterios siguientes:

    • El valor mínimo es 1 tarea.

    • El valor máximo es la menor de 20 tareas y, si se define, el valor del campo máx. de tareas paralelas por trabajo (parallelism).

    • Si el botón Cantidad máxima de tareas paralelas por campo de VM (taskCountPerNode) se define, se usa ese valor.

      De lo contrario, si taskCountPerNode no está definido, por lotes decide un valor al dividir el número total de recursos de procesamiento (específicamente las CPU virtuales) por VM a la cantidad requeridos para cada tarea:

      \[{parallelTasksPerVm}=\frac{vcpusPerVm}{vcpusPerTask}\]

      Esta fórmula tiene los siguientes valores:

      • \({vcpusPerVm}\): La cantidad total de CPU virtuales por VM, que es determinadas por el tipo de máquina de las VMs de tu trabajo.

      • \({vcpusPerTask}\): Es la cantidad de CPU virtuales por tarea, que se determina convirtiendo las unidades de la Campo de CPU virtuales por tarea (cpuMilli).

Opciones de creación de trabajos

Crea y ejecuta un trabajo básico explica la básicos, como cómo definir un ejecutable con una secuencia de comandos o imagen de contenedor y cómo configurar variables de entorno predefinidas y personalizadas.

Después de comprender los aspectos básicos para la creación de trabajos, considera crear un trabajo que use una o más de las siguientes opciones de configuración adicionales:

  • Controla el acceso a un trabajo:

  • Configura opciones adicionales para un trabajo:

    • En Cómo configurar la comunicación de tareas con una biblioteca MPI, se explica cómo configurar un trabajo con tareas interdependientes que se comunican entre sí en diferentes VMs con una biblioteca de interfaz de transmisión de mensajes (MPI). Un caso de uso común para MPI son las cargas de trabajo de computación de alto rendimiento (HPC) estrechamente vinculadas.

    • Personaliza los recursos en los que se ejecuta un trabajo:

      • Define recursos de trabajo con una plantilla de instancias de VM se explica cómo especificar una plantilla de VM de Compute Engine para definen los recursos de un trabajo cuando lo creas. Este es un alternativa a especificar los recursos de un trabajo directamente mediante el uso de Campo instances[].policy.

      • En Cómo usar GPUs para una tarea, se explica cómo definir una tarea que usa una o más unidades de procesamiento de gráficos (GPU). Uso común casos de trabajos que usan GPU incluyen procesamiento de datos intensivo cargas de trabajo de aprendizaje automático (AA).

      • En Usar volúmenes de almacenamiento para un trabajo, se explica Cómo definir un trabajo que pueda acceder a uno o más volúmenes de almacenamiento externo Las opciones de almacenamiento incluyen discos persistentes nuevos o existentes, SSD locales nuevos, buckets de Cloud Storage existentes y un sistema de archivos de red existente (NFS), como un archivo compartido de Filestore.

      • La descripción general del entorno del SO de la VM proporciona una descripción general de cuándo y cómo puedes personalizar el entorno del sistema operativo (SO) de la VM para una tarea, incluida la imagen del SO de la VM y los discos de arranque de la tarea.

    • Optimiza varios aspectos de un trabajo:

      • Mejora la supervisión y el análisis:

      • En Cómo automatizar los reintentos de tareas, se explica cómo volver a intentar automáticamente las tareas de un trabajo después de todas las fallas o de las fallas especificadas. Los reintentos automatizados pueden ayudar a reducir la fricción de solución de problemas y el tiempo de ejecución general necesario para las tareas que experimentan errores temporales. Por ejemplo, usa reintentos automáticos para una tarea que se ejecuta en VMs Spot, que proporcionan descuentos significativos, pero que pueden no estar siempre disponibles y se pueden interrumpir en cualquier momento.

      • En Cómo ubicar VMs en la misma ubicación para reducir la latencia, se explica cómo reducir la latencia de red entre las VMs de un trabajo, ya que requiere que las VMs se ubiquen físicamente cerca una de la otra. Este beneficio de rendimiento puede ser muy útil para los trabajos tienen comunicaciones de red frecuentes entre las VMs, como tareas que se comunican con bibliotecas de la MPI.

      • Garantiza la disponibilidad de los recursos mediante reservas de VM explica cómo configurar un trabajo que pueden ejecutarse en VMs reservadas. Usando campañas reservadas Pueden ayudarte a minimizar el tiempo de programación de un trabajo prevenir errores de disponibilidad de recursos optimizar costos.

      • Cómo usar la transmisión de imágenes cómo mejorar el tiempo de inicio del trabajo transmitiendo imágenes de Artifact Registry.

  • Usa servicios adicionales para crear y ejecutar trabajos:

¿Qué sigue?