Apple a publié le code source d’un moteur pour l’intelligence artificielle

Nicolas Furno |

Apple est un acteur majeur de l’intelligence artificielle, même si depuis le passage au premier plan d’OpenAI et de son ChatGPT, on pourrait croire que l’entreprise de Tim Cook est à la traine. Les processus d’apprentissage automatisé sont pourtant à l’œuvre dans ses systèmes d’exploitation depuis des années, pour identifier le contenu des photos, pour transcrire du texte à la volée et pour des dizaines d’autres usages. En coulisses, Apple travaille aussi sur d’autres sous-domaines du secteur, comme en témoigne ce dépôt ouvert courant juillet sur GitHub.

La page d’accueil du projet AXLearn sur GitHub.

Nommé AXLearn, il contient une bibliothèque (library) codée en Python pour travailler sur des modèles d’apprentissage profond. Apple oblige, on n’a pas les détails sur l’utilisation en interne de ce modèle, mais le projet précise qu’il est optimisé pour s’adapter à toutes les échelles, même les plus grandes. De là à penser qu’il pourrait travailler sur les grands modèles de langage (LLM) indispensables aux générateurs de contenus comme ChatGPT, il n’y a qu’un pas. À défaut de pouvoir le franchir grâce au code source proposé sur GitHub, on peut faire le lien avec une déclaration de Tim Cook, qui indiquait au début du mois d’août qu’Apple travaillait bien en interne dans ces domaines.

Tim Cook : Apple investit aussi dans l

Tim Cook : Apple investit aussi dans l'IA générative

De manière plus précise, mais moins sûre, Mark Gurman de Bloomberg suggérait le mois d’avant qu’Apple aurait bien l’équivalent d’un ChatGPT maison. Pour l’heure, l’entreprise ne saurait pas ce qu’elle pourrait en faire, sachant qu’il n’est pas question de sortir un clone pommé de ChatGPT.

« Apple GPT » : Apple aurait un équivalent maison de ChatGPT mais ne saurait pas quoi faire avec

« Apple GPT » : Apple aurait un équivalent maison de ChatGPT mais ne saurait pas quoi faire avec

Source
Accroche : montage MacGeneration
avatar mimolette51 | 

ChatGPT version Apple : 1 euro la requête?

avatar fleeBubl | 

@mimolette51

MouaiP 🤔

Ce serait plus un questionnement à propos d’une accessibilité à un outil généraliste pour du besoin particulier optimisé avec une restriction bien maîtrisé, qui risquerait de piquer, un peu…

Menfin, je dis ça, je dis rien
Mais je le répéterais pô ☺️

avatar David Finder | 

@mimolette51

Tu payes quelque chose quand tu tapes sur le clavier de ton iPhone, ou que tu demandes quelque chose à Siri ?
Comme le dit l’article, Apple ne va pas sortir un clone de ChatGPT.
On peut au minimum penser que ces travaux vont servir à améliorer l’IA déjà bien présente au sein des OS d’Apple.

avatar RonDex | 

@mimolette51

Non je pense. A mon avis ça serait intégré à Siri et/ou intégré à l’OS et aux applis : Spotlight, mail, pages, Xcode, etc.
Un peu dans le même style que Microsoft.
Éventuellement avec un abonnement iCloud+. 🤷‍♂️

avatar corben64 | 

@mimolette51

T’es un rigolo ou tu le fais exprès ?

avatar AppleSilicon | 

Intéressant le choix de Python pour de telles applications. Largement universel et donc accessible mais clairement peu optimisé et assez lent dans le contexte Deep ! Sûrement un choix pour démocratiser ce framework.

avatar Dimemas | 

pourquoi ?

avatar Baptiste_nv18 | 

@AppleSilicon

Ce n’est pas un framework.

avatar AppleSilicon | 

@Baptiste_nv18

Oui je suis allé un peu vite. Sûrement dans le futur. Mais on ne sait pas tellement quelle forme ça prendra (service, librairie, framework, …), ni si c’est amener à plus évoluer de façon ouverte ou non !

avatar Dimemas | 

Visiblement ils ont surtout besoin d’aide …

avatar fleeBubl | 

@AppleSilicon

Le rapport à l’optimisation de Python peu piquer.
Il n’hypnotise pas seulement avant cela.

avatar cecile_aelita | 

@fleeBubl

avatar Chris K | 

@cecile_aelita : Ca marche pas, je porte des lunettes anti lumière bleue (ouais elle est facile celle là).

avatar fleeBubl | 

@cecile_aelita

J’aimerais bien trouver un Python chez Tex Avery,
juste pour comparer avec celui issue de chez Disney;
Non, parce que question écureuil 🐿️, au moins, y’aurait matière à rigoler 🤣

avatar RonDex | 

@cecile_aelita

Flippant le GIPHY ! 😅

avatar cecile_aelita | 

@RonDex

Il est mignon le python ^^

avatar RonDex | 

@cecile_aelita

Autant les vrais serpents mon font ni chaud ni froid : Boa constrictor, et tous les serpents non venimeux (j’ai un ami véto qui fait de l’élevage et de la vente) : je les prends sans problème en main. Mais celui-ci me semble flippant ! 😁

avatar cecile_aelita | 

@RonDex

Rassurez moi … vous avez la référence de ce serpent?🙂

avatar Chris K | 

@AppleSilicon : Que veux-tu dire par "clairement peu optimisé et assez lent" ? En surface (suis pas allé regarder plus loin), tout à l'air de se faire en python dans ce domaine.

avatar xDave | 

@Chris K

Python qui va être intégré dans Office 365 justement

avatar oomu | 

@xDave

mouais.. "intégré".. on va dire "appelable" depuis Office...

avatar xDave | 

@oomu

Oui je n’ai pas le détail de leur implémentation. Je crois que ça n’est pas géré en local.
Curieux de voir.

avatar Dimemas | 

Et surtout ça marche super bien au final.
Et c’est loin d’être lent ! A moins que le code soit degueu

avatar Kwikyyy | 

@AppleSilicon

Non, c’est juste qu’Apple a besoin de PyTorch et TensorFlow

avatar valcapri | 

@AppleSilicon

Il faudrait un peu changer le discours avec Python ou Java d’ailleurs.

Ces langages peuvent être très rapide si bien utilisé. Et à chaque itération de Python, surtout ces 2 dernières années, Python a beaucoup progressé niveau rapidité notamment avec l’aide de Pyston ou de Pypy qui sont certes des moteurs alternatifs à CPython. Mais n’empêche que Pyston travaille aussi avec l’équipe de CPython pour optimiser.

Et si on veut encore aller plus vite, certaines packages peuvent utiliser du C notamment.

Et en Deep Learning, c’est surtout, l’interfaçage après avec les GPU et notamment CUDA chez Nvidia qui a de l’importance.

Et pour la JVM, c’est pareil, surtout avec GraalVM, l’inclusion en cours du AOT dans la JVM, les virtual threads, ZGC,…

Tous les langages s’imite de plus en plus, notamment avec leur async/await, leur goroutine/coroutine, leur Garbage Collector qui s’optimise de plus en plus.

avatar redchou | 

@AppleSilicon

Je n’ai pas vraiment l’impression que le goulot d’étranglement c’est le python pour ce genre de truc… 😉

avatar fleeBubl | 

Le problème est qu’Apple développe, par choix, ce qui ce fait de plus « anti-fonctionnelle » (pas la peine d’en dire plus)

avatar David Finder | 

@fleeBubl

Pourrais-tu en dire plus justement ?
Je ne comprends pas ton commentaire.
Merci

avatar TuringTone | 

Python est un langage à la mode "facile", laxiste et lent
qui a malheureusement remplacé OCaml / caml comme langage d'initiation à l'informatique et à sa "rigueur" dans l'Education Nationale....
(trop compliqué pour nos chères petites têtes blondes..)
Encore une fois la mauvaise monnaie chasse la bonne....
et l'on aura les "codeurs" que mérite notre laxisme......
(trop compliqué...d'apprendre à décoder avant de "coder")

avatar Kwikyyy | 

@TuringTone

Python est très bon pour un premier langage

avatar oomu | 

@TuringTone

mouais... j'ai beau être un vieux en phase de liquéfaction, mais Python me parait être un excellent langage

il est flexible, il demande quand même de la rigueur d'écriture (pinaize, faut indenter!), il est archi complet de base pour des besoins du quotidien

et je ne vois aucun mal à l'utiliser en pédagogie

professionnellement il est très répandu et ce n'est pas parce que subitement les ingénieurs de 30 ans sont devenus des grosses feignasses.
(les nouveaux humains sont TOUS nés subitement nuls, vers en gros deux ou 3 minutes après ma naissance)

avatar BeePotato | 

@ oomu : « mouais... j'ai beau être un vieux en phase de liquéfaction, mais Python me parait être un excellent langage
il est flexible, il demande quand même de la rigueur d'écriture (pinaize, faut indenter!), il est archi complet de base pour des besoins du quotidien
et je ne vois aucun mal à l'utiliser en pédagogie »

Il est tout à fait adapté à un usage pédagogique où on fait découvrir l’algorithmique à des gens qui ne deviendront pas développeurs ensuite. Parce qu’il reste d’un abord simple grâce au typage dynamique, tout en offrant plein de possibilités (en particulier grâce à un écosystème très riche).

Mais son usage comme premier langage pour des gens faisant des études en informatique est toujours l’objet de débats, car on peut régulièrement constater qu’il donne de mauvaises habitudes à certains étudiants (notamment en repoussant à plus tard l’apprentissage de la gestion rigoureuse des types de données).

« professionnellement il est très répandu et ce n'est pas parce que subitement les ingénieurs de 30 ans sont devenus des grosses feignasses. »

Il y a tout de même un peu de çan d’une certaine façon. 🙂
Si Python est devenu si répandu dans le domaine du Machine Learning, c’est parce que nombre de chercheurs dans ce domaine ne sont pas des purs et durs de la programmation, passionnés par du code beau et efficace. Ils préfèrent nettement un langage simple à prendre en main et permettant de faire facilement du prototypage rapide, en déléguant à des briques en C++ (pas écrites par eux) les parties nécessitant vraiment de l’optimisation.

On pourrait bien sûr faire remarquer que ça n’a rien à voir avec le fait d’être une feignasse. Mais je suis sûr que beaucoup de fans de programmation optimisée en langages de bas niveau sont tentés d’appeler ça comme ça tout de même. 😁

avatar TuringTone | 

.....Cela rien à voir avec le fait d'être une feignasse........
mais cela donne quand même des logiciels OBESES codés avec les pieds...
L'idéal serait de pouvoir combiner, avec facilité, langages de "haut niveau"
et langages de "bas niveau", ergonomie et efficacité....
Un cockpit agréable pour piloter un ou plusieurs moteurs puissants....

avatar BeePotato | 

@ TuringTone : « L'idéal serait de pouvoir combiner, avec facilité, langages de "haut niveau"
et langages de "bas niveau", ergonomie et efficacité.... »

C’est ce que tente Swift, entre autres.
Rust aussi, en plaçant le curseur un peu plus près de la performance que de l’ergonomie (par rapport à ce que fait Swift).

avatar cecile_aelita | 

@TuringTone

Vous avez l’air de vous y connaître donc j’en profite pour vous poser une question 🙂.
J’entends souvent ici que Swift a beaucoup de points communs avec python (notamment sur la facilité de prise en main et la modernité etc … ). Est ce que vous avez la même opinion sur Swift ou pas du tout ? 🙂

avatar TuringTone | 

Pour Swift, qui semble bien progresser, il vaut mieux se rapprocher de Florent Morin qui en connait un rayon...
Sinon un bon vieux BASIC ou ForTran avec des entrées-sorties modernisées est peut-être plus lisible...
L'on crée toujours de nouveaux langages miraculeux alors que l'efficacité serait de combiner un "frontal" d'entrées-sorties ergonomique avec un moteur, puissant et éprouvé, plus près de la machine...un super JuPyteR....

avatar cecile_aelita | 

@TuringTone

J’avoue que là pour le coup j’ai pas compris un mot ^^.
Mais merci d’avoir pris le temps d’essayer de m’expliquer en tout cas 🙂

avatar marc_os | 

@TuringTone

Swift c'est le Visual Basic d'Apple, pour ceux qui ne maîtrisaient ni les pointeurs ni la programmation orientée objet et qui ne parlent plus que "struct", et "protocoles" - dans lesquels on peut désormais définir du code ! Une hérésie cassant le principe même des protocoles. (Un protocole, c'est un engagement sur ce que du code doit faire. C'est ça à la base. Dans Swift, c'est ça plus du code. Un vrai gloubi-boulga.)
Objective-C avait une base théorique solide, dérivée de SmallTalk.
Swift, c'est le délire d'un type "génie des compilateurs" qui a fait son truc dans son coin mais qui a réussi à convaincre Apple - je me demande bien comment. Depuis, il a abandonné le navire, ce qui qui en dit long.

avatar Pyby | 

@marc_os

Il a les lanceurs de projets, et ceux qui les suivent et les font évoluer :)

avatar BeePotato | 

@ marc_os : « Swift c'est le Visual Basic d'Apple, pour ceux qui ne maîtrisaient ni les pointeurs ni la programmation orientée objet »

Il faut maîtriser les pointeurs pour pouvoir vraiment apprécier de ne plus avoir à les manipuler directement en permanence. 😉
Notons toutefois qu’on a tout à fait la possibilité de jouer avec des pointeurs en Swift, et on se retrouve même obligé de le faire de temps en temps. Mais le langage tente de réduire ça aux moments où c’est vraiment nécessaire — ce qui est très raisonnable.

Quant à la programmation orientée objet, elle est (fort heureusement) bien présente en Swift. Mais en tentant de l’intégrer le plus possible (ce n’est pas toujours possible) avec un typage statique, pour faciliter la découverte de bugs (et aussi permettre certaines optimisations à la compilation).
Il est sûr que quand on est habitué à la souplesse d’Objective-C, cette approche paraît contraignante. En fait, c’est toute l’approche « on n’ignore aucune source d’erreur implicitement » adoptée par Swift qui est très contraignante pour un développeur habitué à Objective-C. 🙂
Mais on ne peut pas honnêtement dire que cette approche ne présente aucun intérêt.

« et qui ne parlent plus que "struct", et "protocoles" »

Tu as oublié les classes et les enums. 😉

« dans lesquels on peut désormais définir du code ! Une hérésie cassant le principe même des protocoles. »

J’avoue que je me suis gratté la tête face à ça, au début. Cependant j’ai vité réalisé que c’était juste un problème de nom : il aurait fallu trouver autre chose que « protocole » (mais pas non plus « classe abstraite ») pour mieux décrire le machin. Mais quel que soit son nom, ça permet de faire des choses pratiques, qu’on faisait déjà en Objective-C d’une façon pas forcément plus propre.

J’ai beaucoup aimé Objective-C, mais franchement Swift n’est pas si mal que ça. 🙂

avatar marc_os | 

@ BeePotato

> Notons toutefois qu’on a tout à fait la possibilité de jouer avec des pointeurs en Swift

Oui, c'est fantastique.
Rappelons que darwin est écrit en C, que c'est un Unix et que sous Unix on a moult librairies écrites en C.
Et pour pouvoir les utiliser, on doit recourir à ce genre d'âneries :

var unsafe: UnsafeMutablePointer?

ou bien :

    var maVar: String {
        get {
            return (unsafe?.pointee.maVar).map(String.init(cString:)) ?? ""
        }
    }

Exemples tirés de code réel (nom de var changé).
C'est simple et évident ! 🤪
Pour les Shadoks : Pourquoi faire simple quand on peut faire compliqué ? On se le demande.

avatar BeePotato | 

@ marc_os : « Oui, c'est fantastique. »

Fantastique, peut-être pas, mais pratique, oui.

« Rappelons que darwin est écrit en C, que c'est un Unix et que sous Unix on a moult librairies écrites en C. »

J’utilise d’ailleurs régulièrement de telles bibliothèques. C’est bien pratique de pouvoir les utiliser directement depuis Swift (sans être obligé d’écrire un wrapper ou une redéclaration de fonctions comme dans d’autres langages).

« ou bien :
var maVar: String {
get {
return (unsafe?.pointee.maVar).map(String.init(cString:)) ?? ""
}
}
Exemples tirés de code réel (nom de var changé).
C'est simple et évident ! 🤪 »

L’équivalent en Objective-C serait :
-(NSString*) maVar {
    if ((unsafe != NULL) && (unsafe->maVar != NULL)) {
        return [[NSString alloc] initWithUTF8String: unsafe->maVar];
    } else {
        return [NSString string];
}

Notons qu’il est parfaitement possible d’adopter la même structure de code en Swift :
var maVar: String {
    get {
        if let cstr = unsafe?.pointee.maVar {
            return String(cString: cstr)
        } else {
            return "";
    }
}

Pour ma part, je trouve ça beaucoup plus lisible que la tentative de tout caser sur une ligne avec le map. Et tout aussi lisible que la version Objective-C.
Je ne vois donc pas dans cet exemple un reproche à faire à Swift, mais plutôt un reproche au style adopté par la personne qui a écrit ce code. J’imagine qu’une personne adepte d’un tel style aurait probablement, pour une version Objective-C, utilisé l’opérateur conditionnel ternaire pour tout faire tenir sur une ligne, obtenant là aussi quelque chose d’assez peu lisible.

Dernière chose : si jamais on se dit « à cet endroit du programme, on sait qu’aucun de ces deux pointeurs n’est nul, donc la version Objective-C n’a pas besoin d’être encombrée de ce if », la même approche est tout à fait possible en Swift, qui demande juste d’être explicite pour prouver qu’on y a réfléchi un minimum avant d’écrire le code :
• Obj-C :
-(NSString*) maVar {
    return [[NSString alloc] initWithUTF8String: unsafe->maVar];
}

• Swift :
var maVar: String {
    get { String(cString: unsafe!.pointee.maVar!) }
}

avatar Dimemas | 

C’est un langage de programmation orienté objet donc oui mais après ce sont deux langages différents sur leurs syntaxes.
Il a été créé sur des bases d’objective c donc ça s’arrête là.

Après swift c’est sympa mais c’est très limité en terme d’impact si tu veux une approche plus globale d’une appli ou d’un logiciel.
Je préfère travaille sur un code agnostique (comme react native ou flutter) me permettant de faire une appli sur iOS et android à partir d’un seul code que de m’enfermer avec Swift qui ne fera que la moitié du job en travaillant sur un code différent des autres.

D’ailleurs c’est pareil, tout dépend de ce que tu appelles le swift, tu as swift et SwiftUI qui sont 2 facette de la programmation chez Apple mais à l’approche complètement opposée (la deuxième est déclarative et faussement plus simple et pas encore aussi capable que Swift)

En clair swift c’est pas mal, ça peut être lourd, il faut avoir de bonnes bases je trouve et connaître UIKit et ses nombreuses librairies.
Le code est plus exigeant je trouve que le JSX.

Et il faut un mac

avatar cecile_aelita | 

@Dimemas

Idem que pour Turing, j’ai rien compris lol.
Je ne suis pas développeuse donc les jargons et mots techniques … je les comprends pas 😉!
Je peux aussi étaler de l’accronyme ! On est bon dans l’administration de l’éducation nationale pour ça 🤭😅!

avatar Dimemas | 

dsl Cecile ;), en gros c'est différent et c'est un langage fermé je trouve
en médecine aussi on est pas mal en acronymes ahah

avatar cecile_aelita | 

@Dimemas

« Dsl Cécile, j’en ai mis un peu exprès »
Je l’avais « vaguement » vu 🤭😉!

avatar cecile_aelita | 

@Dimemas

Je n’en doute pas qu’il y en a beaucoup aussi 🙂!
Je déteste (et le mot est faible…) m’en servir 🫤! C’est comme les anglicismes… c’est d’un prétentieux à mourir ceux qui débalent ça a longueur de temps 🫤!
Le plus drôle c’est les phrases du type « je sais plus comment on dit ça en français » 😂😂!
Les mecs qui veulent faire cool mais qui sont pathétiques en fait 😅.

PS : je ne parle pas de vous dans ce commentaire ! (Je préfère éviter tout amalgame 🙂)

avatar BeePotato | 

@ cecile_aelita : « Le plus drôle c’est les phrases du type « je sais plus comment on dit ça en français » 😂😂!
Les mecs qui veulent faire cool mais qui sont pathétiques en fait 😅. »

Notons tout de même que parfois, c’est juste vrai.
Quand on bosse dans un domaine où les échanges de font majoritairement en anglais, il arrive parfois qu’il n’y ait que le terme anglais qui arrive en tête, même au milieu d’une phrase en français.

avatar Pyby | 

@cecile_aelita

Humblement, quand tu n’oses 2/3 de ta journée en anglais, l’anglicisme est vite naturel.

Mais je comprends la remarque des pathétiques. Les devs parlent et lisent en anglais en général. Mais tout dépend du milieu pro en effet.

Bon cours avec tes élèves et Shakespear. 🍵

avatar PtitXav | 

@Dimemas

Il y a des compilateurs Swift pour Linux, non ?

Pages

CONNEXION UTILISATEUR