jeudi, 28 mars 2024

Le projet CodeNet d’IBM testera jusqu’où vous pouvez pousser l’IA pour écrire des logiciels

La division d’étude de recherche sur l’IA d’IBM a publié un ensemble de données de 14 millions d’échantillons pour établir des modèles d’apprentissage automatique qui peuvent aider dans les travaux de spectacles. Appelé Job CodeNet, l’ensemble de données tire son nom d’ImageNet, le référentiel populaire de photos identifiées qui a déclenché une transformation de la vision par ordinateur et de la connaissance approfondie.

Bien qu’il y ait une petite opportunité que les conceptions d’intelligence artificielle développées sur le CodeNet l’ensemble de données rendra les développeurs humains redondants, il y a lieu d’être enthousiaste à l’idée qu’ils rendront les développeurs plus efficaces.

  • Automatisation de la programmation avec le deep learning
  • L’ensemble de données CodeNet
  • Définition des tâches pour l’apprentissage automatique
  • Un effort d’ingénierie monstrueux

Automatiser les spectacles avec une connaissance approfondie

Au début des années 2010, les excellentes avancées de l’apprentissage automatique ont suscité l’enthousiasme (et la peur) pour l’intelligence artificielle, automatisant bientôt de nombreux travaux, y compris des programmes. Cependant, la pénétration de l’IA dans le développement d’applications logicielles a été exceptionnellement limitée.

Les développeurs humains découvrent de nouveaux problèmes et explorent divers services en utilisant une variété de systèmes de pensée conscients et subconscients. D’autre part, la plupart des algorithmes de découverte des fabricants nécessitent des problèmes distincts et beaucoup de données annotées pour établir des modèles capables de résoudre exactement les mêmes problèmes.

De nombreux efforts ont été déployés pour créer des ensembles de données et des benchmarks pour développer et évaluer des systèmes «IA pour code». Mais étant donné la nature imaginative et ouverte de l’avancement des applications logicielles, il est extrêmement difficile de créer le meilleur ensemble de données pour la programmation.

L’ensemble de données CodeNet

Avec Task CodeNet, les chercheurs d’IBM ont tenté pour développer un ensemble de données polyvalent qui peut être utilisé pour former des modèles d’apprentissage automatique pour différents emplois. Les créateurs de CodeNet l’expliquent comme un « ensemble de données à grande échelle, diversifié et de qualité supérieure pour accélérer les progrès algorithmiques de l’IA pour le code ».

L’ensemble de données contient 14 millions d’échantillons de code avec 500 millions de lignes de code composées en 55 langages de programmation différents. Les échantillons de code ont en fait été obtenus à partir de soumissions à près de 4000 difficultés publiées sur les plates-formes de codage en ligne AIZU et AtCoder. Les exemples de code incluent à la fois des remèdes et des réponses incorrectes aux défis.

L’une des fonctions clés de CodeNet est la quantité d’annotations qui a été ajoutée aux exemples. Chacun des obstacles de codage inclus dans l’ensemble de données a une description textuelle en plus du temps CPU et des limitations de mémoire. Chaque soumission de code contient une douzaine d’informations, y compris la langue, la date de soumission, la taille, l’heure d’exécution, l’acceptation et les types d’erreur.

Les scientifiques d’IBM ont également déployé des efforts considérables pour s’en assurer l’ensemble de données est stabilisé selon différentes dimensions, consistant en des types de langue, d’acceptation et d’erreur.

Configuration de tâches pour l’apprentissage automatique

CodeNet n’est pas le seul ensemble de données pour former les conceptions d’apprentissage automatique pour tâches des programmes. Cependant, quelques attributs qui le distinguent. Le premier est la taille même du jeu de données, y compris le nombre d’échantillons et la variété des langues.

Les métadonnées qui accompagnent les échantillons de codage sont peut-être plus cruciales. Les nombreuses annotations apportées à CodeNet le rendent adapté à un ensemble varié de travaux au lieu d’autres ensembles de données de codage spécialisés pour des travaux de spectacles particuliers.

Il existe un certain nombre de façons dont CodeNet peut être utilisé pour développer des conceptions d’apprentissage automatique pour les travaux de programmation. L’un est la traduction de la langue. Étant donné que chaque difficulté de codage dans l’ensemble de données consiste en des soumissions de divers langages de programmes, les scientifiques de l’information peuvent l’utiliser pour développer des modèles d’intelligence artificielle qui assimilent le code d’une langue à une autre. Cela peut être pratique pour les entreprises qui souhaitent porter l’ancien code vers de nouveaux langages et les rendre accessibles aux nouvelles générations de programmeurs et maintenables avec de nouveaux outils de développement.

CodeNet peut également aider à établir des conceptions d’apprentissage automatique pour la recommandation de code . Les outils de suggestion pourraient être aussi simples que des conceptions de style à saisie semi-automatique qui terminent la présente ligne de code vers des systèmes plus complexes qui composent des fonctions complètes ou des blocs de code.

Étant donné que CodeNet a un richesse de métadonnées sur la mémoire et les métriques de temps d’exécution, les chercheurs d’information peuvent également les utiliser pour développer des systèmes d’optimisation de code. Ou ils peuvent utiliser les métadonnées de type erreur pour former des systèmes d’apprentissage automatique qui signalent des défauts potentiels dans le code source.

Un cas d’utilisation avancé qui serait fascinant à voir est celui des générations de code. CodeNet est une riche bibliothèque de descriptions textuelles de problèmes et de leur code source correspondant. Il existe actuellement de nombreux exemples de concepteurs utilisant des modèles de langage innovants tels que GPT-3 pour générer du code à partir de descriptions en langage naturel. Il sera intriguant de voir si CodeNet peut aider à affiner ces conceptions de langage pour devenir plus cohérent dans la génération de code.

Les scientifiques d’IBM ont actuellement mené un certain nombre d’explorations CodeNet, consistant en la classification de code , examen de similitude de code et conclusion de code. Les architectures d’apprentissage en profondeur qu’ils ont utilisées comprennent des perceptrons multicouches de base, des réseaux de neurones convolutifs, des réseaux de neurones graphiques et des transformateurs. Les résultats, rapportés dans un article contenant des informations sur le projet CodeNet, montrent qu’ils ont eu la capacité d’acquérir une précision supérieure à 90% dans la plupart des emplois. (Même s’il vaut la peine de garder à l’esprit que l’évaluation de la précision dans les programmes est un peu différente de la classification d’images et de la génération de texte, où des erreurs mineures peuvent conduire à des résultats maladroits mais appropriés.)

Un effort d’ingénierie monstrueux

Les ingénieurs d’IBM ont effectué un effort complexe d’ingénierie logicielle et de données pour organiser le jeu de données CodeNet et établir ses outils complémentaires.

Au départ, ils devaient rassembler les échantillons de code d’AIZU et d’AtCoder. Alors que l’un d’entre eux avait une application avec une interface utilisateur qui simplifiait l’acquisition du code, l’autre n’avait pas d’interface facile d’accès et les scientifiques ont dû développer des outils qui ont supprimé les données des pages Web de la plate-forme et les ont transformées en un format tabulaire. Ils ont dû combiner à la main les 2 ensembles de données dans un schéma fusionné.

Ensuite, ils ont dû développer des outils pour nettoyer les données en identifiant et en éliminant les doublons et les échantillons contenant beaucoup de code mort (code source qui n’est pas effectué lors de l’exécution).

Ils ont également développé des outils de prétraitement qui simplifieront la formation des modèles d’apprentissage automatique sur le corpus CodeNet. Ces outils se composent de jetons pour différents langages de programmation, d’arbres d’analyse et d’un générateur de représentation graphique à utiliser dans les réseaux de neurones graphiques.

Tous ces efforts sont une suggestion de l’effort humain substantiel nécessaire pour développer une recherche efficace des appareils systèmes. Le système expert n’est pas prêt à remplacer les programmeurs (du moins pour le moment). Cela peut changer le type de tâches qui nécessitent les efforts et l’ingéniosité des programmeurs humains.

.

Toute l’actualité en temps réel, est sur L’Entrepreneur

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici