Présentation de la création et de l'exécution de tâches

Ce document décrit le processus d'exécution et les options de création de jobs. Les tâches par lot vous permettent d'exécuter des charges de travail de traitement par lot sur Google Cloud. Pour en savoir plus sur les composants d'une tâche et sur les conditions préalables à l'utilisation de Batch, consultez la page Premiers pas avec Batch.

Fonctionnement de la création et de l'exécution de jobs

Pour utiliser Batch, vous devez créer un job qui spécifie votre charge de travail et ses exigences, puis Batch l'exécute automatiquement.

Les sections suivantes décrivent en détail le fonctionnement de la création et de l'exécution des tâches:

Cycle de vie des jobs

Cette section décrit le cycle de vie d'une tâche et ses tâches, de sa création à sa suppression.

Pour chaque charge de travail que vous souhaitez exécuter sur Batch, vous devez suivre le processus de base suivant:

  1. Créer une tâche:vous définissez la charge de travail que vous souhaitez exécuter en spécifiant les exécutables, les tâches et toute autre condition d'une tâche. Les détails de la création d'une tâche sont présentés dans la section Options de création de tâche de ce document.
  2. Surveiller et dépanner la tâche:lorsque vous avez terminé de créer une tâche, celle-ci est automatiquement mise en file d'attente, planifiée et exécutée sur les ressources spécifiées. Vous pouvez afficher les détails d'une tâche créée ou de l'une de ses tâches pour en connaître l'état actuel. Une fois qu'une tâche est en cours d'exécution ou terminée, vous pouvez la surveiller et l'analyser à l'aide des journaux. Si une tâche échoue, vous pouvez la dépanner à l'aide des messages d'erreur, des événements d'état ou des journaux pour diagnostiquer le problème avant de recréer la tâche.
  3. Supprimer ou exporter la tâche:les journaux d'une tâche sont automatiquement conservés et supprimés en fonction de la règle de conservation de Cloud Logging. Les autres informations d'un job restent disponibles dans Batch jusqu'à ce que vous ou Google Cloud les supprimiez. Google Cloud supprime automatiquement une tâche 60 jours après son achèvement. Avant cela, vous pouvez éventuellement supprimer la tâche vous-même ou, si vous devez conserver les informations, vous pouvez exporter la tâche avant qu'elle ne soit supprimée.

Une fois que vous avez créé un job, il passe par les états suivants:

  1. Queued (QUEUED) (en file d'attente):la requête de tâche a été acceptée et est en attente dans la file d'attente. La tâche reste dans la file d'attente jusqu'à ce que les ressources requises soient disponibles et que les tâches qui la précèdent aient été évaluées.
  2. Scheduled (SCHEDULED) (Planifiée):la tâche a été sélectionnée dans la file d'attente pour être exécutée et les ressources sont en cours d'allocation.
  3. En cours d'exécution (RUNNING) : les ressources du job ont bien été créées et ses tâches peuvent commencer à s'exécuter.

    Lorsqu'une tâche est en cours d'exécution, chacune de ses tâches passe par les états suivants:

    1. En attente (PENDING) : la tâche est en attente de l'exécution d'une VM.
    2. Attribuée (ASSIGNED) : une VM sur laquelle la tâche a été attribuée
    3. En cours d'exécution (RUNNING) : la tâche est en cours d'exécution sur une VM.
    4. Une tâche se termine dans l'un des états suivants :
      • Réussie (SUCCEEDED) : la tâche a réussi, car chacun de ses exécutables a réussi (a renvoyé un code de sortie de zéro) ou a été marqué comme non critique à l'aide du champ d'état de sortie ignoré (ignoreExitStatus).
      • Échec (FAILED): la tâche a échoué, car au moins un de ses exécutables critiques a échoué (un code de sortie différent de zéro a été renvoyé).
  4. Une tâche se termine dans l'un des états suivants:

    • Réussie (SUCCEEDED) : toutes les tâches de la tâche ont réussi.
    • Échec (FAILED) : au moins une tâche a échoué.

Pour en savoir plus, consultez les sections États des tâches et États des tâches dans la documentation de référence.

Mise en file d'attente et planification des jobs

En règle générale, les tâches sont plus susceptibles de s'exécuter et de se terminer plus tôt si elles sont plus petites et ne nécessitent que quelques ressources courantes. Pour les exemples de tâches présentés dans la documentation Batch, qui sont généralement de très petite taille et utilisent un minimum de ressources, vous pouvez constater que leur exécution se termine en quelques minutes à peine.

Plus précisément, le temps nécessaire pour terminer la mise en file d'attente et la planification d'une tâche varie selon les tâches et à différents moments, en fonction des facteurs suivants:

  • Disponibilité des ressources de la tâche:la disponibilité des ressources requises pour la tâche dans les emplacements autorisés.

    Tout d'abord, une tâche ne peut pas être exécutée si vous spécifiez des ressources qui ne sont pas proposées à cet emplacement. Dans ce cas, la tâche échoue et renvoie une erreur de disponibilité de zone.

    D'autre part, une tâche est plus susceptible d'être retardée ou d'échouer si l'une de ses ressources requises est en faible capacité par rapport à la demande actuelle en raison d'erreurs de disponibilité des ressources. Par conséquent, votre tâche peut s'exécuter plus tôt si vous avez besoin de ressources moins nombreuses et plus courantes et que vous n'empêchez pas son exécution dans les zones d'une région.

    Pour en savoir plus sur les ressources associées à une tâche, consultez la section Exécution de tâches de ce document. Pour en savoir plus sur les emplacements que vous pouvez spécifier pour un job Batch et ses ressources, consultez la page Emplacements.

  • Priorité de la tâche:priorité d'une tâche par rapport aux priorités d'autres tâches dans votre projet.

    Vous pouvez éventuellement spécifier la priorité d'une tâche en incluant l'option --priority pour gcloud CLI ou le champ JSON priority. Vous pouvez définir la priorité d'une tâche sous la forme d'un nombre compris entre 0 (priorité la plus faible) et 99 (priorité la plus élevée). Définir une priorité plus élevée peut permettre à une tâche de s'exécuter plus tôt que les tâches de priorité inférieure de votre projet.

    Si vous ne configurez pas la priorité d'une tâche, elle utilise par défaut la priorité la plus faible, 0. Si deux tâches en file d'attente ont la même priorité, la tâche créée en premier a la priorité la plus élevée.

  • Quotas et limites:seuils définis par votre projet pour les ressources et les requêtes Google Cloud.

    Une tâche ne peut pas être exécutée si elle dépasse une limite ou le quota de votre projet pour l'une des ressources ou requêtes requises. Dans ce cas, Batch peut retarder une tâche et la relancer ultérieurement ou échouer à la tâche et afficher une erreur associée.

    Vous pouvez éviter les retards et les erreurs liés à votre tâche en créant des tâches qui respectent toutes les limites applicables et en vous assurant que votre projet dispose d'un quota suffisant. Pour en savoir plus, consultez la page Quotas et limites par lot.

Exécution du job

Le temps nécessaire à l'exécution d'une tâche peut varier en fonction de la planification des tâches et des ressources associées.

Planification des tâches

Lorsqu'une tâche est exécutée, ses tâches sont planifiées conformément au champ de règle de planification (schedulingPolicy), qui vous permet de spécifier l'une des options suivantes:

  • Dès que possible (AS_SOON_AS_POSSIBLE) (par défaut) : les tâches s'exécutent dès que des ressources sont disponibles et peuvent s'exécuter en parallèle. Le nombre de tâches exécutées simultanément dépend des tâches parallèles par VM autorisées par les ressources de la tâche, ainsi que des autres options de configuration, comme expliqué dans la section Ressources de tâches de ce document.
  • Dans l'ordre (IN_ORDER): les tâches s'exécutent une par une dans l'ordre d'index croissant.

Ressources du job

Chaque tâche Batch s'exécute sur un groupe d'instances géré (MIG) régional, qui est un groupe d'une ou plusieurs instances de machines virtuelles (VM) Compute Engine correspondantes, chacune située dans l'une des zones incluses. Chaque VM dispose de matériel dédié pour les cœurs de processeur (en particulier les processeurs virtuels) et la mémoire, qui affectent les performances de votre tâche, et d'un disque de démarrage qui stocke une image de système d'exploitation (OS) et des instructions pour exécuter votre tâche.

Pendant l'exécution d'un job, Batch crée et supprime automatiquement les ressources qui répondent à vos spécifications. Lorsque vous créez un job, vous configurez ses ressources en spécifiant ce qui suit:

  • Vous devez spécifier les ressources de calcul (processeurs virtuels, mémoire et (si nécessaire) espace de stockage supplémentaire sur disque de démarrage) requises pour chaque tâche à exécuter, sauf si les valeurs par défaut sont suffisantes. Pour en savoir plus, consultez les sections concernant le champ de ressources de calcul par tâche (computeResource) et les sous-champs.

  • Si vous le souhaitez, vous pouvez également spécifier les types de VM à utiliser et des ressources supplémentaires pour chaque VM, telles que des GPU et des volumes de stockage. Si vous ne spécifiez pas ces options, Batch sélectionne les types de VM compatibles et n'ajoute aucune ressource supplémentaire. Pour en savoir plus, consultez les sections Champ Ressources d'instance de VM (instances[]) et Sous-champs.

Le nombre de VM et le nombre de tâches pouvant s'exécuter simultanément sur chaque VM varient en fonction des différentes tâches, en fonction de la planification des tâches et de la configuration matérielle requise. Si vous spécifiez que les tâches d'une tâche doivent exécuter IN_ORDER, la tâche dispose d'une VM et n'exécute qu'une seule tâche à la fois. Sinon, si les tâches d'une tâche exécutent AS_SOON_AS_POSSIBLE, vous pouvez estimer le nombre de VM et le nombre de tâches simultanées à l'aide de la formule suivante:

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

Cette formule a les valeurs suivantes:

  • \({vmsPerJob}\): nombre maximal de VM pour une tâche. Le nombre réel de VM créées pour une tâche peut être inférieur à cette valeur, par exemple si Batch estime qu'il est plus rapide d'exécuter une tâche sur moins de ressources que d'attendre plus de ressources. Cette valeur est également limitée par les limites du nombre de VM simultanées par job.
  • \({taskCount}\): nombre total de tâches pour la tâche, que vous définissez à l'aide du champ Nombre de tâches (taskCount).
  • \({parallelTasksPerVM}\): nombre maximal de tâches pouvant être exécutées simultanément sur une VM.

    Cette valeur est déterminée par tous les critères suivants:

    • La valeur minimale est de 1 tâche.

    • La valeur maximale est la plus petite des 20 tâches et, si elle est définie, la valeur du champ parallèle maximal de tâches par tâche (parallelism).

    • Si le champ Nombre maximal de tâches parallèles par VM (taskCountPerNode) est défini, cette valeur est utilisée.

      Sinon, si taskCountPerNode n'est pas défini, Batch détermine une valeur en divisant le nombre total de ressources de calcul (en particulier les processeurs virtuels) par VM par la quantité requise pour chaque tâche:

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

      Cette formule a les valeurs suivantes:

      • \({vcpusPerVm}\): nombre total de processeurs virtuels par VM, déterminé par le type de machine des VM de votre tâche.

      • \({vcpusPerTask}\): nombre de processeurs virtuels par tâche, déterminé en convertissant les unités du champ vCPU par tâche (cpuMilli).

Options de création d'emploi

La section Créer et exécuter une tâche de base présente les principes de base, y compris comment définir un exécutable à l'aide d'un script ou d'une image de conteneur, et comment configurer des variables d'environnement prédéfinies et personnalisées.

Une fois que vous avez compris les principes de base de la création de tâches, envisagez de créer une tâche qui utilise une ou plusieurs des options de configuration supplémentaires suivantes:

  • Contrôler l'accès à une tâche:

  • Configurez des options supplémentaires pour une tâche:

    • Configurer la communication des tâches à l'aide d'une bibliothèque MPI explique comment configurer une tâche avec des tâches interdépendantes qui communiquent entre elles entre différentes VM à l'aide d'une bibliothèque MPI (Message Passing Interface). Un cas d'utilisation courant de l'IMPI est les charges de travail de calcul hautes performances (HPC, High Performance Computing) à couplage fort.

    • Personnalisez les ressources sur lesquelles un job s'exécute:

      • Définir les ressources de tâche à l'aide d'un modèle d'instance de VM explique comment spécifier un modèle de VM Compute Engine pour définir les ressources d'une tâche lorsque vous créez une tâche.

      • La section Utiliser des GPU pour une tâche explique comment définir une tâche utilisant une ou plusieurs unités de traitement graphique (GPU). Les cas d'utilisation courants de tâches utilisant des GPU incluent les charges de travail de traitement intensive des données ou les charges de travail de machine learning (ML).

      • Utiliser des volumes de stockage pour une tâche : explique comment définir une tâche pouvant accéder à un ou plusieurs volumes de stockage externes. Les options de stockage incluent des disques persistants nouveaux ou existants, de nouveaux disques SSD locaux, des buckets Cloud Storage existants et un système de fichiers réseau (NFS) existant tel qu'un partage de fichiers Filestore.

      • La page Présentation de l'environnement d'OS de VM indique quand et comment vous pouvez personnaliser l'environnement du système d'exploitation (OS) de VM pour une tâche, y compris l'image d'OS de VM et les disques de démarrage de la tâche.

    • Optimisez différents aspects d'une tâche:

      • Améliorez la surveillance et l'analyse:

      • La section Automatiser les nouvelles tentatives d'exécution des tâches explique comment relancer automatiquement les tâches d'une tâche après tous les échecs ou des échecs spécifiés. Les nouvelles tentatives automatiques peuvent contribuer à réduire les frictions de dépannage et la durée d'exécution globale requise pour les tâches qui rencontrent des erreurs temporaires. Par exemple, utilisez des tentatives automatiques pour un job exécuté sur des VM Spot. Cette approche offre des remises importantes, mais peut ne pas toujours être disponible et peut être préemptée à tout moment.

      • La section Cohéberger des VM pour réduire la latence explique comment réduire la latence réseau entre les VM d'une tâche en exigeant que les VM soient physiquement proches les unes des autres. Cet avantage en termes de performances peut être particulièrement utile pour les tâches qui ont des communications réseau fréquentes entre les VM, telles que les tâches qui communiquent à l'aide de bibliothèques MPI.

      • La section Assurer la disponibilité des ressources à l'aide des réservations de VM explique comment configurer une tâche pouvant s'exécuter sur des VM réservées. L'utilisation de VM réservées peut vous aider à réduire la durée de planification d'une tâche, à éviter les erreurs de disponibilité des ressources et à optimiser les coûts.

      • La section Utiliser le streaming d'images explique comment réduire le temps de démarrage des tâches en diffusant des images de conteneur à partir d'Artifact Registry.

  • Utilisez des services supplémentaires pour créer et exécuter des jobs:

Étapes suivantes