nouvelles

L'équipe PyTorch lance sa feuille de route technique, avec près d'une centaine de pages de documents révélant son orientation de développement au second semestre 2024.

2024-07-15

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Nouveau rapport de sagesse

Editeur : Qiao Yang

[Introduction à la nouvelle sagesse]Récemment, l'équipe PyTorch a annoncé pour la première fois la feuille de route de développement, qui a été directement modifiée à partir de documents techniques internes, révélant la prochaine direction de développement de cette bibliothèque open source classique.

Si vous développez en Python dans le domaine de l'IA, PyTorch doit être l'un de vos vieux amis. En 2017, Meta AI a publié cette bibliothèque open source dans le domaine du machine learning et du deep learning, qui en est désormais à sa septième année.

Selon les statistiques 2021 d'Assembly AI, les 30 modèles les plus populaires sur HuggingFace peuvent tous fonctionner sur PyTorch, et 92 % des modèles sont propriétaires de PyTorch. Cette proportion rend de nombreux concurrents, dont TensorFlow, hors de portée.


Le 10 juillet seulement, l'équipe d'ingénierie de PyTorch a rendu public pour la première fois son document de feuille de route, définissant l'orientation du développement pour le second semestre 2024.

Soumith Chintala, co-fondateur de Meta et dirigeant l'équipe PyTorch, a officiellement annoncé la nouvelle sur Twitter.

Il a déclaré qu’il espérait rendre publics les motivations et les objectifs de recherche des ingénieurs.

"Bien que tous les développements de PyTorch soient publics sur GitHub, les documents de planification et de feuille de route rédigés par les équipes des différentes filiales de PyTorch ne sont pas publics, nous avons donc décidé d'apporter des modifications pour accroître la transparence."


Gott Brath, chef de projet technique de l'équipe PyTorch, a également fait une déclaration similaire sur le forum.


Nous avons réfléchi à la manière de partager une feuille de route du travail effectué par l'équipe sur PyTorch. Nous planifions tous les deux ans, voici donc quelques versions publiques de nos plans OSS H2 2024 pour plusieurs domaines clés de PyTorch.

Ces fichiers sont essentiellement les documents internes et les plans de travail de l'équipe PyTorch. Après avoir supprimé certains contenus, ils ont été publiés sous forme de feuille de route, qui implique les aspects suivants de PyTorch :

- Bibliothèques principales et performances de base

- Distribué

- Torchune, Torchrec, TorchVision

- PyTorch Edge

- Chargement des données (DataLoading)

- Noyau du compilateur et déploiement

- Infrastructure de développement

Chaque document contient au moins trois parties, basées sur les idées OKR :

- arrière-plan

- Top 5 des domaines d'intervention et objectifs : objectifs, résultats clés, risques connus ou inconnus et mesures d'atténuation correspondantes (une page maximum)

- Principaux 3 à 5 aspects pour améliorer le niveau d'ingénierie : classification des piliers BE, objectifs, indicateurs/statut/objectifs spécifiques, risques et mesures d'atténuation connus ou inconnus, impact/coût, priorité/niveau de confiance (une page maximum)

Parmi eux, le pilier BE peut être considéré comme les « cinq maximes » écrites par Meta à l'équipe de développement. Le contenu spécifique est :

Meilleur code, meilleure documentation, autonomisation des équipes, code moderne, meilleure architecture

Je ne sais pas si des développeurs se sont préoccupés de la longueur des documents en raison de la règle « une page maximum ». Après tout, les documents coûtent plus cher que les documents longs. Condenser de nombreuses exigences de développement sur une seule page permet non seulement de gagner du temps aux collègues, mais également de gagner du temps. teste également les compétences de l'écrivain.

En outre, d'excellentes idées de l'équipe de développement Meta peuvent également être vues dans le document, telles que l'accent mis sur la collaboration de diverses équipes de modules, l'accent sur l'intégration d'API et le développement conjoint avec des partenaires externes, ainsi que l'accent sur l'interaction avec la communauté open source et les développeurs.

Lorsqu'elle lance une nouvelle base de code comme ExecuTorch, ou lorsqu'elle souhaite augmenter l'influence du compilateur PyTorch, l'équipe part généralement de deux aspects : l'un est de faire tous les efforts pour améliorer les performances et cibler directement SOTA ; intégrer en profondeur Démarrez avec davantage de cas d'utilisation prêts à l'emploi.

Ce sont peut-être les clés du succès de Meta dans le domaine de l'open source au fil des années.

Ce qui suit est un extrait partiel et un résumé du contenu de chaque document.


Adresse d'origine : https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

Bibliothèques principales et performances de base

Les bibliothèques principales impliquées dans le document incluent TendorDict, torchao, NN, TorchRL, etc.

En termes de performances, l'équipe PyTorch a proposé l'objectif d'atteindre les performances SOTA dans la formation et l'inférence de modèles. Les mesures incluent l'introduction d'une technologie d'optimisation de l'architecture et d'un noyau hautes performances pour former une combinaison avec l'ensemble de la pile technologique PyTorch.

L'année dernière a été témoin du développement rapide de GenAI. De nombreuses bibliothèques externes ont vu le jour pour soutenir le développement dans le domaine de la recherche, mais beaucoup d'entre elles ne s'appuient pas directement sur PyTorch, ce qui menacera la domination de PyTorch dans le domaine de la recherche scientifique.

Afin de suivre à nouveau le rythme, PyTorch prendra en charge les technologies de développement courantes telles que la quantification, la sparsification, le MoE et la formation de basse précision, y compris les blocs de construction et les API (principalement intégrées dans torchao) pour aider les modèles de diverses architectures Transformer. améliorer les performances.

La bibliothèque torchao peut aider les chercheurs à personnaliser les techniques de type, de mise en page et d'optimisation hautes performances dans le cadre PyTorch, étendant ainsi le champ d'utilisation à divers scénarios tels que la formation, l'inférence et le réglage.

De plus, les mises à jour de la bibliothèque principale incluront les éléments suivants :

- La bibliothèque d'optimisation automatique lancée torchao a connu un succès révolutionnaire. La prochaine étape consiste à améliorer l'organisation de son code et à séparer ses opérations numériques de la bibliothèque principale.

- Répond à la modularité de base de TendorDict, prend en charge la sérialisation des charges/magasins et le rend 2 fois plus rapide en mode impatient

- Poursuivre le succès du chargement mappé en mémoire au premier semestre, continuer à améliorer les performances et la sécurité du chargement/stockage des modèles

- Réduisez les frais généraux de TorchRL de 50 %

- Ajout du support de base pour NoGIL

- Correction du problème selon lequel la variable TORCH_env signalée par les utilisateurs ne fonctionne pas

Le document mentionne également la dépréciation du module nn.transformer, indiquant qu'une série de didacticiels et de cas d'utilisation seront publiés pour montrer comment utiliser torch.compile, sdpa, NJT, FlexAttention, custom_op, torchao et d'autres modules pour construire Transformer.

distribué

La pré-formation LLM s'étend généralement sur des dizaines, voire des milliers de GPU, et à mesure que l'échelle des paramètres du modèle augmente progressivement, l'inférence et le réglage fin sont difficiles à réaliser sur un seul GPU.

Par conséquent, la prochaine présentation « distribuée » de PyTorch couvre de manière exhaustive les trois liens que sont la formation, l'inférence et le réglage fin, et propose de réaliser une formation distribuée à très grande échelle, un réglage fin à haute efficacité mémoire et un raisonnement distribué multi-hôtes. .

former

Les modes parallèles pris en charge nativement par PyTorch incluent principalement les suivants :

- Parallèle de données entièrement fragmentées (FSDP)

-Partage hybride de données parallèles (HSDP)

-Tenseur parallèle (TP)

- Pipeline parallèle (PP)

- Séquence parallèle (SP)

-Contexte parallèle (CP)

PyTorch espère modulariser davantage diverses méthodes parallèles dans TorchTitan, permettant aux développeurs de combiner librement et d'obtenir un parallélisme à N dimensions selon leurs besoins.


Le document mentionne spécifiquement la nécessité d'ajouter la prise en charge de deux architectures émergentes, MoE et multimodalité, telles que le parallélisme expert et l'optimisation des algorithmes de routage.

En plus de la mise à jour de TorchTitan lui-même, l'équipe distribuée doit également travailler en étroite collaboration avec l'équipe du compilateur pour mieux s'intégrer au module torch.compile afin d'apporter des améliorations de performances supplémentaires aux scénarios distribués à grande échelle.

Ajustement et inférence

Mise au point : combinée avec torchtune, mise en service de la solution FSDP2 LoRA/QLoRA et prise en charge de la quantification NF4 du dictionnaire d'état du modèle

Raisonnement : PP et DP sont devenus le cœur des API distribuées. Ensuite, nous devons prêter attention au raisonnement distribué de torchtitan, qui prend en charge les méthodes PP + TP asynchrones à grand modèle.

Le document mentionne également que l'API d'inférence de HuggingFace sera migrée de PiPPy vers PyTorch (complété par HuggingFace).

Torchtune, TorchRec, TorchVision

Torche

Le lancement de torchtune vise à aider les utilisateurs à affiner plus facilement LLM. C'est également la solution officielle pour affiner le modèle Llama.

Le « réglage fin » défini par torchtune a une portée très large, qui peut se résumer en trois types de scénarios :

- Adaptation du modèle à des ensembles de données spécifiques à un domaine ou à des tâches en aval

- Modélisation des récompenses et des préférences, telles que RLHF, DPO, etc.

- Processus de formation comprenant la distillation et la quantification

Les mises à jour du second semestre permettront d'affiner les flux de travail des agents, tout en se concentrant sur l'amélioration des performances.

L'équipe coopérera avec les modules de compilation, de base, distribués et autres pour fournir un réglage fin efficace et établir des références de performances de réglage précis représentatives au sein de l'écosystème PyTorch.

Torchtune étant également une bibliothèque open source plus récente, l'interaction avec la communauté open source est également essentielle.

Le document propose de publier des articles de blog et des tutoriels, d'organiser des conférences techniques, etc. pour améliorer la compréhension des utilisateurs ; il définira également des indicateurs quantitatifs pour mesurer la part de contribution de Torchturn dans l'écosystème LLM.

En plus de la communauté open source, torchune s'intégrera avec au moins un partenaire et participera à leur communauté pour promouvoir l'utilisation de torchune.

TorchVision

En tant qu'acteur dominant absolu dans le domaine des CV, la technologie de TorchVision est relativement mature, il y a donc très peu de mises à jour proposées dans la feuille de route.

L'équipe continuera à travailler dans le sens du prétraitement, à prendre en charge davantage de formats (tels que WebP, HEIC) et de plates-formes (telles que CUDA) dans l'espace d'encodage/décodage d'images et à améliorer les performances d'encodage/décodage du format jpeg sur GPU.

TorchRec

TorchRec vise à fournir des primitives de parcimonie et de parallélisme couramment utilisées dans les systèmes de recommandation à grande échelle. La première version stable, TorchRec 1.0, sera lancée à l'automne.

Bord

Actuellement, la bibliothèque open source ExecuTorch a lancé une version Alpha, qui s'appuie principalement sur torch.compile et torch.export pour prendre en charge l'analyse, le débogage et l'inférence de modèles sur les appareils mobiles et les appareils de pointe (tels que AR/VR, appareils portables).

Au cours du second semestre, l'équipe Edge lancera la version bêta de xecuTorch et fournira des solutions au sein de l'écosystème PyTorch pour les modèles de la série Llama de Meta et d'autres modèles open source.

Les objectifs clés couvrent principalement deux directions. La première consiste à fournir des fonctions de base et une infrastructure fiable pour l’IA sur l’appareil, notamment :

- Assurer la stabilité des API pour C++ et Python

- Implémenter une série de fonctions de base : prise en charge de la compression du modèle, gestion de l'emplacement du cache proxy, séparation des données et des programmes

La seconde consiste à protéger cette base de code naissante, à cultiver son influence au sein de la communauté open source et à entretenir de bonnes relations de coopération avec des entreprises telles qu'Arm, Apple et Qualcomm.

L'objectif d'influence de la communauté a même été quantifié, exigeant que le code obtienne 3 000 étoiles sur GitHub et soit cloné (fork) 500 fois. Les lecteurs intéressés peuvent continuer à y prêter attention et voir si l’équipe peut terminer cet OKR d’ici la fin de l’année.

Chargement des données

La bibliothèque de jeux de données HuggingFace basée sur le format Apache Arrow a soudainement émergé ces dernières années avec son chargement/stockage à grande vitesse sans limitation de mémoire, et semble avoir volé la vedette aux fonctions liées à PyTorch.

Le document sur le chargement de données commence par l'ambition de redonner de la grandeur à la bibliothèque TorchData et de rétablir la domination de PyTorch dans le chargement de données.

Pour atteindre cet objectif, il est nécessaire de rendre les fonctions pertinentes flexibles, évolutives, hautes performances et économes en mémoire, tout en réalisant un fonctionnement insensé et en prenant en charge la formation multimodale à différentes échelles.

Les objectifs spécifiques de mise à jour incluent les aspects suivants :

- Le développement fonctionnel et l'interface de DataLoader implémenteront dans un premier temps le principe de GitHub, et DataPipes et DataLoader v2 seront progressivement obsolètes et supprimés.

- Assurer des limites claires et une bonne interopérabilité entre TorchTune, TorchTitan, HuggingFace et TorchData, et prendre en charge des ensembles de données multiples et le chargement de données multimodal

- HuggingFace utilise l'API de StatefulDataLoader pour garantir la compatibilité et mettre à jour en temps opportun les échantillons et les cas de test.

Noyau du compilateur et déploiement

Les fonctions de base du compilateur de PyTorch sont devenues de plus en plus parfaites après des années de développement. Ce qu'il faut maintenant rattraper, c'est une intégration plus approfondie et davantage de support d'optimisation dans les domaines de LLM et GenAI.

La feuille de route propose d'apporter la fonction torch.compile() à tous les aspects du cycle d'utilisation de LLM et GenAI (inférence, réglage fin, pré-formation), afin que les modèles importants puissent être compilés avec PyTorch natif lors de leur sortie.

Afin d'atteindre cet objectif, le document propose de nombreuses mesures spécifiques, telles que la collaboration avec les équipes torchtune et TorchTitan pour améliorer les performances de compilation et la publication de versions compilées natives par PyTorch d'au moins deux modèles de haut niveau au cours du second semestre.

De plus, le compilateur peut ajouter des capacités de visualisation pour générer des graphiques modèles exprimant le processus de calcul direct/rétropropagation en mode de formation non avide.

Il existe également de nombreux projets d'assistance aux utilisateurs, tels que l'amélioration de la surveillance et de l'observabilité du système et l'aide aux utilisateurs pour déboguer eux-mêmes les problèmes de compilation. Les principaux objectifs incluent également la création d'une équipe de support utilisateur pour résoudre les problèmes soulevés par les développeurs sur des plateformes telles que GitHub dans plusieurs domaines clés (classes de données, gestion du contexte, etc.).

Les références:

https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

https://x.com/soumithchintala/status/1811060935211049046

https://www.assemblyai.com/blog/pytorch-vs-tensorflow-en-2023/