VT2021 ROS2 fiche

From air
Revision as of 11:23, 10 January 2022 by Ethan.Malecot (talk | contribs) (Created page with "= '''Robot Operatin System 2 (ROS2)''' = = ''Auteurs'' = * MALECOT Ethan (ethan.malecot@etu.univ-grenoble-alpes.fr) * CIRSTEA Paul (paul.cirstea@etu.univ-grenoble-alp...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Robot Operatin System 2 (ROS2)

Auteurs

Résumé

ROS2 est une plateforme Open Source pour le développement en robotique qui vient succéder à ROS1 (Robot Operating System). L’idée de ROS est de fournir une plateforme d’exécution ainsi qu’un ensemble d’outils de développement qui s’adapte à une multitude de projets en robotique. ROS2 est né avec la volonté de venir s’adapter aux nouveaux besoins qui n’était pas présent au moment de la création de ROS1 : la collaboration entre robots, les contraintes temps réel, l’environnement de production plutôt que de développement, … La première distribution de ROS2 est arrivée en 2017 et près de 8 distributions existent à ce jour.

Mots Clés

Système d’exploitation pour robots (ROS) : plateforme offrant des services proche de ceux des systèmes d'exploitation comme l'abstraction du matériel, la gestion de la concurrence, gestion des processus, etc...
nœuds : c'est l'élément de base des graphes ROS, il correspond à une unité fonctionnelle (ex: contrôle des roues) et il peut envoyer et recevoir des données à d'autres noeuds.
topic : Système de transport de l'information basé sur le concept de publisher et subscriber.
service : Système de transmission de l'information basé sur une structure client/serveur, où le client fait des requêtes au serveur pour obtenir une donné.
action : Système de transmission combinant les topics et les services très utlisés pour les tâches de longues durées car il permet d'avoir un feedback régulier de ce qui est fait par le node pendant la tâche.

Abstract

ROS2 is an open source platform for the development of robots that comes after ROS1 (Robot Operating System). The idea behind ROS is to create a platform that can execute the robot’s code while also bringing development tools for any robot developer. ROS2 was created with the will to adapt to new needs that didn’t exist when ROS1 was created : collaboration between robots, real time constraint, production environment, … The first ROS2 distribution arrived in 2017 and 7 other distributions have been created since then.


Keywords

Robot Operating System (ROS) : platform offering operating systems services like the abstraction of the material, the control of the process, etc...
node : basic ROS element around one functional unit (example: control of the wheels). It can send and receive data to other nodes.
topic : Data transport system based on subscriber/publisher idea.
service : Data transport system based on client/server idea, where the client needs to call for the ressource to get it from the server.
action : Système de transmission combinant les topics et les services très utlisés pour les tâches de longues durées car il permet d'avoir un feedback régulier de ce qui est fait par le node pendant la tâche.


Figure2: Approche GPT-1

Figure 2: Approche GPT-1


Le modèle développé est basé sur une architecture Transformer 12 couches avec des mécanismes d’attention ce qui le rend capable de gérer des dépendances sur le long-terme.
Le modèle utilise le principe de Transfer Learning ce qui lui permet d’être capable de réaliser 4 types de tâches : l’inférence en langage naturel, la réponse à des questions, l’analyse des similarités et la classification de textes. GPT-1 a réussi à surpasser largement les modèles spécifiques de chacune des tâches citées précédemment. Grâce à ces travaux on constate également que les architectures Transformer obtiennent de meilleurs résultats avec un entraînement non supervisé.

Le second modèle, GPT-2

Ce modèle a été le deuxième dans la série GPT de OpenAI. Lors du développement de ce modèle, des datasets plus grands ont été utilisés pour effectuer l’entraînement, et on a ajouté beaucoup plus de paramètres. En effet, le nombre de paramètres des quatres modèles de GPT-2 varie entre 117 pour le plus petit modèle, et 1.5 pour le plus large [2].

Objectifs des entraînements

  • Le développement de GPT-2 avait pour but la création des systèmes plus généraux qui peuvent exécuter plusieurs tâches sans avoir besoin de créer manuellement des datasets d’entraînement pour chacune des tâches [3].
  • Task conditioning: pour qu’un système ‘général’ puisse pouvoir exécuter des tâches différentes avec le même input, il faut changer l’expression probabilistique de ce modèle pour tenir en compte non seulement le input et output, mais aussi la tâche. L’expression devient donc: p(output/input) → p(output/input,tâche).
  • L’une des capacités de GPT-2 est ‘Zero Shot Learning’, cela veut dire que le modèle peut exécuter une tâche sans avoir déjà vu un exemple de cette tâche. Cela est grâce au fait que GPT-2 peut comprendre une tâche en lisant et en analysant les instructions données. Cette faculté est appelée: ‘Zero Shot Task Transfer’.

Dataset

  • Contrairement à l’ancienne approche en entraînant les modèles sur des datasets spécifiques appartenant à un même domaine textuel, la nouvelle méthode a été de trouver un dataset plus grand et qui contient une variété des textes dans des domaines différents.
  • En s’inspirant de l’approche des archives comme Common Crawl, ils ont créé un nouveau web scrape avec des données déjà filtrées par des humains pour avoir des données de qualité. Et pour ne pas faire cela manuellement (puisque c’est cher), ils ont choisi de récupérer des posts sur Reddit (ayant au moins 3 karma). Le résultat est donc la création de leur dataset appelé WebText (de taille 40GB, 8 millions documents) [3].


Figure3: manifestations naturelles des textes traduits dans WebText

Figure 3: manifestations naturelles des textes traduits dans WebText

L’architecture du modèle

  • Le nombre de paramètres: 1.5 milliards de paramètres (10 fois plus que GPT-1).
  • La taille du vocabulaire: 50257 tokens ont été utilisés dans le vocabulaire.
  • Word embedding (ou plongement lexical): les vecteurs utilisés étaient de 1600 dimensions.

Performance

GPT-2 a été évalué sur plusieurs tâches différentes (ex: la compréhension, la génération automatique des résumés, ..).

les performances de GPT-2 suivant plusieurs critères

Figure 4: les performances de GPT-2 suivant plusieurs critères

Le modèle open-source, GPT-J

Un mot sur GPT-J

C’est un modèle de 6B paramètres utilisant l’approche transformer pour générer du texte. C’est un projet Open Source de Eleuther.ai, publié sur github[4] par Ben Wang and Aran Komatsuzaki. GPT-J a été entraîné avec la dataset pile de Eleuther.ai [5].

Le dataset Pile

Cette dataset (825 GB) respecte les principes d’une bonne dataset dont on a parlé dans la partie GPT-2. En effet, elle contient des données diversifiée qui couvrent plusieurs domaines ce qui la rend la meilleure dataset pour entraîner un modèle général et pour pouvoir exécuter des différentes tâches [6].
Elle se compose de 22 sous datasets qui rentrent dans des différents domaines. Les documents d’une dataset peuvent être revus plusieurs fois ‘epochs’ durant un ‘epoch’ sur la dataset entière. Par exemple, puisque Wikipedia est considérée comme une source des documents de bonne qualité, son ‘epoch’ est vu 3 fois plus que d’autres datasets.

Figure 5: Les sous datasets de la Pile

Figure 5: Les sous datasets de la Pile [7]

Utilisation du modèle

GPT-J a été particulièrement développé pour améliorer la génération des textes suivant les instructions données. En fournissant une ‘prompt’ en entrée, GPT-J renvoie un texte en respectant les paramètres donnés. Il répond bien à des prompts de différents types, par exemple [8]:

Figure 6: exemple de 'prompt' donnée en entrée à GPT-J

Figure 6: exemple de 'prompt' donnée en entrée à GPT-J

Performance

On peut voir dans la figure Y que GPT-J a des performances meilleures que celles de GPT-2 et GPT-Neo dans les tests faits sur ces datasets.
Il est plus performant que des modèles de GPT-3 dans quelques cas (notamment GPT-3-1.3B, GPT-3-Babbage, GPT-3-2.7B qui ont beaucoup moins de paramètres que lui).

Figure 7: Comparaison des performances de GPT-J et des autres modèles

Figure 7: Comparaison des performances de GPT-J et des autres modèles [8]

Le plus récent, GPT-3

L’objectif de GPT-3

Les modèles actuels ont été conçus pour réaliser des tâches spécifiques que l’on leur a spécifiées avant l’exécution de la tâche en elle-même. Le problème de cette méthode est qu’elle nécessite un grand nombre de ressources pour chaque type de tâche et pour certaines tâches on peut avoir du mal à collecter suffisamment de données pour réaliser un entraînement complet. De plus, comme le but est de se rapprocher au maximum de la méthode d’apprentissage humaine, nous n’avons pas besoin d’une quantité astronomique d’exemples pour comprendre comment réaliser telle ou telle tâche et nous sommes également capables de mixer ou passer aisément d’une tâche à l’autre.

Les différentes approches

Le but de OpenAI est de réaliser un modèle étant capable de reproduire au mieux la méthode d’apprentissage des humains. Pour cela, ils ont expérimenté différentes approches pour pré-entraîner leur modèle. Certaines avaient déjà été testées avec GPT-2, comme le zero-shot learning.

  • La première approche est la plus classique : le fine-tuning. Son avantage est qu’elle permet de bonnes performances mais elle nécessite une quantité importante de données labellisées et spécifiques pour chaque tâche à réaliser. Les chercheurs de OpenAI n’ont donc pas fine-tuned leur modèle.
  • Le few-shot learning : on donne au modèle quelques exemples de tâches à réaliser mais on ne met pas à jour les poids pendant la période d’inférence. On donne donc K exemples de tâches ainsi que le résultat qui serait attendu et ensuite on donne un exemple final et on demande au modèle quel est sa prédiction.
  • Le One-shot learning : seulement une démonstration (exemple et prédiction attendue) est autorisée mais on précise aussi la nature de la tâche à effectuer via une phrase en langage naturel en plus de la donnée en entrée.
  • Le Zero-shot learning : Aucune démonstration n’est autorisée. Le modèle dispose seulement d’une phrase descriptive de la tâche en langage naturel. C’est de ce type d’apprentissage que veut se rapprocher le plus GPT3 car il mimique l’apprentissage humain au maximum. Cependant il reste le plus compliqué à mettre en place car le modèle a du mal à comprendre le format de la tâche demandée.

Figure 8: Les différentes approches utilisées pour GPT-3

Figure 8: Les différentes approches utilisées pour GPT-3

L’architecture du modèle

  • Nombre de paramètres : 175 milliards de paramètres pour le modèle principal baptisé “GPT-3” et de 13 milliards à 125 millions pour les 7 sous-modèles GPT-3 (GPT-3 Small, GPT-3 Medium, etc.).
  • Architecture Transformers, identique à celle de GPT-2

Pas beaucoup d’évolution au niveau de l’architecture même de GPT-3 mise à part l’augmentation drastique du nombre de paramètres.

Figure 9: informations sur les différents modèles de GPT-3

Figure 9: informations sur les différents modèles de GPT-3 [9]

Limitations

Malgré le fait que GPT-3 atteigne d'excellents scores sur de nombreuses tâches, le modèle possède certaines limites. Tout d’abord, il est plutôt faible sur les tâches de synthèse de textes, il fait beaucoup de répétitions et même des contradictions. Un autre problème récurrent chez les modèles de deep learning est le biais, et GPT-3 n’y échappe pas non plus. Certains utilisateurs ont pu constater des biais racistes ou misogynes comme par exemple l’association du mot “Islam” avec “terrorisme” qui revient souvent dans les phrases générées par le modèle [10].

Autres modèles issus de GPT-3

Pour l’utilisation de l’API de OpenAI, il existe différents modèles à notre disposition pour les fine-tune : davinci, curie, babbage, et ada. Les 2 premiers sont les plus complets, mais chacun a ses tâches “préférées”.

Modèle Tâche
Davinci Complex intent, cause and effect, summarization for audience
Curie Language translation, complex classification, text sentiment, summarization
Babbage Moderate classification, semantic search classification
Ada Parsing text, simple classification, address correction, keywords

Applications en production qui utilisent GPT-3

  • Duolingo : Utilise GPT-3 pour donner des corrections en grammaire Française.
  • HyperClova : modèle TAL de coréen basé sur GPT-3, développé par Naver.
  • 500+ Openers for Tinder : GPT-3 a généré des centaines de phrases d’introduction pour les conversations Tinder.

Bibliographie

[1] Attention Is All You Need: https://arxiv.org/abs/1706.03762

[2] The true names/sizes of the 4 GPT-2 models (Issue): https://github.com/openai/gpt-2/issues/209

[3] Language Models are Unsupervised Multitask Learners : https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf

[4] Le projet sur github pour plus d’informations: https://github.com/kingoflolz/mesh-transformer-jax/

[5] Documentation de GPT-J sur Huggingface: https://huggingface.co/docs/transformers/model_doc/gptj

[6] Documentation de la pile: https://pile.eleuther.ai/

[7] The Pile: An 800GB Dataset of Diverse Text for Language Modeling: https://arxiv.org/pdf/2101.00027.pdf

[8] GPT-J-6B: 6B JAX-Based Transformer (Aran Komatsuzaki): https://arankomatsuzaki.wordpress.com/2021/06/04/gpt-j/

[9] Language Models are Few-Shot Learners: https://arxiv.org/pdf/2005.14165.pdf

[10] How Biased is GPT-3: https://medium.com/fair-bytes/how-biased-is-gpt-3-5b2b91f1177