Julia Vs Python – Quel Est Le Plus Rapide Pour Le Deep Learning ?

Déjà essayé un langage de programmation différent pour l’IA

 Rédacteur en Chef / Le Nid de Recherche
Rédacteur en chef | Le Nid de recherche

Suivre

17 juil. 2020 * 5 min de lecture

Photo de Safar Safarov sur Unsplash

Êtes-vous un passionné d’IA?

Oui?

Répondez ensuite à cette question: Quel langage de programmation utilisez-vous pour développer des choses pour l’IA?

Votre réponse est Python. Voyez! On le savait.

D’accord, nous ne sommes pas des magiciens, mais c’est un fait bien connu. Python est l’un des langages les plus populaires en ce moment, non seulement dans l’apprentissage automatique, mais aussi à des fins de développement normales. En octobre 2019, plus de 8,2 millions de développeurs utilisent Python. Soit 1 million de plus que Java et plus de 6 millions de plus que Swift.

Python occupe la première place en matière de développement dans le domaine de l’intelligence artificielle.

Pour le prouver simplement, la plupart des passionnés ne connaîtront même pas d’autre langage que Python (et R principalement), qui peut être utilisé pour l’apprentissage automatique. Et c’est juste parce qu’il semble intimidant de coder des algorithmes ML en C ou en Java.

Python est largement utilisé en raison de sa simplicité et de sa communauté. Mais nous connaissons tous un gros inconvénient de Python.

Oui. La vitesse d’exécution.

Python est 400 fois plus lent que C++. Mais nous contournons tout cela dans l’apprentissage automatique en utilisant les bibliothèques écrites dans des langages plus efficaces comme C.

Mais quand même, la charge de calcul est plus lourde. Et aussi, Python est un porc de mémoire.

Alors, que pouvons-nous faire? Nous ne pouvons pas obtenir le meilleur des deux mondes!

Eh bien, avant de sauter aux conclusions, laissez-nous vous montrer ce que les gens du MIT ont à offrir.

Présentation de Julia.

Non, ce n’est pas un autre humanoïde ou chatbot. C’est un langage de programmation.

Tout comme Python, Julia peut être utilisée pour la programmation générale, mais de nombreuses fonctionnalités sont adaptées aux calculs scientifiques et à l’analyse numérique. Il est apparu pour la première fois en 2012. Avec sa sortie stable en 2020.

Mais qu’est-ce que Julia a à offrir? Tout d’abord, Julia est rapide. Tout comme Java, Julia utilise un compilateur juste à temps. Deuxièmement, Julia est également plus facile à apprendre que d’autres langages efficaces sur le plan informatique. Et avant de demander, oui, Julia est aussi simple en termes de syntaxe que Python.

Mais est-ce mieux que Python? Si oui, dans quels termes ?

Menons une expérience et voyons.

Nous formerions un simple CNN à la fois sur Python et sur Julia. Nous utiliserions les implémentations les plus stables et les plus efficaces de CNN dans les deux langues, avec la même architecture.

Pour Python, nous utilisons Tensorflow. Et pour Julia, nous utilisons Flux.jl, qui est une pile Julia pure. Voici quelques références pour vous, pour mener l’expérience vous-même.

Nous allons vérifier le temps pour chaque époque ainsi que les temps de mise en œuvre pour les tâches de prétraitement.

Nous allons implémenter les deux CNN sur l’ensemble de données MNIST et voir les résultats. Vous pouvez essayer d’utiliser un ensemble de données différent et voir si nos résultats s’y rapportent.

Pour calculer les temps d’exécution, nous utilisons le module time en Python, cependant, il n’est nécessaire que pour le calcul du temps de prétraitement, car le temps d’apprentissage du modèle peut être facilement visualisé dans la sortie du modèle.fonction fit() elle-même.

import time
start_time = time.time()#Code
print("The time elapsed: ",time.time()-start_time)

Pour Julia, nous utiliserons une macro très utile: @time. Nous l’utilisons sur le code global de prétraitement ainsi que sur la fonction de train que nous utilisons à chaque époque.

Quelque chose comme ça:

@time begin#Preprocessing codeend

Lors de l’utilisation sur une seule étape, nous pouvons simplement utiliser le micro directement comme préfixe, comme:

@time Flux.train!(loss, params(model), train_set, opt)

Ne vous inquiétez pas si vous ne comprenez pas encore la syntaxe Julia. Comprenez simplement que nous essayons de mesurer les temps d’exécution.

Quelques résultats

Les spécifications du système utilisé pour l’expérience:

Intel Core-i78550U – 16 Go de RAM

  • Le temps global de prétraitement de Python était de 2,6 secondes.
  • Le temps global de prétraitement de Julia était de 4.2 secondes, y compris le temps de pré-compilation du modèle.
  • Le temps par itération en Python était de 20 secondes par époque.
  • Le temps par itération dans Julia était de 16 secondes par époque.

Maintenant, vous pouvez penser que ce n’est pas tellement différent et meilleur en termes d’efficacité.

Eh bien, il existe une différence cruciale entre les critères d’exécution. Lors de l’exécution du code Python, la consommation globale du processeur était de 87%. Mais lors de l’exécution de Julia, la consommation globale du processeur était de 18%.

Donc, si nous utilisons les calculs parallèles dans Julia et tirons pleinement parti de la CPU, nous pouvons obtenir le temps par itération aussi bas que 3,6 secondes.

Oui, nous pouvons voir que Julia est assez rapide par rapport à Python. Mais cela ne signifie pas nécessairement qu’il va reprendre Python de sitôt.

La raison pour laquelle Python est si facilement adaptable est due à son énorme communauté. Julia n’a pas une communauté aussi importante que Python. Une dernière chose est que Julia n’utilise pas par défaut toute la puissance de calcul de la machine sur laquelle elle s’exécute. Vous devez utiliser certaines commandes et un mode d’exécution spécifique pour le faire.

Python est actuellement à cette position en raison de sa simplicité et des bibliothèques et modules sur lesquels il fonctionne. Et Python est avec nous depuis si longtemps. Julia vient d’arriver. Nous ne voyons peut-être pas encore tout son potentiel. Mais il promet de devenir l’un des langages les plus utilisés dans les calculs de données.

Julia est plus rapide. Julia est aussi simple que Python. Mais la seule question est de savoir à quelle vitesse la communauté des développeurs l’adopte-t-elle et la rend encore meilleure. Cela vaut-il vraiment la peine de faire ce changement? Je suppose que nous aurons besoin de plus de données et d’études de cas pour y répondre.

Nous espérons que cet article inculquera une curiosité pour regarder d’autres langages au-delà de Python dans l’IA.

Références et lectures complémentaires:

  • Lauwens, B., & Downey, A. (s.d.). Extrait de https://benlauwens.github.io/ThinkJulia.jl/latest/book.html
  • Flux: La bibliothèque d’apprentissage automatique Julia. (s.d.). Extrait de https://fluxml.ai/Flux.jl/stable/
  • Réseau de neurones convolutionnels (CNN): Noyau TensorFlow. (s.d.). Extrait de https://www.tensorflow.org/tutorials/images/cnn
  • Calcul parallèle. (s.d.). Extrait de https://docs.julialang.org/en/v1/manual/parallel-computing/

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.