4ml
☰ Menu
🇬🇧

Écouter cette page

Depuis décembre 2018 · Mis à jour en octobre 2026

Un environnement Python pratique pour l'intelligence artificielle

Guide d'installation et d'outillage pour l'IA, l'apprentissage automatique, la vision et le langage en Python, écrit pour les scientifiques, les étudiants et les équipes de laboratoire.

Par Warith Harchaoui, Mohamed Chelali, Matias Tassano, Pierre-Louis Antonsanti, Bachir Zerroug et Edmond Jacoupeau.

En service quotidien au laboratoire de mathématiques appliquées MAP5. Vos remarques et vos corrections sont les bienvenues : écrivez à Warith Harchaoui.

Introduction

Cette page répond à la question qui revient sans cesse : qu'est-ce que j'installe aujourd'hui pour faire de l'apprentissage automatique, de la vision ou du langage en Python ?

Elle prend parti, délibérément. La section 1 donne ce que nous installons sur toute machine neuve du laboratoire. La section 2 propose un tableau pour les cas où ce choix ne convient pas. Les sections 3 à 6 traitent des bibliothèques, de la carte graphique, des notebooks et des éditeurs, puis du chemin qui mène d'un essai à une démonstration présentable. La section 7 rassemble les recettes longues, une par système, prêtes à coller. La section 8 dit pourquoi nous gardons un équivalent libre à côté de chaque service commercial.

Elle évolue avec le domaine. Les commandes qu'elle donne sont celles que nous taperions aujourd'hui, pas celles d'il y a deux ans.

Sommaire

  1. Qu'est-ce que j'installe aujourd'hui ?
  2. Quelle configuration correspond à ma situation ?
  3. Le socle Python pour l'apprentissage automatique
  4. Carte graphique : NVIDIA CUDA ou Apple Silicon
  5. Notebooks, éditeurs et agents de code
  6. Du notebook à la petite application
  7. Les recettes d'installation complètes
  8. Notes historiques et philosophiques

1. Qu'est-ce que j'installe aujourd'hui ?

Toute la page tient en quatre commandes. Le reste n'est que le détail autour.

Il vous faut Miniconda d'abord. Les commandes ci-dessous reposent sur conda, livré avec Miniconda, une Anaconda allégée. La ligne d'installation dépend de votre système : prenez celle de votre machine en section 7, qui couvre Ubuntu, macOS sur Apple Silicon et Windows 11, puis revenez. Si conda --version répond déjà, passez votre chemin.

Une fois conda dans votre PATH, ouvrez un terminal neuf :

conda create -n env4ml python=3.13
conda activate env4ml
pip install scikit-learn pandas matplotlib seaborn jupyterlab
pip install torch torchvision torchaudio

Quatre lignes, et vous avez l'apprentissage automatique classique (scikit-learn), les outils de données (pandas, matplotlib, seaborn), les notebooks (JupyterLab) et l'apprentissage profond (PyTorch). PyTorch embarque ses moteurs mps (Apple Silicon) et CUDA dans la même wheel, et l'installation par défaut retient celui qui correspond à votre machine.

Trois cas demandent un détour : une wheel NVIDIA CUDA précise, un Windows natif, ou la configuration de classe sans PyTorch. Les recettes de la section 7 les traitent une à une. Si votre situation n'entre dans aucune de ces cases, le tableau de la section 2 propose autre chose. Et si vous ne voulez rien installer du tout, Google Colab vous ouvre un notebook distant, carte graphique comprise, avec NumPy, pandas, scikit-learn et PyTorch déjà en place.

Avant d'installer : quelques avertissements

2. Quelle configuration correspond à ma situation ?

L'installation de la section 1 convient à la plupart des lecteurs. Si la vôtre est plus particulière, une carte graphique donnée, une contrainte d'enseignement, un travail entièrement dans le cloud, cherchez votre ligne et suivez-la.

Votre situation Ce que nous conseillons Pourquoi
Portable sans carte graphique, vous débutez. Python + venv ou uv + JupyterLab + scikit-learn, PyTorch sur processeur au besoin. Le moins de pièces possible, et ça tourne partout.
Mac Apple Silicon (série M). PyTorch sur mps pour l'essentiel ; MLX pour l'expérimentation native. Bonnes performances en local et mémoire unifiée, mais court sur les très gros entraînements.
Vous avez une carte NVIDIA. PyTorch avec CUDA par le sélecteur officiel, ou conda-forge si les dépendances compilées se disputent. Le chemin le plus éprouvé, à toutes les échelles.
Pas de carte graphique, et il en faut une pour quelques heures. Google Colab. Des machines à carte graphique ou TPU, gratuites ou payantes, sans rien installer.
Serveur ou cloud que vous administrez (Linux + NVIDIA). Ubuntu LTS + Miniconda + PyTorch CUDA, piloté en SSH ou par VS Code à distance. Le même socle que sur votre portable, avec la puissance en plus.
Vous donnez un cours ou un atelier. conda et pip sans carte graphique, un requirements.txt épinglé, Colab en secours. Chaque étudiant doit pouvoir suivre ; la vitesse vient après.
Python scientifique lourd (dépendances compilées, géo, bio-informatique). conda-forge de bout en bout, ou un environnement uv ou pip soigneusement épinglé. Vous évitez l'essentiel des ennuis de compilation.
Vous voulez transformer un essai en petite application web. Streamlit, Gradio ou Taipy, ou Sprezzature si le résultat doit ressembler à votre projet plutôt qu'à l'outil. La section 6 déroule le chemin complet.

3. Le socle Python pour l'apprentissage automatique

En quelques décennies, le domaine est passé de Java à MATLAB puis à Python. Les entreprises qui pèsent mille milliards s'y sont arrêtées, la recherche a suivi avec ses financements et ses outils. Nous conseillons Python pour cette raison et pas par goût : c'est là que tout se passe. Si votre équipe travaille en R ou en Java, ONNX-R et DL4J vous permettent de livrer quand même. Rust progresse régulièrement : le site arewelearningyet.com en tient la chronique.

Les boîtes à outils que nous conseillons

Classées par date de sortie de l'outil principal, ce qui donne au passage une petite histoire du domaine. Les notebooks, les éditeurs et les agents de code ont leur section à eux, la section 5.

AI helpers

Dix-sept bibliothèques Python sous licence BSD-3-Clause, que Warith maintient avec Mohamed Chelali et Bachir Zerroug, en ligne depuis avril 2024. L'index complet se trouve sur deraison.ai/ai-helpers. Chacune couvre un coin précis de la chaîne IA et média, pour vous éviter de réécrire la même plomberie à chaque projet. Prenez le coin qu'il vous faut : chaque paquet tire os-helper tout seul.

Deux choses les distinguent, au-delà du confort. Toutes exposent les mêmes cinq surfaces : une interface Python, deux lignes de commande, un serveur HTTP FastAPI, un jeu d'outils MCP monté sur cette même application, et une compétence installable pour Claude Code ou OpenCode. La surface MCP n'est pas une seconde implémentation, ce sont les mêmes routes montées sur /mcp, donc les deux ne peuvent pas diverger. Et le local est le défaut : audio, vidéo, capture, voix, md2star et wallet tournent entièrement chez vous, sur ffmpeg, whisper.cpp, pyannote et un Ollama local. Les deux qui déplacent vos données, bucket-helper et sftp-helper, le disent franchement : c'est leur métier.

Le socle. os-helper : fichiers, empreintes, configuration, mesure du temps, sur tous les systèmes. La fondation des seize autres.

Son et voix. audio-helper charge, convertit, sépare les sources avec Demucs en option, découpe et recolle. vocal-helper transforme du son en paroles transcrites et attribuées à leur locuteur, sur Silero VAD, whisper.cpp et pyannote, en flux ou par lots, avec un résumé continu facultatif. speaker-helper fait le chemin inverse, du texte vers la parole, dans votre propre processus plutôt que derrière un serveur, et produit la piste minutée qui permet à une page de suivre mot à mot. discussion-helper referme la boucle en une vraie conversation parlée, qui s'arrête dès que vous coupez la parole.

Vidéo et capture. video-helper extrait les images par plusieurs moteurs, VidGear, PyAV ou un tuyau ffmpeg, convertit, et manipule les formats de sous-titres. capture-helper capture caméra et microphone en direct, avec un configurateur de scènes dans le navigateur.

Récupérer des médias. youtube-helper télécharge vidéo, son et vignettes depuis YouTube, Vimeo, DailyMotion, SoundCloud et Twitch, par yt-dlp. podcast-helper généralise la même promesse : une adresse entre, du son brut sort, qu'il s'agisse d'un fichier, d'une adresse directe ou d'un flux RSS, avec un rééchantillonnage conforme à Shannon.

Stockage et transfert. bucket-helper pour S3 et tout ce qui lui ressemble, MinIO, Backblaze B2, DigitalOcean Spaces, Cloudflare R2, Wasabi. sftp-helper pour SFTP, avec vérification stricte de la clé d'hôte.

Documents et cache. md2star fait le pont du Markdown vers DOCX, PPTX et PDF sur Pandoc, avec vos gabarits, le rendu Mermaid et les bibliographies. Sa commande twin refait le chemin à l'envers, d'un PDF vers un Markdown modifiable. wallet-helper vous évite de relancer deux fois le même appel coûteux : une mémoïsation persistante indexée sur le contenu du fichier et non sur son chemin, et un verrou qui fond en un seul appel ceux qui partent en même temps.

Décider plutôt que deviner. Trois d'entre elles répondent à une question que vous trancheriez sinon à l'habitude. best-engine-ai-helper mesure la machine sur laquelle il tourne, mémoire unifiée Apple, mémoire vidéo NVIDIA ou mémoire vive, puis choisit et télécharge le meilleur grand modèle local qui tienne dans une marge de sécurité. ann-router applique la même idée à la recherche vectorielle : décrivez votre problème en chiffres, taille du jeu, dimension, rappel visé, budget mémoire, et il choisit puis justifie un moteur parmi la recherche exacte, turbovec, HNSW, FAISS, Annoy, Qdrant et pgvector. elbow-helper s'attaque à la version difficile de la question du coude : non pas « où est le coude ? », à quoi un algorithme répond toujours quelque chose, même sur du bruit, mais « y en a-t-il un ? », avec le droit de s'abstenir.

Comparer plutôt qu'affirmer. standpoint transforme un tableau de comparaison en une carte de positionnement légendée, accompagnée d'un YAML de toutes les coordonnées : le placement devient vérifiable au lieu d'être dessiné à la main.

Cinq d'entre elles ont une réécriture en Rust, publiée sur crates.io et non sur PyPI, pour les machines sans Python : audio-helper-rs, capture-helper-rs, podcast-helper-rs, youtube-helper-rs et md2star-rs. Elles couvrent moins de terrain en échange d'un encombrement minuscule, et ne remplacent pas les versions Python trait pour trait.

4. Carte graphique : NVIDIA CUDA ou Apple Silicon

Deux chemins matériels se partagent le travail en 2026, et ils ne servent pas aux mêmes choses. Prenez celui qui correspond à la tâche devant vous.

NVIDIA CUDA

La configuration de référence pour entraîner sérieusement : écosystème mûr, la plus grande collection de modèles, le plus d'outillage tiers, et le seul chemin réaliste pour l'entraînement à grande échelle et l'inférence à fort débit.

Apple Silicon (série M)

Une option sérieuse pour travailler en local. La mémoire unifiée et le silence de la machine rendent l'expérimentation, le prototypage et l'enseignement agréables, et suffisent à quantité de travaux de taille moyenne. Ce n'est pas un remplacement de CUDA quand les modèles grossissent.

Règle pratique

Développez et prototypez sur la machine que vous avez sous la main ; Apple Silicon rend cela confortable. Quand l'expérience déborde du portable, passez sur une machine CUDA, une carte dans le cloud ou une grappe de calcul. L'installation d'une carte graphique coûte toujours du temps : déménagez une fois que le déménagement est rentable, et pas avant.

5. Notebooks, éditeurs et agents de code

L'endroit où vous écrivez compte presque autant que ce que vous écrivez. Trois couches se touchent tous les jours : les notebooks pour explorer, les éditeurs pour le vrai travail, et les agents de code, qui se posent désormais par-dessus.

Les notebooks

Les éditeurs

VS Code reste le choix sûr au quotidien. Deux dérivés tournés vers l'IA sont apparus depuis 2023 :

Les agents de code, une couche d'abstraction de plus

La programmation a toujours avancé par couches. Le code machine a cédé à l'assembleur, l'assembleur au C, le C à Python, JavaScript et Rust. Chaque couche a laissé le programmeur exprimer davantage son intention et confier davantage de mécanique à un outil, le compilateur. Les grands modèles de langage ajoutent la couche suivante : la langue naturelle devient la source, le code devient ce que la machine en tire.

Le langage de programmation le plus en vogue, c'est l'anglais.

Andrej Karpathy, message public du 24 janvier 2023. Source.

C'est le point de vue de l'optimiste. Vue depuis l'autre bout de la pile, la même observation donne ceci, de la part du créateur de Linux :

L'IA est un formidable outil nouveau, mais c'est un outil, et quand je vois des gens dire « Hé, 99 % de notre code est écrit par l'IA », ça me met vraiment en colère, parce que ces mêmes gens, je peux à peu près vous le garantir, ont 100 % de leur code écrit par des compilateurs.

Linus Torvalds, discours d'ouverture de l'Open Source Summit North America, Minneapolis, mai 2026. Extrait vidéo.

Les deux ont raison en même temps. Karpathy décrit ce qui devient accessible : la plupart des gens obtiendront un programme utile en écrivant de l'anglais plutôt que du Python. Torvalds rappelle ce qui ne se délègue pas. Quelqu'un comprend ce que le compilateur, ou le modèle, a réellement produit, et c'est encore lui qui saura le déboguer, l'accélérer et le livrer. Le jugement, le débogage, les tests, l'architecture et le goût n'ont disparu nulle part. Un agent de code sert surtout quand on sait déjà ce qu'on veut construire : il amplifie une intention, il n'en fournit pas.

Pour un étudiant, la leçon tient en peu de mots. Traitez l'agent comme le compilateur suivant. Dites clairement ce que vous voulez, puis relisez d'un œil critique ce qui revient. Les deux que nous utilisons le plus :

Deux agents de code que nous recommandons

Claude Code

L'agent en ligne de commande d'Anthropic. Il lit votre dépôt, lance des commandes, modifie des fichiers et suit les compétences déclarées dans ~/.claude/skills/. Particulièrement bon en relecture, en remaniement, en débogage de bout en bout et sur les modifications qui touchent plusieurs fichiers à la fois.

OpenCode

Agent libre, dans le terminal, qui pilote Claude, GPT ou des modèles locaux derrière la même interface, et lit le même format de compétences depuis ~/.opencode/skills/. À choisir pour ne pas dépendre d'un seul fournisseur, ou pour faire tourner un modèle local sur du code sensible.

Les deux lisent le même format de compétences : un dossier contenant un SKILL.md, qui apprend un seul métier à l'agent et ne se charge que lorsque votre demande y correspond. La suite que nous employons pour tout ce qui finit sur un écran, de la page de démonstration à la figure d'un article, s'appelle Sprezzature, et fait l'objet de la section 6.

6. Du notebook à la petite application

Les projets suivent presque tous la même trajectoire :

Notebook → script → ligne de commande → petite interface web → démonstration déployée

Vous cherchez d'abord le modèle qui marche dans un notebook. Vous promouvez les cellules utiles en script, pour que l'expérience se rejoue. Vous habillez le script d'une ligne de commande, pour qu'un collègue le lance sans lire votre code. Vous posez une petite interface web par-dessus, pour qu'un interlocuteur l'essaie sans terminal. Et si tout cela survit, vous déployez.

À chaque barreau son outil. Voici comment je choisis.

Les générateurs de formulaires, côté Python

Pour aller vite du notebook à l'application, les options Python sont Streamlit, Gradio et Taipy. Chacune transforme du code en formulaire web en quelques minutes et couvre très bien le cas courant. Le prix à payer : le résultat ressemble à une application Streamlit, Gradio ou Taipy, parce que leur CSS se laisse mal reprendre. À la longue, elles se ressemblent toutes.

Quand vous avez déjà une ligne de commande : Sprezzature

Beaucoup de projets ont une ligne de commande qui marche avant d'avoir quoi que ce soit d'autre, en argparse, click ou Typer. La question devient alors : comment poser une interface utilisable par-dessus, sans tout réécrire en Streamlit ? Sprezzature est une réponse. C'est une suite de neuf compétences libres pour Claude Code et OpenCode, qui verrouille l'agent sur une seule pile côté navigateur, du JavaScript sans cadriciel avec Tailwind CSS et les trois familles Roboto, et lui remet un système de design déjà choisi.

Demandez à l'agent de « mettre une interface graphique sur cette ligne de commande ». Vous récupérez une page unique : index.html, app.js et une configuration Tailwind. Chaque option de votre analyseur d'arguments devient le bon contrôle de formulaire, et la sortie de la commande se déverse dans un panneau de journal. Pas de cadriciel qui vous retient, pas de moteur Python à servir, pas d'« air de Gradio » : du HTML ordinaire que vous pouvez modifier.

Les neuf compétences

Installez celles dont vous avez besoin. sprezzature-ui porte les règles de la pile et les jetons de design ; les autres en héritent.

Compétence Ce qu'elle fait
sprezzature-ui Composants, pages, formulaires et tableaux de bord en JavaScript sans cadriciel et en Tailwind, avec mode sombre, anneaux de focus et garde-fous de mouvement réduit par défaut.
sprezzature-cli-gui Lit votre analyseur d'arguments (argparse, click, Typer, clap, commander, cobra) et produit la page décrite plus haut.
sprezzature-publish Transforme un dossier de Markdown en site statique : métadonnées, favicons, plan du site, robots.txt, llms.txt, flux Atom et RSS, réécritures en langue claire, et narration locale avec lecture suivie phrase par phrase.
sprezzature-accessibility Vingt règles d'accessibilité décidables depuis la source HTML, assez rapides pour tourner avant chaque commit. Rédige aussi le texte de remplacement manquant, avec un modèle de vision local.
sprezzature-colors Audits de contraste WCAG, simulation des déficiences de la vision des couleurs, palette choisie avec éclaircissement et assombrissement perceptuels, et générateur de thème Tailwind.
sprezzature-audio Sous-titres WebVTT et SRT depuis un whisper.cpp local, plus qui a parlé quand, qui est qui, et la traduction des sous-titres.
sprezzature-ux-laws Les trente lois de l'expérience utilisateur, et un auditeur pour les manquements qu'une machine sait détecter (Hick, Fitts, Miller, Jakob, Tesler).
sprezzature-figures 167 types de graphiques en SVG écrits à la main, les figures d'explicabilité (SHAP, Shapash, LIME), les graphes causaux (DoWhy, EconML), et les diagrammes Mermaid ou TikZ.
sprezzature-maps Cartes choroplèthes et planches de situation avec zones de contrôle, sur de vraies projections géographiques, en cinq modes.

Il y en avait une dixième, sprezzature-vision, fondue dans sprezzature-accessibility : l'outil qui repère un texte de remplacement manquant est aussi celui qui devrait savoir l'écrire.

Installation avec Claude Code

VERSION=$(curl -fsSL https://api.github.com/repos/warith-harchaoui/sprezzature/releases/latest \
  | sed -n 's/.*"tag_name": *"v\([^"]*\)".*/\1/p')
curl -L https://github.com/warith-harchaoui/sprezzature/releases/download/v${VERSION}/sprezzature-skills-${VERSION}.tar.gz | tar xz

mkdir -p ~/.claude/skills
cp -r sprezzature-ui sprezzature-cli-gui sprezzature-figures ~/.claude/skills/

Ou avec OpenCode

mkdir -p ~/.opencode/skills
cp -r sprezzature-* ~/.opencode/skills/

Documentation : sprezzature.ai. Dépôt : github.com/warith-harchaoui/sprezzature.

Pourquoi cela compte quand on fait de l'apprentissage automatique

Quand la démonstration doit partir

Dès qu'une page HTML pilote une ligne de commande, l'empaquetage devient simple. Tauri pour une application de bureau. FastAPI pour une démonstration hébergée avec une frontière HTTP nette. Un export ONNX quand le modèle doit quitter Python. Chaque étape s'ajoute sans rien réécrire, parce que la ligne de commande, le modèle et l'interface restent indépendants.

Servir le modèle en production

Servir un modèle, c'est l'héberger une fois entraîné, chez vous ou dans le cloud, et l'exposer derrière une interface pour que des applications s'y branchent. Pour le transporter d'un langage à l'autre, utilisez ONNX : à la fois un format de fichier et un moteur d'exécution, maintenu par une communauté libre avec Microsoft et la Linux Foundation AI. Prototypez en Python, puis déployez le fichier par ONNX Runtime en C, C++, C#, Java, JavaScript ou Objective-C.

Quand la performance décide, la route éprouvée reste le C ou le C++ appelé depuis un langage de plus haut niveau. Côté Python, pybind11 offre la meilleure expérience, et Meta s'en est servi pour fastText. Cython demeure solide, scikit-learn en étant la vitrine. Numba compile à la volée et convient bien aux boucles de calcul les plus sollicitées. Les coremltools d'Apple ouvrent l'accès au moteur neuronal depuis Python au moment de l'inférence.

7. Les recettes d'installation complètes

Voici la forme longue de la section 1. Elles servent dans trois cas : préparer une machine neuve, installer les pilotes NVIDIA et CUDA, ou obtenir un environnement de type Linux sur Windows. Partout, l'environnement s'appelle env4ml et Python est en 3.13, la version la plus récente pour laquelle toute la pile de la section 3 publie des wheels. Mettez 3.12 si un paquet dont vous dépendez n'a pas suivi.

Ubuntu (22.04 LTS ou supérieur)

  1. Installer Miniconda :

    mkdir -p ~/miniconda3
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
    bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
    rm -rf ~/miniconda3/miniconda.sh
    ~/miniconda3/bin/conda init bash
    

    Fermez et rouvrez le terminal, puis créez l'environnement :

    ENV=env4ml
    conda update -y -n base -c defaults conda
    conda create -y -n $ENV python=3.13
    conda activate $ENV
    conda install -y pip
    pip install scikit-learn pandas matplotlib seaborn jupyterlab
    
  2. Pilote NVIDIA et CUDA : suivez les instructions de Google Cloud sur votre propre machine. Indispensable pour l'accélération NVIDIA.

    Installez ensuite PyTorch avec la wheel CUDA correspondante, par le sélecteur officiel. Prenez le suffixe cuXXX dans le sélecteur, pas sur cette page : chaque canal CUDA se fige dès que PyTorch cesse de construire pour lui, si bien qu'un suffixe périmé installe sans rien dire un vieux PyTorch au lieu d'échouer. En octobre 2026, le canal le plus récent est cu130 :

    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130

  3. Activer l'environnement à chaque session :

    ENV=env4ml
    conda activate $ENV
    

macOS (Sonoma 14 ou supérieur, Apple Silicon)

Sur les Mac Apple Silicon, la situation s'est nettement améliorée. PyTorch sait viser le moteur Metal Performance Shaders par l'appareil mps, ce qui rend l'expérimentation locale confortable. Apple développe aussi MLX, une bibliothèque de tableaux proche de NumPy, avec différentiation automatique, pensée pour la recherche sur ses propres puces. Les deux sont excellentes en local ; pour les entraînements lourds, CUDA reste la référence (voir la section 4).

  1. Outils en ligne de commande et Homebrew :

    xcode-select --install
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    brew install wget
    
  2. Installer Miniconda (Apple Silicon, arm64) :

    mkdir -p ~/miniconda3
    curl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh -o ~/miniconda3/miniconda.sh
    bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
    rm -rf ~/miniconda3/miniconda.sh
    ~/miniconda3/bin/conda init zsh
    

    Fermez et rouvrez le terminal, puis créez l'environnement :

    ENV=env4ml
    conda update -y -n base -c defaults conda
    conda create -y -n $ENV python=3.13
    conda activate $ENV
    conda install -y pip
    pip install scikit-learn pandas matplotlib seaborn jupyterlab
    pip install torch torchvision torchaudio
    

Windows 11

Pour 2026 nous recommandons Windows 11 à qui travaille en Windows natif. Mais pour tout travail sérieux d'apprentissage automatique, nous conseillons fortement WSL2, le sous-système Windows pour Linux. Vous y obtenez un vrai noyau Linux et un environnement proche de ce que font tourner les serveurs, si bien que les mêmes commandes marchent à trois endroits : votre portable, un exécuteur d'intégration continue et une machine distante à carte graphique.

Le chemin recommandé : WSL2

Depuis un PowerShell en administrateur :

wsl --install -d Ubuntu

Ouvrez ensuite l'invite Ubuntu et suivez la recette Ubuntu ci-dessus. CUDA fonctionne dans WSL2, par le guide officiel NVIDIA.

Le chemin Windows natif

S'il vous faut vraiment du Windows natif, par exemple parce qu'un kit de développement n'existe que là :

  1. Installer Miniconda :

    curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe -o miniconda.exe
    start /wait "" miniconda.exe /S
    del miniconda.exe
    
  2. Créer l'environnement :

    set ENV=env4ml
    conda update -y -n base -c defaults conda
    conda create -y -n %ENV% python=3.13
    conda activate %ENV%
    conda install -y pip
    pip install scikit-learn pandas matplotlib seaborn jupyterlab
    

Sans rien installer

Si vous préférez ne rien toucher sur votre machine, Google Colab ne demande aucune installation : ouvrez un notebook dans le navigateur et la carte graphique est déjà branchée. Parfait pour une expérience ponctuelle, un devoir ou une courte démonstration.

8. Notes historiques et philosophiques

Le logiciel libre, groupe électrogène de secours

L'IA est la nouvelle électricité.

Andrew Ng, Stanford Graduate School of Business, janvier 2017.

La formule a été répétée au point de paraître évidente, mais le chemin qu'elle décrit est réel. L'électricité est passée de technologie de pointe à service public, puis à quelque chose auquel plus personne ne pense, et l'IA suit la même route. La comparaison sert ici pour une raison précise : l'électricité est aussi le cas d'école de la bonne façon de dépendre de quelque chose.

Dans n'importe quel pays de l'OCDE, un hôpital est raccordé à un réseau conçu, régulé, surveillé et très largement fiable. Il garde quand même un groupe électrogène au sous-sol. Personne ne fait tourner la réanimation dessus un mardi ordinaire : il est là pour le jour où le réseau tombe, parce que « nous faisions confiance au fournisseur » n'est pas une réponse défendable.

L'IA s'installe dans la même catégorie que l'électricité, l'eau et les routes. Hôpitaux, ministères, laboratoires, écoles et petites entreprises en viennent à en dépendre d'une façon qu'il serait douloureux de défaire. La différence avec le réseau électrique, c'est que les fournisseurs d'IA ne sont pas l'État : ce sont quelques entreprises privées, dans quelques juridictions, chacune avec ses tarifs, ses règles et son historique de pannes.

La réponse pratique est celle de l'hôpital. Prenez une IA commerciale quand c'est le bon outil. Gardez un équivalent libre installé et testé. Un jour, une facture, un changement de conditions, une limite de débit ou une décision politique mettra l'option commerciale hors de portée. L'IA libre est, au minimum, le groupe électrogène de la centrale payante.

Même la meilleure interface payante tombe en panne. Incidents chez le fournisseur, coupures régionales, clés révoquées, quotas rabotés du jour au lendemain, versions de modèles retirées, fournisseur qui quitte un pays : rien de tout cela n'est hypothétique, et tout est arrivé en production cette année. Garder une solution libre sous la main relève du simple bon sens, idéalement une que vous pouvez faire tourner chez vous ou sur vos propres serveurs. Le même bon sens qui met un groupe électrogène au sous-sol d'un hôpital qui n'a jamais manqué de courant.

Une double pile, par pragmatisme

Un cercle vertueux, pas une rivalité

Au-delà de l'argument du secours, les deux côtés se nourrissent. Les laboratoires commerciaux poussent la frontière ; le libre rattrape, souvent en quelques mois, puis la pousse plus loin avec des idées que la version propriétaire suivante absorbe à son tour. La filiation se lit facilement : TensorFlow et PyTorch ouverts par Google et Meta, l'article fondateur sur le Transformer déposé sur arXiv, Hugging Face et son dépôt de modèles, llama.cpp faisant tourner des modèles sérieux sur un portable, les poids ouverts de Llama, les recettes de raisonnement de DeepSeek-R1. Chacun a effondré une courbe de coût ou débloqué une technique sur laquelle le monde propriétaire a bâti, et réciproquement.

L'IA moderne n'aurait pas pu se construire en vase clos. Ses articles, ses jeux d'épreuve, ses références reproductibles et la communauté mondiale qui les lit et les améliore avaient besoin de la porte ouverte. Le domaine est trop vaste, trop transversal et trop rapide pour qu'un seul laboratoire le porte. Sans logiciel libre, pas de PyTorch dont on apprend, pas de prépublication qu'on reproduit un vendredi soir, pas de carnet Kaggle qu'on bifurque. Pas de domaine du tout.

La double pile est donc deux choses à la fois. Une bonne pratique : le groupe tourne une fois par mois, l'équipe sait le démarrer, et le jour où le réseau tombe l'hôpital continue. Et une dette reconnue : tous les autres jours, le réseau lui-même tourne sur du code ouvert, des articles ouverts et des poids ouverts.

Les cadriciels qui ont compté

Des cadriciels et des couches graphiques plus anciens, Apache MXNet, PlaidML, DeepCL, ont façonné l'outillage d'aujourd'hui. Je ne commencerais plus un projet avec aucun d'eux ; MXNet en particulier a été retiré au grenier d'Apache. Ils valent pour comprendre d'où l'on vient, pas pour défricher.

Pourquoi conda et pip

Tout au long de cette page, le choix par défaut est conda et pip, pour une raison pratique :

Créez l'environnement avec conda, installez avec l'un ou l'autre selon le besoin. Pour l'exporter et le recréer :

conda list --export > requirements.txt
conda create --name NOMENV --file requirements.txt

Et si quelque chose tourne mal et qu'il faut repartir de zéro :

cd ~
rm -rf miniconda*
rm -rf .conda*

Qui débute et cherche à pratiquer trouvera dans les cours gratuits de Kaggle un bon point de départ, une fois l'environnement de la section 1 en place.