Charges de travail des flottes
IBM Cloud® Code Engine est une plateforme sans serveur entièrement gérée qui exécute vos charges de travail conteneurisées, y compris les charges de travail de la flotte. Apprenez à gérer des flottes sur Code Engine.
Qu'est-ce qu'une flotte?
Une flotte, également appelée flotte sans serveur, est un composant informatique Code Engine qui exécute une ou plusieurs instances de code utilisateur en parallèle pour compléter une grande file d'attente de tâches à forte intensité de calcul. Les flottes peuvent se connecter à des nuages privés virtuels pour échanger en toute sécurité les données des utilisateurs lorsqu'ils se connectent à d'autres services. Contrairement aux travaux par lots, les flottes permettent une mise en file d'attente dynamique des tâches et l'isolation d'un seul locataire, et sont compatibles avec les sites vCPU et les GPU.
Comment fonctionnent les flottes?
Les flottes se composent de trois éléments principaux : les tâches, les instances et les nœuds de travail. Une tâche unique est réalisée par une seule instance de code utilisateur, qui s'exécute sur un nœud de travail. Chaque nœud de travailleur peut exécuter plusieurs tâches simultanément, ce qui permet d'effectuer de nombreuses tâches en parallèle. Lorsqu'une tâche est terminée, une nouvelle instance s'installe sur le nœud de travailleur pour effectuer la prochaine tâche disponible dans la file d'attente. Ce processus se répète sur chaque nœud de travailleur jusqu'à ce que toutes les tâches soient terminées, moment où les nœuds de travailleur sont automatiquement déprovisionnés.
En quoi les flottes sont-elles différentes des emplois?
Contrairement aux travaux par lots, qui sont principalement destinés à des tâches de petite ou moyenne envergure, les flottes sont conçues pour réaliser des tâches de grande envergure nécessitant de nombreux calculs. Le tableau ci-dessous présente les différences spécifiques entre les emplois et les flottes.
| Caractéristique | Flottes | Travaux |
|---|---|---|
| Isolement | Service exclusif | Multi-locataire |
| Taille de la tâche | Tâches importantes | Tâches de petite à moyenne envergure |
| Implémentation | File d'attente dynamique | Tableau statique |
| Configuration de la machine | Contrôle total du profil de la machine | Pas de contrôle sur le profil de la machine |
| Connexion VPC | Connexion native à un VPC existant | Nécessite un chemin privé |
Quelles sont les principales caractéristiques de la collaboration avec les flottes Code Engine?
Consultez les rubriques suivantes pour en savoir plus sur la collaboration avec les flottes à l'adresse Code Engine.
Mise à l'échelle automatique
Avec une flotte, vous pouvez tirer parti du parallélisme à grande échelle pour réaliser des tâches de calcul intensives. Code Engine adapte automatiquement les nœuds de travail de votre flotte pour répondre aux besoins en ressources de la manière la plus efficace possible. Vous pouvez laisser Code Engine déterminer les profils des travailleurs qui sont déployés, ou vous pouvez choisir un profil spécifique, tel qu'un type de GPU. Dans les deux cas, Code Engine adapte automatiquement le nombre de travailleurs pour obtenir le niveau d'efficacité le plus élevé.
Le nombre de travailleurs déployés est basé sur le nombre de tâches à accomplir, les ressources requises pour une instance de votre code et le nombre maximum d'instances simultanées que vous souhaitez exécuter à la fois. En ajustant ces paramètres, vous pouvez faire évoluer votre flotte pour qu'elle accomplisse aussi peu qu'une tâche ou plusieurs millions de tâches.
Par exemple, imaginez que vous ayez quatre tâches à accomplir. Chaque instance de code nécessaire à la réalisation d'une tâche requiert 1 vCPU and 2 GB memory, soit un besoin total de 4 vCPU and 8GB memory. Si vous
fixez le nombre maximum d'instances simultanées à 2, Code Engine peut déployer un nœud de travailleur avec 2 vCPU and 4 GB memory pour exécuter 2 instances en même temps. Si vous fixez le nombre maximal d'instances simultanées
à 4, Code Engine peut déployer deux nœuds de travail identiques pour exécuter les quatre instances en même temps sur les deux nœuds de travail. Dans le second scénario, la flotte se termine plus rapidement mais nécessite le déploiement d'un
plus grand nombre de travailleurs. Gardez à l'esprit qu'il existe un nombre infini de combinaisons pour le déploiement automatique des nœuds de travail et que des nœuds de travail de différents profils peuvent être déployés.
La mise à l'échelle automatique n'est pas disponible pour les GPU. Pour déployer des GPU pour une flotte, vous devez spécifier le type de travailleur GPU à déployer.
Spécification des tâches et des instances
Lors du déploiement d'une flotte, les utilisateurs peuvent spécifier le nombre de tâches à accomplir, le nombre d'instances à exécuter en même temps, l'ordre dans lequel les tâches sont accomplies. Les flottes peuvent travailler sur de nombreuses tâches en parallèle en démarrant plusieurs instances simultanément. Toutes les instances sont créées avec la même quantité de vCPU et de mémoire que dans les spécifications de la flotte. En outre, les utilisateurs peuvent créer un fichier de spécification des tâches afin de fournir des commandes et des arguments spécifiques pour chaque tâche ou de créer des index de tâches personnalisés.
Stockage des tâches dans le COS
Vous pouvez utiliser un seau COS pour fournir les tâches de votre flotte en spécifiant un magasin de données persistant et un sous-chemin de seau lorsque vous créez la flotte. Chaque objet du seau COS représente une seule tâche.
Isolement
Contrairement aux travaux par lots, les flottes permettent d'isoler un seul locataire. Les travailleurs de votre flotte ne sont pas partagés avec d'autres utilisateurs.
Nombre de nouvelles tentatives
Chaque instance de la flotte se déroule jusqu'à son terme. Toutefois, en cas d'erreur, Code Engine redémarre l'instance. Vous pouvez limiter le nombre maximal de tentatives afin d'éviter de redémarrer les instances qui ont échoué.
Statut
Une flotte est à l'état Running lorsqu'au moins un nœud de travailleur est approvisionné. Lorsque la flotte ne fonctionne plus, elle se trouve dans l'état Succeeded si toutes les tâches se sont terminées avec succès,
ou Failed si une ou plusieurs tâches ont échoué. Vous pouvez également annuler une flotte.
Pour plus d'informations, voir Comprendre l'état de votre flotte.
Profil du travailleur
Vous pouvez choisir le profil du Fleet Worker. Si vous ne spécifiez pas de profil, Code Engine choisira un profil pour vous.
Code Engine prennent en charge les familles de profils suivantes :
| Profil d'instance |
|---|
| bx2-2x8 |
| bx2-4x16 |
| bx2-8x32 |
| bx2-16x64 |
| bx2-32x128 |
| bx2-48x192 |
| bx2-64x256 |
| bx2-96x384 |
| bx2-128x512 |
| bx2a-2x8 |
| bx2a-4x16 |
| bx2a-8x32 |
| bx2a-16x64 |
| bx2a-32x128 |
| bx2a-48x192 |
| bx2a-64x256 |
| bx2a-96x384 |
| bx2a-128x512 |
| bx2a-228x912 |
| bx2d-2x8 |
| bx2d-8x32 |
| bx2d-16x64 |
| bx3d-2x10 |
| bx3d-4x20 |
| bx3d-8x40 |
| bx3d-16x80 |
| bx3d-24x120 |
| bx3d-32x160 |
| bx3d-48x240 |
| bx3d-64x320 |
| Profil d'instance |
|---|
| cx2-2x4 |
| cx2-4x8 |
| cx2-8x16 |
| cx2-16x32 |
| cx2-32x64 |
| cx2-48x96 |
| cx2-64x128 |
| cx2-96x192 |
| cx2-128x256 |
| cx3d-2x5 |
| cx3d-4x10 |
| cx3d-8x20 |
| cx3d-16x40 |
| cx3d-24x60 |
| cx3d-32x80 |
| cx3d-48x120 |
| cx3d-64x160 |
| Profil d'instance |
|---|
| mx2-2x16 |
| mx2-4x32 |
| mx2-8x64 |
| mx2-16x128 |
| mx2-32x256 |
| mx2-48x384 |
| mx2-64x512 |
| mx2-96x768 |
| mx2-128x1024 |
| mx2d-16x128 |
| mx2d-64x512 |
| mx2d-96x768 |
| mx3d-2x20 |
| mx3d-4x40 |
| mx3d-8x16 |
| mx3d-16x160 |
| mx3d-24x240 |
| mx3d-32x320 |
| mx3d-48x480 |
| mx3d-64x640 |
| Profil d'instance |
|---|
| gx3-16x80x1l4 |
| gx3-32x160x2l4 |
| gx3-64x320x4l4 |
| gx3-24x120x1l40s |
| gx3-48x240x2l40s |
| gx2-8x64x1v100 |
| gx2-16x128x1v100 |
| gx2-16x128x2v100 |
| gx2-32x256x2v100 |
| gx3d-24x120x1a100p |
| gx3d-48x240x2a100p |
| gx3d-160x1792x8h100 |
| gx3d-160x1792x8h200 |
| gx4d-232x3840x8b300 |
| Profil d'instance |
|---|
| nxf-2x1 |
| nxf-2x2 |
| bxf-2x8 |
| bxf-4x16 |
| bxf-8x32 |
| bxf-16x64 |
| bxf-24x96 |
| bxf-32x128 |
| bxf-48x192 |
| bxf-64x256 |
| cxf-2x4 |
| cxf-4x8 |
| cxf-8x16 |
| cxf-16x32 |
| cxf-24x48 |
| cxf-32x64 |
| cxf-48x96 |
| cxf-64x128 |
| mxf-2x16 |
| mxf-4x32 |
| mxf-8x64 |
| mxf-16x128 |
| mxf-24x192 |
| mxf-32x256 |
| mxf-48x384 |
| mxf-64x512 |
Certains profils peuvent ne pas être disponibles dans toutes les zones du réseau VPC. Vous pouvez utiliser la commande CLI suivante pour répertorier les profils de travailleurs pris en charge par Code Engine serverless fleets dans une région.
ibmcloud ce fleet worker profiles
- Si vous souhaitez connaître la disponibilité et la capacité zonale de certains profils, tels que H100 et L40s, ouvrez un dossier d'assistance et sélectionnez "Virtual Private Cloud (VPC)" comme sujet.
- Si vous avez besoin d'un certain profil VPC qui n'est pas pris en charge par les flottes aujourd'hui, ouvrez un dossier d'assistance et sélectionnez " Code Engine " comme sujet.
Comment puis-je commencer à travailler avec des flottes?
Pour créer et exécuter une flotte simple Code Engine avec l'image d'exemple icr.io/codeengine/helloworld, voir Exécuter votre première flotte Code Engine.