Rendre la programmation GPU plus accessible aux développeurs en intelligence artificielle spécialisés dans les réseaux de neurones. C’est l’objectif visé par OpenAI avec Triton, un langage open source de type Python pour la programmation parallèle qu’il a livré en version 1.0 dans le courant de l’été. Selon le laboratoire de recherche en IA, le langage Triton va permettre aux chercheurs en deep learning qui n’ont pas nécessairement d’expérience CUDA d’écrire du code GPU extrêmement efficace. Le code ainsi créé serait « la plupart du temps à égalité avec ce qu'un expert serait capable de produire », assure OpenAI dans un billet signé Philippe Tillet, membre de l'équipe technique.
En recourant à Triton, il serait possible d’atteindre des performances de pointe sur les matériels équipés de GPU en réduisant nettement les efforts exigés pour y parvenir habituellement. Par exemple, indique OpenAI, le langage peut être utilisé pour écrire des noyaux de multiplication matricielle FP16 qui correspondent aux performances de cuBLAS, ce que de nombreux programmeurs de GPU ne peuvent pas faire, souligne le laboratoire en IA. « Nos chercheurs l’ont déjà utilisé pour produire des noyaux qui sont deux fois plus efficients que les mises en oeuvre Torch équivalentes », assure-t-il encore.
Déjà présenté en 2019 dans un article scientifique
Triton avait déjà été présenté par Philippe Tillet en 2019 dans un article scientifique, publié sur le site de l’Harvard School of Engineering, sous le titre « Un langage intermédiaire et compilateur pour les calculs de réseaux neuronaux pavés ». « La validation et le déploiement d’idées de recherche nouvelles dans le champ du deep learning sont souvent limitées par la disponibilité de noyaux de calcul efficients pour certaines primitives de base », y exposait-il en introduction. « En particulier, les opérations qui ne peuvent pas mettre en oeuvre des bibliothèques existantes, comme cuBLAS ou cuDNN, présentent le risque d’une utilisation appauvrie des terminaux à moins que des experts n’écrivent des mises en oeuvre personnalisées, en général aux dépens de la portabilité ». C’est pourquoi, poursuivait-il, il est devenu crucial de développer de nouvelles abstractions de programmation pour spécifier des charges de travail en apprentissage profond personnalisées avec un impact minimum sur la performance.
Fin juillet, dans le billet de lancement de Triton, le chercheur est revenu sur les défis de la programmation des accélérateurs graphiques. « L’architecture moderne des GPU peut être grossièrement divisée en trois composants principaux - DRAM, SRAM et ALU - chacun d’entre eux devant être pris en compte lors de l’optimisation du code CUDA », explique-t-il. Cela peut s’avérer délicat à prendre en compte, même pour des programmeurs CUDA expérimentés, poursuit-il. « L’objectif de Triton est donc d’automatiser entièrement ces optimisations afin que les développeurs puissent davantage se concentrer sur la logique de haut niveau de leur code parallèle », ajoute-t-il en illustrant son propos de différents exemples de comparaison et présentation. Le langage étant open source, OpenAI souhaite constituer une communauté autour de Triton et appelle aux contributions pour élargir encore son accessibilité.
Cet été, le laboratoire en recherche OpenAI s’est également illustré par sa participation à l’outil GitHub Copilot.