Intro à Julia
Cette page à été créé à l'occasion de mon talk dans le résaux INRAE 2 neurones
Contactez moi si quelque chose ne marche pas.
Programme
Nous allons à la fois introduire les bases du langage de programmation Julia et les Réseaux Antagonistes Génératifs (GAN). Pour Julia, nous ne discuterons pas seulement de la rapidité, mais aussi de certaines fonctionnalités essentielles, telles que le "multiple dispach" (définition multiple), qui rendent le langage unique, par exemple en termes d’expressivité et de composition de packages. Dans la dernière partie, après une brève introduction des concepts fondamentaux des GANS, nous effectuerons une application simple (en Julia !).
Le mode de présentation sera assez interactif avec des parties de présentations et d'autres de travaux pratiques/expérimentations.
Instructions d'installation
Pour installer Julia en amont de la présentation et quelques packages que nous utiliserons, je recommande :
Juliaup
Juliaup installe, gère le path et les versions (et plus) très simplement.
Linux/Max
Simply type in terminal:
curl -fsSL https://install.julialang.org | sh
Windows
Via le Windows store (ici par exemple), cherchez Julia puis "installer".
Sur Windows, il se peut que l'antivirus soit agressif en vers juliaup
(d'expérience, il l'est avec tout le monde, ex: Matlab). Si vous n'avez pas la main pour ajouter une exception de sécurité, essayez l'installation classique.
Tester l'installion
Dans votre terminal (PowerShell sur Windows) écrivez
julia
Ça devrait ouvrir Julia (et donc que les path
ont bien été ajouté).
Quelques Packages
Une fois dans Julia faite
import Pkg
#install
Pkg.add(["Pluto", "Plots", "BenchmarkTools"]) # notebook pkg, Plot pkg, timing pkg
Pkg.add(["Flux"]) # Deep learning pkg
#load (and compile the first time you load)
using Pluto, Plots, BenchmarkTools
using Flux
Cela va installer quelques packages clés (vous pouvez en installer d'autres en avance, cf les notebooks). Ça va prendre un certain temps!
En Julia, la première fois que l'on fait quelque chose (installation, loader un pkg, executer une fonction, etc), ça prend du temps -> (pre)-compilation. Soyez patient, faites un café/thé!
Éditeur, IDE, Notebook
Comme IDE/notebook, nous allons tester VSCode, Jupyter et Pluto. Dans VSCode installer l'extension Julia. On pourra aussi utiliser l'extension Jupyter.
Normalement, le path
devrait être ajouté par juliaup
lors de l'installation. Parfois, il faut redémarrer VSCode. Vous pouvez tester l'extension Jupyter avec Julia en faisant dans un nouveau notebook 1+1
. On vous demandera de choisir un kernel, choisissez Julia. Ça devrait marcher.
Notebooks que l'on va utiliser
J'ai divisé en plusieurs notebook la présentation pour alléger chacun et que vous puissiez vous concentrer sur ceux qui vous intéressent.
- Présentation de Julia
notebook_1_Presentation.jl
(notebook Pluto) notebook_2_multiple_dispach_on_animals.ipynb
example de "multiple dispach" (notebook Jupyter)notebook_3_speed_sum_example.jl
exemple: performance + code générique (notebook Pluto). Pour fonctionner pleinement, celui-ci nécessite que vous ayez installé un compilateur C, R, Python avecnumpy
. Même s'il vous manque un de ces éléments, le reste du notebook devrait fonctionner quand même.- Exemple: Optimisation + ODEs + Bayesian (notebook Pluto)
notebook_4_Optim_DiffEq.jl
. Un peu lourd! - Présentation des GANs, le beamer pdf.
- Application GAN avec le package
Flux.jl
d'abord sur un exemple simplenotebook_5_GAN_simple_example.ipynb
puis sur l'ensemble de données MNIST (notebook Jupyter)notebook_6_dcGAN_MNIST.ipynb
.
Voici une version .html
(pas besoin de Julia) statique des notebooks (à télécharger et ouvrir dans un navigateur) notebook_1_Presentation.html
, notebook_3_speed_sum_example.html
et notebook_4_Optim_DiffEq.html
Notebook Pluto
Pour charger un notebook Pluto, il ne s'agit que de fichiers .jl
normaux avec de nombreux commentaires que Pluto utilisera pour générer le notebook et installer les packages. Pour charger un notebook Pluto, exécutez
import Pluto; Pluto.run()
Cela chargera une page dans votre navigateur Web. Là, trouvez votre cahier et ouvrez-le. Si vous ouvrez votre Julia dans le dossier du notebook, il sera plus facile de retrouver le fichier ! Une fois à l’intérieur, cliquez sur Exécuter (l’aperçu en mode sans échec est une nouvelle fonctionnalité). Les notebooks Pluto peuvent être partagés et vue (sans Julia) au format .html
statique, à partir de là, vous pouvez les exécuter en un clic avec Binder (cela prend cependant du temps).
Lorsque vous lancez un notebook Pluto:
- Tout le code s'exécutera en même temps
- Si c'est la première fois que vous l'utilisez, tout le package sera installé, chargé, précompilé
Cela prend donc du temps au début. Le point positif, ces notebooks sont entièrement reproductibles, toutes les dépendances du code et de la version du package sont stockées dans le notebook (en commentaires). Il suffit d'ouvrir le notebook (et de le run
) et tout devrait fonctionner automatiquement.
Notebook Jupyter
Si vous utilisez l'extension VSCode, ouvrez simplement le notebook .ipynb
dans VSCode, puis sélectionnez le noyau Julia lorsque vous y êtes invité. Vous pouvez également utiliser le package IJulia.jl et suivre les instructions.