nouvelles

Cadre de pagaie volante avancé 3.0 !Un article explique les cinq nouvelles fonctionnalités, dont « Integrated Large Model Training and Pushing »

2024-08-01

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

En tant que logiciel de base, le cadre d'apprentissage profond favorise non seulement les progrès rapides de la technologie d'apprentissage profond, mais établit également une base solide pour l'application généralisée de la technologie de l'intelligence artificielle.

Le cadre d'apprentissage en profondeur fournit aux développeurs des interfaces de développement pratiques et faciles à utiliser qui abstractionnent fortement les données et les opérations, permettant aux développeurs de se concentrer davantage sur la conception d'algorithmes et de modèles sans avoir à s'enliser dans les détails du traitement des données sous-jacentes. Grâce à ces interfaces, les développeurs n'ont pas besoin de percevoir et de traiter directement les détails complexes du développement matériel sous-jacent, améliorant ainsi considérablement l'efficacité et l'expérience de développement. Deuxièmement, le cadre d'apprentissage profond fournit également la fonction puissante de différenciation automatique. Les développeurs n'ont généralement besoin que d'écrire le code pour le réseau de propagation vers l'avant, tandis que le réseau de propagation arrière encombrant est automatiquement complété par le cadre.

En tant que première plate-forme d'apprentissage en profondeur ouverte et open source auto-développée et riche en fonctionnalités de Chine, Fei Paddle est passée de la version 1.0, qui utilise des images statiques par défaut, à la version 2.0, qui utilise des images dynamiques par défaut et peut réaliser l'intégration. d'images dynamiques et statiques et de formation et de poussée. Fei Paddle Framework Il a su intégrer parfaitement la flexibilité des graphiques dynamiques et l'efficacité des graphiques statiques, et prend récemment en charge la formation parallèle hybride des modèles, la version 3.0, qui a été affinée pour le ; ère des grands modèles, est officiellement sorti ! Flying Paddle a officiellement ouvert une nouvelle génération d'innovation technologique en matière de cadre !

La pensée de conception

La conception du cadre d’apprentissage profond est cruciale pour promouvoir le développement de la technologie de l’intelligence artificielle, et son objectif principal est de faciliter l’innovation et l’application de la technologie d’apprentissage profond.

Comment faire cela ?

Le cadre doit pleinement prendre en compte les besoins des développeurs et des fabricants de matériel.

Du point de vue de l'utilisateur, un excellent cadre d'apprentissage profond devrait offrir aux développeurs l'expérience de développement ultime. Cela signifie non seulement fournir un environnement de développement convivial, mais plus important encore, il doit être capable de réduire considérablement les coûts d'apprentissage et les coûts en temps des développeurs, tout en améliorant considérablement la commodité du développement. À cette fin, le Flying Paddle Framework met en avant le concept « d'unification du mouvement et de la statique, de l'intégration de l'entraînement et de la poussée, et du parallélisme automatique », qui améliore considérablement l'efficacité du développement.

Du point de vue de l'adaptation matérielle, les applications modernes d'apprentissage profond doivent souvent s'exécuter sur diverses plates-formes matérielles. Par conséquent, le cadre doit être compatible et adaptable à une variété de périphériques matériels différents. Cela nécessite que le cadre isole intelligemment les différences entre les différentes interfaces matérielles et obtienne une large adaptabilité matérielle. Dans le même temps, afin de tirer pleinement parti des performances du matériel, le cadre doit également permettre aux logiciels et au matériel de fonctionner ensemble pour garantir des performances optimales lors de l'utilisation des ressources matérielles.

Dans le même temps, un bon cadre doit également prendre en compte la tendance générale du développement des technologies d’IA et les besoins réels des applications de l’industrie.

En termes de développement technologique, les technologies de pointe telles que le Large Language Model (LLM), le MOE (Mixture of Experts), la multimodalité et l'intelligence scientifique (AI for Science) sont progressivement devenues de nouveaux hotspots de recherche. À mesure que la complexité du modèle augmente, les problèmes tels que les goulots d'étranglement informatiques, les goulots d'étranglement de stockage, les goulots d'étranglement d'accès à la mémoire et les goulots d'étranglement de communication deviennent progressivement plus importants, et le besoin d'une formation distribuée et d'une optimisation générale des performances devient de plus en plus urgent.

Au niveau de l'industrialisation, le cadre doit disposer de capacités de processus complets prenant en charge l'intégration de la formation, de la compression et du raisonnement. Cela signifie que de la formation du modèle à l’optimisation en passant par le déploiement et l’inférence réels, le cadre doit fournir une solution complète et efficace pour répondre aux besoins réels de l’industrie en matière de technologie d’apprentissage profond.

Seul un cadre capable de suivre les tendances et de résister au perfectionnement peut fournir un soutien continu et stable aux développeurs de tous horizons dans l'industrie, le monde universitaire et la recherche.


Concept de conception et principales caractéristiques du Flying Paddle Frame 3.0

Pour résumer les exigences ci-dessus, Feipiao fournira aux développeurs un cadre d'apprentissage profond qui « unifie dynamique et statique, intègre la formation et le push, la parallélisation automatique, l'optimisation automatique et une adaptation matérielle étendue. Les développeurs peuvent écrire du code distribué comme s'ils écrivaient ». code seul, sans avoir besoin de percevoir une logique de communication et de planification complexe, vous pouvez réaliser le développement de grands modèles ; vous pouvez écrire des réseaux de neurones en Python tout comme écrire des formules mathématiques, sans utiliser de langages de développement matériel pour écrire des codes de noyau d'opérateur complexes, et vous pouvez obtenir un fonctionnement efficace.

La version 3.0 du Flying Paddle Framework a vu le jour, poursuivant le concept de conception de la version 2.x de formation dynamique et statique unifiée, et intégrée et poussée. Son interface de développement est entièrement compatible avec la version 2.x. Cela signifie que le code développé avec la version 2.x peut s'exécuter directement sur la version 3.0 sans modification dans la plupart des cas. Il se concentre sur le lancement de quatre nouvelles fonctionnalités : la parallélisation automatique unifiée dynamique et statique, l'optimisation automatique du compilateur, la formation et l'intégration push de grands modèles, ainsi que l'adaptation multi-matériel de grands modèles. Ces fonctionnalités ont été développées depuis la version 2.6 ou antérieure de Flying Paddle Framework, et ont maintenant atteint le stade d'utilisation d'essai externe. Ces nouvelles fonctionnalités ont apporté des améliorations significatives en termes d'expérience utilisateur, de performances, de commodité de développement secondaire et d'adaptabilité matérielle. Fei Paddle a officiellement publié la version 3.0. Cette version contient des améliorations de certaines fonctions existantes de la version framework 2.x et est mature et stable sans utiliser de nouvelles fonctionnalités.

Présentation de l'architecture du framework

Afin de réaliser les caractéristiques mentionnées ci-dessus du cadre d'apprentissage profond, l'architecture du cadre doit être soigneusement conçue pour garantir qu'elle peut prendre en charge diverses constructions de modèles complexes et réaliser une intégration transparente avec diverses puces. Ensuite, un diagramme d'architecture intuitif sera utilisé pour démontrer en détail les modules fonctionnels couverts dans le cadre de nouvelle génération de Flying Paddle, ainsi que les interactions et les connexions entre ces modules. Voici le schéma d'architecture de Flying Paddle Framework 3.0.


Schéma d'architecture du cadre Flying Paddle 3.0

Interfaces riches : le Flying Paddle Framework fournit une variété d'interfaces de développement liées à l'apprentissage profond, telles que la représentation tensorielle, les calculs mathématiques, la mise en réseau de modèles, les stratégies d'optimisation, etc. Grâce à ces interfaces, les développeurs peuvent facilement créer et entraîner leurs propres modèles d'apprentissage en profondeur sans entrer dans les détails techniques sous-jacents.

Sous l'interface de développement, le Flying Paddle Framework peut être divisé en quatre niveaux : couche de présentation, couche de planification, couche opérateur et couche d'adaptation.

Couche de présentation : se concentre sur l'expression et la conversion de graphiques informatiques et fournit des fonctions de base telles que dynamique vers statique (graphiques dynamiques en graphiques statiques), différenciation automatique, parallélisme automatique, combinaison d'opérateurs et optimisation de graphiques informatiques via une représentation intermédiaire hautement évolutive PIR. Un soutien solide.

Couche de planification : responsable de l'orchestration intelligente et de la planification efficace des codes ou des graphiques de calcul, ainsi que de la capacité de gérer et d'optimiser la mémoire graphique et la mémoire en fonction des besoins réels, et de prendre en charge l'exécution efficace des graphiques dynamiques et des graphiques statiques. Que les développeurs choisissent d'utiliser des graphiques dynamiques ou des graphiques statiques pour le développement de modèles, Flying Paddle Framework peut fournir un environnement d'exécution efficace tout en garantissant une utilisation optimale des ressources.

Couche opérateur : elle est composée du compilateur de réseau neuronal CINN et de la bibliothèque d'opérateurs PHI, couvrant des fonctions clés telles que la définition du tenseur, la définition de l'opérateur, la fusion automatique des opérateurs et la mise en œuvre du noyau de l'opérateur.

Couche d'adaptation : elle est utilisée pour mettre en œuvre l'adaptation à la puce sous-jacente, y compris des fonctions telles que la gestion des appareils, l'adaptation de l'opérateur, l'adaptation de la communication et l'accès à la compilation.

Ce qui suit se concentrera sur la nouvelle et majeure mise à niveau de l'architecture de la version Flying Paddle 3.0. Cette mise à niveau comprend principalement les modules suivants :

1) Représentation intermédiaire hautement évolutive PIR, en créant une représentation intermédiaire unifiée pour l'ensemble de l'architecture, brise les barrières de chaque module dans la couche cadre et améliore le potentiel de Flying Paddle dans les domaines du calcul scientifique, de l'optimisation de la compilation et des grands modèles. ;

2) Le compilateur de réseau neuronal optimise et améliore considérablement les performances de bout en bout du modèle grâce à la fusion automatique et au réglage des politiques ;

3) La parallélisation automatique réduit le coût de développement de modèles et d'optimisation des performances des scènes de grands modèles, et améliore considérablement l'expérience utilisateur des scènes de grands modèles.

Représentation intermédiaire hautement étendue PIR

La représentation intermédiaire (IR) des graphiques informatiques est une pierre angulaire importante de l'optimisation des performances du cadre d'apprentissage profond, du déploiement d'inférence et des compilateurs. Ces dernières années, de plus en plus de frameworks et de chercheurs ont introduit la technologie du compilateur dans l'optimisation des modèles de réseaux neuronaux pour l'apprentissage profond et, sur cette base, ils ont utilisé des concepts, des technologies et des outils de compilateur pour optimiser et coder automatiquement les réseaux neuronaux. À l’ère des grands modèles, les exigences en matière d’IR sont plus élevées en termes de flexibilité, d’évolutivité et d’exhaustivité.

Ainsi, sous la version 3.0, Feipiao standardise la définition de la représentation intermédiaire IR au niveau de l'infrastructure pour parvenir à une représentation unifiée de l'ensemble de l'architecture et au partage des résultats de développement dans toutes les directions en amont et en aval. L'architecture IR de nouvelle génération de Feipiao se concentre sur les deux dimensions importantes d'une grande flexibilité et d'une grande évolutivité. Elle est développée grâce à des capacités d'expression sémantique plus complètes et plus robustes, une représentation unifiée de l'ensemble de l'architecture et un mécanisme efficace de stratégie d'optimisation des performances (Pass) enfichable pour obtenir une sémantique complexe. prend en charge, prend en charge plus facilement des stratégies de segmentation riches sous parallélisation automatique de grands modèles et se connecte de manière transparente au compilateur de réseau neuronal pour obtenir une optimisation automatique des performances et une adaptation multi-matériel.



Flying Paddle Intermediate Representation (PIR) résume un ensemble de composants de base hautement évolutifs au niveau de la couche inférieure, couvrant le type, l'attribut, l'opération, le trait et l'interface, et introduit le concept de dialecte, donnant aux développeurs la possibilité d'étendre et de personnaliser librement, ainsi Fournit des capacités d’expression sémantique complètes et robustes. Au niveau de la représentation du modèle, grâce à la gestion modulaire de plusieurs dialectes et à une représentation multi-terminal unifiée, une représentation unifiée de l'ensemble de l'architecture intégrant la formation et l'inférence est obtenue, une connexion transparente entre les opérateurs et les compilateurs est obtenue, ainsi qu'une optimisation automatique et une adaptation multi-matériel. sont pris en charge. Au niveau de la couche de transformation graphique, en unifiant les modules sous-jacents et en simplifiant les concepts de base, il offre aux utilisateurs une expérience de développement peu coûteuse, facile à utiliser et hautes performances, ainsi qu'un mécanisme d'optimisation Pass riche et enfichable. Flying Paddle PIR adhère au principe d'affectation unique statique (SSA) pour garantir que le modèle est équivalent à un graphe acyclique orienté, et utilise Value et Operation pour résumer le graphe de calcul, où Operation représente le nœud et Value représente le bord.

L'opération représente un nœud dans le graphique de calcul : chaque opération représente un opérateur et contient zéro ou plusieurs régions. La région représente une fermeture, qui peut contenir zéro ou plusieurs blocs. Block représente un bloc de base conforme au principe d'affectation unique statique (SSA) et contient zéro ou plusieurs opérations. Grâce à l’imbrication de boucles entre ces trois éléments, des structures grammaticales arbitrairement complexes peuvent être construites.

La valeur représente une arête dirigée dans le graphe de calcul : elle est utilisée pour connecter deux opérations, décrivant ainsi la chaîne Utiliser-Définir (c'est-à-dire la chaîne UD) dans le programme. Parmi eux, OpResult sert de fin de définition et est utilisé pour définir une valeur ; tandis qu'OpOperand sert de fin d'utilisation et décrit l'utilisation d'une certaine valeur.

Feipiao propose deux mécanismes de développement Pass, PatternRewriter et Declarative Rewrite Rule (DRR en abrégé), qui prennent en compte la flexibilité de personnalisation et la facilité de développement. La méthode de développement Pass en trois étapes permet aux développeurs de se concentrer davantage sur le traitement de la logique Pass sans prêter attention aux détails de l'IR sous-jacent. Grâce au mécanisme de développement Pass de PIR, les coûts de développement de Pass sont réduits de 58 % appliqués aux scénarios d'inférence, plus de 84 % des inférences de modèles sont accélérées de plus de 10 % ;

Optimisation automatique du compilateur de réseau neuronal

Il y a trois raisons pour lesquelles nous devons développer la technologie des compilateurs :

1) Tendance du développement du matériel : en combinant l'histoire du développement du matériel et les caractéristiques de l'évolution technologique, la puissance de calcul se développe beaucoup plus rapidement que les performances d'accès à la mémoire, les performances du processeur et les performances d'accès à la mémoire du bus affectent les performances des opérateurs gourmands en accès mémoire (classe de norme ; , activation, etc.), les performances du processeur et la bande passante du bus affectent la planification et les performances. La technologie d'optimisation générale de fusion automatique basée sur un compilateur peut fusionner plusieurs opérateurs en un seul grand opérateur. En réduisant la quantité d'accès à la mémoire et le nombre d'opérateurs, elle peut considérablement améliorer les performances du modèle. La technologie du compilateur deviendra un composant standard des cadres d'apprentissage en profondeur.

2) Tendance de développement du modèle : la structure du modèle présente les caractéristiques de la diversité, et la demande de diversité dépend fortement de l'optimisation générale du compilateur.

3) Optimisation matérielle multiple : il existe de nombreux types de matériel sur le marché. Différentes plates-formes matérielles ont des caractéristiques et des exigences d'optimisation différentes. Chaque matériel nécessite beaucoup de main-d'œuvre pour être optimisé. être considérablement réduit.

Illustrons cela à travers un exemple. Prenons comme exemple la normalisation RMS (Root Mean Square Layer Normalization), qui est souvent utilisée dans le modèle Llama. Sa formule de calcul est relativement simple et claire.



Supposons que nous devions implémenter le calcul de la normalisation RMS.Le moyen le plus simple est d'utiliser l'interface de développement d'opérations tensorielles fournie par le framework Flying Paddle et d'appeler des opérations telles que le carré, la somme, la division, la racine, etc. le code est le suivant :



Le code ci-dessus est simple à développer, mais ses performances sont médiocres et il occupe beaucoup de mémoire vidéo ; les développeurs peuvent implémenter FusedRMSNorm, mais les exigences pour les développeurs sont plus élevées et le coût est plus élevé.

Grâce à la technologie du compilateur de réseau neuronal, nous pouvons obtenir des améliorations significatives des performances tout en conservant un haut degré de flexibilité et de facilité d'utilisation. Les résultats suivants des tests de performances de l'opérateur RMSNorm sur la plate-forme A100 en sont une preuve claire : par rapport à l'implémentation utilisant une combinaison d'interfaces de développement Python, l'opérateur compilé et optimisé s'exécute 4 fois plus vite même s'il est intégré à l'opérateur manuel. , une amélioration des performances de 14 % a également été obtenue. Ce résultat démontre pleinement l'équilibre idéal entre flexibilité et performance trouvé par le cadre de la fly paddle.

Pour cette raison, Feipiao considère la technologie du compilateur de réseau neuronal comme une direction importante de recherche et de développement. Voici le schéma d'architecture global du compilateur Feipiao.



Au niveau de la couche de présentation, avec l'aide des capacités d'expansion du PIR, le module frontal CINN est implémenté pour traiter les transformations liées aux couches, y compris le fractionnement des opérateurs, le recalcul, la division des sous-graphes, les modules de dérivation de dimensions et d'autres modules, et obtient finalement plusieurs backends de compilateur. . Générez des sous-graphiques optimisés. Dans le backend du compilateur, pour ces sous-graphes fusionnables, le compilateur appellera en outre la fonction Compute pour les convertir en une représentation intermédiaire (IR) de bas niveau composée d'un arbre de syntaxe abstraite (AST), et effectuera une boucle sur cette base. pour garantir qu'il peut être intégré dans un noyau ; sur l'IR sous-jacent CINN, une analyse de réglage des performances sera effectuée pour obtenir la configuration optimale, enfin, l'IR sous-jacent sera ensuite soigneusement converti en implémentation de code spécifique ;

Les résultats expérimentaux sur le modèle de grand langage génératif Llama et le modèle de graphe vincentien Stable Diffusion montrent qu'en utilisant la technologie d'optimisation du compilateur, par rapport à la version de base sans optimisation manuelle des performances, la vitesse d'inférence est respectivement 36 % et 30 % plus rapide.

Unification dynamique et statique et parallélisation automatique

Pourquoi fait-on du parallélisme automatique ?

Les méthodes actuelles de formation des grands modèles utilisent une variété de stratégies parallèles.Ces stratégies parallèles sont basées sur la méthode parallèle « manuelle » mise en œuvre en mode graphe dynamique, c'est-à-dire, sur la base d'une seule carte, un traitement manuel de segmentation ( segmentation des Tensors, graphiques de calcul), communication (ajout d'opérateurs de communication), optimisation de la mémoire vidéo (partage de mémoire vidéo, Re-Compute), optimisation de la planification (orchestration de pipeline, calcul et communication asynchrones) et d'autres stratégies. la structure du modèle, mais également une compréhension approfondie des stratégies et des cadres parallèles. La logique de planification rend le développement et l'optimisation des performances des grands modèles très élevés. En plus d'avoir une équipe d'algorithmes dédiée responsable de l'innovation des algorithmes de modèles, il doit également y avoir une équipe dédiée responsable de l'optimisation parallèle des modèles. Cela entraîne de nombreux obstacles à l'innovation et à l'itération de grands modèles.

Prenons un exemple simple pour illustrer la différence entre le développement de grands modèles et la logique à carte unique. Étant donné que la stratégie parallèle entraînera une modification de la forme d'exécution du Tensor, les opérateurs liés au traitement de la forme doivent déterminer s'ils seront affectés par la stratégie parallèle. Comme le montre le traitement de remodelage ci-dessous, la stratégie de segmentation entraîne la transformation de la forme d'entrée, la forme de sortie doit donc être raisonnablement ajustée en fonction de la stratégie de segmentation :



À cette fin, nous proposons un schéma parallèle automatique qui unifie les conditions dynamiques et statiques. Les développeurs n'ont besoin que d'une petite quantité d'annotations de segmentation de tenseurs, et le framework peut automatiquement dériver l'état de segmentation distribuée de tous les tenseurs et opérateurs, et ajouter des opérateurs de communication appropriés pour garantir l'exactitude des résultats. Enfin, il sera basé sur la structure du modèle ; et les informations sur le cluster, combinées à la mémoire graphique et à l'optimisation de la couche de planification, trouvent automatiquement la stratégie parallèle distribuée la plus efficace.

Dans la conception parallèle automatique, les développeurs n'ont besoin que d'une petite quantité d'annotations de segmentation tensorielle.Nous faisons abstraction des méthodes de segmentation et avons besoin de deux types de méthodes de segmentation : les tenseurs de segmentation (paramètres, entrées) et les graphiques de calcul de segmentation (pipeline). Afin de mettre en œuvre ces deux types de méthodes de segmentation, le framework a besoin d'un mécanisme pour décrire la relation de mappage entre les tenseurs distribués et les dispositifs informatiques. À cette fin, nous introduisons les deux concepts distribués de ProcessMesh et ProcessMesh mappant une carte GPU à un. Le processus mappe plusieurs appareils en tableaux unidimensionnels ou multidimensionnels composés de plusieurs processus. La figure suivante montre deux représentations abstraites ProcessMesh différentes composées de 8 appareils.



Placements est une liste composée de trois balises distribuées : Répliquer, Shard et Partial. La longueur est cohérente avec la dimension de ProcessMesh. Elle est utilisée pour indiquer quelle balise distribuée est utilisée pour diviser le tenseur distribué dans la dimension du périphérique informatique correspondant. . Les descriptions détaillées des trois balises distribuées sont les suivantes :

Comme le montre la figure ci-dessous, Répliquer signifie que le tenseur existera sous forme de réplication sur différents appareils ; Shard signifie que le tenseur sera divisé sur différents appareils selon des dimensions spécifiques ; nécessite Réduire la somme ou Réduire L'état complet ne peut être obtenu qu'après des opérations Moyenne et autres de différentes manières.



Après avoir terminé l’abstraction des balises distribuées, nous appelons
L'interface paddle.distributed.shard_tensor() implémente le marquage du partitionnement tensoriel. Grâce au marquage et à la dérivation automatique du découpage tensoriel, nous pouvons représenter un parallélisme hybride distribué complexe. La figure ci-dessous montre un exemple spécifique de parallélisme hybride composé de parallélisme de données, de parallélisme de modèle tensoriel et de parallélisme de pipeline.



Le code suivant montre un exemple spécifique de parallélisme mixte.



En adoptant une approche de développement parallèle automatique, les développeurs n'ont plus besoin de prendre en compte une logique de communication complexe. En prenant la tâche Llama comme exemple, la quantité de code de base de formation distribué a été réduite de 50 %, réduisant ainsi considérablement la difficulté de développement. Certaines de nos expériences montrent qu'avec l'aide d'une analyse globale et d'autres optimisations. , les performances sont également meilleures que celles de la parallélisation manuelle des graphiques dynamiques.

À l'avenir, nous explorerons davantage le parallélisme entièrement automatique sans utiliser de marqueurs de division tensorielle, permettant aux développeurs d'écrire du code distribué tout comme l'écriture de code autonome, améliorant ainsi encore l'expérience de développement de grands modèles.

Avantages industriels

En général, le framework de nouvelle génération de Flying Paddle - Flying Paddle Framework 3.0-Beta est conçu spécifiquement pour les grands modèles et les multicœurs hétérogènes. Il s'adapte vers le bas aux multicœurs hétérogènes et libère pleinement le potentiel matériel d'intégration ascendante prenant en charge les grands modèles. Formation et inférence de modèles. Dans le même temps, il dispose de quatre capacités majeures : la parallélisation automatique unifiée dynamique et statique, l'optimisation automatique du compilateur, la formation de grands modèles et l'intégration push, et l'adaptation multi-matérielle de grands modèles, qui améliorent considérablement la capacité à servir l'industrie.

Parallélisation automatique statique et dynamique unifiée : Cette fonction réduit considérablement les coûts de développement industriel et de formation. Les utilisateurs n'ont besoin de marquer qu'une petite quantité de segmentation tensorielle sur une seule carte, et le Flying Paddle Framework terminera automatiquement la dérivation des informations de segmentation distribuée et ajoutera des opérateurs de communication pour garantir l'exactitude de la logique. Dans le même temps, sur la base de la structure du modèle et des informations de cluster, combinées à l'optimisation de la mémoire vidéo et de la couche de planification, Flying Paddle peut automatiquement trouver la stratégie parallèle distribuée la plus efficace, réduisant ainsi considérablement le coût de développement de la formation parallèle hybride, permettant les développeurs à se concentrer davantage sur les modèles et les algorithmes d’innovation.

Optimisation automatique du compilateur : cette fonctionnalité réduit considérablement le coût de l'optimisation des performances. Le compilateur de Fei Paddle est conçu pour être intégré au framework et peut prendre en charge une formation efficace et un raisonnement de forme variable de divers modèles tels que des modèles génératifs et des modèles de calcul scientifique, offrant un bon équilibre entre flexibilité informatique et hautes performances. Grâce à la fusion automatique des opérateurs et de la technologie de génération de code, les performances d'inférence de modèles génératifs tels que Llama2 et Stable Diffusion ont été améliorées de plus de 30 %.

Formation intégrée et promotion des grands modèles : cette fonctionnalité offre à l'industrie l'expérience de développement ultime. Il permet de réutiliser les capacités de formation et d'inférence les unes avec les autres, offrant ainsi une expérience de développement unifiée et une efficacité de formation ultime pour l'ensemble du processus de grands modèles. En passant du mouvement à l’immobilité, le travail d’entraînement et de raisonnement peut être parfaitement connecté. Les calculs génératifs au cours du processus de formation RLHF (apprentissage par renforcement avec retour humain) peuvent être réutilisés pour l'optimisation de l'inférence, atteignant une accélération de 2,1x. Dans le même temps, l'efficacité de la stratégie parallèle automatique distribuée pour la formation à la réutilisation de scénarios de raisonnement et de quantification est multipliée par 3,8.

Adaptation multi-matériel grand modèle : L'une des caractéristiques importantes de Flying Paddle est de s'adapter aux multi-cœurs hétérogènes et de libérer pleinement le potentiel du matériel. En termes de mécanisme d'accès, Flying Paddle fournit une interface abstraite simple et efficace et un système opérateur de base, réduisant les coûts d'adaptation. En termes de mécanisme d'exploitation, il optimise la planification, le partage de stockage et d'autres mécanismes pour améliorer l'efficacité de la planification. Du point de vue des cœurs d'opérateur, Feipiao fournit une solution de réglage automatique de la fusion du compilateur pour améliorer les performances de bout en bout. Dans le même temps, Feipiao a également construit une infrastructure de R&D telle que l'intégration de code, l'intégration continue et les tests de régression de modèle pour les nouveaux fabricants de matériel. Ces mécanismes garantissent que le nouveau matériel est inclus dans le système de version normal de Feipiao, et que les utilisateurs peuvent directement l'installer et l'essayer sans compiler. Le mécanisme d'accès entièrement fonctionnel et peu coûteux de Flying Paddle a incité les fabricants de matériel à contribuer conjointement 3 456 PR à Flying Paddle, dont un total de plus de 25 000 engagements.

Il s'agit du framework 3.0 de nouvelle génération de Fei Paddle. Actuellement, la version 3.0-Beta est ouverte aux développeurs, et toutes les interfaces de développement sont entièrement compatibles avec la 2.0. Les développeurs sont les bienvenus pour l'utiliser et fournir des commentaires.