HyperAI
Back to Headlines

Polars GPU Engine : Comment Traiter des Données Supérieures à la Capacité de la VRAM

il y a 3 jours

Comment Travailler avec des Données Excédant la VRAM dans le Moteur GPU de Polars Dans des domaines exigeants tels que la finance quantitative, le trading algorithmique et la détection de fraude, les professionnels des données doivent souvent traiter des centaines de gigaoctets (Go) pour prendre des décisions rapides et éclairées. Polars, l'une des bibliothèques de traitement de données qui connaît la plus forte croissance, répond à ce besoin avec un moteur GPU alimenté par NVIDIA cuDF, qui accélère les requêtes liées aux calculs, fréquentes dans ces secteurs. Cependant, un défi courant lorsqu'on travaille avec des GPUs est que leur mémoire graphique dédiée (VRAM) est généralement plus petite que la mémoire système (RAM). Cela pose des problèmes lorsqu'on utilise le moteur GPU pour gérer des jeux de données très volumineux. Ce post explore deux options dans le moteur GPU de Polars pour surmonter cette contrainte. Ces stratégies permettent de traiter des données plus grandes que la VRAM disponible tout en bénéficiant de l'accélération GPU : Option 1 : Unified Virtual Memory (UVM) pour la Flexibilité Mono-GPU Lorsque la taille de votre jeu de données dépasse la VRAM de votre GPU, vous pouvez utiliser la technologie UVM de NVIDIA. UVM crée une mémoire unifiée entre la RAM système (mémoire hôte) et la VRAM GPU (mémoire périphérique). Cela permet au moteur GPU de Polars de faire déborder les données dans la RAM système lorsque la VRAM est pleine, évitant ainsi les erreurs de mémoire insuffisante et vous permettant de travailler avec des ensembles de données plus grands que la VRAM disponible. Lorsque le GPU a besoin d'accéder à des données actuellement en RAM système, celles-ci sont automatiquement transférées en VRAM pour être traitées. Cette approche est idéale lorsque vous travaillez avec un seul GPU et avez besoin de flexibilité pour gérer des ensembles de données légèrement supérieurs à la VRAM disponible. Bien que cela offre une expérience fluidique avec presque aucune modification de code, il peut y avoir un surcoût en performances lié au transfert de données entre la RAM système et la VRAM. Cependant, en utilisant des configurations intelligentes via le RAPIDS Memory Manager (RMM)—une bibliothèque qui offre un contrôle précis sur l'allocation de la mémoire GPU—ce coût en performances peut être significativement réduit. Pour en savoir plus sur le fonctionnement de l'UVM, ses performances et comment l'optimiser pour vos besoins spécifiques, consultez Introducing UVM for Larger than VRAM Data on the Polars GPU Engine. Option 2 : Exécution Streaming Multi-GPU pour des Performances à l'Échelle Terabyte Pour les utilisateurs confrontés à des ensembles de données de plusieurs centaines de Go à quelques téraoctets (To), le moteur GPU de Polars propose désormais une configuration d'exécution streaming multi-GPU expérimentale. Contrairement à l'exécution en mémoire standard où les données sont traitées en une seule partition, l'exécuteur streaming introduit des capacités de partitionnement de données et de traitement parallèle conçues pour distribuer les charges de travail sur plusieurs GPUs. À son cœur, cet exécuteur streaming fonctionne en prenant le graphe d'internal representation (IR) optimisé produit par Polars et en le réécrivant pour une exécution par lots. Le graphe résultant est ensuite partitionné en fonction de la taille des données et du nombre d'unités disponibles. L'exécuteur streaming utilise un modèle d'exécution basé sur des tâches, où chaque partition est traitée indépendamment, permettant ainsi le parallélisme. Comparaison : - Exécution en mémoire précédente : Toutes les données sont chargées en une seule fois en VRAM. - Nouvelle exécution streaming : Les données sont partitionnées et traitées par lots, permettant un traitement parallèle sur plusieurs GPUs. L'exécuteur streaming supporte l'exécution mono-GPU via le planificateur synchrone de Dask et l'exécution multi-GPU via le planificateur distribué de Dask. Plusieurs paramètres sont disponibles pour contrôler les stratégies d'assemblage et les tailles de partition. Les tests menés par l'équipe ont montré des performances solides sur le benchmark PDS-H à l'échelle de 3 To, traitant les 22 requêtes en quelques secondes. Pour essayer l'exécution streaming multi-GPU sur vos propres ensembles de données, consultez le notebook d'exemple. Pour une plongée plus approfondie sur le fonctionnement de l'exécution streaming dans le moteur GPU de Polars, visionnez la session [Scaling DataFrames with Polars] lors de la conférence NVIDIA GTC Paris. Choix de la Meilleure Approche Les deux options—UVM et exécution streaming multi-GPU—offrent des moyens puissants de gérer des ensembles de données plus grands que la VRAM de votre GPU dans le moteur GPU de Polars. Le meilleur choix dépend de vos besoins spécifiques. L'UVM est recommandée si vous travaillez principalement avec un seul GPU et avez besoin de flexibilité pour traiter des ensembles de données modérément plus grands que la VRAM. L'exécution streaming multi-GPU est idéale pour des ensembles de données de plusieurs centaines de Go à quelques To, offrant des performances à grande échelle. Pour plus de détails sur ces configurations, consultez le Polars User Guide. Évaluation et Projet Le moteur GPU de Polars, grâce à ses fonctionnalités innovantes comme l'UVM et l'exécution streaming multi-GPU, devient une solution cruciale pour les professionnels des données qui gèrent des ensembles de données massifs. Des tests internes montrent que ces options peuvent réellement transformer la manière dont les grandes quantités de données sont traitées, offrant des gain de temps significatifs. Polars, soutenu par NVIDIA, continue de repousser les limites de l'analyse des données à l'ère de l'intelligence artificielle. Ce projet, mené par des experts en data science et en GPU, témoigne de l'engagement de Polars à fournir des outils performants et accessibles à tous. Son développement rapide et sa communauté active en font une référence incontournable dans le domaine du traitement de données en haute performance.

Related Links