L'intelligence artificielle et Python

Machine learning

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Depuis peu, j’ai démarrer une formation de niveau bac+5 en machine learning. Je m’intéresse particulièrement à ce domaine depuis que mon entreprise commence à recevoir des propositions d’entreprise pour du travail en de NLP et de création d’algo assez spécifique. J’ai vu que Python était le langage le plus utilisé quand on parle de machine learning mais je me demandais s’il y avais d’autres acteurs tout aussi important dans le domaine ? (Peut être Go ? Sachant que Tensorflow est dev par google) Scala ? (spark)

Merci pour vos retours :)

L’apprentissage automatique est utile dans de très nombreux domaines. Et donc à des personnes qui ne sont pas spécialement informatitiennes. D’où la prédominance de Python dans l’analyse de donnée (avec R) et le machine learning.

Julia j’en ai pas trop entendu parler mais ça ne m’étonnerait pas.

+0 -0

Il faut différencier les langages utilisés pour coder les bibliothèques sous-jacentes, où tu vas retrouver du C++, surement du Fortran planqué au fond, etc., et les langages pour l’usage, où c’est surtout Python.

Pour Rust, je ne pense pas du tout pour l’usage, et peu utilisé pour les bibliothèques. Go n’est pas optimisé pour ce genre de calculs (dans les bibliothèques), et je pense que s’il serai utilisable pour l’usage, il ne l’est pas par habitude (tout est en Python, ça marche, continuons avec).

Et parce que les utilisateurs ne sont pas forcément informaticiens, donc ils ne vont pas apprendre 36 langages.

Le quintet Python, R, Fortran, Julia, C++ est celui de la programmation scientifique, pas forcément celui de l’IA.

+3 -0

J’ai posté une réponse qui allait dans le sens de Gabbro mais elle n’a pas été postée, car je suis dans le train.

Comme le dis Gabbro, Rust n’a aucune chance d’être utilisé par des non informaticiens. Il demande un trop gros background d’ingénierie informatique qui n’est pas utile à la plupart d’entre nous. Pour ce qui est de Go, je ne vois pas l’apport par rapport à Python. Je nuancerais plus le propos de Gabbro relatif au fait qu’il ne pourrait pas être utilisé comme bibliothèques sous-jacentes mais effectivement l’écosystème est déjà en Python et l’apport de Go ne semble pas justifié de tout porter vers ce langage.

PS: Go permettrait d’avoir le même langage qui calcule que celui qui est utilisé pour coder. Mais cela aurait-il un intérêt ?

+0 -0

Go permettrait d’avoir le même langage qui calcule que celui qui est utilisé pour coder. Mais cela aurait-il un intérêt ?

Pour faire les calculs eux-même (i.e. la partie back end), tu as 0 intérêt à utiliser Go. Ses performances sont honnêtes, mais il pourra toujours aller se rhabiller face à Fortran ou C++ (ou Rust). Faut voir que le calcul scientifique, c’est un domaine ou gratter 5% de performances, c’est déjà énorme à cause du prix des heures de calculs et de la durée de certains calculs. Un truc comme Go, ça pourrait être utile pour faire du post-processing léger, ou bien des outils qui s’occupent d’appeler les librairies de calculs. Python est déjà là, mais le gain apporté par Go en sanité de développement et en performances est déjà intéressant. Quand on voit qu’un outil en ligne de commande Python peut prendre quelque secondes à démarrer selon les imports et l’état du cache, c’est assez embêtant.

Pour Rust, je ne pense pas du tout pour l’usage […] Et parce que les utilisateurs ne sont pas forcément informaticiens, donc ils ne vont pas apprendre 36 langages.

Je suis pas forcément convaincu par cet argument. Faut quand même avoir conscience que la plupart des scientifiques "connaissent" (dans les grandes lignes) au moins un langage bas niveau genre C ou Fortran. Par contre, ces langages sont mal documentés, difficiles à enseigner, et très difficile à utiliser correctement (C à cause de sa permissivité qui laisse tout passer, et Fortran à cause de son standard complètement foireux encore pire que celui de C). Pourtant, force est de constater que certains applications d’usage développés par les scientifiques eux-mêmes sont dans ces langages. Certes, c’est souvent un nid à antipatterns, et les erreurs de gestion mémoire un peu mystérieuses guettent le coin de la rue, mais ça fonctionne en gros™. Un langage plus difficile à apprendre mais avec une meilleur documentation et qui prend la main du développeur comme Rust pourrait tout à fait y avoir sa place et s’accompagner mécaniquement d’une amélioration de la qualité logicielle. Ça va pas se faire en un claquement de doigts, mais je ne serais pas si affirmatif sur l’impossibilité que Rust perce dans la communauté du calcul scientifique. Perso j’explore sérieusement la possibilité de l’utiliser à la place de Python pour faire des petits outils en ligne de commande de post-processing.

Salut,

indépendamment du langage de programmation (sachant que la discussion a dérivé dessus au détriment de l’IA), essaie de te fixer un objectif comme faire un algorithme qui classifie un email selon si c’est du SPAM ou non.

À partir de là, tu vas étudier ce qu’est le machine learning (tu en parles dans ton message initial), tu vas devoir trouver les bonnes features (je n’ai plus le terme en français), tu vas construire un modèle et… Tu vas comprendre que pour ça, Python sera adapté parce que :

  • c’est un langage qui te permet de faire abstraction de certains concepts bas niveau (parce qu’ici ce n’est pas le sujet) ;
  • tu as des bibliothèques qui te permettent de te faciliter certaines autres tâches sur lesquelles tu n’as pas envie de t’attarder (au hasard, faire une régression linéaire ?).

Surtout si tu nous dis que tu t’y intéresses dans le contexte de ton entreprise. Dans ce cas, à mon humble avis, tu as mieux fait d’adopter une démarche itérative plutôt qu’une démarche académique ou tu te questionnes sur le choix des outils, plutôt que sur le problème à résoudre.

Faut quand même avoir conscience que la plupart des scientifiques "connaissent" (dans les grandes lignes) au moins un langage bas niveau genre C ou Fortran

Ce n’est pas tout à fait l’expérience que j’ai. Certes je connais des physitiens et chimistes qui sont dans ce cas mais pas d’autres types de scientifiques. Ça sera plutôt Python pour tout le reste.

Pour faire les calculs eux-même (i.e. la partie back end), tu as 0 intérêt à utiliser Go. Ses performances sont honnêtes, mais il pourra toujours aller se rhabiller face à Fortran ou C++ (ou Rust).

Tout à fait ! Je n’avais pas conscience que la recherche de performances étaient aussi poussée en ML.

+0 -0

Surtout si tu nous dis que tu t’y intéresses dans le contexte de ton entreprise. Dans ce cas, à mon humble avis, tu as mieux fait d’adopter une démarche itérative plutôt qu’une démarche académique ou tu te questionnes sur le choix des outils, plutôt que sur le problème à résoudre.

Tout à fait d’accord autant focaliser sur le projet en lui même et prendre les outils par défaut

Je pense que ça dépend de la définition qu’on donne à scientifiques. Je doute que les géographes connaissent autre chose que python ou R, pas les deux, et souvent ça les saoule ^^ Mais du coup on est sur les SHS.

Moté

Ton point est certain. Mais je me permets d’insister quand même car les mathématiciens ou les biologistes se limitent parfois à Python.

+0 -0

Peut être que mon "la plupart" est optimiste en effet, cela dit ce n’est vraiment pas un point important vis-à-vis du fait qu’un langage complexe comme Rust pourrait percer pour deux raisons.

  • La proportion de biologistes ou de géographes qui font eux-même du calcul intensif, voire du code tout court, est faible. En pratique, les labo de biologistes vont jusqu’à embaucher ce qui s’appelle des bioinformaticiens qui ont au moins une formation minimale en informatique (et certains sont carrément des numériciens). Ce sont eux qui font le gros du développement des back-end et des clients à plus haut niveau, donc c’est cette population qu’il faut regarder pour voir si une technologie comme Rust pourrait s’y implanter. C’est d’ailleurs de facto la situation qu’il y a dans d’autres branches plus calculatoires : les gens qui sont moteurs des codes de calculs intensifs sont souvent des numériciens, des informaticiens, et des physiciens enclins au développement. Les codes clients de plus haut niveau peuvent aussi être développés, ou maintenus, par ces gens là plutôt que forcément par tous les physiciens du groupe de recherche.
  • Même si on suppose que les scientifiques développent leurs codes eux-mêmes et le font majoritairement en Python ou R et à reculons, tu auras toujours une frange de cette population qui se dira qu’il y a peut être moyen de faire mieux, et c’est dans cette frange que Rust peut être effectivement utilisé directement puis diffusé dans la communauté soit sous forme d’outil en ligne de commande (voire avec des jolis boutons pour les plus réfractaires), soit sous forme de bibliothèques avec des bindings plus ou moins haut niveau.

Le développement de ndarray, plotters, ou encore de projets comme weld montre qu’il y a déjà des gens qui se penchent et travaillent sur la question d’intégrer Rust dans le calcul et le processing scientifique en général, comme backend bien sûr mais aussi comme client.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte