Fondements de l’IA
CSI 4506 - Automne 2024
Préambule
Citation du jour
Nous constituons une équipe restreinte et exceptionnelle des meilleurs ingénieurs et chercheurs du monde, dédiée exclusivement à se concentrer sur SSI (safe superintelligence) et rien d’autre.
(traduction GPT-4o)
Comprendre l’histoire de l’intelligence artificielle est crucial, surtout maintenant que nous nous trouvons au sommet de l’enthousiasme spéculatif, avec des affirmations répandues selon lesquelles l’ère de l’intelligence artificielle générale est imminente.
Pour les personnes qui ne sont pas formellement formées en intelligence artificielle, l’enthousiasme généralisé actuel pourrait suggérer que nous sommes à l’aube d’une ère de transformation significative.
La recherche en intelligence artificielle a historiquement progressé d’une manière plus alignée avec le développement chronologique de la philosophie plutôt qu’avec la trajectoire évolutive de l’intelligence biologique. Si la recherche en IA avait reflété les étapes évolutives de l’intelligence, nous aurions d’abord développé des systèmes avec une intelligence de niveau nématode axés sur des mécanismes de direction de base. Cela aurait été suivi par des modèles imitant les premiers vertébrés utilisant l’apprentissage par renforcement, puis les premiers mammifères capables de simulation du monde, les premiers primates avec des capacités de mentalisation, et finalement une intelligence de type humain caractérisée par des compétences avancées en communication.
Les 18 premières minutes de cette vidéo de 47 minutes offrent une vue d’ensemble historique de l’intelligence artificielle.
Melanie Mitchell est une figure éminente dans les discussions contemporaines sur l’intelligence artificielle, critiquant particulièrement les critères utilisés pour évaluer les systèmes logiciels.
Comprendre l’histoire de l’intelligence artificielle est crucial, surtout maintenant alors que nous nous trouvons au sommet de l’enthousiasme spéculatif, avec des affirmations répandues selon lesquelles l’ère de l’intelligence artificielle générale est imminente.
Objectifs d’apprentissage
Reconnaitre les contributions d’autres disciplines à l’IA.
Situer l’IA actuelle dans son contexte historique.
Introduire certains des outils, notamment les Jupyter Notebooks.
Dans le même esprit que la présentation du premier cours, les deux premières parties de notre agenda du jour seront relativement générales, visant à contextualiser l’intelligence artificielle (IA). Bien que notre cours soit très technique, il est essentiel de comprendre que l’IA est intrinsèquement multidisciplinaire.
Dans nos évaluations, je ne vous demanderai pas de retenir les noms des personnes ayant contribué aux fondements de l’IA. Les deux premiers cours visent à fournir du contexte.
Vers la fin du semestre, j’aimerais beaucoup obtenir vos retours pour évaluer l’utilité de ces présentations. Je pourrais organiser un lunch pizza pour échanger des idées sur ce qui fonctionne et ce qui ne fonctionne pas, ce qui manque et ce qui devrait être supprimé.
Écoles (rappel du premier cours)
- IA symbolique (inclut des approches basées sur la logique)
- Connexionnistes (principalement des réseaux neuronaux)
Longtemps considérées comme mutuellement exclusives.
Comme discuté lors de notre premier cours, il existe deux paradigmes principaux en intelligence artificielle : IA symbolique et connexionnisme. Bien que l’approche symbolique ait initialement dominé le domaine, l’approche connexionniste est maintenant plus répandue.
Considérez ce contexte lorsque nous examinons la brève histoire de l’intelligence artificielle.
Fondements de l’intelligence artificielle
Lors du premier cours, nous avons exploré diverses approches pour construire des systèmes d’intelligence artificielle, y compris la pensée semblable à celle des humains, le comportement semblable à celui des humains, la pensée rationnelle et le comportement rationnel.
CSI 4506 offre une perspective de l’informatique sur l’intelligence artificielle.
Cependant, il est important de reconnaître que le développement de l’intelligence artificielle est une entreprise multidisciplinaire, chaque domaine offrant ses propres perspectives uniques.
Philosophie
Aristote (384-322 av. J.-C.) a établi plusieurs concepts fondamentaux pour l’IA, y compris un système informel de syllogismes qui facilite le raisonnement en dérivant mécaniquement des conclusions à partir de prémisses données.
Attribution : Lysippos, Domaine public, via Wikimedia Commons.
L’IA symbolique a été profondément influencée par la logique, qui trouve ses origines dans la philosophie grecque.
Un exemple notable est le General Problem Solver, développé par Herbert A. Simon et Allen Newell en 1957.
De nombreux philosophes, dont David Hume (Hume ([1739] 1739)), ont considérablement contribué aux théories fondamentales sous-jacentes à l’intelligence artificielle (IA).
Le lien entre l’intelligence artificielle (IA) contemporaine et la philosophie est profond, englobant des dimensions fondamentales, éthiques, épistémologiques et métaphysiques. Les philosophes et les chercheurs en IA explorent conjointement la nature de l’intelligence, le déploiement éthique de l’IA, la représentation des connaissances et la transparence des systèmes d’IA. Ils abordent les impacts sociétaux de l’IA, y compris les changements dans le marché du travail et la prise de décision autonome, tout en engageant un dialogue interdisciplinaire pour s’assurer que les technologies d’IA s’alignent sur les valeurs humaines et les objectifs sociétaux. Cette collaboration favorise le développement de systèmes d’IA robustes, éthiques et socialement responsables.
Philosophie (suite)
L’utilitarisme est une théorie éthique qui met l’accent sur le plus grand bien pour le plus grand nombre.
- L’utilitarisme offre à l’IA un cadre de prise de décision en priorisant les actions qui améliorent le bien-être collectif.
- Il guide la conception éthique de l’IA pour s’assurer que la technologie favorise le bien-être sociétal.
- L’utilitarisme dirige la distribution efficace des ressources en IA, en ciblant un impact positif maximal, notamment dans des secteurs comme la santé.
- Il façonne les politiques et réglementations pour maximiser les bénéfices sociétaux et minimiser les dommages liés à l’IA.
- Les principes utilitaristes aident à équilibrer les bénéfices de l’IA par rapport aux risques pour un résultat net positif.
Jeremy Bentham (1823) et John Stuart Mill (1863).
Mathématiques – logique formelle
George Boole (1815–1864) est crédité de la mathématisation de la logique grâce au développement de la logique propositionnelle, également appelée logique booléenne.
Gottlob Frege (1848–1925) a étendu le cadre logique de Boole en incorporant des objets et des relations, développant ainsi ce qui est aujourd’hui connu sous le nom de logique du premier ordre.
Les contributions de Kurt Gödel (1906–1978), Alonzo Church (1903–1995) et Alan Turing (1912–1954), entre autres, ont été déterminantes dans la formation du concept moderne de computation.
Mathématiques – probabilité
Gerolamo Cardano (1501–1576) a initialement conceptualisé la probabilité à travers les résultats des jeux de hasard.
Blaise Pascal (1623–1662) a exposé en 1654 des méthodes pour calculer des prédictions et des gains moyens dans des jeux de hasard inachevés, en correspondance avec Pierre Fermat (1601–1665).
Thomas Bayes (1702–1761) a introduit une méthode pour réviser ses croyances avec de nouvelles informations, connue sous le nom de règle de Bayes, essentielle pour les applications en IA.
Mathématiques – algorithmes
Les algorithmes complexes trouvent leur origine avec Euclide autour de 300 av. J.-C., tandis que le terme « algorithme » lui-même est dérivé des travaux de Muhammad ibn Musa al-Khwarizmi au IXe siècle.
La thèse de Church-Turing postule que toute computation pouvant être effectuée par un processus mécanique peut être calculée par une machine de Turing, équivalant essentiellement le concept de computation algorithmique aux capacités des machines de Turing (Church 1936; Alan M. Turing 1936).
Le concept de NP-complétude, introduit par Cook et développé par Karp, établit un cadre pour évaluer la tractabilité des problèmes de computation (Cook 1971; Karp 1972).
Neurosciences
Aujourd’hui, il est universellement reconnu que les fonctions cognitives émergent des activités électrochimiques au sein de structures cérébrales, illustrant comment des assemblages de cellules simples peuvent donner naissance à la pensée, à l’action et à la conscience.
Neurosciences (suite)
“De tous les animaux, l’homme a le plus grand cerveau proportionnellement à sa taille.” Aristote, 335 av. J.-C..
Les recherches de Paul Broca en 1861 ont marqué le début de la compréhension de l’organisation fonctionnelle du cerveau, notamment en identifiant le rôle de l’hémisphère gauche dans la production de la parole.
Neurosciences (suite)
Des études collaboratives à grande échelle nous ont fourni des données étendues sur l’anatomie, les types de cellules, la connectivité et les profils d’expression génétique du cerveau (Maroso 2023; Conroy 2023).
Neurosciences – neurone
Attribution : Jennifer Walinga, CC BY-SA 4.0
Le développement des réseaux neuronaux artificiels (également appelés réseaux neuronaux ou neural nets, abrégés en ANN ou NN ; ANNs ou NNs) a été inspiré par la structure et la fonction des réseaux neuronaux biologiques chez les animaux.
Yann LeCun et d’autres auteurs ont souvent dit que nos réseaux neuronaux artificiels utilisés pour l’apprentissage automatique ressemblent aux réseaux neuronaux biologiques de la même manière que les ailes d’un avion ressemblent aux ailes d’un oiseau.
Ordinateurs vs cerveau humain
Superordinateur | Ordinateur personnel | Cerveau humain | |
---|---|---|---|
Unités de calcul | \(10^6\) cœurs CPU+GPU | 8 cœurs CPU | \(10^6\) colonnes |
\(10^{15}\) transistors | \(10^{15}\) transistors | \(10^{11}\) neurones | |
\(10^{14}\) synapses | |||
Temps de cycle | \(10^{-9}\) sec | \(10^{-9}\) sec | \(10^{-3}\) sec |
Opérations/sec | \(10^{18}\) | \(10^{10}\) | \(10^{17}\) |
Adapté de : Russell et Norvig (2020)
Des rumeurs sur Internet suggèrent que “GPT-4 possède environ 1,8 trillion de paramètres répartis sur 120 couches” et que “OpenAI utilise 16 experts dans leur modèle, chacun avec environ 111 milliards de paramètres pour le MLP” GPT-4 architecture, datasets, costs, and more leaked (Maximilian Schreiner, The Decoder, 11 juillet 2023).
Pourquoi ces chiffres sont-ils importants ? Les améliorations de performance peuvent être atteintes grâce à l’utilisation de plus de données, de modèles plus grands et de différents algorithmes d’entraînement.
L’ordinateur portable de l’instructeur :
M2 Max | 12 cœurs CPU, 30 cœurs GPU, \(6.7 \times 10^{10}\) transistors, fréquence d’horloge \(3.49 \times 10^{-9}\) |
\(6.4 \times 10^{10}\) (64G) octets de RAM | |
\(2 \times 10^{12}\) (2 T) octets de disque | |
Moteur neuronal à 16 cœurs exécutant 15.8 trillions (\(1.58 \times 10^{13}\)) d’opérations par seconde. |
Ordinateurs vs cerveau humain (suite)
- “D’ici la fin de 2024, nous visons à continuer d’étendre notre infrastructure qui inclura 350 000 GPU NVIDIA H100 dans le cadre d’une infrastructure qui comprendra une puissance de calcul équivalente à près de 600 000 H100.”
- Building Meta’s GenAI Infrastructure, 12 mars 2024.
- Chaque H100 possède 80 milliards (\(8 \times 10^{10}\)) de transistors.
- 600 000 H100s impliquent un total de \(4.8 \times 10^{16}\) transistors.
- Chaque puce coûte 40 000 USD !
- Infrastructure à 24 000 000 000 (24 milliards) USD.
- Comparable au Produit Intérieur Brut (PIB) de l’Islande.
On peut seulement imaginer la consommation d’énergie d’un tel système de calcul !
La prochaine génération de GPU de NVIDIA, Blackwell B200, compte 208 milliards de transistors.
Ordinateurs vs cerveau humain (suite)
- “En combinant ces données, de Vries calcule que d’ici 2027, le secteur de l’IA pourrait consommer entre 85 et 134 térawattheures par an. C’est à peu près la même demande énergétique annuelle que le pays d’origine de de Vries, les Pays-Bas.”
- How much electricity does AI consume? The Verge, 16 février 2024
Psychologie
La psychologie cognitive conceptualise le cerveau comme un dispositif de traitement de l’information.
Les agents basés sur la connaissance sont conceptualisés comme recevant des entrées (percepts) de leur environnement, ayant un état interne et produisant des actions (sorties).
Sciences cognitives
La même année que le terme « intelligence artificielle » a été introduit, les sciences cognitives ont émergé en tant que discipline.
Atelier du MIT en 1956 :
- George Miller, The Magic Number Seven (Miller 1956)
- Noam Chomsky, Three Models of Language (Chomsky 1956)
- Allen Newell et Herbert Simon, The Logic Theory Machine (A. Newell et Simon 1956)
Trois articles fondamentaux ont démontré comment les modèles informatiques peuvent être appliqués à la psychologie de la mémoire, au langage et au raisonnement logique.
Intelligence artificielle : Une chronologie
1943–1974
1950 – Test de Turing
Le Test de Turing est une mesure de la capacité d’une machine à exhiber un comportement intelligent indiscernable de celui d’un humain.
Si un évaluateur humain ne peut pas distinguer de manière fiable entre une machine et un humain uniquement sur la base de leurs réponses à des questions, on dit que la machine a passé le test.
A. M. Turing (1950)
1950 – Test de Turing (en 2024)
Cette citation fait référence à l’effet IA, qui stipule que (\(\ldots\)) dès qu’un système informatique est construit pour résoudre un problème avec succès, le problème n’est plus “seulement solvable par l’esprit humain”, (McCorduck 2004)
De plus, des recherches récentes en neurosciences suggèrent que “les réseaux cérébraux sous-jacents à ce qu’ils appellent la « compétence linguistique formelle » - les capacités liées à la production du langage - sont largement séparés des réseaux sous-jacents au bon sens, au raisonnement et à d’autres aspects de ce que nous pourrions appeler « penser ».” (Mitchell 2024)
1943 – Premier réseau neuronal artificiel
Warren S. McCulloch & Walter Pitts 1943
Logique propositionnelle et événements neuronaux : La nature “tout ou rien” de l’activité nerveuse permet de traiter les événements neuronaux et leurs relations en utilisant la logique propositionnelle.
Implications pour la psychologie et la neurophysiologie : La théorie fournit un cadre rigoureux pour comprendre les activités mentales en termes de neurophysiologie, offrant des aperçus sur les relations causales et la construction de réseaux neuronaux hypothétiques.
Apprentissage : nous considérons \((\ldots)\) l’apprentissage comme un changement durable qui peut survivre au sommeil, à l’anesthésie, aux convulsions et au coma.
McCulloch et Pitts (1943)
L’article se concentre sur l’équivalence entre les réseaux neuronaux et la logique propositionnelle. Montrant que toute fonction calculable pourrait être calculée par un certain réseau de neurones connectés.
Définit l’apprentissage comme un changement, mais ne fournit pas d’algorithme pour l’apprentissage.
1949 – Premier réseau neuronal artificiel
En 1949, Donald Hebb a introduit une règle de mise à jour simple pour ajuster les forces de connexion entre les neurones.
L’apprentissage hebbien est un mécanisme d’apprentissage dans lequel la force synaptique entre deux neurones est augmentée s’ils sont activés simultanément. Ce principe est souvent résumé par “les cellules qui s’activent ensemble, se connectent ensemble”, et il forme la base pour comprendre comment les connexions neuronales sont renforcées par l’expérience.
1950 – Premier réseau neuronal artificiel
En 1950, alors qu’il était étudiant de premier cycle à Harvard, Marvin Minsky, en collaboration avec Dean Edmonds, a construit le premier ordinateur de réseau neuronal artificiel, qui simulait la fonctionnalité de 40 neurones.
En 1954, pour sa thèse de doctorat en mathématiques à l’Université de Princeton, Minsky a mené une enquête approfondie sur le principe de la computation universelle au sein des réseaux neuronaux.
Premier réseau neuronal artificiel
On observe que les réseaux neuronaux artificiels ont été introduits très tôt, et déjà dans les années 1960, ils n’étaient pas considérés comme prometteurs. De plus, il semble déjà remarquer un biais dans les jeux de données utilisés pour l’entraînement de ces réseaux.
1956 – Événement fondateur
Proposé par John McCarthy, Marvin Minsky, Nathaniel Rochester, et Claude Shannon. Les participants comprenaient également Allen Newell et Herbert Simon.
Reconnu comme la première utilisation du terme “intelligence artificielle.”
John McCarthy, qui faisait partie du Département de Mathématiques de Dartmouth College, non seulement a inventé le terme “intelligence artificielle” mais a également développé Lisp.
Ce langage de programmation polyvalent est resté prédominant dans le domaine de l’IA pendant plus de trois décennies. Lisp a introduit plusieurs concepts révolutionnaires, tels que le ramasse-miettes, la typage dynamique, les fonctions d’ordre supérieur, la récursion, la boucle read-eval-print, et le compilateur auto-hébergé, influençant considérablement le développement des langages de programmation.
1956 – Logic Theorist
1959 – Apprentissage automatique
Le travail d’Arthur Samuel sur l’apprentissage automatique utilisant le jeu de dames a eu un impact profond sur le domaine de l’intelligence artificielle (IA) et l’informatique en général.
L’un des premiers exemples d’un système d’IA auto-améliorant.
Ses contributions ont aidé à établir l’apprentissage automatique comme un sous-domaine crucial de l’IA.
Samuel définit l’apprentissage automatique comme un “domaine d’étude qui donne aux ordinateurs la capacité d’apprendre sans être explicitement programmés”.
Précurseur de l’apprentissage par renforcement et AlphaGo.
Samuel (1959), également présenté dans cette vidéo de 53 minutes : “La machine pensante” (1961) - Film du centenaire du MIT
1952 - IBM 701
16 000 instructions par seconde
8,75 kilo-octets de mémoire
Attribution : IBM Watson Media
Le 701 était un million de fois plus lent qu’un ordinateur de bureau de 2020 et cent mille milliards de fois plus lent que les superordinateurs d’aujourd’hui.
Hype
La citation de Marvin Minsky est particulièrement remarquable. Comme les autres citations, elle est empreinte d’enthousiasme. Cependant, ce qui ressort, c’est la prise de conscience que des problèmes que nous tenons maintenant pour acquis, tels que la classification d’images, étaient autrefois considérés comme simples. Cela a conduit Steven Pinker à écrire en 1994 : « La principale leçon de trente-cinq ans de recherche en IA est que les problèmes difficiles sont faciles et que les problèmes faciles sont difficiles. » De même, en 1988, Hans Moravec a observé : « Il est relativement facile de faire en sorte que les ordinateurs affichent une performance au niveau adulte lors de tests d’intelligence ou de jeux de dames, mais difficile ou impossible de leur donner les compétences perceptuelles et de mobilité d’un enfant d’un an. »
1974–1980
IA symbolique
En 1976, Newell et Simon, les auteurs de Logic Theorist (LT), créent le General Problem Solver (GPS) destiné à imiter la manière dont les humains résolvent les problèmes.
Premier hiver de l’IA
Les financements se sont taris.
Limites fondamentales : ce qui pouvait être représenté. Données linéairement séparables, par exemple.
1980–1987
Systèmes experts
Les systèmes experts sont des programmes qui imitent les capacités de prise de décision d’un expert humain en utilisant une base de connaissances et des règles d’inférence (généralement des règles si-alors) pour résoudre des problèmes complexes dans un domaine spécifique.
- En 1984, Douglas Lenat a commencé à travailler sur Cyc, avec l’objectif de coder le bon sens humain. En 2017, Cyc avait 1,5 million de termes et 24,5 millions de règles.
Les systèmes experts ont été formellement introduits autour de 1965 par Edward Feigenbaum, parfois appelé le “père des systèmes experts”; d’autres contributeurs clés étaient Bruce Buchanan et Randall Davis.
Exemples inclus :
MYCIN, un des premiers systèmes experts à chaîne arrière, utilisait l’intelligence artificielle pour identifier les bactéries responsables d’infections graves comme la bactériémie et la méningite. Il recommandait également des antibiotiques appropriés, avec des dosages ajustés en fonction du poids du patient. Sa base de connaissances comprenait environ 600 règles. 1975, écrit en Lisp.
Dendral aidait les chimistes à identifier des molécules organiques inconnues en analysant leurs spectres de masse et en utilisant des connaissances chimiques.
Avantages :
Représentation explicite des connaissances;
Connaissances séparées du moteur de raisonnement;
Explicabilité.
Inconvénients :
Connaissances superficielles et incomplètes
L’acquisition de données est très difficile, et généralement codée à la main par des experts du domaine.
Explosion combinatoire entraînant un temps d’exécution énorme.
Raisonnement limité en cas d’incertitude ou d’informations contradictoires.
Systèmes experts - règles if-then
Règle 1 :
SI le patient a de la fièvre ET le patient a mal à la gorge,
ALORS envisager la possibilité d’une infection streptococcique.
Règle 2 :
SI le patient a une éruption cutanée ET le patient a été récemment dans une zone boisée,
ALORS envisager la possibilité de la maladie de Lyme.
Règle 3 :
SI le patient ressent une douleur thoracique ET le patient a des antécédents de maladies cardiaques,
ALORS envisager la possibilité d’un infarctus du myocarde (crise cardiaque).
1987–1993
Deuxième hiver de l’IA
1993–2011
Machine à Vecteurs de Support (SVM)
Une Machine à Vecteurs de Support (SVM) est un algorithme d’apprentissage supervisé.
Elle fonctionne en identifiant l’hyperplan optimal qui sépare les données en classes distinctes dans un espace de haute dimension.
Basée sur le cadre théorique robuste de la théorie de Vapnik-Chervonenkis (VC).
Influente et dominante pendant les années 1990 et 2000.
Boser, Guyon, et Vapnik (1992)
SVM, un coup dur pour les connexionnistes.
SVM reste un excellent choix de classificateur.
2011–
Apprentissage profond
En 2012, AlexNet, une architecture de réseau neuronal convolutif (CNN) inspirée par les travaux de Yann LeCun, remporte le ImageNet Large Scale Visual Recognition Challenge.
Cela a marqué un moment pivot dans le domaine, car par la suite, toutes les entrées principales de la compétition ont été fondées sur des méthodologies d’apprentissage profond.
Krizhevsky, Sutskever, et Hinton (2012)
Le succès de l’apprentissage profond est généralement attribué aux éléments suivants :
Big data : La prolifération des big data provenant de diverses sources, telles que les médias sociaux, les capteurs et les dépôts numériques, fournit les ensembles de données étendus nécessaires pour entraîner les modèles d’apprentissage profond.
GPUs et TPUs : L’avènement des puissantes Unités de Traitement Graphique (GPUs) et des Unités de Traitement Tensoriel (TPUs) a considérablement accéléré les processus d’entraînement et d’inférence pour les grands réseaux neuronaux.
Algorithmes d’entraînement améliorés :
Techniques d’optimisation : Des algorithmes d’optimisation améliorés comme Adam, RMSprop, et les approches basées sur le momentum ont amélioré l’efficacité et la convergence des modèles d’apprentissage profond.
Méthodes de régularisation : Des techniques telles que la régularisation L2, le dropout et l’augmentation de données ont aidé à prévenir le surapprentissage et à améliorer la généralisation.
L’hiver arrive?
Résumé
Voir aussi :
- 15 Graphiques qui expliquent l’état de l’IA en 2024, Eliza Strickland, IEEE Spectrum, avril 2024.
Attribution : History of AI Winters
Tutoriel
Prérequis
La maîtrise de Python est attendue.
. . .
Pour ceux qui ont besoin d’une remise à niveau, le tutoriel officiel sur Python.org est un bon point de départ.
. . .
Améliorez simultanément vos compétences en créant un Jupyter Notebook qui intègre des exemples et des notes du tutoriel.
. . .
Autres ressources :
Tutoriel Python de Stanford CS231n avec Google Colab : Ce lien vous dirige vers un tutoriel Python présenté sous forme de Jupyter Notebook, qui peut être exécuté dans l’environnement Google Colab. Des détails supplémentaires sont fournis ci-dessous.
Enfin, voici un Tutoriel Python Avancé fourni par Google.
Créer un Jupyter Notebook qui intègre des exemples et des notes du tutoriel peut être très utile. Plus tard, lorsque vous voudrez consulter un concept, vous pourrez également prototyper votre solution directement dans le notebook.
Jupyter Notebooks
Démarrage rapide
Les Jupyter Notebooks sont largement utilisés dans les domaines de la science des données et de l’apprentissage automatique.
Plusieurs d’entre vous sont certainement familiers avec les environnements Jupyter Notebook et Google Colab. Veuillez lever la main si vous les utilisez déjà. Ce tutoriel est spécialement conçu pour ceux qui ne sont pas encore familiers avec ces outils.
Google Colab offre une plateforme pratique pour écrire et exécuter des notebooks sans nécessiter d’installation locale.
Un notebook intègre des descriptions en langage clair avec du code source et des graphiques. Sans entrer dans les détails du document, examinez l’alternance entre les descriptions, le code source et les graphiques.
Votre code s’exécute dans un environnement appelé noyau. Dans ce notebook, nous utilisons un noyau Python. D’autres noyaux populaires incluent Julia et R; voir Kernels Jupyter pour plus d’informations.
Vous pouvez exécuter l’intégralité du notebook en utilisant Runtime → Run all. Cependant, il est courant d’exécuter les cellules individuellement pour lire les instructions correspondantes et observer les résultats. Cela permet également de modifier le code pour voir les effets des changements.
Toutes les cellules partagent le même environnement d’exécution, ce qui rend l’ordre d’exécution critique. Une cellule qui dépend de variables ou de fonctions d’une autre cellule doit être exécutée après la cellule définissant ces éléments. En particulier, assurez-vous toujours que les bibliothèques nécessaires sont chargées en premier.
Voir aussi :
Exécuter Jupyter sur votre ordinateur
En supposant que le notebook est dans le répertoire courant, exécutez la commande suivante depuis le terminal.
jupyter notebook 01_ottawa_river_temperature.ipynb
De même, pour créer un nouveau notebook à partir de zéro,
jupyter notebook
Le processus d’installation de Jupyter et d’autres environnements sera abordé plus tard dans cette présentation.
Ces commandes lancent un serveur Jupyter sur votre ordinateur, écoutant sur un port local et dirigeant votre navigateur vers l’URL locale spécifiée. La sortie sera quelque chose comme ceci :
Jupyter Server 2.14.2 is running at:
http://localhost:8888/tree?token=94eca753b1887a460404d2b5eebb3b7a6211be0b839e9c34
http://127.0.0.1:8888/tree?token=94eca753b1887a460404d2b5eebb3b7a6211be0b839e9c34
Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
Comme vous pouvez le voir, exécuter un notebook localement est similaire à son exécution dans Google Colab. Cependant, cela nécessite que Jupyter et toutes les bibliothèques nécessaires (telles que NumPy, pandas et scikit-learn) soient installés sur votre système local.
Dans un nouveau notebook :
- Créez un exemple montrant comment le texte et les cellules alternent.
- Écrivez un exemple montrant comment l’ordre d’exécution est important.
Voir aussi :
Pourquoi?
Facilité d’utilisation : L’interface est intuitive et propice à l’analyse exploratoire.
Visualisation : La capacité d’intégrer des visualisations riches et interactives directement dans le notebook améliore son utilité pour l’analyse et la présentation des données.
Reproductibilité : Les Jupyter Notebooks sont devenus la norme de facto dans de nombreux domaines pour démontrer les fonctionnalités du code et garantir la reproductibilité.
Comment?
- Google Colab
- Installation locale
- Dans votre navigateur
- Notebook ou JupyterLab
- Visual Studio Code
- Dans votre navigateur
- Plus d’options, y compris JupyterHub (une version multi-utilisateurs)
Maîtriser une nouvelle technologie nécessite souvent du temps et de la patience. Reconnaissez que vos niveaux d’expérience peuvent varier. Sélectionnez l’option qui correspond le mieux à votre expertise actuelle. Commencez par des choix plus simples, sachant que vous pouvez revenir et ajuster vos décisions à mesure que vous gagnez en compétence.
Pour ceux à l’aise avec la technologie, JupyterLab peut être le choix préféré. En tant que prochaine génération d’interface web pour les projets Jupyter, il offre une expérience intégrée de type environnement de développement intégré (IDE) avec prise en charge de plusieurs onglets. À l’inverse, si vous préférez un point de départ plus simple, Jupyter Notebook pourrait être une meilleure option.
Contrôle de version (GitHub)
Par défaut, les Jupyter Notebooks stockent les sorties des cellules de code, y compris les objets multimédias.
. . .
Les Jupyter Notebooks sont des documents JSON, et les images qu’ils contiennent sont encodées au format PNG base64.
. . .
Cet encodage peut entraîner plusieurs problèmes lors de l’utilisation des systèmes de contrôle de version, tels que GitHub.
Taille de fichier importante : Les Jupyter Notebooks peuvent devenir assez volumineux en raison des images et des sorties intégrées, entraînant des temps de téléchargement prolongés et des contraintes de stockage potentielles.
Incompatibilité avec le contrôle de version basé sur le texte : GitHub est optimisé pour les fichiers basés sur du texte, et l’inclusion de données binaires, telles que des images, complique le processus de suivi des modifications et de résolution des conflits. Les opérations traditionnelles de diff et de fusion ne sont pas bien adaptées pour gérer ces formats binaires.
Contrôle de version - solutions
Dans JupyterLab ou Notebook, Edit \(\rightarrow\) Clear Outputs of All Cells, puis sauvegardez.
En ligne de commande, utilisez
jupyter nbconvert --clear-output
jupyter nbconvert --clear-output --inplace 04_stock_price.ipynb
ou
jupyter nbconvert 04_stock_price.ipynb --to notebook --ClearOutputPreprocessor.enabled=True --output 04_stock_price_clear
- Utilisez
nbdime
, spécialisé pour les Jupyter Notebooks.
Pour les devoirs, nous vous demanderons de conserver les sorties.
Lors de la copie de code source à partir de diapositives ou de notebooks, cliquez sur l’icône ‘Copy to Clipboard’ pour vous assurer que seul le texte brut est copié, en excluant tout formatage HTML.
Installer Jupyter (1/2)
Ces instructions utilisent pip
, l’outil d’installation recommandé pour Python.
La première étape est de vérifier que vous disposez d’une installation Python fonctionnelle avec pip installé.
$ python --version
Python 3.10.14
$ pip --version
pip 24.2
C:> py --version
Python 3.10.14
C:> py -m pip --version
pip 24.2
Installer Jupyter (2/2)
Installer JupyterLab
avec pip
:
$ pip install jupyterlab
Une fois installé, lancez JupyterLab
avec
$ jupyter lab
Exemples de Jupyter Notebooks
bibliothèques manquantes
Lancer 03_get_youtube_transcript
sur Colab.
Quoi faire lorsqu’une ou plusieurs bibliothèques sont manquantes sur Google Colab?
04_stock_price
Lancer 04_stock_price
sur Colab.
05_central_limit
Lancer 05_central_limit
sur Colab.
Références
Prologue
Résumé
- Nous avons situé l’IA actuelle dans son contexte historique.
- Nous avons introduit des outils, notamment les Jupyter Notebooks.
Prochain cours
- Introduction à l’apprentissage automatique
Un de mes livres préférés sur l’apprentissage automatique
Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow (Géron 2022) offre des exemples pratiques et utilise des bibliothèques Python prêtes pour la production.
La couverture complète inclut non seulement les modèles, mais aussi les bibliothèques pour le réglage des hyperparamètres, le prétraitement des données et la visualisation.
Exemples de code et solutions aux exercices disponibles sous forme de Jupyter Notebooks sur GitHub.
Aurélien Géron est un ancien chef de produit chez YouTube, où il a dirigé la classification vidéo pour la recherche et la découverte.
Ressources
Annexe : gestion de l’environnement
Gestion de l’environnement
N’essayez pas d’installer ces outils à moins d’être sûr de vos compétences techniques. Une installation incorrecte pourrait entraîner une perte de temps considérable ou même rendre votre environnement inutilisable. Il n’y a rien de mal à utiliser pip
ou Google Colab pour vos travaux de cours. Vous pourrez développer ces compétences d’installation plus tard sans impacter vos notes.
Gestion des packages
La gestion des dépendances des packages peut être complexe.
- Un gestionnaire de packages répond à ces défis.
Différents projets peuvent nécessiter différentes versions des mêmes bibliothèques.
- Les outils de gestion des packages, tels que
conda
, facilitent la création d’environnements virtuels adaptés à des projets spécifiques.
- Les outils de gestion des packages, tels que
Anaconda
Anaconda est une plateforme complète de gestion des packages pour Python et R. Elle utilise Conda pour gérer les packages, les dépendances et les environnements.
Anaconda est avantageux car il est livré pré-installé avec plus de 250 packages populaires, offrant ainsi un point de départ robuste pour les utilisateurs.
Cependant, cette distribution étendue entraîne une taille de fichier importante, ce qui peut être un inconvénient.
De plus, puisque Anaconda repose sur
conda
, il hérite également des limitations et des problèmes associés àconda
(voir les diapositives suivantes).
Miniconda
Miniconda est une version minimale d’Anaconda qui inclut uniquement conda
, Python, leurs dépendances et une petite sélection de packages essentiels.
Bien des utilisateurs expérimentés préfèrent miniconda
à Anaconda
.
Conda
Conda est un système de gestion des packages et des environnements open-source pour Python et R. Il facilite l’installation et la gestion des packages logiciels et la création d’environnements virtuels isolés.
Des conflits de dépendances conflicts dus à des interdépendances complexes de packages peuvent obliger l’utilisateur à réinstaller Anaconda/Conda.
Encombré par des exigences de stockage importantes et des problèmes de performance lors de la résolution des packages.
Mamba
Mamba est une réimplémentation du gestionnaire de packages conda
en C++.
Il est nettement plus rapide que
conda
.Il consomme moins de ressources informatiques.
Il fournit des messages d’erreur plus clairs et plus informatifs.
Il est entièrement compatible avec
conda
, ce qui en fait un remplacement viable.
Micromamba est un exécutable entièrement lié de manière statique et autonome. Son environnement de base vide garantit que la base n’est jamais corrompue, éliminant ainsi le besoin de réinstallation.
Complément à votre éducation
Marcel Turcotte
École de science informatique et de génie électrique (SIGE)
Université d’Ottawa