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 permiten ejecutar cargas de trabajo de procesamiento por lotes en Google Cloud. Para aprender sobre los componentes de un trabajo requisitos previos para usar Batch, consulta Comienza 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. para su eliminación.

Para cada carga de trabajo que quieras ejecutar en Batch, debes revisar siguiente proceso básico:

  1. Crea un trabajo: para definir la carga de trabajo que deseas ejecutar, especifica un los ejecutables, las tareas y cualquier otro requisito del trabajo. Los detalles de sobre cómo crear un trabajo 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. Después de que un trabajo se ejecute o finalice, también puedes supervisar y analizar el trabajo con registros. Si un trabajo falla, puedes solucionar los problemas a través de mensajes de error, eventos de estado o registros para diagnosticar el problema antes de volver a crear el trabajo.
  3. Borrar o exportar el trabajo: los registros de un trabajo se retendrán y se borrarán según la política de retención de Cloud Logging. La otra información de un trabajo permanece disponible en Batch hasta que tú o Google Cloud los 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 exportar el trabajo antes de que se borre.

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

  1. En cola (QUEUED): se admitió la solicitud de trabajo y está en espera en la fila. El trabajo permanece en la cola hasta que se agregan están disponibles y se evaluaron los trabajos anteriores.
  2. Programado (SCHEDULED): Se seleccionó el trabajo de la cola para comenzar a ejecutarse y se están asignando los recursos.
  3. En ejecución (RUNNING): se crearon los recursos para el trabajo. de forma correcta y sus tareas pueden comenzar a ejecutarse.

    Cuando se ejecuta un trabajo, cada una de sus tareas 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 una de sus ejecutables tuvieron éxito (devolvieron un código de salida de cero) o se marcaron como no críticos campo de ignorar estado de salida (ignoreExitStatus).
      • Con errores (FAILED): La tarea falló porque al menos una de sus ejecutables críticos falló (se mostró un código de salida distinto de cero).
  4. Un trabajo finaliza en uno de los siguientes estados:

    • Completado (SUCCEEDED): Todas las tareas del trabajo tienen sin errores.
    • Con errores (FAILED): Se produjo un error con al menos una tarea del trabajo.

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

En general, es más probable que los trabajos se ejecuten y finalicen antes si se y requiere solo unos pocos recursos comunes. Para los ejemplos de trabajos en la documentación por lotes, que suelen ser muy pequeñas y usan recursos mínimos, es posible que notes que terminan de ejecutarse en un unos minutos.

Específicamente, varía el tiempo que tarda un trabajo en terminar de la cola y la programación en distintos trabajos y en distintos momentos según los siguientes factores:

  • Disponibilidad de recursos de trabajo: la disponibilidad de los recursos requeridos del trabajo ubicaciones.

    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 para 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 por lotes y sus recursos, consulta 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 un trabajo como un número entre 0 (prioridad más baja) y 99 (prioridad más alta) Establecer un nivel más alto con prioridad puede ayudar a que un trabajo se ejecute antes que los de menor prioridad en tu proyecto.

    Si no configuras la prioridad de un trabajo, la opción predeterminada es el uso del la prioridad más baja, 0. 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:

  • Tan pronto como sea posible (AS_SOON_AS_POSSIBLE) (predeterminado): las tareas se ejecutan tan pronto como los recursos están disponibles y pueden ejecutarse en paralelo. La cantidad de tareas que se ejecutan a la vez depende de las tareas paralelas por VM. permitidos por los recursos del trabajo 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 ascendente. índice.

Recursos del trabajo

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

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

  • Debes especificar los recursos de procesamiento (CPU virtuales, memoria y (si es necesario) almacenamiento adicional en el disco de arranque, que es necesario para que se ejecute cada tarea a menos que los valores predeterminados sean suficientes. Para obtener más información, consulta la campo de recursos de procesamiento por tarea (computeResource) y subcampos.

  • También puedes especificar los tipos de VMs que usarás para cada VM, como GPU y volúmenes de almacenamiento. Si no especificar estas opciones, Batch selecciona los tipos VMs y no agrega recursos adicionales. Para obtener más información, consulta la Campo de recursos de instancia de VM (instances[]) y subcampos.

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 VM 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 del trabajo, que defines. con el campo de cantidad 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 a partir de todos los siguientes criterios:

    • 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 de la creación de trabajos, un trabajo que usa una o más de las siguientes opciones de configuración adicionales:

  • Controla el acceso a un trabajo:

  • Configura opciones adicionales para un trabajo:

    • Configura la comunicación de tareas con una biblioteca de la MPI explica cómo configurar un trabajo con tareas interdependientes que comunican entre sí en diferentes VMs a través de una interfaz de envío de mensajes (MPI). Un caso de uso común de la MPI tiene acoplamiento alto cargas de trabajo de computación de alto rendimiento (HPC).

    • 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 definir una los recursos del trabajo cuando lo creas.

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

      • En Usa volúmenes de almacenamiento para un trabajo 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.

      • Descripción general del entorno del SO de la VM proporciona una descripción general de cuándo y cómo puedes personalizar la Es el entorno del sistema operativo (SO) de la VM para un trabajo, incluidas sus propiedades. y los discos de arranque y la imagen de SO de la VM.

    • Optimiza varios aspectos de un trabajo:

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

      • Automatiza los reintentos de tareas en la que se explica cómo reintentar automáticamente las tareas de un trabajo fallas especificadas. Los reintentos automáticos pueden reducir la solución de problemas y el tiempo de ejecución general se requieren para trabajos que experimentan errores temporales. Por ejemplo, usa reintentos automáticos para un trabajo que se ejecuta VMs Spot, que ofrecen descuentos significativos no siempre están disponibles y se pueden interrumpir en cualquier momento.

      • Coloca las VMs para reducir la latencia se explica cómo reducir la latencia de red entre las VMs de un trabajo lo que requiere que las VMs se ubiquen físicamente cerca unas de otras. 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?