En un coup d'œil
- Missions: Développez un compilateur Python optimisé pour le calcul numérique et la physique.
- Entreprise: Startup innovante spécialisée dans l'open-source et la performance logicielle.
- Avantages: Salaire compétitif, travail à distance, et opportunités de développement professionnel.
- Autres infos: Environnement dynamique avec des possibilités de croissance de carrière.
- Pourquoi ce job: Rejoignez une équipe qui redéfinit le compilateur Python et impacte le monde de la recherche.
- Qualifications: Compétences en développement Python, optimisation GPU et design d'API.
Le salaire estimé est compris entre 61650 - 75350 € par an.
Quadrants est une couche de traduction open-source qui transforme le Python ordinaire en code machine optimisé à l'exécution, sur des backends CPU (Arm64, x86) et GPU (AMDGPU, CUDA, Metal, Vulkan). CUDA est la cible principale, avec x86 comme un fort concurrent, surtout pour la simulation en temps réel. Les autres soutiennent l'adoption et favorisent le prototypage rapide pour la recherche. L'ambition est claire : construire le meilleur « compilateur Python » au monde pour le calcul numérique critique en physique et en performance. Nous y sommes pleinement engagés et nous avons l'intention de surpasser les alternatives leaders comme « Nvidia Warp, Numba ou Triton ». C'est un projet autonome avec sa propre feuille de route, construit de manière ouverte. Genesis, notre simulateur physique, est son premier et principal utilisateur, source de ses charges de travail les plus difficiles et de ses benchmarks. Mais Quadrants est une infrastructure à usage général pour quiconque écrit du Python numérique critique en performance, pas un outil interne qui se trouve être public.
Le rôle consiste à posséder Quadrants de bout en bout : l'API, l'IR et la réduction, les passes d'optimisation, les primitives numériques et la feuille de route. Notre objectif ultime : que les ingénieurs écrivent pour la lisibilité et la maintenabilité, jamais pour la performance. Ils écrivent la version d'un algorithme avec laquelle ils sont le plus à l'aise, et Quadrants la reconstruit en noyaux qui s'exécutent comme si un expert les avait réglés à la main. La performance est le travail du compilateur, pas le leur. Y parvenir est un problème de frontière, à la fois recherche et ingénierie, et nous avons l'intention de définir l'état de l'art, en repoussant sans relâche les limites. Cela nécessite deux choses à la fois : la compétence GPU et compilateur de bas niveau pour rendre un seul noyau optimal, et la capacité de maintenir la cohérence de l'ensemble du système à mesure qu'il grandit. Le compromis fondamental est établi : l'utilisabilité passe en premier. Lorsque l'utilisabilité et la performance entrent en collision, l'utilisabilité l'emporte, sauf si le coût est sévère. Nous limiterons ce que le système prend en charge pour aller vite (formes statiques et allocation de taille fixe intégrées dans les noyaux, par exemple), mais jamais la commodité de l'API elle-même. Les experts qui souhaitent une performance maximale et un contrôle total sur le code généré obtiennent des échappatoires de bas niveau, jusqu'à l'assemblage en ligne, C ou PTX.
Ce que vous posséderez :
- API & expérience d'auteur. La surface contre laquelle les ingénieurs en physique et en calcul numérique écrivent, et, en tant que bibliothèque open-source, le visage du produit pour le monde. Idiomatique, naturel pour les utilisateurs de Python, jamais une langue séparée ajoutée à Python. Décorateurs propres, contraintes lisibles, erreurs nettes, véritables échappatoires.
- IR, réduction & backends. Un IR stable qui se réduit à plusieurs backends, avec de la place pour croître et la porte ouverte pour la simulation différentiable. Aujourd'hui, le graphe de calcul est exprimé à travers les propres constructions de Quadrants. Le récupérer automatiquement à partir de Python ordinaire est difficile, et un objectif à long terme plutôt qu'une réalité d'aujourd'hui.
- Optimisation. Transformer le code naïf en plans d'exécution solides : vectorisation, utilisation de registres et de mémoire partagée, barrières et atomiques, threading coopératif, élimination des tampons morts et du trafic redondant, suppression de la synchronisation inutile. Déplacer l'optimisation de bas niveau des utilisateurs vers la plateforme.
- Primitives. Cholesky, décomposition en valeurs propres, matmul, réductions, noyaux de solveurs. Chacun possédé avec sa correction, ses benchmarks et son suivi de régression. Surveiller Genesis et le compilateur ensemble. Chasser les gains de performance des deux côtés, dans Genesis et dans Quadrants lui-même. Proposer des changements d'API qui réduisent la duplication, améliorent la lisibilité et réduisent les cas particuliers spécifiques à la plateforme. Moins à maintenir, plus qui fonctionne simplement.
- Le projet en tant que produit. Évaluer les charges de travail réelles, suivre la performance dans le temps, détecter les régressions tôt. Rester proche des utilisateurs (Genesis en premier), trouver les frictions et les abstractions manquantes, favoriser l'adoption, définir la direction.
Qui vous êtes :
- Vous réfléchissez à des systèmes entiers et avez le goût de l'endroit où la complexité doit vivre.
- Vous mesurez avant d'optimiser, et vous visez le trafic mémoire et les frais de lancement avant les FLOPs.
- Vous avez des opinions sur la conception d'API.
- Vous écrivez des tests et des benchmarks au fur et à mesure, pas après.
- Le terrain sur lequel ce jugement repose : GPU. Ce à quoi l'optimal ressemble et pourquoi : motifs d'accès, registres, mémoire partagée, barrières, atomiques, threading. Une intuition CPU est un plus.
- Python & goût API. Python idiomatique. Un sens de ce qui est naturel pour les utilisateurs de Python. Des API qui libèrent les utilisateurs plutôt que de les contraindre.
- Compilateurs. Le chemin de l'écriture aux noyaux (IR, réduction, optimisation), pesé contre la maintenabilité.
Et comment vous travaillez : proactif et largement autodirigé. Vous récupérez le contexte à travers l'entreprise au lieu d'attendre. Vous êtes à l'aise pour parler aux ingénieurs qui utilisent ce que vous construisez, et à l'aise pour concevoir ouvertement pour des utilisateurs que vous ne rencontrerez jamais. Prêt à évoluer vers la direction d'une petite équipe (quelques personnes, à court terme).
Ce à quoi ressemble l'excellence :
- Les gens adoptent Quadrants en dehors de Genesis.
- Les ingénieurs écrivent un code plus clair avec moins de boilerplate.
- Les noyaux continuent de devenir plus rapides.
- La performance est suivie, pas devinée.
- L'architecture devient plus facile à étendre, pas plus difficile.
Ce à quoi nous ne faisons aucun compromis :
- Comment vous travaillez dépend de vous. Ce qui compte, c'est que votre propriété grandisse avec le temps : les angles morts diminuent, les parties pour lesquelles vous pouvez garantir augmentent, la dette technique diminue, le cœur reste sain. Cela nécessite de traiter la compréhension comme un véritable travail, pas comme une surcharge.
- Vous lisez et défiez la base de code au lieu de simplement empiler des fonctionnalités dessus.
- Vous ne tenez rien pour acquis que vous n'avez pas écrit.
- Vous surveillez la concurrence et ce qui arrive ensuite, et vous l'intégrez et le livrez. Utilisez des agents IA s'ils aident. Ce sont des outils de productivité, pas des propriétaires de code. Vous l'êtes.
ML Compiler & System Engineering & Research Paris employeur : Genesis
Travailler chez Technip Energies, c'est rejoindre une entreprise innovante et dynamique qui valorise la collaboration et l'excellence. Située dans un environnement stimulant, notre culture d'entreprise favorise le respect et l'engagement, tout en offrant des opportunités de développement professionnel à travers des programmes de formation comme T.EN University. Vous aurez la chance de contribuer à des projets significatifs dans le domaine de la durabilité et de la technologie, tout en évoluant dans un cadre sécurisé et bienveillant.
Conseils d'expert StudySmarter🤫
Voici comment nous pensons que tu pourrais décrocher ML Compiler & System Engineering & Research Paris
✨Construire ton réseau tech
Connecte-toi avec des professionnels de l'ingénierie et du développement logiciel via des meetups tech ou des conférences comme DevFest. C'est un excellent moyen d'apprendre sur les dernières tendances et de te faire connaître dans le milieu.
✨Contribuer à des projets open-source
Montre tes compétences en rejoignant des projets open-source sur GitHub. Non seulement cela renforce ton portfolio, mais ça te permet également de collaborer avec d'autres développeurs et de bâtir ta réputation dans le monde tech.
✨Préparer un excellent entretien
Pour décrocher un emploi à plein temps, il est crucial de préparer des réponses aux questions techniques et comportementales. Fais des simulations d'entretiens avec des amis ou en utilisant des plateformes dédiées pour te sentir plus à l'aise.
✨Postuler sur notre site
N'oublie pas de consulter notre site pour des opportunités chez Genesis. Postuler directement peut te donner un accès privilégié à nos offres et montrer ton intérêt spécifique pour notre entreprise. Allez, fonce !
Nous pensons qu'il te faut ces compétences pour exceller en tant que ML Compiler & System Engineering & Research Paris
Quelques conseils pour ta candidature 🫡
Démarre avec un CV percutant:Pour un poste d'ingénieur en développement logiciel, mets en avant tes compétences techniques comme les langages de programmation que tu maîtrises. N'hésite pas à inclure les projets sur lesquels tu as travaillé, surtout ceux qui montrent ton impact dans des situations concrètes. Les employeurs adorent voir ce que tu es capable de créer !
Valorise tes projets personnels:Si tu as des projets personnels ou des contributions sur GitHub, assure-toi de les inclure dans ta candidature. Cela te permet de montrer non seulement tes compétences techniques, mais aussi ta passion et ton engagement pour le développement logiciel. C'est un excellent moyen de te démarquer des autres candidats !
Personnalise ta lettre de motivation:Prends le temps de personnaliser ta lettre de motivation pour Genesis. Explique pourquoi tu es attiré par cette entreprise et comment tes compétences peuvent répondre à leurs besoins. C'est l'occasion de montrer un côté plus humain de ta candidature et d'expliquer ce qui te motive !
Soigne la mise en page:Une mise en page claire et concise est cruciale pour les candidatures dans le domaine de l'ingénierie logicielle. Utilise des sous-titres et des listes pour rendre ton CV et ta lettre plus facile à lire. Cela montre aussi que tu as un sens de l'organisation, ce qui est super important dans notre domaine !
Comment te préparer à un entretien d'embauche chez Genesis
✨Maîtrise des Outils de Développement
Assure-toi d'être à l'aise avec les outils et les langages de programmation que privilégie Genesis. Par exemple, si tu sais qu'ils utilisent beaucoup Java ou Python, revisite tes concepts clés et sois prêt à discuter de tes projets antérieurs qui mettent en avant ces compétences.
✨Prépare des Exemples de Projets Concrets
Rassemble des exemples concrets de projets sur lesquels tu as travaillé, surtout ceux qui mettent en avant des défis techniques. Sois prêt à expliquer tes choix, tes erreurs et comment tu as résolu des problèmes - cela montre ton process de réflexion et ta capacité à apprendre.
✨Sois Prêt pour des Tests Techniques
Il est fréquent d'avoir des tests techniques lors des entretiens dans l’ingénierie logicielle. Prépare-toi à résoudre des problèmes de codage en direct. Pratique sur des plateformes comme LeetCode ou HackerRank pour rester affûté et confortable face à la pression.
✨Montre Ton Intérêt pour l’Innovation
Dans le cadre d'un poste à temps plein, les employeurs cherchent des passionnés qui se tiennent à jour avec les dernières tendances technologiques. N’hésite pas à parler de tes lectures récentes, de conférences auxquels tu as assisté ou même de projets open-source que tu pourrais avoir suivis ou rejoints.