Compatibilité de Dataflow avec les GPU

Cette page fournit des informations générales sur le fonctionnement des GPU avec Dataflow.

Avant de commencer votre tâche de développement avec des GPU, consultez le workflow de développeur et les conseils relatifs à la création de pipelines à l'aide de GPU, comme décrit dans la section Développer avec des GPU.

Pour obtenir des informations et des exemples sur la façon d'activer les GPU dans vos tâches Cloud Dataflow, consultez les pages Utiliser les GPU et Traiter les images satellite Landsat avec des GPU. Pour obtenir des exemples supplémentaires, consultez les pages suivantes :

L'utilisation de GPU dans les tâches Dataflow vous permet d'accélérer certaines tâches de traitement de données. Les GPU peuvent effectuer certains calculs plus rapidement que les processeurs. Ces calculs sont généralement des algèbres linéaires ou numériques, souvent utilisés dans les cas d'utilisation du traitement d'image et du machine learning. L'ampleur de l'amélioration des performances varie en fonction du cas d'utilisation, du type de calcul et de la quantité de données traitées.

Conditions préalables à l'utilisation de GPU dans Dataflow

Dataflow exécute le code utilisateur dans des VM de nœud de calcul dans un conteneur Docker. Ces VM de nœud de calcul exécutent Container-Optimized OS. Pour que les tâches Dataflow puissent utiliser des GPU, les installations suivantes doivent être effectuées :

Tarifs

Les tâches utilisant des GPU sont facturées comme indiqué sur la page des tarifs de Dataflow.

Remarques

Spécifications de types de machines

Pour en savoir plus sur la compatibilité des types de machines avec chaque modèle de GPU, consultez la page Plates-formes de GPU. Les GPU compatibles avec les types de machines N1 sont également compatibles avec les types de machines N1 personnalisés.

Le type et le nombre de GPU définissent les restrictions de limites supérieures applicables au nombre de processeurs virtuels et à la quantité de mémoire disponibles sur les nœuds de calcul. Reportez-vous à la section Disponibilité pour consulter les restrictions correspondantes.

Si vous spécifiez un nombre plus élevé de processeurs ou une plus grande quantité de mémoire, vous devrez spécifier un nombre de GPU plus élevé.

Pour en savoir plus, consultez la page GPU sur Compute Engine.

GPU et parallélisme des nœuds de calcul

Pour les pipelines Python utilisant l'architecture Dataflow Runner v2, Dataflow lance un processus du SDK Apache Beam par cœur de VM. Chaque processus du SDK s'exécute dans son propre conteneur Docker et, à son tour, génère de nombreux threads, chacun traitant les données entrantes.

Les GPU utilisent plusieurs architectures de processus, et les GPU des nœuds de calcul Dataflow sont visibles par tous les processus et threads. Par conséquent, pour éviter toute surutilisation du GPU, vous devrez peut-être gérer l'accès aux GPU. Si vous utilisez TensorFlow, l'une des suggestions suivantes peut vous aider à éviter la surutilisation de la mémoire de GPU :

  • Configurez les nœuds de calcul Cloud Dataflow pour démarrer un seul processus Python conteneurisé, quel que soit le nombre de processeurs virtuels. Pour effectuer cette configuration, lorsque vous lancez votre tâche, utilisez les options de pipeline suivantes :

    • --experiments=no_use_multiple_sdk_containers
    • --number_of_worker_harness_threads

    Pour en savoir plus sur le nombre de threads à utiliser, consultez la page Réduire le nombre de threads.

  • Utilisez un type de machine avec un seul processeur virtuel.

Lorsque plusieurs processus TensorFlow utilisent le même GPU, vous devrez peut-être configurer chacun d'entre eux pour n'utiliser qu'une partie de la mémoire GPU. Cette configuration permet d'éviter que tous les processus ne surutilisent la mémoire du GPU. Comme cette configuration n'est pas simple, limitez le nombre de processus TensorFlow.

Qui peut en bénéficier ?

Pour plus d'informations sur les types de GPU disponibles et la configuration des VM de nœud de calcul, consultez la section Emplacements Dataflow.

Étape suivante