Maison  >  Article  >  développement back-end  >  Les développeurs participent en personne : par rapport au langage Julia et à Python pour l'apprentissage automatique, lequel est le meilleur ?

Les développeurs participent en personne : par rapport au langage Julia et à Python pour l'apprentissage automatique, lequel est le meilleur ?

WBOY
WBOYavant
2023-04-11 12:28:021229parcourir

En 2022, quel langage de programmation choisirez-vous ?

Il y a quelques années, on disait que Julia remplacerait Python et deviendrait l'un des nouveaux langages de programmation les plus populaires. Nous adoptons pour le moment une attitude attentiste à l'égard de cette affirmation, mais en tant qu'outil puissant de calcul scientifique, les avantages de Julia sont déjà apparus, ce qui signifie que les programmeurs ont un autre choix.

Dans des domaines tels que la science des données et l'intelligence artificielle, si nous comparons attentivement Julia et Python, nous constaterons que Julia peut effectuer les mêmes tâches que Python peut réaliser, et elle est beaucoup plus efficace, et sa syntaxe est concise et élégante. En termes de diffusion, il n'est pas aussi connu que Python.

Récemment, un article brûlant sur Reddit a suscité de nombreuses discussions parmi les internautes. Cet article mentionnait que récemment, certains développeurs du package de langage Julia ont discuté de l'état actuel du ML dans Julia et ont comparé son statut avec l'écosystème Python ML. a été faite.

Adresse originale du message :

https://www.reddit.com/r/MachineLearning/comments/s1zj44/r_julia_developers_discuss_the_current_state_of/

Jordi Bolibar de l'Université d'Utrecht estime que "Julia est effectivement dans la machine" un énorme potentiel d'apprentissage, mais son statut actuel est un peu mitigé. Plus précisément, la principale raison pour laquelle je m'en tiens à Julia pour SciML est que la bibliothèque DifferentialEquations.jl fonctionne très bien, mais je n'ai rien trouvé de similaire dans Python. Cependant, le vrai problème pour mes recherches est la partie AD. Depuis que j'ai commencé à utiliser Julia, j'ai rencontré deux bugs qui ont ralenti mon travail pendant quelques mois. Je pense que Julia est le meilleur choix pour SciML, mais ces bibliothèques (et leur documentation). ) devrait être optimisé pour être plus convivial. »

L'internaute @jgreener64 a déclaré : « Le ML dans Julia est très puissant dans certains domaines. Tout est possible avec Julia. Le problème avec Julia est que le ML dans Julia. nécessite beaucoup de connaissances existantes ou beaucoup de temps de recherche/essais et erreurs. Sur le plan personnel, je développe actuellement de nouveaux algorithmes différenciables dans Julia."

En plus des discussions animées entre les internautes, Christopher Rackauckas, développeur du progiciel Julia, a répondu aux 7 questions suivantes qui préoccupent davantage les internautes. Rackauckas est mathématicien et pharmacologue au MIT et à l'Université du Maryland qui utilise principalement Julia pour la programmation. Rackauckas a ouvert un blog dédié à Julia, aux mathématiques et à la biologie stochastique pour présenter du contenu connexe, et Rackauckas a développé certaines bibliothèques dans Julia, notamment (mais sans s'y limiter) DifferentialEquations.jl et Pumas.

Christopher Rackauckas

Les questions incluent :

  1. Où le ML brille-t-il vraiment chez Julia aujourd'hui ? De quelle manière cet écosystème surpassera-t-il les autres frameworks ML populaires (par exemple PyTorch, Flax, etc.) dans un avenir proche et pourquoi ?

  2. Quelles sont les lacunes actuelles de l’écosystème ML de Julia en termes de fonctionnalités ou de performances ? Quand Julia deviendra-t-elle compétitive dans ces domaines ?

  3. Comment les packages ML standard de Julia (par exemple, apprentissage en profondeur) se comparent-ils aux alternatives populaires en termes de performances (plus rapides, plus lentes, même ordre de grandeur) ?

  4. Existe-t-il des expériences Julia importantes qui évaluent les alternatives populaires de ML ?

  5. Si une entreprise ou une institution envisage de créer un poste pour contribuer à l'écosystème ML de Julia, existe-t-il des meilleurs cas ? Pourquoi devraient-ils faire cela ? Quelles contributions ont eu le plus d’impact ?

  6. Pourquoi les développeurs indépendants travaillant avec d'autres frameworks devraient-ils envisager de contribuer à l'écosystème ML de Julia ?

  7. Quels packages les développeurs Julia ont-ils tendance à utiliser pour certaines tâches spécifiques ? Qu'est-ce que les développeurs de Julia espèrent ajouter qui n'existe pas actuellement ?

Ci-dessous, nous avons sélectionné quelques problèmes que tout le monde souhaite signaler :

Question 3 : Comment Julia se comporte-t-elle dans "Standard ML" ?

La vitesse du noyau de Julia est excellente : sur le CPU, nous nous en sortons très bien, sur le GPU, tout le monde appelle juste la même chose, etc. La vitesse AD de Julia est également excellente ; Zygote peut avoir une certaine surcharge, mais comparé à Jax/PyTorch/TensorFlow, Zygote est rapide dans la plupart des cas. Plus précisément, la surcharge de PyTorch est beaucoup plus élevée et ne peut même pas être mesurée dans les flux de travail ML standard. Une multiplication matricielle suffisamment grande résoudra le problème d'allocation ou d'autres problèmes O(n) ; Julia ne fusionne pas les noyaux, donc dans la plupart des tests, si l'utilisateur la regarde, il verra qu'elle ne fusionne pas les appels conv ou RNN cudnn.

Question 4 : Quelles expériences et références importantes devrions-nous suivre ?

Le planificateur distribué de XLA est très bon. Lorsque nous pensons aux extensions, nous devrions ignorer PyTorch et penser à DaggerFlux et TensorFlow/Jax. XLA a plus de flexibilité pour modifier ses opérations, donc je pense que XLA est le gagnant et nous devons utiliser l'astuce des e-graphs pour y correspondre. Une autre chose à noter est la « partie médiane manquante dans la différenciation automatique », qui doit encore être résolue.

Question 7 : Quels sont les logiciels recommandés ?

J'ai tendance à utiliser Flux en cas de besoin, mais tout le monde devrait essayer d'utiliser DiffEqFlux. En ce qui concerne les noyaux existants, Flux est le plus complet, mais son style m'ennuie. J'aimerais avoir un Flux qui n'utilise pas de paramètres implicites, mais des paramètres explicites. Je veux que ces paramètres soient représentés par ComponentArrays.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer