Présentation de la création et de l'exécution de jobs

Ce document décrit le processus d'exécution et les options de création de jobs. Les jobs 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 d'un job

Pour utiliser Batch, créez une tâche qui spécifie votre charge de travail et ses exigences, puis Batch l'exécute automatiquement.

Le fonctionnement détaillé de la création et de l'exécution d'une tâche est décrit dans les sections suivantes:

Cycle de vie d'un job

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 de la 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:une fois la tâche créée, 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'un job créé ou de l'une de ses tâches pour voir l'état actuel. Une fois une tâche en cours d'exécution ou terminée, vous pouvez également la surveiller et l'analyser à l'aide de journaux. Si une tâche échoue, vous pouvez résoudre le problème à l'aide des messages d'erreur, des événements d'état ou des journaux afin de diagnostiquer le problème avant de la recréer.
  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'une tâche restent disponibles dans Batch jusqu'à ce que vous ou Google Cloud les supprimiez. Google Cloud supprime automatiquement une tâche 60 jours après sa fin. Avant cela, vous pouvez supprimer le job vous-même ou, si vous avez besoin de conserver les informations, vous pouvez exporter le job avant qu'il ne soit supprimé.

Une fois que vous avez créé une tâche, elle passe par les états suivants:

  1. En file d'attente (QUEUED) : la requête de tâche a été acceptée et attend 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 en amont aient été évaluées.
  2. Planifiée (SCHEDULED) : la tâche a été sélectionnée dans la file d'attente pour son lancement et les ressources sont en cours d'allocation.
  3. En cours d'exécution (RUNNING) : les ressources de la tâche 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 attend qu'une VM s'exécute.
    2. Attribué (ASSIGNED) : la tâche dispose d'une VM sur laquelle s'exécuter.
    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éussite (SUCCEEDED) : la tâche a réussi, car chacun de ses exécutables a réussi (renvoyé un code de sortie de zéro) ou a été marqué comme non critique à l'aide du champ Ignorer l'état de sortie (ignoreExitStatus).
      • Échec (FAILED): la tâche a échoué car au moins un de ses exécutables critiques a échoué (renvoyé un code de sortie différent de zéro).
  4. Une tâche se termine dans l'un des états suivants:

    • Réussite (SUCCEEDED) : toutes les tâches de la tâche ont bien été effectuées.
    • Échec (FAILED): Au moins une tâche du job 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. Les exemples de tâches de la documentation Batch, qui sont généralement très petits et n'utilisent que peu de ressources, peuvent s'exécuter en seulement quelques minutes.

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

  • Disponibilité des ressources de job:disponibilité des ressources requises pour le job 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. Lorsque cela se produit, la tâche échoue et génère une erreur de disponibilité de zone.

    Ensuite, une tâche est plus susceptible d'être retardée ou d'échouer si l'une des 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 lorsque vous avez besoin de ressources moins nombreuses et plus courantes, et ne l'empêchez pas de s'exécuter dans les zones d'une région.

    Pour plus d'informations sur les ressources d'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 une tâche par lot et ses ressources, consultez la page Emplacements.

  • Job priority (Priorité de la tâche) : priorité d'une tâche par rapport aux priorités des autres tâches de 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 aider une tâche à s'exécuter plus tôt que les tâches de priorité inférieure dans 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 fixés 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 et afficher une erreur associée.

    Vous pouvez éviter les retards et les erreurs dans votre tâche en créant des tâches qui respectent toutes les limites applicables et en veillant à ce 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 de ses ressources.

Planification des tâches

Lorsqu'une tâche s'exécute, ses tâches sont planifiées en fonction du champ de stratégie 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 les ressources sont disponibles et peuvent s'exécuter en parallèle. Le nombre de tâches exécutées à la fois dépend du nombre de tâches parallèles par VM autorisées par les ressources de la tâche et d'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 croissant des index.

Ressources du job

Chaque tâche par lot s'exécute sur un groupe d'instances géré (MIG) régional, c'est-à-dire un groupe d'une ou plusieurs instances de machines virtuelles (VM) Compute Engine correspondantes, situées chacune dans l'une des zones incluses. Chaque VM dispose d'un matériel dédié aux cœurs de processeur (en particulier aux 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 du système d'exploitation (OS) et des instructions pour l'exécution de votre tâche.

Lors de l'exécution d'une tâche, Batch crée et supprime automatiquement les ressources conformes à vos spécifications. Lorsque vous créez une tâche, vous configurez ses ressources en spécifiant les éléments suivants:

  • Vous devez spécifier les ressources de calcul (vCPU, mémoire et, le cas échéant) de l'espace de stockage sur disque de démarrage supplémentaire, nécessaires à l'exécution de chaque tâche, 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.

  • 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 des 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 selon les 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 comporte 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 s'attend à ce qu'il soit 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 des VM simultanées par tâche.
  • \({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 s'exécuter simultanément sur une VM.

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

    • La valeur minimale est 1 tâche.

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

    • Si le champ 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 en la quantité requise pour chaque tâche:

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

      Cette formule comporte les valeurs suivantes:

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

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

Options de création de jobs

La page Créer et exécuter une tâche de base décrit les principes de base. Par exemple, vous expliquez 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:

    • La page 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 sur différentes VM à l'aide d'une bibliothèque MPI (Message Passing Interface). Un cas d'utilisation courant de MPI concerne les charges de travail de calcul hautes performances (HPC, High Performance Computing) à couplage fort.

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

      • La section Définir des 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 la créez.

      • La section Utiliser des GPU pour une tâche explique comment définir une tâche qui utilise un ou plusieurs processeurs graphiques (GPU). Les cas d'utilisation courants des tâches qui utilisent des GPU incluent les charges de travail de traitement de données intensives ou de machine learning (ML).

      • La section 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 en réseau (NFS) existant tel qu'un partage de fichiers Filestore.

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

    • Optimiser divers aspects d'une mission:

      • 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 certains échecs spécifiques. L'automatisation des nouvelles tentatives peut contribuer à réduire les frictions lors du dépannage et la durée d'exécution globale requise pour les tâches qui rencontrent des erreurs temporaires. Par exemple, mettez en place des tentatives automatiques pour une tâche exécutée sur des VM Spot. Cela permet de bénéficier de 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 communiquent fréquemment sur le réseau entre les VM, telles que les tâches qui communiquent à l'aide de bibliothèques MPI.

      • La section Vérifier 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 le temps de planification d'un job, à éviter les erreurs de disponibilité des ressources et à optimiser les coûts.

      • L'article Utiliser le streaming d'images explique comment accélérer le démarrage des tâches en diffusant des images de conteneurs en streaming à partir d'Artifact Registry.

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

Étapes suivantes