L’intelligence artificielle nourrit bien des fantasmes, mais son fonctionnement sur smartphone est en vérité très simple. Laissez-nous vous expliquer comment de telles opérations sont réalisées sur votre appareil pour mieux comprendre la nouvelle tendance.

L’intelligence artificielle. Aujourd’hui sujet populaire dans le monde de la Tech, il était auparavant avant tout un sujet de fantasme pour la science-fiction. Nécessairement, les deux ont fini par se mélanger, quand bien même ils n’ont pas grand-chose en commun.

Cette représentation imaginaire fait que peu de gens arrivent à comprendre ce qu’est vraiment l’IA sur smartphone de nos jours. C’est pourquoi aujourd’hui, il est temps de démystifier les choses. Et pour cela, quoi de mieux que de vous offrir un exemple de ce qu’il se passe dans votre smartphone lorsque vous prenez une photo portrait ?

Nous allons vous guider étape par étape, sans trop utiliser de langage complexe, afin que vous puissiez comprendre concrètement ce qu’est l’IA sur smartphone et comment elle s’exécute. Prêts pour une plongée dans les entrailles de votre smartphone ?

Entraîner son modèle

Tout d’abord, il faut comprendre que ce que l’on appelle « intelligence artificielle » de nos jours fait en vérité appel à du « machine learning ». Nos smartphones ne sont pas vraiment « intelligents » : c’est la manière dont les expériences qu’ils proposent sont organisées qui l’est.

Pour n’importe quel programme informatique, on utilise une notion mathématique appelée « l’algorithmique ». Celle-ci permet aux développeurs de proposer plusieurs scénarios avec différents résultats. Cependant, dans le cadre classique, il est nécessaire que le comportement de l’utilisateur ou de l’objet soit connu à l’avance pour pouvoir contrôler l’expérience.

Le « machine learning » (apprentissage par la machine), qui est la base de l’IA contemporaine, est différent. Ici, il n’est pas nécessaire de connaître à l’avance ce que fera l’utilisateur ou le produit : la machine est capable de comprendre d’elle-même ce qui est quoi, et de créer une arborescence complète lui permettant de sortir un résultat.

Crédit image : Microsoft

Pour programmer cela, les développeurs créent des « modèles », qui sont des algorithmes spéciaux capables de trouver des motifs similaires entre toutes les données qu’on lui envoie. Il s’agit de l’unique but du programme : trouver l’information que l’on cherche à trouver. Dans notre exemple, nous chercherons à séparer une personne du reste d’une photo. Une fois le modèle créé, on lui envoie des tonnes et des tonnes de données (le plus est le mieux) et le laisse apprendre de lui-même.

Ici, il va analyser plusieurs informations (le nez, la bouche, les sourcils, la peau, etc.) pour réussir à isoler le sujet de notre photo et comprendre où sont ses contours. Mais il s’agit d’un entraînement : on prend le modèle, on lui envoie des tonnes de données, on lui indique ses erreurs, et on recommence. Et ce jusqu’à ce qu’il devienne toujours plus précis et sorte le moins d’erreurs possibles.

Ce n’est donc pas vraiment de « l’intelligence » à proprement parler, ni même un comportement autonome : ce qui change réellement est la manière d’envisager la programmation. Le « machine learning » est une nouvelle façon de créer un programme qui permet de nouveaux usages, mais nous sommes loin d’un soulèvement des machines. Nous sommes juste capables de créer des algorithmes de classification ayant un seul et unique but précis, et faire en sorte qu’ils se raffinent avec le temps et le nombre de données qu’il reçoit.

Modèle compréhensible par tous

C’est ce « modèle entraîné » qui va ensuite arriver sur nos smartphones et permettre certaines fonctionnalités. Toutefois, au même titre que la programmation classique (ou plus généralement les langues), tous les langages ne sont pas compris par toutes les plateformes.

Vous avez très certainement entendu parler de TensorFlow de Google, ou encore de Caffe de Facebook. Il s’agit là de ce qu’on appelle des « framework ». Plutôt que de tout programmer de zéro, les développeurs peuvent faire appel à ceux-ci comme base de développement et construire par-dessus elles. Ainsi, ils ont accès à plusieurs outils déjà mis en place par leurs créateurs et peuvent commencer leurs travaux plus facilement. C’est par ces « frameworks » que la majorité des « modèles » sont créés.

Comme ces outils sont connus et globaux, il suffit à l’appareil de les supporter pour pouvoir comprendre le modèle que les applications veulent utiliser. Pour autant, leur nombre ne cesse de se multiplier et rien ne garantit donc que tout fonctionne sur n’importe quelle machine. Pour pallier cela, des initiatives comme ONNX (Open Neural Network Exchange) existent et sont poussées par de grands noms de la Tech comme Microsoft et Facebook.

Il s’agit là d’une plateforme qui permet d’automatiquement convertir un langage non connu en quelque chose de compréhensible, une sorte de traducteur automatique si vous voulez. Ainsi, elle permet une interopérabilité entre les différents frameworks utilisés par les développeurs et fait en sorte de pousser l’industrie naissante de l’intelligence artificielle plus haut encore.

Dans notre exemple, notre modèle pour séparer le sujet de la photo de son fond n’a donc pas nécessairement à s’inquiéter de la plateforme sur laquelle il sera lancé. Des traducteurs se chargeront de le comprendre, qu’importe où il atterrira.

La puce se charge de tout calculer

Notre modèle est entraîné, et peut être compris par n’importe quel appareil. Il est donc temps de l’utiliser concrètement dans une application sur smartphone. Vous prenez votre smartphone, ouvrez l’application photo, et passez en mode portrait. Vous le pointez vers un ami se tenant bien droit face à vous.

Et c’est parti. La puce de votre smartphone s’anime et tout se fait en parallèle. Lorsque l’on parle d’un SoC (ou System on a Chip), on parle bien souvent du CPU et du GPU. Le CPU est la partie qui se charge de traiter la plupart des calculs courants, tandis que le GPU se charge généralement des calculs reliés aux éléments graphiques. Cependant, il faut comprendre qu’un SoC intègre souvent bien plus de puces que ces deux-là, et c’est pourquoi on parlera d’un SoC comme d’une plateforme.

Déjà, le CPU (qui est vu comme généraliste) dispose souvent de plusieurs cœurs, chacun ayant leurs spécificités. D’ordre général, nous avons des cœurs s’occupant des petites tâches et ne consommant pas beaucoup, et des cœurs plus puissants consommant plus pour réaliser de plus grands calculs. Mais certains calculs sont très spécifiques, et peuvent donc être toujours plus optimisés.

C’est pourquoi la plupart des SoC intègre des puces dédiées à des tâches précises. À titre d’exemple, pour la photo, nombreux sont les SoC à intégrer ce qu’on appelle un « ISP » (Image Sensor Processor) : il s’agit d’une puce dédiée uniquement aux calculs nécessaires pour interpréter et traiter les données en provenance du capteur photo. D’autres, comme les DSP, sont uniquement dédiés au traitement des signaux numériques, etc.

Lorsque vous prenez une photo, tout se fait donc en parallèle. Enlevons l’intelligence artificielle de l’équation pour quelques lignes : lorsque vous prenez une photo, le CPU va se charger de faire tourner l’application elle-même, le GPU sera certainement utilisé pour les animations de l’application, l’ISP va enregistrer et convertir les signaux reçus en un fichier compréhensible, et vous voici avec votre photo. Ajoutez l’IA à cela, et une autre partie se chargera d’en réaliser les calculs pour trouver le résultat voulu.

Cependant, chaque SoC a sa façon particulière de faire.

Le cas Qualcomm Snapdragon

Pour expliciter le principe de fonctionnement des derniers SoC Qualcomm, nous avons pu discuter avec Gary Brotman, directeur produit senior pour Qualcomm spécialisé dans l’intelligence artificielle.

Il nous a expliqué que l’approche de Qualcomm sur ce type d’opérations était « hétérogène ». Un SoC Snapdragon n’a pas pour but de consolider chaque usage à une puce spécifique, mais plutôt de regarder chaque type d’opérations qui lui est demandé et le répartir relativement équitablement à travers le CPU, le GPU, et ses nombreux DSP dont l’Hexagon, qui depuis trois générations a quelques optimisations en place pour les calculs IA.

Depuis le Snapdragon 855, la puce Hexagon 690 intègre tout de même le « Tensor Accelerator », un moteur dédié aux multiplications de matrice et produits de convolution spécifiques à l’intelligence artificielle. Comprenez qu’il s’agit ici plus ou moins d’un « NPU » comme l’appellerait Huawei, bien que Qualcomm ne souhaite pas lui donner un tel nom : il laisse cela à ses partenaires constructeurs. Lorsqu’un SoC Snapdragon reçoit ce type de demande, de nombreuses parties peuvent être ainsi animées parallèlement.

Reprenons notre exemple. Lorsque l’on prend une photo en mode portrait, la photo comme le modèle sera traité par l’intégralité du SoC. Certaines opérations très typées photo iront en priorité vers l’ISP, certains calculs du modèle IA iront vers l’Hexagon Tensor Accelerator, mais dans l’absolu, il n’y a pas de limites : toutes les parties du SoC peuvent être utilisées, CPU et GPU compris. La plateforme elle-même se chargera de déterminer laquelle de ses parties sera la plus à même d’offrir le meilleur résultat à l’instant T.

Pour autant, Qualcomm ne se veut pas absolu maître de ces décisions. Un SDK, ou kit de développement à l’usage des programmeurs pour leur fournir divers outils supplémentaires, permet à qui le veut de raffiner le comportement du SoC de manière à placer très précisément ses calculs sur une puce donnée. Il s’agit-là d’optimisations profondes possibles pour qui le souhaite.

Le cas Huawei Kirin

Nous avons tenté d’en apprendre plus sur la manière de fonctionner des SoC Kirin de Huawei créé par HiSilicon, mais le constructeur n’a hélas pas pu nous apporter de réponse.

Huawei a une approche semble-t-il plus spécialisée. À son CPU, GPU et ISP s’ajoute un NPU (ou Neural Processing Unit), une puce totalement dédiée aux calculs de l’IA. Contrairement à Qualcomm, l’entreprise apparaît vouloir avant toute chose bien séparer les processus IA du reste des calculs pour les optimiser plus avant.

Dans l’exemple, lorsque vous prenez une photo, toutes les informations brutes de l’image (couleurs, netteté, ISO, etc.) seront traitées par l’ISP, tandis que le NPU se chargera de calculer le modèle voulu (trouver le sujet humain de la photo et le séparer) et d’en fournir le résultat.

Dans le cas des SoC Exynos de Samsung, nous n’avons pas obtenu d’informations précises de la part du géant coréen, mais la présence d’un NPU dans son dernier modèle tend à nous faire penser qu’il fonctionne peu ou prou de la même façon que celui de Huawei.

Les données sont là, voici le résultat

Le modèle nous permet de séparer le sujet humain de son fond, il est compris par tout type de puces grâce à l’utilisation des frameworks, et les SoC s’optimisent pour pouvoir utiliser ce modèle en parallèle d’autres tâches. Le smartphone a donc désormais toutes les données dont il a besoin.

Ne reste plus qu’à profiter de la belle photo prise, désormais séparée en deux : le sujet humain et le fond. Le smartphone va garder le sujet humain comme tel, avec les découpes définies par le modèle, et appliquera simplement un effet de flou sur le fond. Votre photo en mode portrait est prête !

Il s’agit bien sûr là d’un exemple extrêmement simplifié afin de vous faire comprendre la forme que prend ce qu’on appelle « l’intelligence artificielle » sur smartphone. Pas si intelligente et donc potentiellement terrifiante qu’il n’y paraît, n’est-ce pas ?

Il faut bien comprendre que l’IA telle qu’on l’entend de nos jours est simplement une nouvelle manière de programmer qui ouvre de nouvelles possibilités. Qu’il s’agisse de la photo ou d’autres terrains d’optimisations, comme l’autonomie ou le fonctionnement même du smartphone, les développeurs peuvent désormais jouer avec des modèles plutôt que de prédéterminer à l’avance l’usage qui sera fait.

Et nous ne sommes qu’aux débuts du machine learning. Qui sait ce que nous réserve l’avenir des smartphones en ce sens ? La seule limite est l’imagination des développeurs dans ce cadre.

Faut-il avoir peur de l’intelligence artificielle ?