3 points par GN⁺ 2025-03-12 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • La visualisation de données scientifiques est devenue un goulot d’étranglement majeur en raison des données volumineuses et de grande dimension, ainsi que des besoins d’analyse en temps réel ; fastplotlib est une bibliothèque Python qui cherche à le réduire grâce au tracé accéléré par GPU
  • Avec un rendu basé sur WGPU, elle prend en charge l’exploration de grands volumes de données, le prototypage rapide, la conception d’algorithmes et la création de systèmes d’acquisition en temps réel pour l’instrumentation
  • Elle adopte une API centrée sur les tableaux, permettant de modifier dynamiquement, même après le tracé initial, des propriétés graphiques comme les couleurs, les colormaps ou les données via une indexation à la NumPy
  • Un système d’événements basé sur des callbacks permet de définir des interactions utilisateur comme les clics ; dans l’exemple, le flux consiste à trouver le cercle le plus proche de la position cliquée et à en changer la couleur
  • Le rendu est abstrait au-dessus de pygfx et cible Vulkan, Metal et DX12 via WGPU, avec un accent mis sur l’exploitation des GPU modernes plutôt que sur les outils centrés sur OpenGL

Les goulots d’étranglement de la visualisation scientifique visés par fastplotlib

  • fastplotlib est une bibliothèque de tracé scientifique accélérée par GPU avec WGPU, qui vise des visualisations rapides et interactives
  • La visualisation scientifique devient difficile principalement pour les raisons suivantes
    • Les données peuvent atteindre une échelle de plusieurs téraoctets et sont souvent de grande dimension
    • Il est difficile d’utiliser efficacement les ressources de calcul
    • Beaucoup d’outils sont centrés sur des tracés statiques ou ne passent pas bien à l’échelle avec de grands volumes de données
    • La visualisation est trop lente par rapport à la vitesse de génération des données, ce qui retarde l’analyse en temps réel
  • fastplotlib met en avant les usages suivants pour une visualisation interactive et haute performance
    • Visualisation accélérée par GPU
    • Prototypage rapide et conception d’algorithmes
    • Exploration de grands volumes de données et rendu rapide
    • Création de systèmes d’acquisition en temps réel pour l’instrumentation
  • Pour la plupart des cas d’usage, un GPU intégré moderne suffit

Une exploration interactive au-delà des tracés statiques

  • La visualisation scientifique traditionnelle s’est appuyée sur des tracés statiques, mais les visualisations dynamiques et interactives rendent l’exploration et l’analyse des données plus directes
  • À titre d’exemple, la matrice de covariance de l’Olivetti faces dataset est visualisée de manière interactive avec fastplotlib
    • Le sous-graphe de gauche affiche la matrice de covariance de l’Olivetti faces dataset
    • Chaque entrée de la matrice de covariance indique comment l’intensité de deux pixels varie conjointement
    • Le sous-graphe de droite est une image reconstruite à partir de la ligne actuellement sélectionnée dans la matrice de covariance
    • En déplaçant le sélecteur, on peut facilement changer la ligne observée
  • Plutôt que de regarder uniquement la matrice de covariance de façon statique, afficher aussi l’image reconstruite de chaque ligne permet de mieux comprendre comment l’intensité des pixels varie dans les visages du dataset
  • Cet exemple montre qu’un faible niveau d’interaction peut déjà améliorer la compréhension des données, plutôt que d’analyser en profondeur la matrice de covariance elle-même
  • fastplotlib cherche à élargir les usages de la visualisation scientifique en fournissant des mécanismes pour créer des tracés interactifs de haut niveau

Une API qui se manipule comme des tableaux

  • L’écosystème Python de visualisation scientifique compte de nombreux outils open source, mais certaines bibliothèques présentent une barrière d’entrée élevée pour les scientifiques et les utilisateurs en raison d’API complexes
  • fastplotlib cherche à fournir une visualisation interactive rapide via une API intuitive
  • Le principe de conception central consiste à faire en sorte que les données dans une visualisation n’aient pas à être pensées comme autre chose que des tableaux
  • Lorsque les données conservent une structure tabulaire familière, l’interaction avec la visualisation devient également plus simple
  • Dans l’exemple, après avoir tracé une sinusoïde, la couleur d’un point sur trois est changée en rouge avec une indexation de style NumPy
sine_wave.colors[::3] = "red"
  • Cette approche permet de manipuler dynamiquement plusieurs propriétés des graphiques même après le tracé initial
    • Colormap
    • Couleur
    • Données
  • L’API de type tableau est la base destinée à rendre fastplotlib flexible et intuitif à utiliser

Un système d’événements construit avec des callbacks

  • fastplotlib est également conçu pour simplifier la gestion du système d’événements
  • Les événements entre graphiques ou tracés peuvent être définis au moyen de fonctions de callback, ce qui permet de créer et d’étendre des visualisations interactives
  • L’exemple d’événement de clic fonctionne selon le flux suivant
    • Générer plusieurs données de cercles
    • Ajouter les cercles au tracé avec add_line_collection
    • Enregistrer un gestionnaire d’événement "click" auprès du renderer
    • Convertir la position du clic des coordonnées écran vers les coordonnées monde
    • Trouver le graphique le plus proche de la position cliquée
    • Changer en blanc la couleur du cercle le plus proche
  • Le traitement des événements consiste d’abord à définir le comportement sous forme de fonction, puis à ajouter le gestionnaire au graphique ou au tracé concerné
  • Plutôt que d’apprendre une API complexe propre à la bibliothèque, l’utilisateur peut construire les interactions en définissant des fonctions

Exploiter les GPU modernes et les API graphiques

  • Les GPU sont devenus presque une condition préalable dans les travaux scientifiques, et la visualisation ne fait pas exception
  • Pour produire des visualisations haute résolution avec de bonnes performances, il faut exploiter au maximum les ressources de calcul du GPU
  • L’exemple de fastplotlib trace 3 millions de points tout en effectuant les opérations suivantes
    • Tracer une ligne
    • Effectuer des zooms avant et arrière
    • Modifier la colormap de la ligne
    • Modifier individuellement la couleur de certains points
  • Dans d’autres bibliothèques Python de visualisation scientifique, il est difficile de tracer autant de points en une seule fois et de contrôler finement la couleur des points
  • fastplotlib est abstrait au-dessus du moteur de rendu pygfx
  • pygfx est propulsé par WGPU, et WGPU cible les API graphiques suivantes selon la plateforme
    • Linux : Vulkan
    • Mac : Metal
    • Windows : DX12
  • Vulkan, Metal et DX12 sont de nouvelles API graphiques plus rapides et plus efficaces qu’OpenGL, et exploitent mieux le matériel GPU
  • fastplotlib est construit au-dessus de pygfx afin d’abstraire les détails de bas niveau du moteur de rendu, comme les caméras, les renderers et les scènes, ainsi que le code répétitif, pour permettre à l’utilisateur de se concentrer sur les données

Documentation et contenus à venir

  • fastplotlib cherche à répondre aux problèmes actuels de la visualisation scientifique en Python en combinant une API de type tableau facile à utiliser avec du matériel graphique moderne
  • La documentation et les exemples sont disponibles dans la documentation de fastplotlib
    • Guide utilisateur
    • Premiers pas
    • Galerie d’exemples
  • Les questions et échanges sont reçus via les Issues ou Discussions GitHub
  • D’autres articles présentant des exemples d’utilisation de fastplotlib et approfondissant les technologies graphiques sous-jacentes seront ajoutés à l’avenir

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.