Définitions de tâche Amazon ECS pour les charges de travail de transcodage vidéo - Amazon Elastic Container Service

Définitions de tâche Amazon ECS pour les charges de travail de transcodage vidéo

Pour utiliser des charges de travail de transcodage vidéo sur Amazon ECS, enregistrez des instances Amazon EC2 VT1. Après avoir enregistré ces instances, vous pouvez exécuter des charges de travail de transcodage vidéo en direct et prérendues en tant que tâches sur Amazon ECS. Les instances Amazon EC2 VT1 utilisent des cartes de transcodage multimédia Xilinx U30 pour accélérer les charges de travail de transcodage vidéo en direct et prérendues.

Note

Pour obtenir des instructions sur l'exécution de charges de travail de transcodage vidéo dans des conteneurs autres qu'Amazon ECS, consultez la documentation Xilinx.

Considérations

Avant de commencer à déployer VT1 sur Amazon ECS, prenez en compte ce qui suit :

  • Vos clusters peuvent contenir une combinaison d'instances VT1 et non VT1.

  • Vous avez besoin d'une application Linux qui utilise des cartes de transcodage multimédia Xilinx U30 avec des codecs AVC (H.264) et HEVC (H.265) accélérés.

    Important

    Les applications qui utilisent d'autres codecs peuvent ne pas avoir de performances améliorées sur les instances VT1.

  • Une seule tâche de transcodage peut être exécutée sur une carte U30. Chaque carte est associée à deux appareils. Vous pouvez exécuter autant de tâches de transcodage que de cartes pour chacune de vos instances VT1.

  • Lorsque vous exécutez une tâche autonome ou créez un service, vous pouvez utiliser des attributs de type d'instance lors de la configuration des contraintes de placement des tâches. Cela garantit que la tâche est lancée sur l'instance de conteneur que vous spécifiez. Cela permet de vous assurer que vous utilisez efficacement vos ressources et que vos tâches pour vos charges de travail de transcodage vidéo se trouvent sur vos instances VT1. Pour de plus amples informations, consultez How Amazon ECS places tasks on container instances.

    Dans l'exemple suivant, une tâche est exécutée sur une instance vt1.3xlarge de votre cluster default.

    aws ecs run-task \ --cluster default \ --task-definition vt1-3xlarge-xffmpeg-processor \ --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == vt1.3xlarge"
  • Vous configurez un conteneur pour utiliser une carte U30 spécifique disponible sur l'instance de conteneur hôte. Vous pouvez effectuer cette opération en utilisant le paramètre linuxParameters et en spécifiant les détails de l'appareil. Pour de plus amples informations, consultez Exigences relatives à la définition de tâche.

Utilisation d'une AMI VT1

Vous avez deux options pour exécuter une AMI sur des instances de conteneur Amazon EC2 pour Amazon ECS. La première option consiste à utiliser l'AMI officielle Xilinx sur AWS Marketplace. La deuxième option consiste à créer votre propre AMI à partir de l'exemple du référentiel.

  • Xilinx propose des AMI sur AWS Marketplace.

  • Amazon ECS fournit un exemple de référentiel que vous pouvez utiliser pour créer une AMI pour les charges de travail de transcodage vidéo. Cette AMI est fournie avec les pilotes Xilinx U30. Vous pouvez trouver le référentiel qui contient des scripts Packer sur Github. Pour plus d'informations sur Packer, consultez la documentation Packer.

Exigences relatives à la définition de tâche

Pour exécuter des conteneurs de transcodage vidéo sur Amazon ECS, votre définition de tâche doit contenir une application de transcodage vidéo utilisant les codecs H.264/AVC et H.265/HEVC accélérés. Vous pouvez créer une image de conteneur en suivant les étapes de Xilinx Github.

La définition de tâche doit être spécifique au type d'instance. Les types d'instance sont 3xlarge, 6xlarge et 24xlarge. Vous devez configurer un conteneur pour utiliser des appareils Xilinx U30 spécifiques disponibles sur l'instance de conteneur hôte. Vous pouvez effectuer cette opération à l'aide du paramètre linuxParameters. Le tableau suivant détaille les cartes et les SoC de périphériques spécifiques à chaque type d'instance.

Type d'instance vCPU RAM (Gio) Cartes accélératrices U30 Appareils SoC XCU30 adressables Chemins de l'appareil
vt1.3xlarge 12 24 1 2 /dev/dri/renderD128,/dev/dri/renderD129
vt1.6xlarge 24 48 2 4 /dev/dri/renderD128,/dev/dri/renderD129,/dev/dri/renderD130,/dev/dri/renderD131
vt1.24xlarge 96 182 8 16 /dev/dri/renderD128,/dev/dri/renderD129,/dev/dri/renderD130,/dev/dri/renderD131,/dev/dri/renderD132,/dev/dri/renderD133,/dev/dri/renderD134,/dev/dri/renderD135,/dev/dri/renderD136,/dev/dri/renderD137,/dev/dri/renderD138,/dev/dri/renderD139,/dev/dri/renderD140,/dev/dri/renderD141,/dev/dri/renderD142,/dev/dri/renderD143
Important

Si la définition de tâche répertorie les périphériques dont l'instance EC2 ne dispose pas, la tâche ne s'exécute pas. Lorsque la tâche échoue, le message d'erreur suivant s'affiche dans stoppedReason : CannotStartContainerError: Error response from daemon: error gathering device information while adding custom device "/dev/dri/renderD130": no such file or directory.