Les offres de “EN-CORE.IO”

Il y a 10 joursEN-CORE.IO

Ingénieur IA embarquée - Déploiement CNN sur processeur (Python, C/C++)

  • CDI
  • Grenoble (Isère)

Description de l'offre

Vous rejoignez l'équipe en charge du développement d'un outil permettant de porter un réseau de neurones pré-entrainé sur la cible processeur multi-coeurs.

Ceci à la manière d'un compilateur : transcrire l'expression du réseau en briques d'opérations unitaires qui pourront ensuite être implémentées sur la cible processeur.

Votre rôle sera de participer au développement de cet outil, principalement en Python, tout en restant proche du C/C++ et de l'architecture matérielle du processeur.

Ceci sur l'ensemble des étapes réalisées par l'outil :

1 - Prise en compte d'un réseau de neurone pré-entrainé

En premier lieu, votre rôle consistera en l'analyse et la détermination de la meilleure stratégie pour la compilation du réseau. Ceci en regard de ses contraintes technique et du résultat attendu en termes de performance et d'utilisation des ressources.

2 - Décomposition du modèle mathématique du réseau en opérations et briques unitaires.

Vous avez pour cela à votre disposition des librairies vous mettant à disposition (non exhaustif) : des Opérations matricielles, convolutions, FFT, opérations mémoire, Multiplication-Accumulation etc...
L'objectif sera d'assembler ces "briques de Lego" (ou blocs Minecraft.. au choix ;) pour construire l'algorithme et reproduire le comportement du réseau de neurones.

Le défi : utiliser le moins de briques possible et obtenir une implémentation la plus efficace possible en sortie.

3 - Générer en sortie une liste descriptive du réseau de neurones

A la manière d'une recette de cuisine, votre compilateur délivre en sortie une description des opérations séquentielles (et parallèles) des opérations unitaires à effectuer pour déployer le réseau de neurones.

4 - Dernière étape : le déploiement sur la cible.

L'ultime étape consistera à gérer l'allocation physique des ressources sur la cible. A la manière d'un mapping, vous allouez les opérations aux CPU (et clusters de CPU), définissez l'emplacement des mémoires et sélectionnez les bonnes ressources spécifiques à votre disposition.
Toujours dans l'objectif d'obtenir les performances les plus accrues et un respect optimal du comportement du réseau de neurones.

Votre quotidien ne sera jamais monotone :

Les modèles réseaux sont en constante évolution, et la librairie d'éléments unitaires est continuellement étoffée par l'équipe pour adresser au mieux les exigences techniques des réseaux de neurones à déployer.>

Profil recherché

Comment savoir si ce poste vous convient ? Facile, voici les points importants :

Tout d'abord, être à l'aise avec le développement Python. Savoir coder proprement, de manière optimisée et professionnelle avec les bons outils (versionning, CI, scripting, doc automatisée etc..)

Ensuite, aimer la résolution de problèmes. L'aspect mathématique et l'optimisation sont au coeur des activités du poste. Des connaissances spécifiques en IA ne sont pas nécessaires. Par contre une capacité à raisonner, une agilité d'esprit et de la créativité dans la technique.. c'est très important ici !.. Mieux vaut une tête bien faite qu'une tête bien pleine.

Ce poste, bien qu'utilisant un langage haut niveau, a pour principal objectif de rendre efficace le déploiement d'un réseau de neurone sur une cible matérielle. Toutes les connaissances en développement bas niveau (C/C++, assembleur) et en architecture CPU vous seront utiles.

La capacité à travailler en groupe est également un élément important pour ce poste. Tout comme la capacité à échanges des concepts techniques complexes avec vos collègues.

Un poste passion pour toute personne passionnée d'IA, de CPU et d'optimisation !

Et comme toujours, ce poste est à pourvoir en CDI direct (sans prestation) dans les équipes de notre client. Nous sommes un cabinet de recrutement, you see ;)

À propos de EN-CORE.IO

Une société French-tech, fabless et grenobloise. Notre client conçoit et produit un processeur spécialisé dans le traitement de données dit "intelligent".

L'architecture matérielle massivement parallèle de leur produit rend possible l'exécution performante d'une grande diversité d'opérations complexes : virtualisation, gestion d'espace mémoire en datacenter, vision par ordinateur, gestion réseau 5G..


L'équipe est composée d'une centaine de personnes regroupées en 2 grands pôles majeurs :

1 - L'équipe Hardware en charge du design digital (front-end et backend) du processeur, ainsi que la conception des cartes électroniques accueillant les SoC

2 - L'équipe Software qui développe et maintient tout l'écosystème logiciel du produit : RTOS et OS Linux, drivers spécifiques, surcouches applicatives, outils d'aide à l'utilisation et chaîne de compilation, équipe d'application/benchmarking


Excellence et passion sont les maîtres mots pour définir l'état d'esprit quotidien de cette belle entreprise de la région.

Faire de chaque avenir une réussite.
  • Annuaire emplois
  • Annuaire entreprises
  • Événements