View a markdown version of this page

Qu'est-ce qu'une charge de travail Deadline Cloud ? - Deadline Cloud

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Qu'est-ce qu'une charge de travail Deadline Cloud ?

Avec AWS Deadline Cloud, vous pouvez soumettre des tâches pour exécuter vos candidatures dans le cloud et traiter des données pour la production de contenu ou d'informations importantes pour votre entreprise. Deadline Cloud utilise Open Job Description (OpenJD) comme syntaxe pour les modèles de tâches, une spécification conçue pour les besoins des pipelines de calcul visuels mais applicable à de nombreux autres cas d'utilisation. Parmi les exemples de charges de travail, citons le rendu graphique par ordinateur, la simulation physique et la photogrammétrie.

Les charges de travail vont de simples lots de tâches que les utilisateurs soumettent à une file d'attente à l'aide de l'interface de ligne de commande ou d'une interface graphique générée automatiquement, à des plug-ins de soumission intégrés qui génèrent dynamiquement un ensemble de tâches pour une charge de travail définie par l'application.

Comment les charges de travail découlent de la production

Pour comprendre les charges de travail dans les contextes de production et comment les prendre en charge avec Deadline Cloud, réfléchissez à leur mode d'origine. La production peut impliquer la création d'effets visuels, d'animations, de jeux, d'images de catalogues de produits, de reconstructions 3D pour la modélisation des informations du bâtiment (BIM), etc. Ce contenu est généralement créé par une équipe de spécialistes artistiques ou techniques exécutant diverses applications logicielles et des scripts personnalisés. Les membres de l'équipe transmettent des données entre eux à l'aide d'un pipeline de production. De nombreuses tâches effectuées par le pipeline impliquent des calculs intensifs qui prendraient des jours s'ils étaient exécutés sur le poste de travail de l'utilisateur.

Voici quelques exemples de tâches liées à ces pipelines de production :

  • Utilisation d'une application de photogrammétrie pour traiter des photographies prises sur un plateau de tournage afin de reconstruire un maillage numérique texturé.

  • Exécution d'une simulation de particules dans une scène 3D pour ajouter des couches de détails à un effet visuel d'explosion pour une émission de télévision.

  • Intégrer les données d'un niveau de jeu sous la forme requise pour la publication externe et appliquer les paramètres d'optimisation et de compression.

  • Rendu d'un ensemble d'images pour un catalogue de produits, y compris les variations de couleur, d'arrière-plan et d'éclairage.

  • Exécution d'un script personnalisé sur un modèle 3D pour appliquer un look personnalisé et approuvé par un réalisateur.

Ces tâches impliquent de nombreux paramètres à ajuster pour obtenir un résultat artistique ou pour affiner la qualité de sortie. Il existe souvent une interface graphique permettant de sélectionner ces valeurs de paramètres à l'aide d'un bouton ou d'un menu pour exécuter le processus localement dans l'application. Lorsqu'un utilisateur exécute le processus, l'application et éventuellement l'ordinateur hôte lui-même ne peuvent pas être utilisées pour effectuer d'autres opérations car elles utilisent l'état de l'application en mémoire et peuvent consommer toutes les ressources du processeur et de la mémoire de l'ordinateur hôte.

Dans de nombreux cas, le processus est rapide. Au cours de la production, la vitesse du processus ralentit lorsque les exigences de qualité et de complexité augmentent. Un test de personnage qui a duré 30 secondes pendant le développement peut facilement se transformer en 3 heures lorsqu'il est appliqué au personnage de production final. Grâce à cette progression, une charge de travail qui a débuté dans une interface graphique peut devenir trop importante pour être prise en charge. Le porter sur Deadline Cloud peut améliorer la productivité des utilisateurs qui exécutent ces processus, car ils reprennent le contrôle total de leur poste de travail et peuvent suivre les différentes itérations depuis le moniteur Deadline Cloud.

Il existe deux niveaux de support à rechercher lors de la mise en place d'un support pour une charge de travail dans Deadline Cloud :

  • Décharger la charge de travail de la station de travail de l'utilisateur vers une ferme Deadline Cloud sans parallélisme ni accélération. Cette approche peut sous-utiliser les ressources informatiques disponibles dans la ferme, mais la possibilité de transférer les opérations longues vers un système de traitement par lots permet aux utilisateurs d'en faire plus avec leur propre poste de travail.

  • Optimisation du parallélisme de la charge de travail afin qu'elle utilise l'échelle horizontale de la ferme Deadline Cloud pour terminer rapidement.

Il est parfois évident de savoir comment exécuter une charge de travail en parallèle. Par exemple, chaque image d'un rendu d'infographie peut être réalisée indépendamment. Il est toutefois important de ne pas rester bloqué sur ce parallélisme. Sachez plutôt que le transfert d'une charge de travail de longue durée vers Deadline Cloud présente des avantages considérables, même lorsqu'il n'existe aucun moyen évident de répartir la charge de travail.

Les ingrédients d'une charge de travail

Pour spécifier une charge de travail Deadline Cloud, implémentez un ensemble de tâches que les utilisateurs soumettent à une file d'attente à l'aide de l'interface de ligne de commande Deadline Cloud. Lors de la création d'un ensemble de tâches, une grande partie du travail consiste à rédiger le modèle de poste, mais il y a d'autres facteurs, tels que la manière de fournir les candidatures requises par la charge de travail. Voici les éléments essentiels à prendre en compte lors de la définition d'une charge de travail pour Deadline Cloud :

  • L'application à exécuter. La tâche doit être capable de lancer les processus de candidature et nécessite donc une installation de l'application disponible ainsi que toute licence utilisée par l'application, telle que l'accès à un serveur de licences flottant. L'installation et les licences font généralement partie de la configuration de la batterie de serveurs et ne sont pas intégrées au bundle de tâches lui-même.

  • Définitions des paramètres de tâche. L'expérience utilisateur lors de la soumission de la tâche est grandement affectée par les paramètres qu'elle fournit. Les exemples de paramètres incluent les fichiers de données, les répertoires et la configuration de l'application.

  • Flux de données de fichiers. Lorsqu'une tâche est exécutée, elle lit les entrées des fichiers fournis par l'utilisateur, puis écrit sa sortie sous forme de nouveaux fichiers. Pour utiliser les fonctions de pièces jointes et de mappage de chemins de tâche, la tâche doit spécifier les chemins des répertoires ou des fichiers spécifiques pour ces entrées et sorties.

  • Le script par étapes. Le script d'étape exécute le fichier binaire de l'application avec les options de ligne de commande appropriées pour appliquer les paramètres de tâche fournis. Il gère également des détails tels que le mappage des chemins si les fichiers de données de charge de travail incluent des références de chemin absolues plutôt que relatives.

Portabilité de la charge

Une charge de travail est portable lorsqu'elle peut être exécutée sur plusieurs systèmes différents sans la modifier à chaque fois que vous soumettez une tâche. Par exemple, il peut s'exécuter sur différentes fermes de rendu sur lesquelles différents systèmes de fichiers partagés sont montés, ou sur différents systèmes d'exploitation tels que Linux ouWindows. Lorsque vous implémentez un ensemble de tâches portable, il est plus facile pour les utilisateurs d'exécuter la tâche sur leur parc de serveurs spécifique ou de l'adapter à d'autres cas d'utilisation.

Voici quelques moyens de rendre votre offre d'emploi portable.

  • Spécifiez entièrement les fichiers de données d'entrée nécessaires à une charge de travail, à l'aide des paramètres de la PATH tâche et des références d'actifs du lot de tâches. Cette approche permet de transférer la tâche vers les parcs de serveurs basés sur des systèmes de fichiers partagés et vers les parcs de serveurs qui font des copies des données d'entrée, comme la fonctionnalité de pièces jointes aux tâches de Deadline Cloud.

  • Rendez les références de chemin de fichier pour les fichiers d'entrée de la tâche relocalisables et utilisables sur différents systèmes d'exploitation. Par exemple, lorsque les utilisateurs soumettent des tâches depuis des Windows postes de travail pour les exécuter sur une Linux flotte.

    • Utilisez des références de chemin de fichier relatives. Ainsi, si le répertoire qui les contient est déplacé vers un autre emplacement, les références sont toujours résolues. Certaines applications, comme Blender, permettent de choisir entre des chemins relatifs et absolus.

    • Si vous ne pouvez pas utiliser de chemins relatifs, prenez en charge les métadonnées de mappage de chemins OpenJD et traduisez les chemins absolus en fonction de la manière dont Deadline Cloud fournit les fichiers à la tâche.

  • Implémentez des commandes dans une tâche à l'aide de scripts portables. Python et bash sont deux exemples de langages de script qui peuvent être utilisés de cette façon. Vous devriez envisager de les fournir tous les deux sur tous les serveurs hôtes de vos flottes.

    • Utilisez le binaire de l'interpréteur de script, comme python orbash, avec le nom du fichier de script comme argument. Cette approche fonctionne sur tous les systèmes d'exploitationWindows, y compris, par rapport à l'utilisation d'un fichier de script dont le bit d'exécution est activéLinux.

    • Écrivez des scripts bash portables en appliquant les pratiques suivantes :

      • Développez les paramètres de chemin du modèle entre guillemets simples pour gérer les chemins comportant des espaces et des séparateurs de Windows chemin.

      • Lors de l'exécutionWindows, surveillez les problèmes liés à la traduction automatique des chemins de MinGW. Par exemple, il transforme une AWS CLI commande similaire aws logs tail /aws/deadline/... en une commande similaire à un journal aws logs tail "C:/Program Files/Git/aws/deadline/..." et ne le suivra pas correctement. Définissez la variable MSYS_NO_PATHCONV=1 pour désactiver ce comportement.

      • Dans la plupart des cas, le même code fonctionne sur tous les systèmes d'exploitation. Lorsque le code doit être différent, utilisez une if/else construction pour gérer les cas.

        if [[ "$(uname)" == MINGW* || "$(uname -s)" == MSYS_NT* ]]; then : # Code for Windows elif [[ "$(uname)" == Darwin ]]; then : # Code for MacOS else : # Code for Linux and other operating systems fi
    • Vous pouvez écrire des scripts Python portables pathlib pour gérer les différences de chemin du système de fichiers et éviter les fonctionnalités spécifiques à l'exploitation. La documentation Python inclut des annotations à cet effet, par exemple dans la documentation de la bibliothèque de signaux. Linux-la prise en charge de fonctionnalités spécifiques est marquée comme « Disponibilité : Linux ».

  • Utilisez les paramètres de la tâche pour spécifier les exigences de l'application. Utilisez des conventions cohérentes que l'administrateur de la ferme peut appliquer dans les environnements de files d'attente.

    • Par exemple, vous pouvez utiliser les CondaPackages and/or RezPackages paramètres de votre tâche, avec une valeur de paramètre par défaut qui répertorie les noms des packages d'applications et les versions requises par la tâche. Vous pouvez ensuite utiliser l'un des exemples d'environnements de file d'attente Conda ou Rez pour fournir un environnement virtuel pour la tâche.