IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

"Scalene" alimenté avec ChatGPT offre des suggestions d'efficacité aux programmeurs Python


Sujet :

Python

  1. #1
    Communiqués de presse

    Femme Profil pro
    Traductrice Technique
    Inscrit en
    Juin 2023
    Messages
    952
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Traductrice Technique

    Informations forums :
    Inscription : Juin 2023
    Messages : 952
    Points : 66 397
    Points
    66 397
    Par défaut "Scalene" alimenté avec ChatGPT offre des suggestions d'efficacité aux programmeurs Python
    "Scalene" alimenté avec ChatGPT offre des suggestions d'efficacité aux programmeurs Python : un profileur Python CPU+GPU+mémoire avec des propositions d'optimisation alimentées par l'IA

    Voici la présentation d'un outil open-source qui "utilise l'IA pour offrir des suggestions d'efficacité aux programmeurs Python". Connu sous le nom de "Scalene", le profileur (une sorte de débogueur pour les problèmes de performance) a été téléchargé plus de 900 000 fois sur GitHub.

    "C'est génial en général, et génial pour un projet universitaire", a déclaré Emery Berger, professeur à UMass, qui a travaillé avec les doctorants Sam Stern et Juan Altmayer Pizzorno sur l'outil open-source...

    Scalene mesure le temps et la mémoire consacrés à chaque ligne de code, en moyenne et en pointe, [ainsi que] le temps passé dans des bibliothèques efficaces et le temps passé en Python... En sélectionnant une icône en forme d'éclair, l'utilisateur peut "exploiter le moteur qui alimente ChatGPT pour obtenir une suggestion d'optimisation", a déclaré M. Berger. Dans une démonstration qu'il a montrée, un résultat a recommandé une action moins gourmande en mémoire pour réduire un très grand tableau créé par le code...

    "Si votre code Python fonctionne déjà assez rapidement, vous n'avez pas besoin d'un profileur. Mais s'il est lent, je pense qu'il s'agit d'un profileur très pratique", a déclaré M. Berger.

    Nom : 0.png
Affichages : 112416
Taille : 90,0 Ko

    À propos de Scalene

    Scalene est un profileur CPU, GPU et mémoire haute performance pour Python qui fait un certain nombre de choses que les autres profileurs Python ne font pas et ne peuvent pas faire. Il fonctionne des ordres de grandeur plus rapidement que beaucoup d'autres profileurs tout en fournissant des informations beaucoup plus détaillées. C'est également le premier profileur à intégrer des propositions d'optimisation alimentées par l'IA.

    Suggestions d'optimisation alimentées par l'IA

    Remarque

    Pour activer les suggestions d'optimisation alimentées par l'IA, vous devez saisir une clé OpenAI dans la case située sous "Options avancées". Votre compte doit avoir un solde positif pour que cela fonctionne.
    Nom : 1.PNG
Affichages : 2037
Taille : 37,9 Ko
    Une fois que vous avez saisi votre clé OpenAI (voir ci-dessus), cliquez sur l'éclair (⚡) à côté d'une ligne ou sur l'explosion (&#128165 pour une région entière du code afin de générer une proposition d'optimisation. Cliquez sur une proposition d'optimisation pour la copier dans le presse-papiers.

    Nom : 2.PNG
Affichages : 2041
Taille : 84,2 Ko

    Vous pouvez cliquer autant de fois que vous le souhaitez sur l'éclair ou l'explosion, et différentes optimisations seront proposées. Les résultats peuvent varier, mais dans certains cas, les suggestions sont assez impressionnantes (par exemple, des améliorations de l'ordre de la magnitude).

    Démarrage rapide

    Installation de Scalene :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    python3 -m pip install -U scalene
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    conda install -c conda-forge scalene

    Utilisation de Scalene :

    Après avoir installé Scalene, vous pouvez utiliser Scalene en ligne de commande ou en tant qu'extension de Visual Studio Code.

    • Utilisation de l'extension Scalene VS Code :

      Tout d'abord, installez l'extension Scalene à partir du VS Code Marketplace ou en la recherchant dans VS Code en tapant Command-Shift-X (Mac) ou Ctrl-Shift-X (Windows). Une fois l'extension installée, cliquez sur Command-Shift-P ou Ctrl-Shift-P pour ouvrir la palette de commandes. Sélectionnez ensuite "Scalene : AI-powered profiling..." (vous pouvez taper Scalene et il apparaîtra s'il est installé). Exécutez cette commande et, en supposant que votre code s'exécute pendant au moins une seconde, un profil Scalene apparaîtra dans une vue Web.

      Nom : 3.PNG
Affichages : 2009
Taille : 7,1 Ko
    • Options de ligne de commande couramment utilisées :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      scalene your_prog.py                             # full profile (outputs to web interface)
      python3 -m scalene your_prog.py                  # equivalent alternative
       
      scalene --cli your_prog.py                       # use the command-line only (no web interface)
       
      scalene --cpu your_prog.py                       # only profile CPU
      scalene --cpu --gpu your_prog.py                 # only profile CPU and GPU
      scalene --cpu --gpu --memory your_prog.py        # profile everything (same as no options)
       
      scalene --reduced-profile your_prog.py           # only profile lines with significant usage
      scalene --profile-interval 5.0 your_prog.py      # output a new profile every five seconds
       
      scalene (Scalene options) --- your_prog.py (...) # use --- to tell Scalene to ignore options after that point
      scalene --help                                   # lists all options
    • Utilisation programmatique de Scalene dans votre code :

      Invoquer l'utilisation de scalene comme ci-dessus et ensuite :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      from scalene import scalene_profiler
       
      # Turn profiling on
      scalene_profiler.start()
       
      # Turn profiling off
      scalene_profiler.stop()
    • Utilisation de Scalene pour profiler uniquement des fonctions spécifiques via @profile :

      Il suffit de faire précéder les fonctions que vous souhaitez profiler du décorateur @profile et de les exécuter avec Scalene :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      # do not import profile!
       
      @profile
      def slow_function():
          import time
          time.sleep(3)


    Interface graphique basée sur le web

    Scalene dispose à la fois d'un CLI et d'une interface graphique basée sur le web.

    Par défaut, une fois que Scalene a profilé votre programme, il ouvre un onglet dans un navigateur web avec une interface utilisateur interactive (tout le traitement est fait localement). Survolez les barres pour voir la répartition de la consommation de CPU et de mémoire, et cliquez sur les en-têtes de colonne soulignés pour trier les colonnes. Le fichier profile.html généré est autonome et peut être sauvegardé pour une utilisation ultérieure.

    Nom : 4.PNG
Affichages : 2038
Taille : 91,4 Ko



    Vue d'ensemble de Scalene

    Présentation de Scalene (PyCon US 2021)

    Cette conférence présentée à PyCon 2021 présente les avantages de Scalene et comment l'utiliser pour déboguer les performances d'une application (et fournit quelques détails techniques sur son fonctionnement interne). Il est recommandé vivement de regarder cette vidéo !


    Rapide et précis

    • Scalene est rapide. Il utilise l'échantillonnage au lieu d'instrumenter ou de s'appuyer sur les fonctions de traçage de Python. Son surcoût ne dépasse généralement pas 10 à 20 % (et souvent moins).

    • Scalene est précis. La précision des profileurs de CPU a été testée et on a constaté que Scalene fait partie des profileurs les plus précis, mesurant correctement le temps passé.

      Nom : 5.PNG
Affichages : 2029
Taille : 53,1 Ko
    • Scalene effectue le profilage au niveau de la ligne et par fonction, en pointant les fonctions et les lignes de code spécifiques responsables du temps d'exécution dans votre programme.


    Profilage de la CPU

    • Scalene sépare le temps passé en Python du temps passé en code natif (y compris les bibliothèques). La plupart des programmeurs Python ne vont pas optimiser les performances du code natif (qui se trouve généralement dans l'implémentation de Python ou dans des bibliothèques externes), ce qui aide les développeurs à concentrer leurs efforts d'optimisation sur le code qu'ils peuvent réellement améliorer.

    • Scalene met en évidence les points chauds (code représentant un pourcentage significatif du temps CPU ou de l'allocation mémoire) en rouge, ce qui les rend encore plus faciles à repérer.

    • Scalene sépare également le temps système, ce qui facilite la détection des goulets d'étranglement des E/S.


    Profilage du GPU

    • Scalene indique le temps passé sur le GPU (actuellement limité aux systèmes basés sur NVIDIA).


    Profilage de la mémoire

    • Scalene établit le profil de l'utilisation de la mémoire. En plus du suivi de l'utilisation de la CPU, Scalene indique également les lignes de code spécifiques responsables de la croissance de la mémoire. Pour ce faire, il utilise un allocateur de mémoire spécialisé.

    • Scalene distingue le pourcentage de mémoire consommé par le code Python de celui consommé par le code natif.

    • Scalene produit des profils de mémoire par ligne.

    • Scalene identifie les lignes susceptibles de présenter des fuites de mémoire.

    • Scalene établit le profil du volume de copie, ce qui permet de repérer facilement les copies involontaires, en particulier celles qui sont dues au franchissement des frontières entre Python et les bibliothèques (par exemple, la conversion accidentelle de tableaux numpy en tableaux Python, et vice-versa).


    Autres caractéristiques

    • Scalene peut produire des profils réduits (via --reduced-profile) qui ne rapportent que les lignes qui consomment plus de 1% de la CPU ou qui effectuent au moins 100 allocations.

    • Scalene supporte les décorateurs @profile pour ne profiler que des fonctions spécifiques.

    • Lorsque Scalene profile un programme lancé en arrière-plan (via &), vous pouvez suspendre et reprendre le profilage.



    Comparaison avec d'autres profileurs

    Performances et fonctionnalités

    Vous trouverez ci-dessous un tableau comparant les performances et les fonctionnalités de divers profileurs à celles de Scalene.

    Nom : 6.png
Affichages : 2068
Taille : 380,3 Ko

    • Ralentissement : le ralentissement lors de l'exécution d'un benchmark de la suite Pyperformance. Le vert signifie moins de 2 fois l'overhead. L'overhead de Scalene n'est qu'un ralentissement de 35%.


    Scalene possède toutes les fonctionnalités suivantes, dont beaucoup ne sont prises en charge que par Scalene :

    • Lignes ou fonctions : le profileur rapporte-t-il des informations uniquement pour des fonctions entières ou pour chaque ligne -- Scalene fait les deux.
    • Code non modifié : fonctionne sur du code non modifié.
    • Threads : supporte les threads Python.
    • Multiprocessing : supporte l'utilisation de la bibliothèque multiprocessing -- Scalene seulement
    • Temps Python vs. C : décompose le temps passé en Python par rapport au code natif (par exemple, les bibliothèques) -- Scalene seulement
    • Temps système : décompose le temps système (par exemple, en dormant ou en effectuant des E/S) -- Scalene uniquement
    • Mémoire des profils : rapporte la consommation de mémoire par ligne / fonction
    • GPU : indique le temps passé sur un GPU NVIDIA (si présent) -- Scalene uniquement
    • Tendances de la mémoire : indique l'utilisation de la mémoire au fil du temps par ligne / fonction -- Scalene uniquement
    • Volume de copie : indique les mégaoctets copiés par seconde -- Scalene uniquement
    • Détecte les fuites : identifie automatiquement les lignes responsables de fuites de mémoire probables -- Scalene uniquement


    Source : Emery Berger, Sam Stern, et Juan Altmayer Pizzorno (Contributeur de Scalene)

    Et vous ?

    Quel est votre avis sur le sujet ?

    Voir aussi :

    Python 3.13 ajoute un compilateur JIT qui pourrait améliorer les performances du langage d'environ 9 %, mais l'annonce suscite des réactions mitigées

    Python est facile. Go est simple. Simple != FacilePyt. hon et Go ont des qualités distinctes qui peuvent se compléter, par Preslav Rachev, ingénieur en informatique

    Popularité des langages sur GitHub : Python, Go et JavaScript en progression, tandis que Java et C++ sont en légère baisse mais restent dans le Top 5 d'après GitHut 2.0
    Publication de communiqués de presse en informatique. Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Jade Emy Voir le message
    Et vous ?

    Quel est votre avis sur le sujet ?
    Pourquoi pas. C'est un outil de plus qui peut sûrement apporter beaucoup.
    Moi je n'ai jamais d'avis négatif sur les outils tant qu'on n'oublie pas que les outils ne sont qu'un support, une aide ; et que ce ne sont pas un cerveau de remplacement.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [Python 2.X] PyGTK: GTK+ for Python
    Par Thierry_V dans le forum Général Python
    Réponses: 14
    Dernier message: 18/08/2014, 08h18
  2. PyQT5 for python 3.3 (PyCharm)
    Par Bloby dans le forum PyQt
    Réponses: 0
    Dernier message: 13/07/2014, 22h49
  3. boucle for python
    Par space_56 dans le forum Général Python
    Réponses: 3
    Dernier message: 22/01/2011, 13h06
  4. Delphi for Python
    Par EricStib dans le forum Général Python
    Réponses: 2
    Dernier message: 16/04/2007, 08h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo