Normal Computing Corporation

Ingénieur Backend Compilateurs

PythonC++Rust
Traduction automatique. Consultez l’original.

À propos du poste

Normal Computing | Construisez avec nous

Le poste

Normal est une entreprise d'IA appliquée qui résout les problèmes les plus complexes en matière d'IA et de silicium. Nous concevons du matériel et des logiciels fondamentaux pour l'industrie des semi-conducteurs, des infrastructures d'IA critiques et les systèmes plus larges qui alimentent notre monde, en partenariat avec les institutions les plus avancées au monde. Nous travaillons en une seule équipe répartie entre New York, la Silicon Valley (Mountain View), Londres, Copenhague et Séoul.

Le matériel de Normal exécute les parties les plus limitées par la mémoire de l'inférence des grands modèles directement dans la mémoire, plutôt que de transférer les poids vers un processeur. Le logiciel qui rend cela programmable n'existe pas encore sous une forme standard. Obtenir un modèle correct sur ce matériel est le travail de l'ingénieur frontend ; le rendre rapide est le vôtre. Notre matériel ne ressemble ni à un CPU ni à un GPU, donc son backend de compilateur ne peut pas être emprunté à l'un d'eux. En tant qu'ingénieur compilateur axé sur le backend, vous aiderez à concevoir et à construire la compilation personnalisée qui mappe l'inférence LLM sur celui-ci, de la planification et la gestion de la mémoire au code que notre matériel exécute réellement.

Vous travaillerez à la frontière entre le compilateur et le matériel, assez près pour savoir quand une optimisation appartient à une couche différente, ou quand la bonne réponse est une nouvelle abstraction. Notre puce est pré-silicium, vous mesurerez donc votre travail par rapport à nos simulateurs et prototypes FPGA d'abord, puis par rapport au silicium dès son arrivée.

Vos responsabilités

  1. Génération de code : Construire les passes qui transforment les programmes de bas niveau en code exécuté par notre matériel, en concevant de nouvelles approches de compilation là où les approches conventionnelles ne conviennent pas. Le succès signifie un code correct et efficace pour chaque opération dont nos modèles ont besoin.
  1. Planification et gestion de la mémoire : Gérer la manière dont le travail et les données sont planifiés et placés à travers les ressources de notre matériel, mesuré par l'utilisation et la latence de bout en bout sur l'inférence LLM.
  1. Fusion et répartition : Gérer les décisions de fusion et de répartition pour l'inférence LLM, afin que le matériel passe son temps à calculer plutôt qu'à déplacer des données.
  1. Co-conception matérielle : Travailler sur la couche d'abstraction entre le compilateur et le matériel, et transmettre les contraintes du compilateur à nos architectes matériels pendant que la conception peut encore évoluer.
  1. Profilage et validation : Valider chaque optimisation avec des résultats mesurés à partir de simulateurs, de prototypes FPGA, puis du silicium, et maintenir une suite de régression de performance en laquelle l'équipe a confiance.
  1. Passages de relais inter-équipes : Prendre les programmes de bas niveau de nos ingénieurs compilateurs frontend et décider avec l'équipe quelles opérations le compilateur génère et lesquelles utilisent des noyaux optimisés manuellement.

Profil recherché

  1. Expérience approfondie en optimisation de compilateur ou en génération de code pour des accélérateurs ou d'autres cibles non-CPU : planification, pavage (tiling), fusion ou allocation de ressources
  1. Aisance à travailler près du matériel : vous pensez en termes de bande passante mémoire et d'utilisation ainsi qu'en termes de complexité asymptotique
  1. Volonté de concevoir des approches de compilation à partir de principes fondamentaux lorsque les approches existantes ne conviennent pas au matériel
  1. Expérience avérée dans la mise en œuvre d'optimisations ayant permis d'améliorer des indicateurs de performance mesurés
  1. Aisance dans la construction de logiciels pour du matériel en constante évolution, de la simulation jusqu'à la mise en service
  1. Maîtrise de Python et familiarité avec C, C++ ou Rust

Atouts supplémentaires

  1. Expérience avec la pile de compilation de PyTorch (TorchDynamo, FX, Inductor, torch.export) ou d'autres compilateurs ML, tels que IREE, TVM ou XLA
  1. Expérience en compilation pour des cibles de calcul en mémoire, spatiales ou d'autres cibles non-von-Neumann
  1. Connaissances en outils de conception matérielle tels que la synthèse logique ou le placement-routage
  1. Expérience dans la construction ou l'utilisation de simulateurs au niveau du cycle ou de performance pour guider les décisions d'optimisation
  1. Contributions à des infrastructures de compilateur ou de noyau open-source (par exemple, PyTorch, Triton, TVM, MLIR, LLVM)
  1. Publication ou présentation de travaux sur les compilateurs ou les performances lors d'événements tels que MLSys, ASPLOS ou CGO

Déclaration d'égalité des chances en matière d'emploi

Normal Computing est un employeur qui souscrit au principe de l'égalité d'accès à l'emploi. Nous célébrons la diversité et nous nous engageons à créer un environnement inclusif pour tous les employés. Tous les candidats qualifiés seront pris en considération pour un emploi sans égard à la race, la couleur, la religion, le sexe, l'orientation sexuelle, l'identité de genre, l'origine nationale, le handicap, le statut d'ancien combattant ou tout autre statut légalement protégé.

Aménagements pour l'accessibilité

Normal Computing s'engage à fournir des aménagements raisonnables aux personnes en situation de handicap. Si vous avez besoin d'aide ou d'un aménagement en raison d'un handicap, veuillez nous en informer à [email protected].

Avis de confidentialité

En soumettant votre candidature, vous acceptez que Normal Computing puisse collecter, utiliser et stocker vos informations personnelles à des fins liées à l'emploi, conformément à notre Avis de confidentialité pour les candidats.

Plus d’opportunités avec un seul profil

Vous souhaitez accéder à plus de postes sans répéter tout le processus ? Créez votre profil pour être trouvé par les entreprises utilisant Nort.

Créer mon profil

Ton prochain jobest déjà à ta recherche.

Nort

Plateforme de recrutement inversé pour développeurs

Réseaux sociauxInstagramLinkedInTwitter