// pytorch → photons

Ingénieur logiciel · systèmes d'IA · Paris

Je fais tourner PyTorch sur de nouveaux accélérateurs

Je construis la couche logicielle qui transforme un modèle PyTorch en calcul exécutable par un accélérateur IA, du back-end compilateur au moteur d'exécution et au firmware.

défiler

// couche_00 · signal

À propos

Logiciels d'IA à la rencontre des modèles et du matériel

Portrait d'Alhussein Jamil

Alhussein Jamil

Systèmes d'IA, de PyTorch au matériel

Paris, France

Chez Arago, j'ai construit la chaîne logicielle qui permet d'exécuter des charges PyTorch sur un accélérateur IA photonique : intégration back-end, répartition dans le moteur d'exécution et code de lancement.

Auparavant, j'ai entraîné des politiques de contrôle pour des robots marcheurs et des exosquelettes chez Wandercraft, puis développé des systèmes de vision pour l'automatisation robotique chez EyePick. J'ai étudié à l'École Polytechnique et à Sorbonne Université.

J'aime les logiciels qui doivent composer avec le matériel, la physique, la latence et les humains. En dehors du travail, je passe volontiers du temps sur un projet personnel, un morceau de musique, un mur d'escalade ou une énigme que j'aurais dû laisser tranquille.

// couches_cachées · expérience

Expérience

Accélérateurs IA, robotique et vision par ordinateur, du prototype de recherche au logiciel de production

Du code qui devait fonctionner ailleurs que dans un notebook.

Ingénieur logiciel, accélérateurs IA

Arago · Paris

  • Couches back-end PyTorch/ATen pour un accélérateur IA photonique : noyaux sur mesure, exécution de graphes et intégration à PyTorch.
  • Ordonnancement du moteur d'exécution : partitionnement des graphes, allocation rapide, transferts entre accélérateurs, sérialisation des lancements et files concurrentes.
  • Code hôte relié au firmware : les lancements deviennent des graphes de primitives pour cœurs mono et points de synchronisation.
  • Travail au plus près du matériel : émission d'ISA sur mesure, interfaces pilotes, configuration des accélérateurs, simulation et validation.
Voir plus

Une pile d'accélération pensée d'abord pour PyTorch et pour les habitudes réelles des équipes d'IA.

Problème
Une multiplication matricielle photonique n'est qu'un noyau. Le produit doit assurer tout le trajet : de PyTorch au moteur d'exécution et au firmware, puis de nouveau vers des tenseurs utilisables normalement.
Ce que j'ai construit
Abaissement par le compilateur, moteur d'exécution côté hôte, chemins pilotes, allocation rapide, transferts entre accélérateurs, files de lancement et dispatch firmware.
Point délicat
Des régions de graphe ou des opérations isolées partent sur les accélérateurs, se décomposent en graphes de primitives, s'exécutent sur les cœurs mono, puis reviennent à PyTorch via des événements. Le tout doit rester familier pour une pile d'accélération classique.
PyTorchMoteur d'exécutionFirmwareAccélérateurs
Pourquoi il n'y a pas de dépôt →

Schéma d'exécution

Graphe PyTorch → découpage par le compilateur → exécution multi-accélérateur

01

Graphe de calcul PyTorch

entrée aten.mm norm gelu copie aten.mm add sortie
  • Les opérations ATen forment un véritable graphe de dépendances
  • Les arêtes de tenseurs indiquent où placer le calcul
  • Les régions accélérables sont isolées avant l'exécution
02

Compilateur + moteur d'exécution hôte

01 Abaisser le graphe
02 Répartir le calcul
03 Planifier les lancements et transferts
03

Exécution par accélérateur

sous-graphe A

Accélérateur 0

région -> DAG de primitives

Sessions d'exécution

file 0 file 1 file 2

Graphe primitif sur l'accélérateur

Cœur de contrôle
Unité de calcul laser
Synchronisation + événements matériel
PCIe / interconnexion des accélérateurs
sous-graphe B

Accélérateur 1

nœud ou région -> DAG de primitives

Sessions d'exécution

file 0 file 1 file 2

Graphe primitif sur l'accélérateur

Cœur de contrôle
Unité de calcul laser
Synchronisation + événements matériel
04

Résultat

  • Un lancement peut être un sous-graphe compilé ou une opération PyTorch isolée
  • Le firmware le transforme en DAG de primitives pour les cœurs mono
  • Les tenseurs intermédiaires circulent via PCIe ou les liens entre accélérateurs

Schéma simplifié — termes publics et génériques uniquement

Ingénieur en apprentissage automatique

EyePick · Paris

  • Développement de chaînes de vision par ordinateur pour l'automatisation robotique en temps réel : industrie, agriculture et cuisine.
  • Détection d'anomalies et classification d'images pour le contrôle qualité.
  • Adaptation de modèles ResNet lorsque les chaînes de type YOLO posaient des contraintes de licence.

Stagiaire en apprentissage par renforcement

Wandercraft · Paris

  • Entraînement de politiques de contrôle par RL pour le robot bipède Cassie et l'exosquelette Eve.
  • NVIDIA Isaac Gym et Ray RLlib pour la simulation parallèle et l'entraînement distribué.
  • Transfert sim-to-real avec apprentissage par imitation, adaptation de domaine et adaptation visuelle.

Stagiaire en algorithmes d'IA

Poppins (anciennement Mila) · Paris

  • Difficulté adaptative pour un jeu thérapeutique destiné aux enfants dyslexiques.
  • Clustering et métriques de jeu pour ajuster la difficulté sans retour explicite des enfants.
  • Travail sur l'algorithme et son intégration dans le jeu.

// poids · outils

Compétences et parcours

Les outils que j'utilise, ma formation et mes activités d'enseignement

Programmation

  • Python
  • C++
  • C
  • OCaml
  • Java
  • C#
  • SQL

Systèmes d'IA

  • Exécution PyTorch
  • Abaissement de graphes
  • Moteurs d'exécution
  • ISA sur mesure
  • Noyaux
  • Exécution multi-cœurs

Apprentissage automatique

  • Vision par ordinateur
  • Apprentissage par renforcement
  • Apprentissage par imitation
  • Transfert sim-to-real
  • Déploiement de modèles

Robotique

  • NVIDIA Isaac Gym
  • Ray RLlib
  • Contrôle robotique
  • Automatisation industrielle
  • Interfaces VR pour robotique

Outils

  • Linux
  • Git
  • Docker
  • Débogage
  • Intégration matériel/logiciel

Formation

  • École polytechnique

    Diplôme d'Ingénieur — équivalent master · 2020 — 2024

  • Sorbonne Université — UPMC

    Master 2 — Systèmes intelligents · 2023 — 2024

  • Lycées Buffon & Louis-le-Grand

    CPGE — MPSI → MP* · 2018 — 2020

Enseignement

  • Master X-HEC

    Intervenant invité en apprentissage automatique auprès d'étudiants en master.

  • Lycée Saint-Louis

    Examinateur oral (colleur) en mathématiques pour les étudiants en CPGE.

Langues

Français bilingue · Arabe langue maternelle · Anglais bilingue · Espagnol intermédiaire

Centres d’intérêt

  • MMA
  • Énigmes
  • Violon
  • Escalade

// propagation · travaux

Projets

Une sélection de projets avec du code, des démos fonctionnelles, ou les deux

open source · apprentissage par renforcement · MuJoCo

DropRL — une même pile d'entraînement pour plusieurs environnements

Un framework centré sur l'environnement et basé sur Ray RLlib : ajouter un dossier de tâche, choisir un algorithme en YAML, puis entraîner, reprendre et produire un rendu.

PythonRay RLlibMuJoCo
Problème
Les projets de RL mélangent souvent l'environnement et le code d'entraînement, ce qui oblige à tout recâbler pour chaque nouvelle tâche.
Ce que j'ai construit
Un framework centré sur l'environnement et basé sur Ray RLlib : ajouter un dossier de tâche, choisir un algorithme en YAML, puis entraîner, reprendre et produire un rendu.
Point délicat
Garder les tâches, la configuration et les checkpoints portables tout en prenant en charge un environnement complet de locomotion pour Cassie.
/ droprl · cassie · signaux de débogage RL synchronisés avec la vidéo t = 0.0s
/ droprl · snake-v0 · agent IA itération 0 · récompense 0.0 · score 0
étoile · politique π

projet de fin d'études · VR · robotique

Toucher affectif — VR

Une expérience Unity en VR avec contrôle du bras Franka Emika via Redis, calibration du suivi des mains et évaluations d'agréabilité/intensité dans le casque.

UnityVRFrankaRedis
Problème
Faire coïncider un geste de pinceau en VR avec un dispositif robotique réel, assez précisément pour une étude de psychophysique.
Ce que j'ai construit
Une expérience Unity en VR avec contrôle du bras Franka Emika via Redis, calibration du suivi des mains et évaluations d'agréabilité/intensité dans le casque.
Point délicat
Synchroniser rendu, robotique/haptique et réponses subjectives sans briser l'illusion.

Unity · VR · Franka Emika · Redis · suivi des mains

Simulation tactile

Simulation du toucher affectif

Une caresse au pinceau sur une main virtuelle, stimulus principal de l'étude.

Protocole et interface

Calibration

Calibration du suivi des mains

Le participant confirme les poses, puis suit un compte à rebours avant le début des essais.

Évaluation en VR

Interface agréabilité & intensité

Les réponses sont données dans le casque, sans interrompre le déroulé des essais.

projet étudiant · Unity · TDAH

Jeu de puzzles pour une étude sur le TDAH

Un monde central Unity avec quatre mini-jeux de réflexion, salles en pixel art, brouillard de guerre, logique de grille et puzzles physiques.

UnityC#Conception de jeu
Problème
Dans le cadre d'un projet de recherche étudiant, construire un jeu pour observer comment des enfants ayant un TDAH passent de l'exploration à l'exploitation.
Ce que j'ai construit
Un monde central Unity avec quatre mini-jeux de réflexion, salles en pixel art, brouillard de guerre, logique de grille et puzzles physiques.
Point délicat
~200 heures seul sur la boucle de jeu, la conception des niveaux, les mécaniques, l'éclairage et la version de test utilisateur.

Monde central et choix du niveau

Un temple central avec statues repères et portails vers chaque mini-jeu.

Projet étudiant réalisé seul · ~200 heures · conçu pour des tests avec des enfants TDAH

4 mini-jeux

Puzzle de caisses colorées

Une salle façon Sokoban : pousser les caisses sur les dalles de la même couleur.

Pont fragile

Les chiffres sur les caisses indiquent combien de cases tiennent avant que le pont cède.

Glissade sur glace et pièges

La glace ne freine pas, les pics attendent au milieu, et l'erreur se paie vite.

Labyrinthe à la lampe torche

Un labyrinthe circulaire où le brouillard de guerre ne révèle que les cases proches du joueur.

IA de jeu · Pygame

Noine — Jeu du moulin

Une implémentation Pygame complète : règles, interface et bot Minimax.

MinimaxPygamePython
Problème
Coder le Jeu du moulin de bout en bout, avec une IA qui sait vraiment jouer.
Ce que j'ai construit
Une implémentation Pygame complète : règles, interface et bot Minimax.
Point délicat
La génération des coups change entre placement, déplacement et vol ; la recherche doit donc suivre l'état exact de la partie.
/ noine — jeu du moulin ·

cliquez sur un point · formez un moulin pour capturer une pièce

version Pygame originale

Plateau Noine en milieu de partie avec pièces orange et blanches
Milieu de partie
Plateau Noine pendant la capture d'une pièce après un moulin
Phase des moulins

géométrie · transport optimal

Distances de Wasserstein convolutives

Un package Python testé pour calculer des barycentres de Wasserstein convolutifs sur des grilles 2D et 3D ainsi que sur des maillages triangulaires.

PythonTransport optimal
Problème
Rendre les distances de transport optimal utilisables sur grilles et maillages.
Ce que j'ai construit
Un package Python testé pour calculer des barycentres de Wasserstein convolutifs sur des grilles 2D et 3D ainsi que sur des maillages triangulaires.
Point délicat
Utiliser des convolutions et des résolutions de l'équation de la chaleur plutôt que de matérialiser une matrice dense de coûts par paires.

Démonstrations de barycentres

Transition de formes 2D

Des points deviennent une étoile grâce à un barycentre de Wasserstein convolutif sur grille 2D.

Transition d'images RGB

Des barycentres calculés canal par canal mélangent deux photos couleur tout en conservant une structure lisible.

Transition 3D voxelisée

Un dinosaure voxelisé et un double tore interpolent par un barycentre 3D légèrement lissé.

Transport sur surface

Des gaussiennes à noyau de chaleur se mélangent sur un tore en 13 étapes, avec l'étalement visible.

// espace_latent · projets

Autres projets

Des projets ciblés pour comprendre un système, tester une idée ou résoudre un problème

D'autres expériences sont disponibles sur GitHub.

// rendu · première_obsession

Premiers rendus 3D

Mes essais 3ds Max entre 10 et 15 ans

J'ai appris 3ds Max en autodidacte parce que je voulais créer des décors et des personnages à la Pixar. Ces rendus ont été mes premiers vrais projets créatifs sur ordinateur.

// couche_sortie · return

Contact

Un projet, un problème système ou un défi technique inhabituel ?