Depuis la naissance de GPT-3, l'IA générative a marqué un tournant explosif dans le domaine de l'intelligence artificielle avec ses performances étonnantes et ses larges scénarios d'application. Cela a conduit les géants de la technologie à affluer vers la voie de l'IA. Cependant, cette vague a apporté avec elle de nombreux problèmes. Les opérations d'entraînement et d'inférence des grands modèles de langage (LLM) nécessitent beaucoup de puissance de calcul. Avec la mise à niveau itérative de ces modèles, la demande et le coût de la puissance de calcul augmentent de manière exponentielle. En prenant les exemples de GPT-2 et GPT-3, la différence dans le nombre de paramètres entre GPT-2 et GPT-3 est de 1166 fois (GPT-2 a 150 millions de paramètres tandis que GPT-3 en a 175 milliards). Le coût pour une seule session d'entraînement de GPT-3 a été calculé sur la base des modèles de tarification des clouds GPU publics à l'époque, atteignant jusqu'à 12 millions de dollars. C'était 200 fois celui de GPT-2. Dans une utilisation pratique, chaque requête utilisateur nécessite un calcul d'inférence. Sur la base des 13 millions d'utilisateurs indépendants en début d'année, la demande correspondante en puces serait de plus de 30 000 GPU A100. Le coût initial de l'investissement serait alors stupéfiant, à 800 millions de dollars, avec un coût estimé quotidien pour l'inférence du modèle de 700 000 dollars.
Le manque de puissance de calcul et les coûts élevés sont devenus des défis sérieux auxquels est confrontée l'ensemble de l'industrie de l'IA. De manière remarquable, un problème similaire semble se poser dans l'industrie de la blockchain. D'une part, le quatrième halving du Bitcoin et l'approbation des ETF sont imminents. À mesure que les prix futurs augmentent, la demande des mineurs en matériel informatique augmentera inévitablement de manière significative. D'autre part, la technologie de preuve de connaissance nulle (ZKP) est en plein essor, et Vitalik a souligné à plusieurs reprises que l'impact de ZK sur le domaine de la blockchain au cours des dix prochaines années sera aussi important que la blockchain elle-même. Bien que cette technologie promette pour l'avenir de l'industrie de la blockchain, ZK consomme également beaucoup de puissance de calcul et de temps dans la génération de preuves en raison de son processus de calcul complexe, tout comme l'IA.
Dans un avenir prévisible, la pénurie de puissance de calcul deviendra inévitable. Ainsi, le marché décentralisé de la puissance de calcul sera-t-il une entreprise rentable ?
Le marché de la puissance de calcul décentralisée est en fait équivalent à la piste de l'informatique en nuage décentralisée, mais je pense personnellement que ce terme est plus apte à décrire les nouveaux projets qui seront discutés plus tard. Le marché de la puissance de calcul décentralisée devrait être considéré comme un sous-ensemble de DePIN (Réseaux d'Infrastructure Physique Décentralisée), dont le but est de créer un marché de la puissance de calcul ouvert, où toute personne disposant de ressources de puissance de calcul inutilisées peut offrir ses ressources incitées par des jetons, principalement au service des clients B2B et des communautés de développeurs. En ce qui concerne des projets plus familiers, des réseaux tels que Render Network, qui est basé sur des solutions de rendu GPU décentralisées, et Akash Network, une place de marché distribuée de pair à pair pour l'informatique en nuage, appartiennent tous deux à cette piste.
Le texte suivant commencera par les concepts de base avant de discuter de trois marchés émergents dans cette voie : le marché de la puissance de calcul AGI, le marché de la puissance de calcul Bitcoin et le marché de la puissance de calcul AGI dans le marché de l'accélération matérielle ZK. Les deux derniers seront discutés dans "La perspective d'une voie prometteuse : marché de la puissance de calcul décentralisée (Partie 2)".
Le concept de puissance de calcul remonte à l'invention de l'ordinateur. L'ordinateur original utilisait des dispositifs mécaniques pour accomplir des tâches de calcul, et la puissance de calcul se référait à la capacité de calcul du dispositif mécanique. Avec le développement de la technologie informatique, le concept de puissance de calcul a également évolué. La puissance de calcul d'aujourd'hui fait généralement référence au travail collaboratif du matériel informatique (CPU, GPU, FPGA, etc.) et des logiciels (systèmes d'exploitation, compilateurs, applications, etc.).
La puissance de calcul fait référence à la quantité de données qu'un ordinateur ou tout autre appareil informatique peut traiter dans une certaine période de temps ou au nombre de tâches informatiques qu'il peut accomplir. La puissance de calcul est généralement utilisée pour décrire les performances d'un ordinateur ou d'autres appareils informatiques. C'est une mesure importante des capacités de traitement d'un appareil informatique.
La puissance de calcul peut être mesurée de différentes manières, telles que la vitesse de calcul, la consommation d'énergie, la précision de calcul et le parallélisme. Dans le domaine informatique, les mesures de puissance de calcul couramment utilisées incluent les FLOPS (opérations en virgule flottante par seconde), les IPS (instructions par seconde), les TPS (transactions par seconde), etc.
FLOPS mesure la capacité de l'ordinateur à traiter des opérations en virgule flottante (opérations mathématiques avec des points décimaux qui nécessitent de prendre en compte des problèmes de précision et d'erreurs d'arrondi). Il mesure combien d'opérations en virgule flottante un ordinateur peut effectuer par seconde. Les FLOPS sont une mesure des capacités informatiques haute performance d'un ordinateur et sont couramment utilisés pour mesurer les capacités informatiques des supercalculateurs, des serveurs informatiques haute performance, des unités de traitement graphique (GPU), etc. Par exemple, si un système informatique a 1 TFLOPS (un billion d'opérations en virgule flottante par seconde), cela signifie qu'il peut accomplir 1 billion d'opérations en virgule flottante par seconde.
IPS mesure la vitesse à laquelle un ordinateur traite les instructions. Il s'agit d'une mesure du nombre d'instructions qu'un ordinateur peut exécuter par seconde et est une mesure des performances d'une seule instruction d'un ordinateur, généralement utilisée pour mesurer les performances d'une unité centrale de traitement (CPU). Par exemple, un CPU avec un IPS de 3 GHz (3 milliards d'instructions par seconde) signifie qu'il peut exécuter 3 milliards d'instructions par seconde.
TPS mesure la capacité d'un ordinateur à traiter des transactions. Il évalue combien de transactions un ordinateur peut effectuer par seconde, généralement utilisé pour mesurer les performances du serveur de base de données. Par exemple, un serveur de base de données a un TPS de 1 000, ce qui signifie qu'il peut gérer 1 000 transactions de base de données par seconde.
De plus, il existe quelques indicateurs de puissance de calcul pour des scénarios d'application spécifiques, tels que la vitesse d'inférence, la vitesse de traitement d'image et la précision de la reconnaissance vocale.
La puissance de calcul du GPU fait référence à la capacité de calcul des unités de traitement graphique (GPU). Contrairement aux unités centrales de traitement (CPU), les GPU sont des matériels spécifiquement conçus pour traiter des données graphiques telles que des images et des vidéos. Ils disposent d'un grand nombre d'unités de traitement et de capacités de calcul parallèle efficaces, et peuvent effectuer un grand nombre d'opérations en virgule flottante simultanément. Comme les GPU ont été initialement conçus pour le traitement graphique des jeux, ils ont généralement des vitesses d'horloge plus élevées et une bande passante mémoire plus grande que les CPU pour prendre en charge des calculs graphiques complexes.
Architecture : les CPUs et les GPUs ont des architectures de calcul différentes. Les CPUs ont généralement un ou plusieurs cœurs, chacun étant un processeur polyvalent capable d'effectuer une variété d'opérations différentes. Les GPUs, quant à eux, disposent d'un grand nombre de processeurs de flux et de shaders, qui sont spécialement utilisés pour exécuter des calculs liés au traitement d'images;
Calcul parallèle : Les GPU ont généralement des capacités de calcul parallèle plus élevées. Un CPU a un nombre limité de cœurs, et chaque cœur ne peut exécuter qu'une seule instruction, mais un GPU peut avoir des milliers de processeurs de flux qui peuvent exécuter plusieurs instructions et opérations simultanément. Par conséquent, les GPU sont généralement mieux adaptés que les CPU pour effectuer des tâches de calcul parallèle, telles que l'apprentissage automatique et l'apprentissage profond, qui nécessitent des calculs parallèles approfondis;
Conception de programmation : la programmation pour les GPU est relativement plus complexe par rapport aux CPU. Elle nécessite l'utilisation de langages de programmation spécifiques (comme CUDA ou OpenCL) et de techniques de programmation spécifiques pour exploiter les capacités de calcul parallèle des GPU. En revanche, la programmation CPU est plus simple et peut utiliser des langages de programmation et des outils polyvalents.
À l'époque de la Révolution industrielle, le pétrole était la vie du monde et s'est infiltré dans chaque industrie. Dans la prochaine ère de l'IA, la puissance de calcul sera le "pétrole numérique" du monde. De la course frénétique des grandes entreprises aux puces IA et à l'action de Nvidia dépassant mille milliards de dollars, au blocage récent des États-Unis des puces haut de gamme en provenance de Chine, y compris la capacité de puissance de calcul, la taille des puces, et même les plans visant à interdire les clouds GPU, l'importance de la puissance de calcul est évidente. La puissance de calcul sera une marchandise de la prochaine ère.
L'intelligence artificielle (IA) est une nouvelle science technique qui étudie, développe et applique des théories, des méthodes et des technologies pour simuler, étendre et développer l'intelligence humaine. Elle a vu le jour dans les années 1950 et 1960 et, après plus d'un demi-siècle d'évolution, elle a connu des développements entrelacés à travers trois vagues : le symbolisme, le connexionnisme et les approches basées sur les agents. Aujourd'hui, en tant que technologie émergente à usage général, l'IA provoque des changements profonds dans la vie sociale et dans tous les secteurs. Une définition plus spécifique de l'IA générative actuelle est la suivante : l'intelligence artificielle générale (IAG), un système d'intelligence artificielle doté d'une large gamme de capacités de compréhension qui peut effectuer des tâches et opérer dans divers domaines avec une intelligence similaire ou surpassant celle des êtres humains. L'IAG nécessite essentiellement trois éléments, l'apprentissage profond (DL), les big data et une puissance de calcul substantielle.
L'apprentissage profond est une sous-discipline de l'apprentissage automatique (ML), et les algorithmes d'apprentissage profond sont des réseaux neuronaux modélisés d'après le cerveau humain. Par exemple, le cerveau humain contient des millions de neurones interconnectés qui travaillent ensemble pour apprendre et traiter l'information. De même, les réseaux neuronaux profonds (ou réseaux neuronaux artificiels) sont composés de plusieurs couches de neurones artificiels travaillant ensemble dans un ordinateur. Ces neurones artificiels, appelés nœuds, utilisent des calculs mathématiques pour traiter les données. Les réseaux neuronaux artificiels sont des algorithmes d'apprentissage profond qui utilisent ces nœuds pour résoudre des problèmes complexes.
Les réseaux neuronaux peuvent être divisés en couche d'entrée, couches cachées et couche de sortie. Les connexions entre ces différentes couches sont constituées de paramètres.
Couche d'entrée : La couche d'entrée est la première couche du réseau neuronal et est responsable de la réception des données d'entrée externes. Chaque neurone de la couche d'entrée correspond à une caractéristique des données d'entrée. Par exemple, dans le traitement d'image, chaque neurone peut correspondre à la valeur d'un pixel dans l'image.
Couches cachées : La couche d'entrée traite les données et les transmet à des couches plus profondes dans le réseau. Ces couches cachées traitent les informations à différents niveaux, ajustant leur comportement lors de la réception de nouvelles informations. Les réseaux d'apprentissage profond peuvent avoir des centaines de couches cachées, ce qui leur permet d'analyser les problèmes sous différents angles. Par exemple, si l'on vous donne une image d'un animal inconnu qui doit être classé, vous pouvez la comparer à des animaux que vous connaissez déjà. Par exemple, vous pouvez dire de quel type d'animal il s'agit en fonction de la forme de ses oreilles, du nombre de ses pattes et de la taille de ses pupilles. Les couches cachées dans les réseaux neuronaux profonds fonctionnent de manière similaire. Si un algorithme d'apprentissage profond essaie de classer une image d'un animal, chaque couche cachée traitera différentes caractéristiques des animaux et essaiera de les classer avec précision.
Couche de sortie : La couche de sortie est la dernière couche du réseau de neurones et est responsable de générer la sortie du réseau. Chaque neurone dans la couche de sortie représente une catégorie ou une valeur de sortie possible. Par exemple, dans un problème de classification, chaque neurone dans la couche de sortie peut correspondre à une catégorie, tandis que dans un problème de régression, la couche de sortie peut n'avoir qu'un seul neurone dont la valeur représente le résultat de la prédiction;
Paramètres : Dans les réseaux neuronaux, les connexions entre les différentes couches sont représentées par des poids et des biais, qui sont optimisés pendant le processus d'entraînement pour permettre au réseau d'identifier avec précision les motifs dans les données et de faire des prédictions. L'augmentation des paramètres peut améliorer la capacité du modèle du réseau neuronal, c'est-à-dire la capacité du modèle à apprendre et à représenter des motifs complexes dans les données. Mais correspondamment, l'augmentation des paramètres augmentera la demande de puissance de calcul.
Pour être efficacement formés, les réseaux neuronaux ont généralement besoin de données volumineuses, diverses et de haute qualité provenant de sources multiples. Ces données constituent la base de l'entraînement et de la validation du modèle d'apprentissage automatique. En analysant les big data, les modèles d'apprentissage automatique peuvent apprendre les schémas et les relations au sein des données, ce qui leur permet de faire des prédictions ou des classifications.
La demande de puissance de calcul substantielle résulte de plusieurs aspects des réseaux neuronaux : des structures complexes à plusieurs couches, un grand nombre de paramètres, la nécessité de traiter de vastes quantités de données, et des méthodes d'entraînement itératives (pendant la phase d'entraînement, le modèle doit itérer de manière répétée, effectuant des calculs de propagation avant et arrière pour chaque couche, y compris des calculs pour les fonctions d'activation, les fonctions de perte, les gradients et les mises à jour des poids), le besoin de calculs de haute précision, des capacités de calcul parallèle, des techniques d'optimisation et de régularisation, et des processus d'évaluation et de vérification des modèles. À mesure que l'apprentissage profond progresse, l'exigence en puissance de calcul massive pour l'AGI augmente d'environ 10 fois chaque année. Le dernier modèle à ce jour, GPT-4, contient 1,8 billion de paramètres, avec un coût d'entraînement unique de plus de 60 millions de dollars et des exigences en puissance de calcul de 2,15e25 FLOPS (21,5 quadrillion d'opérations en virgule flottante). La demande de puissance de calcul pour l'entraînement de modèles futurs est encore en expansion, et de nouveaux modèles sont développés à un rythme croissant.
Selon les estimations les plus autorisées, le « Rapport d'évaluation de l'indice de puissance de calcul mondial 2022-2023 » compilé conjointement par l'International Data Corporation (IDC), Inspur Information et l'Institut mondial de recherche industrielle de l'Université Tsinghua, la taille du marché mondial de l'informatique en IA devrait passer de 19,5 milliards de dollars en 2022 à 34,66 milliards de dollars en 2026. Le marché de l'informatique en IA générative devrait passer de 820 millions de dollars en 2022 à 10,99 milliards de dollars en 2026. La part de marché de l'informatique en IA générative dans l'ensemble du marché de l'informatique en IA devrait passer de 4,2 % à 31,7 %.
La production de GPU IA a été exclusivement monopolisée par NVIDIA et ils sont extrêmement chers (le dernier H100 a été vendu à 40 000 $ par unité). Dès que les GPU sont disponibles, ils sont achetés par les géants de la technologie de la Silicon Valley. Certains de ces appareils sont utilisés pour former leurs propres nouveaux modèles. Le reste est loué aux développeurs d'IA via des plateformes cloud, telles que celles appartenant à Google, Amazon et Microsoft, qui contrôlent une vaste quantité de ressources informatiques telles que des serveurs, des GPU et des TPU. La puissance de calcul est devenue une nouvelle ressource monopolisée par ces géants. De nombreux développeurs d'IA ne peuvent même pas acheter de GPU dédié sans majoration. Pour utiliser le dernier équipement, les développeurs doivent louer des serveurs cloud AWS ou Microsoft. Les rapports financiers indiquent que cette entreprise génère des profits extrêmement élevés. Les services cloud d'AWS affichent une marge bénéficiaire brute de 61 %, tandis que la marge bénéficiaire brute de Microsoft est encore plus élevée, à 72 %.
Devons-nous accepter cette autorité centralisée et ce contrôle, et payer une marge bénéficiaire de 72% pour les ressources de calcul ? Les géants qui ont monopolisé le Web2 domineront-ils également la prochaine ère ?
En matière de lutte contre les pratiques anticoncurrentielles, la décentralisation est généralement considérée comme la solution optimale. En examinant les projets existants, pouvons-nous atteindre la puissance de calcul massive requise pour l'IA grâce aux projets de stockage DePIN combinés à des protocoles tels que RDNR pour l'utilisation des GPU inactifs ? La réponse est non. La route pour abattre le dragon n'est pas si simple. Les premiers projets n'étaient pas spécifiquement conçus pour la puissance de calcul de l'AGI et ne sont pas réalisables. Amener la puissance de calcul sur la blockchain rencontre au moins les cinq défis suivants :
Vérification du travail : Pour construire un réseau informatique véritablement sans confiance qui offre des incitations économiques aux participants, le réseau doit avoir un moyen de vérifier si les calculs d'apprentissage profond ont réellement été effectués. La question centrale ici est la dépendance à l'état des modèles d'apprentissage profond ; dans ces modèles, l'entrée pour chaque couche dépend de la sortie de la couche précédente. Cela signifie que vous ne pouvez pas simplement valider une seule couche dans un modèle sans prendre en compte toutes les couches précédentes. Le calcul pour chaque couche est basé sur les résultats de toutes les couches précédentes. Par conséquent, afin de vérifier le travail accompli à un point spécifique (comme une couche spécifique), tout le travail depuis le début du modèle jusqu'à ce point spécifique doit être exécuté.
Marché : En tant que marché émergent, le marché de la puissance de calcul de l'IA est confronté à des dilemmes d'offre et de demande, tels que le problème du démarrage à froid. L'offre et la demande de liquidité doivent être approximativement équilibrées dès le début afin que le marché puisse croître avec succès. Afin de capturer l'offre potentielle de puissance de calcul, les participants doivent être incités de manière claire en échange de leurs ressources informatiques. Le marché a besoin d'un mécanisme pour suivre les calculs terminés et rémunérer les fournisseurs en conséquence de manière opportune. Dans les places de marché traditionnelles, les intermédiaires s'occupent de tâches telles que la gestion et l'intégration, tout en réduisant les coûts opérationnels en fixant des seuils de paiement minimum. Cependant, cette approche est coûteuse lors de l'expansion de la taille du marché. Seule une petite partie de l'offre peut être capturée de manière économique, conduisant à un état d'équilibre de seuil selon lequel le marché ne peut capturer et maintenir qu'une offre limitée sans pouvoir se développer davantage;
Problème d'arrêt : Le problème d'arrêt est une question fondamentale en théorie de calcul, qui consiste à déterminer si une tâche de calcul donnée se terminera en temps fini ou continuera indéfiniment. Ce problème est indécidable, ce qui signifie qu'il n'existe pas d'algorithme universel capable de prédire si un calcul donné se terminera en temps fini. Par exemple, l'exécution de contrats intelligents sur Ethereum est également confrontée à un problème similaire d'arrêt. Il est impossible de déterminer à l'avance combien de ressources de calcul l'exécution d'un contrat intelligent nécessitera, ou si elle se terminera dans un délai raisonnable.
(Dans le contexte de l'apprentissage profond, ce problème sera plus complexe car les modèles et les cadres passeront de la construction de graphiques statiques à la construction et à l'exécution dynamiques.)
Confidentialité: La conception et le développement avec une conscience de la confidentialité est un must pour les équipes de projet. Bien qu'une grande quantité de recherche en apprentissage automatique puisse être effectuée sur des ensembles de données publics, afin d'améliorer les performances du modèle et de s'adapter à des applications spécifiques, le modèle doit généralement être peaufiné sur des données utilisateur propriétaires. Ce processus de peaufinage peut impliquer le traitement de données personnelles, il est donc nécessaire de prendre en compte les exigences de protection de la vie privée.
La parallélisation: C'est un facteur clé dans le manque de faisabilité des projets actuels. Les modèles d'apprentissage en profondeur sont généralement entraînés en parallèle sur de grands clusters matériels avec des architectures propriétaires et une latence extrêmement faible, et les GPU dans les réseaux informatiques distribués entraîneraient une latence en raison d'échanges fréquents de données et seraient limités par les performances du GPU le plus lent. Lorsque les sources de calcul ne sont pas fiables et peu fiables, la manière d'atteindre une parallélisation hétérogène est un problème qui doit être résolu. La méthode actuellement réalisable consiste à réaliser une parallélisation grâce à des modèles de transformateur, tels que les transformateurs Switch, qui ont maintenant des caractéristiques hautement parallélisées.
Solutions : Bien que les tentatives actuelles de mise en place d'un marché de la puissance de calcul AGI décentralisé en soient encore à leurs débuts, il existe deux projets qui ont initialement résolu la conception du consensus des réseaux décentralisés et la mise en œuvre des réseaux de puissance de calcul décentralisés dans la formation de modèles et l'inférence. Ce qui suit utilisera Gensyn et Together comme exemples pour analyser les méthodes de conception et les problèmes du marché de la puissance de calcul AGI décentralisé.
Gensyn est un marché de puissance de calcul AGI qui est encore en phase de construction, visant à résoudre les différents défis du calcul distribué en profondeur et à réduire les coûts associés au calcul en profondeur actuel. Gensyn est essentiellement un protocole de participation au premier niveau basé sur le réseau Polkadot, qui récompense directement les solveurs (ceux qui résolvent des tâches informatiques) grâce à des contrats intelligents en échange de leurs appareils GPU inutilisés pour le calcul et l'exécution de tâches d'apprentissage automatique.
En revenant à la question précédente, le cœur de la construction d'un réseau informatique vraiment sans confiance réside dans la vérification du travail de machine learning achevé. Il s'agit d'une question très complexe qui nécessite de trouver un équilibre entre l'intersection de la théorie de la complexité, de la théorie des jeux, de la cryptographie et de l'optimisation.
Gensyn propose une solution simple où les résolveurs soumettent les résultats des tâches d'apprentissage automatique qu'ils ont achevées. Pour vérifier que ces résultats sont précis, un autre vérificateur indépendant tente de rejouer le même travail. Cette approche peut être appelée réplication unique car un seul vérificateur réexécuterait la tâche. Cela signifie qu'il n'y a qu'un seul travail supplémentaire pour vérifier l'exactitude du travail original. Cependant, si la personne vérifiant le travail n'est pas le demandeur original, alors le problème de confiance existe toujours. Les vérificateurs eux-mêmes peuvent ne pas être honnêtes et leur travail doit être vérifié. Cela conduit à un problème potentiel où si la personne vérifiant le travail n'est pas le demandeur original, alors un autre vérificateur sera nécessaire pour vérifier leur travail. Mais ce nouveau vérificateur pourrait également ne pas être digne de confiance, donc un autre vérificateur sera nécessaire pour vérifier leur travail, ce qui pourrait se poursuivre indéfiniment, créant une chaîne de réplication infinie. Ici, nous devons introduire trois concepts clés et les tisser ensemble pour construire un système de participants avec quatre rôles pour résoudre le problème de la chaîne infinie.
Preuves d'apprentissage probabiliste: Construit des certificats de travail terminé en utilisant des métadonnées du processus d'optimisation basé sur le gradient. En répliquant certaines étapes, ces certificats peuvent être rapidement vérifiés pour s'assurer que le travail a été effectué comme prévu.
Protocole de positionnement précis basé sur un graphe : Utilisation de protocoles de positionnement précis basés sur un graphe à multi-granularité, et exécution cohérente de cross-évaluateurs. Cela permet de réexécuter et de comparer le travail de vérification pour assurer la cohérence, qui est finalement confirmée par la blockchain elle-même.
Jeu d'incitation de style Truebit : Utilisez des enjeux et des sanctions pour construire un jeu d'incitation afin de garantir que chaque participant économiquement raisonnable agira honnêtement et accomplira ses tâches attendues.
Le système de participants se compose de soumissionnaires, de solveurs, de vérificateurs et de lanceurs d'alerte.
Soumetteurs :
Les soumissionnaires sont les utilisateurs finaux du système qui fournissent des tâches à calculer et paient pour les unités de travail complétées;
Solveurs :
Les solveurs sont les travailleurs principaux du système, effectuant l'entraînement du modèle et générant des preuves qui sont vérifiées par le vérificateur;
Vérificateurs:
Les vérificateurs sont essentiels pour relier le processus d'entraînement non déterministe aux calculs linéaires déterministes, en reproduisant des parties de la preuve du solveur et en comparant les distances avec les seuils attendus;
Lanceurs d'alerte :
Les lanceurs d'alerte sont la dernière ligne de défense, vérifiant le travail des vérificateurs et relevant les défis dans l'espoir de recevoir des paiements de prime généreux.
Le système de jeu conçu par le protocole fonctionne à travers huit étapes, couvrant quatre rôles principaux des participants, pour compléter l'ensemble du processus de la soumission de tâches à la vérification finale.
Soumission de tâche : Les tâches se composent de trois informations spécifiques :
Métadonnées décrivant la tâche et les hyperparamètres;
Un fichier binaire de modèle (ou une architecture de base);
Données d'entraînement pré-traitées accessibles publiquement.
Pour soumettre une tâche, le soumetteur spécifie les détails de la tâche dans un format lisible par machine et la soumet à la chaîne avec le fichier binaire du modèle (ou l'architecture lisible par machine) et un emplacement publiquement accessible des données d'entraînement prétraitées. Les données publiques peuvent être stockées dans un stockage d'objets simple tel que le S3 d'AWS, ou dans un stockage décentralisé tel que l'IPFS, Arweave, ou Subspace.
Profilage : Le processus de profilage établit un seuil de distance de base pour la vérification de la preuve d'apprentissage. Les vérificateurs récupéreront périodiquement des tâches de profilage et généreront des seuils de mutation pour la comparaison des preuves d'apprentissage. Pour générer le seuil, le vérificateur exécutera de manière déterministe et répétera des parties de la formation en utilisant des graines aléatoires différentes, générant et vérifiant leurs propres preuves. Au cours de ce processus, le vérificateur établit un seuil de distance global attendu pour le travail non déterministe de la solution qui peut être utilisé pour la vérification.
Formation : Après le profilage, les tâches entrent dans le pool de tâches public (similaire au Mempool d'Ethereum). Sélectionnez un solveur pour exécuter la tâche et retirez la tâche du pool de tâches. Les solveurs effectuent la tâche en fonction des métadonnées soumises par le soumetteur et du modèle et des données d'entraînement fournies. Lors de l'exécution des tâches de formation, les solveurs génèrent également des preuves d'apprentissage en vérifiant régulièrement les points et en stockant les métadonnées (y compris les paramètres) pendant le processus de formation, afin que les vérificateurs puissent reproduire les étapes d'optimisation suivantes aussi précisément que possible.
Génération de preuves : Les solveurs stockent périodiquement les poids des modèles ou les mises à jour et leurs indices correspondants de l'ensemble de données d'entraînement pour identifier les échantillons utilisés pour générer les mises à jour des poids. La fréquence des points de contrôle peut être ajustée pour fournir des garanties plus solides ou pour économiser de l'espace de stockage. Les preuves peuvent être “empilées”, ce qui signifie qu'elles peuvent partir d'une distribution aléatoire utilisée pour initialiser les poids, ou à partir de poids pré-entraînés générés à l'aide de leurs propres preuves. Cela permet au protocole de construire un ensemble de modèles de base prouvés et pré-entraînés qui peuvent être affinés pour des tâches plus spécifiques.
Vérification de la preuve : Après l'achèvement de la tâche, les solveurs enregistrent l'achèvement de la tâche sur la chaîne et affichent leur preuve d'apprentissage à un endroit accessible au public pour que les vérificateurs puissent y accéder. Les vérificateurs extraient les tâches de vérification du pool public de tâches et effectuent un travail de calcul pour relancer une partie de la preuve et exécuter des calculs de distance. Ensuite, la chaîne, avec le seuil calculé lors de l'étape de profilage, utilise la distance résultante pour déterminer si la vérification correspond à la preuve.
Défi de localisation basé sur un graphe : Après avoir vérifié la preuve d'apprentissage, les lanceurs d'alerte peuvent reproduire le travail des vérificateurs pour vérifier si le travail de vérification lui-même a été exécuté correctement. Si les lanceurs d'alerte estiment que la vérification a été effectuée de manière incorrecte (de manière malveillante ou non), ils peuvent la contester devant un arbitrage contractuel en échange d'une récompense. Cette récompense peut provenir des dépôts des résolveurs et des validateurs (dans le cas d'un vrai positif), ou d'un bonus de loterie (dans le cas d'un faux positif), l'arbitrage étant effectué en utilisant la chaîne elle-même. Les lanceurs d'alerte (agissant en tant que vérificateurs dans leur cas) ne vérifieront et ne contesteront le travail que s'ils s'attendent à recevoir une rémunération appropriée. En pratique, cela signifie que les lanceurs d'alerte sont censés rejoindre et quitter le réseau en fonction du nombre d'autres lanceurs d'alerte actifs (c'est-à-dire avec des dépôts en cours et des contestations). Par conséquent, la stratégie par défaut attendue pour tout lanceur d'alerte est de rejoindre le réseau lorsqu'il y a moins d'autres lanceurs d'alerte, de déposer une caution, de sélectionner aléatoirement une tâche active, et de commencer leur processus de vérification. Après une tâche, ils prendront une autre tâche active au hasard et répéteront l'opération jusqu'à ce que le nombre de lanceurs d'alerte dépasse leur seuil de paiement déterminé, moment auquel ils quitteront le réseau (ou plus probablement, passeront à un autre rôle dans le réseau - vérificateur ou résolveur - en fonction de leurs capacités matérielles) jusqu'à ce que la situation se retourne à nouveau.
Arbitrage de contrat : Lorsque les vérificateurs sont contestés par des lanceurs d'alerte, ils entrent dans un processus avec la chaîne pour découvrir l'emplacement de l'opération ou de l'entrée contestée, et finalement la chaîne effectuera l'opération de base finale et déterminera si le défi est justifié. Pour maintenir l'honnêteté des lanceurs d'alerte et surmonter le dilemme des vérificateurs, des erreurs forcées périodiques et des paiements de jackpot sont introduits ici.
Règlement : Pendant le processus de règlement, les participants sont payés en fonction des conclusions des vérifications probabilistes et déterministes. Différents scénarios de paiement surviennent en fonction des résultats des vérifications et des défis précédents. Si le travail est considéré comme ayant été effectué correctement et que toutes les vérifications ont été effectuées, les fournisseurs de solutions et les vérificateurs sont récompensés en fonction des opérations effectuées.
Gensyn a conçu un système sophistiqué de théorie des jeux sur la couche de vérification et les couches d'incitation, ce qui permet une identification rapide et une rectification des erreurs en pinpointant les divergences au sein du réseau. Cependant, il manque encore de nombreux détails dans le système actuel. Par exemple, comment définir les paramètres pour garantir que les récompenses et les pénalités sont raisonnables sans fixer le seuil trop haut? Avez-vous envisagé des scénarios extrêmes et la puissance de calcul différente des résolveurs dans les aspects de la théorie des jeux? Il n'y a pas de description détaillée de l'exécution parallèle hétérogène dans la version actuelle du livre blanc. Gensyn a encore du chemin à parcourir.
Together.ai est une entreprise qui se concentre sur des solutions de calcul AI décentralisées en open source pour les grands modèles. Son objectif est de permettre à tout le monde d'accéder à l'IA n'importe où. À proprement parler, Together n'est pas un projet blockchain, mais il a résolu préliminairement les problèmes de latence au sein des réseaux de calcul AGI décentralisés. Par conséquent, l'article suivant n'analyse que les solutions de Together et n'évalue pas le projet en lui-même.
Comment réaliser la formation et l'inférence de grands modèles lorsque les réseaux décentralisés sont 100 fois plus lents que les centres de données?
Imaginons la distribution des GPU participant à un réseau décentralisé. Ces appareils seront répartis sur différents continents et villes, chacun ayant besoin de se connecter avec des latences et des bandes passantes variables. Comme le montre la figure ci-dessous, un scénario distribué simulé montre des appareils situés en Amérique du Nord, en Europe et en Asie, avec des bandes passantes et des latences différentes entre eux. Que faut-il faire pour les relier efficacement ?
Modélisation computationnelle de l'entraînement distribué : Le diagramme ci-dessous montre la situation de l'entraînement d'un modèle de base sur plusieurs appareils, présentant trois types de communication : Activation avant, Gradient arrière et Communication latérale.
En combinant la largeur de bande de communication et la latence, deux formes de parallélisme doivent être prises en compte : le parallélisme de pipeline et le parallélisme des données, correspondant aux trois types de communication dans le scénario multi-appareils :
Dans le parallélisme de pipeline, toutes les couches du modèle sont divisées en plusieurs étapes, où chaque appareil traite une étape, qui est une séquence de couches consécutives, comme plusieurs blocs de transformateur. Pendant la propagation avant, les activations sont transmises à l'étape suivante, et pendant la propagation arrière, les gradients des activations sont renvoyés à l'étape précédente.
En parallélisme de données, les appareils calculent indépendamment les gradients pour différents micro-lots mais doivent synchroniser ces gradients par la communication.
Optimisation de la planification:
Dans un environnement décentralisé, le processus de formation est souvent contraint par la communication. Les algorithmes de planification attribuent généralement des tâches nécessitant une communication étendue à des appareils disposant de connexions plus rapides. En tenant compte des dépendances entre les tâches et de l'hétérogénéité du réseau, il est d'abord nécessaire de modéliser le coût de stratégies de planification spécifiques. Afin de capturer le coût complexe de la communication des modèles de base d'entraînement, Together propose une nouvelle formulation et décompose le modèle de coût en deux niveaux à l'aide de la théorie des graphes:
La théorie des graphes est une branche des mathématiques qui étudie les propriétés et les structures des graphes (réseaux). Un graphe est composé de sommets (nœuds) et d'arêtes (lignes reliant les nœuds). Le but principal de la théorie des graphes est d'étudier diverses propriétés des graphes, telles que la connectivité, la coloration et la nature des chemins et des cycles dans les graphes.
Le premier niveau est un problème d'équilibrage de partition de graphe (diviser l'ensemble des sommets d'un graphe en plusieurs sous-ensembles de taille égale ou presque égale tout en minimisant le nombre d'arêtes entre les sous-ensembles). Dans cette partition, chaque sous-ensemble représente une partition, et les coûts de communication sont réduits en minimisant les arêtes entre les partitions, correspondant aux coûts de communication du parallélisme des données.
Le deuxième niveau implique une correspondance de graphes conjoints et un problème du voyageur de commerce (un problème d'optimisation combinatoire qui combine des éléments de correspondance de graphes et du problème du voyageur de commerce). Le problème de correspondance de graphes consiste à trouver une correspondance dans le graphe qui minimise ou maximise certains coûts. Le problème du voyageur de commerce cherche le chemin le plus court qui visite tous les nœuds du graphe, correspondant aux coûts de communication du parallélisme de pipeline.
Le diagramme ci-dessus est une vue schématique du processus. En raison des calculs complexes impliqués dans la mise en œuvre réelle, le processus décrit dans le diagramme est simplifié pour une meilleure compréhension. Pour une mise en œuvre détaillée, on peut se référer à la documentation sur le site officiel de Together.
Supposons qu'il existe un ensemble de NN appareils, DD, avec des retards de communication incertains (matrice AA) et des bandes passantes (matrice BB), sur la base de l'ensemble d'appareils DD, nous générons d'abord une partition de graphe équilibrée. Chaque partition ou groupe d'appareils contient approximativement un nombre égal d'appareils, et ils gèrent tous la même étape de pipeline. Cela garantit que lors du parallélisme des données, chaque groupe d'appareils effectue une quantité de travail similaire. Selon les retards de communication et les bandes passantes, une formule peut calculer le “coût” du transfert de données entre les groupes d'appareils. Chaque groupe équilibré est fusionné pour créer un graphe grossier entièrement connecté, où chaque nœud représente une étape de pipeline, et les arêtes représentent le coût de communication entre deux étapes. Pour minimiser les coûts de communication, un algorithme d'appariement est utilisé pour déterminer quels groupes d'appareils devraient travailler ensemble.
Pour une optimisation supplémentaire, ce problème peut également être modélisé comme un problème du voyageur de commerce en boucle ouverte (en boucle ouverte signifie qu'il n'est pas nécessaire de revenir au point de départ du trajet) pour trouver un chemin optimal pour transmettre des données à travers tous les appareils. Enfin, Together utilise un algorithme de planification innovant pour trouver la stratégie d'allocation optimale pour le modèle de coûts donné, minimisant ainsi les coûts de communication et maximisant le débit d'entraînement. Selon les tests, même si le réseau est 100 fois plus lent sous cette optimisation de planification, le débit d'entraînement de bout en bout n'est que d'environ 1,7 à 2,3 fois plus lent.
Optimisation de la compression de la communication :
Pour l’optimisation de la compression des communications, Together a introduit l’algorithme AQ-SGD (pour un processus de calcul détaillé, veuillez vous référer à l’article « Fine-tuning Language Models over Slow Networks using Activation Compression with Guarantees »). L’algorithme AQ-SGD est une nouvelle technique de compression d’activation conçue pour résoudre les problèmes d’efficacité de la communication lors de l’entraînement parallèle des pipelines sur des réseaux lents. Contrairement aux méthodes précédentes de compression directe des valeurs d’activation, AQ-SGD se concentre sur la compression des changements dans les valeurs d’activation du même échantillon d’apprentissage à différentes périodes. Cette méthode unique introduit une dynamique « auto-exécutable » intéressante, où les performances de l’algorithme devraient s’améliorer progressivement au fur et à mesure que l’apprentissage se stabilise. L’algorithme AQ-SGD a été rigoureusement analysé théoriquement et il a été prouvé qu’il avait de bons taux de convergence dans certaines conditions techniques et des fonctions de quantification d’erreur bornée. L’algorithme peut être mis en œuvre efficacement sans ajouter de surcharge d’exécution supplémentaire de bout en bout, bien qu’il nécessite l’utilisation de plus de mémoire et de SSD pour stocker les valeurs d’activation. Grâce à des expériences approfondies sur la classification des séquences et les ensembles de données de modélisation du langage, il a été démontré qu’AQ-SGD compresse les valeurs d’activation à 2-4 bits sans sacrifier les performances de convergence. De plus, AQ-SGD peut être intégré à des algorithmes de compression de gradient de pointe pour obtenir une « compression de communication de bout en bout », ce qui signifie que les échanges de données entre toutes les machines, y compris les gradients de modèle, les valeurs d’activation directe et les gradients arrière, sont compressés avec une faible précision, améliorant ainsi considérablement l’efficacité de la communication de l’entraînement distribué. Par rapport aux performances d’entraînement de bout en bout dans un réseau informatique centralisé (par exemple, 10 Gbit/s) sans compression, elles ne sont actuellement que 31 % plus lentes. Si l’on ajoute à cela les données sur l’optimisation de l’ordonnancement, bien qu’il existe encore un certain écart entre les réseaux informatiques centralisés, il y a un grand espoir de rattrapage à l’avenir.
Dans la période de dividende apportée par la vague de l'IA, le marché de la puissance de calcul AGI est sans aucun doute le marché avec le plus grand potentiel et la demande la plus forte parmi les différents marchés de puissance de calcul. Cependant, la plus grande difficulté de développement, les exigences matérielles et les demandes en capital posent des défis à cette industrie. En combinant les deux projets présentés ci-dessus, il faudra encore un certain temps avant que le marché de la puissance de calcul AGI soit lancé. Le réseau décentralisé réel est également beaucoup plus compliqué que le scénario idéal. Il n'est actuellement pas suffisant pour rivaliser avec les géants du cloud.
Au moment d’écrire ces lignes, j’ai également observé que certains projets à petite échelle qui n’en sont encore qu’à leurs balbutiements (l’étape PPT) ont commencé à explorer de nouveaux points d’entrée, comme l’accent mis sur l’étape d’inférence de l’IAG, moins difficile, plutôt que sur l’étape de formation. Cependant, à long terme, l’importance de la décentralisation et des systèmes sans permission est profonde. Le droit d’accéder à la puissance de calcul de l’IAG et de l’entraîner ne doit pas être concentré entre les mains de quelques géants centralisés. L’humanité n’a pas besoin d’une nouvelle « théocratie » ou d’un nouveau « pape », et elle ne devrait pas non plus payer des frais d’adhésion élevés.
Пригласить больше голосов
Depuis la naissance de GPT-3, l'IA générative a marqué un tournant explosif dans le domaine de l'intelligence artificielle avec ses performances étonnantes et ses larges scénarios d'application. Cela a conduit les géants de la technologie à affluer vers la voie de l'IA. Cependant, cette vague a apporté avec elle de nombreux problèmes. Les opérations d'entraînement et d'inférence des grands modèles de langage (LLM) nécessitent beaucoup de puissance de calcul. Avec la mise à niveau itérative de ces modèles, la demande et le coût de la puissance de calcul augmentent de manière exponentielle. En prenant les exemples de GPT-2 et GPT-3, la différence dans le nombre de paramètres entre GPT-2 et GPT-3 est de 1166 fois (GPT-2 a 150 millions de paramètres tandis que GPT-3 en a 175 milliards). Le coût pour une seule session d'entraînement de GPT-3 a été calculé sur la base des modèles de tarification des clouds GPU publics à l'époque, atteignant jusqu'à 12 millions de dollars. C'était 200 fois celui de GPT-2. Dans une utilisation pratique, chaque requête utilisateur nécessite un calcul d'inférence. Sur la base des 13 millions d'utilisateurs indépendants en début d'année, la demande correspondante en puces serait de plus de 30 000 GPU A100. Le coût initial de l'investissement serait alors stupéfiant, à 800 millions de dollars, avec un coût estimé quotidien pour l'inférence du modèle de 700 000 dollars.
Le manque de puissance de calcul et les coûts élevés sont devenus des défis sérieux auxquels est confrontée l'ensemble de l'industrie de l'IA. De manière remarquable, un problème similaire semble se poser dans l'industrie de la blockchain. D'une part, le quatrième halving du Bitcoin et l'approbation des ETF sont imminents. À mesure que les prix futurs augmentent, la demande des mineurs en matériel informatique augmentera inévitablement de manière significative. D'autre part, la technologie de preuve de connaissance nulle (ZKP) est en plein essor, et Vitalik a souligné à plusieurs reprises que l'impact de ZK sur le domaine de la blockchain au cours des dix prochaines années sera aussi important que la blockchain elle-même. Bien que cette technologie promette pour l'avenir de l'industrie de la blockchain, ZK consomme également beaucoup de puissance de calcul et de temps dans la génération de preuves en raison de son processus de calcul complexe, tout comme l'IA.
Dans un avenir prévisible, la pénurie de puissance de calcul deviendra inévitable. Ainsi, le marché décentralisé de la puissance de calcul sera-t-il une entreprise rentable ?
Le marché de la puissance de calcul décentralisée est en fait équivalent à la piste de l'informatique en nuage décentralisée, mais je pense personnellement que ce terme est plus apte à décrire les nouveaux projets qui seront discutés plus tard. Le marché de la puissance de calcul décentralisée devrait être considéré comme un sous-ensemble de DePIN (Réseaux d'Infrastructure Physique Décentralisée), dont le but est de créer un marché de la puissance de calcul ouvert, où toute personne disposant de ressources de puissance de calcul inutilisées peut offrir ses ressources incitées par des jetons, principalement au service des clients B2B et des communautés de développeurs. En ce qui concerne des projets plus familiers, des réseaux tels que Render Network, qui est basé sur des solutions de rendu GPU décentralisées, et Akash Network, une place de marché distribuée de pair à pair pour l'informatique en nuage, appartiennent tous deux à cette piste.
Le texte suivant commencera par les concepts de base avant de discuter de trois marchés émergents dans cette voie : le marché de la puissance de calcul AGI, le marché de la puissance de calcul Bitcoin et le marché de la puissance de calcul AGI dans le marché de l'accélération matérielle ZK. Les deux derniers seront discutés dans "La perspective d'une voie prometteuse : marché de la puissance de calcul décentralisée (Partie 2)".
Le concept de puissance de calcul remonte à l'invention de l'ordinateur. L'ordinateur original utilisait des dispositifs mécaniques pour accomplir des tâches de calcul, et la puissance de calcul se référait à la capacité de calcul du dispositif mécanique. Avec le développement de la technologie informatique, le concept de puissance de calcul a également évolué. La puissance de calcul d'aujourd'hui fait généralement référence au travail collaboratif du matériel informatique (CPU, GPU, FPGA, etc.) et des logiciels (systèmes d'exploitation, compilateurs, applications, etc.).
La puissance de calcul fait référence à la quantité de données qu'un ordinateur ou tout autre appareil informatique peut traiter dans une certaine période de temps ou au nombre de tâches informatiques qu'il peut accomplir. La puissance de calcul est généralement utilisée pour décrire les performances d'un ordinateur ou d'autres appareils informatiques. C'est une mesure importante des capacités de traitement d'un appareil informatique.
La puissance de calcul peut être mesurée de différentes manières, telles que la vitesse de calcul, la consommation d'énergie, la précision de calcul et le parallélisme. Dans le domaine informatique, les mesures de puissance de calcul couramment utilisées incluent les FLOPS (opérations en virgule flottante par seconde), les IPS (instructions par seconde), les TPS (transactions par seconde), etc.
FLOPS mesure la capacité de l'ordinateur à traiter des opérations en virgule flottante (opérations mathématiques avec des points décimaux qui nécessitent de prendre en compte des problèmes de précision et d'erreurs d'arrondi). Il mesure combien d'opérations en virgule flottante un ordinateur peut effectuer par seconde. Les FLOPS sont une mesure des capacités informatiques haute performance d'un ordinateur et sont couramment utilisés pour mesurer les capacités informatiques des supercalculateurs, des serveurs informatiques haute performance, des unités de traitement graphique (GPU), etc. Par exemple, si un système informatique a 1 TFLOPS (un billion d'opérations en virgule flottante par seconde), cela signifie qu'il peut accomplir 1 billion d'opérations en virgule flottante par seconde.
IPS mesure la vitesse à laquelle un ordinateur traite les instructions. Il s'agit d'une mesure du nombre d'instructions qu'un ordinateur peut exécuter par seconde et est une mesure des performances d'une seule instruction d'un ordinateur, généralement utilisée pour mesurer les performances d'une unité centrale de traitement (CPU). Par exemple, un CPU avec un IPS de 3 GHz (3 milliards d'instructions par seconde) signifie qu'il peut exécuter 3 milliards d'instructions par seconde.
TPS mesure la capacité d'un ordinateur à traiter des transactions. Il évalue combien de transactions un ordinateur peut effectuer par seconde, généralement utilisé pour mesurer les performances du serveur de base de données. Par exemple, un serveur de base de données a un TPS de 1 000, ce qui signifie qu'il peut gérer 1 000 transactions de base de données par seconde.
De plus, il existe quelques indicateurs de puissance de calcul pour des scénarios d'application spécifiques, tels que la vitesse d'inférence, la vitesse de traitement d'image et la précision de la reconnaissance vocale.
La puissance de calcul du GPU fait référence à la capacité de calcul des unités de traitement graphique (GPU). Contrairement aux unités centrales de traitement (CPU), les GPU sont des matériels spécifiquement conçus pour traiter des données graphiques telles que des images et des vidéos. Ils disposent d'un grand nombre d'unités de traitement et de capacités de calcul parallèle efficaces, et peuvent effectuer un grand nombre d'opérations en virgule flottante simultanément. Comme les GPU ont été initialement conçus pour le traitement graphique des jeux, ils ont généralement des vitesses d'horloge plus élevées et une bande passante mémoire plus grande que les CPU pour prendre en charge des calculs graphiques complexes.
Architecture : les CPUs et les GPUs ont des architectures de calcul différentes. Les CPUs ont généralement un ou plusieurs cœurs, chacun étant un processeur polyvalent capable d'effectuer une variété d'opérations différentes. Les GPUs, quant à eux, disposent d'un grand nombre de processeurs de flux et de shaders, qui sont spécialement utilisés pour exécuter des calculs liés au traitement d'images;
Calcul parallèle : Les GPU ont généralement des capacités de calcul parallèle plus élevées. Un CPU a un nombre limité de cœurs, et chaque cœur ne peut exécuter qu'une seule instruction, mais un GPU peut avoir des milliers de processeurs de flux qui peuvent exécuter plusieurs instructions et opérations simultanément. Par conséquent, les GPU sont généralement mieux adaptés que les CPU pour effectuer des tâches de calcul parallèle, telles que l'apprentissage automatique et l'apprentissage profond, qui nécessitent des calculs parallèles approfondis;
Conception de programmation : la programmation pour les GPU est relativement plus complexe par rapport aux CPU. Elle nécessite l'utilisation de langages de programmation spécifiques (comme CUDA ou OpenCL) et de techniques de programmation spécifiques pour exploiter les capacités de calcul parallèle des GPU. En revanche, la programmation CPU est plus simple et peut utiliser des langages de programmation et des outils polyvalents.
À l'époque de la Révolution industrielle, le pétrole était la vie du monde et s'est infiltré dans chaque industrie. Dans la prochaine ère de l'IA, la puissance de calcul sera le "pétrole numérique" du monde. De la course frénétique des grandes entreprises aux puces IA et à l'action de Nvidia dépassant mille milliards de dollars, au blocage récent des États-Unis des puces haut de gamme en provenance de Chine, y compris la capacité de puissance de calcul, la taille des puces, et même les plans visant à interdire les clouds GPU, l'importance de la puissance de calcul est évidente. La puissance de calcul sera une marchandise de la prochaine ère.
L'intelligence artificielle (IA) est une nouvelle science technique qui étudie, développe et applique des théories, des méthodes et des technologies pour simuler, étendre et développer l'intelligence humaine. Elle a vu le jour dans les années 1950 et 1960 et, après plus d'un demi-siècle d'évolution, elle a connu des développements entrelacés à travers trois vagues : le symbolisme, le connexionnisme et les approches basées sur les agents. Aujourd'hui, en tant que technologie émergente à usage général, l'IA provoque des changements profonds dans la vie sociale et dans tous les secteurs. Une définition plus spécifique de l'IA générative actuelle est la suivante : l'intelligence artificielle générale (IAG), un système d'intelligence artificielle doté d'une large gamme de capacités de compréhension qui peut effectuer des tâches et opérer dans divers domaines avec une intelligence similaire ou surpassant celle des êtres humains. L'IAG nécessite essentiellement trois éléments, l'apprentissage profond (DL), les big data et une puissance de calcul substantielle.
L'apprentissage profond est une sous-discipline de l'apprentissage automatique (ML), et les algorithmes d'apprentissage profond sont des réseaux neuronaux modélisés d'après le cerveau humain. Par exemple, le cerveau humain contient des millions de neurones interconnectés qui travaillent ensemble pour apprendre et traiter l'information. De même, les réseaux neuronaux profonds (ou réseaux neuronaux artificiels) sont composés de plusieurs couches de neurones artificiels travaillant ensemble dans un ordinateur. Ces neurones artificiels, appelés nœuds, utilisent des calculs mathématiques pour traiter les données. Les réseaux neuronaux artificiels sont des algorithmes d'apprentissage profond qui utilisent ces nœuds pour résoudre des problèmes complexes.
Les réseaux neuronaux peuvent être divisés en couche d'entrée, couches cachées et couche de sortie. Les connexions entre ces différentes couches sont constituées de paramètres.
Couche d'entrée : La couche d'entrée est la première couche du réseau neuronal et est responsable de la réception des données d'entrée externes. Chaque neurone de la couche d'entrée correspond à une caractéristique des données d'entrée. Par exemple, dans le traitement d'image, chaque neurone peut correspondre à la valeur d'un pixel dans l'image.
Couches cachées : La couche d'entrée traite les données et les transmet à des couches plus profondes dans le réseau. Ces couches cachées traitent les informations à différents niveaux, ajustant leur comportement lors de la réception de nouvelles informations. Les réseaux d'apprentissage profond peuvent avoir des centaines de couches cachées, ce qui leur permet d'analyser les problèmes sous différents angles. Par exemple, si l'on vous donne une image d'un animal inconnu qui doit être classé, vous pouvez la comparer à des animaux que vous connaissez déjà. Par exemple, vous pouvez dire de quel type d'animal il s'agit en fonction de la forme de ses oreilles, du nombre de ses pattes et de la taille de ses pupilles. Les couches cachées dans les réseaux neuronaux profonds fonctionnent de manière similaire. Si un algorithme d'apprentissage profond essaie de classer une image d'un animal, chaque couche cachée traitera différentes caractéristiques des animaux et essaiera de les classer avec précision.
Couche de sortie : La couche de sortie est la dernière couche du réseau de neurones et est responsable de générer la sortie du réseau. Chaque neurone dans la couche de sortie représente une catégorie ou une valeur de sortie possible. Par exemple, dans un problème de classification, chaque neurone dans la couche de sortie peut correspondre à une catégorie, tandis que dans un problème de régression, la couche de sortie peut n'avoir qu'un seul neurone dont la valeur représente le résultat de la prédiction;
Paramètres : Dans les réseaux neuronaux, les connexions entre les différentes couches sont représentées par des poids et des biais, qui sont optimisés pendant le processus d'entraînement pour permettre au réseau d'identifier avec précision les motifs dans les données et de faire des prédictions. L'augmentation des paramètres peut améliorer la capacité du modèle du réseau neuronal, c'est-à-dire la capacité du modèle à apprendre et à représenter des motifs complexes dans les données. Mais correspondamment, l'augmentation des paramètres augmentera la demande de puissance de calcul.
Pour être efficacement formés, les réseaux neuronaux ont généralement besoin de données volumineuses, diverses et de haute qualité provenant de sources multiples. Ces données constituent la base de l'entraînement et de la validation du modèle d'apprentissage automatique. En analysant les big data, les modèles d'apprentissage automatique peuvent apprendre les schémas et les relations au sein des données, ce qui leur permet de faire des prédictions ou des classifications.
La demande de puissance de calcul substantielle résulte de plusieurs aspects des réseaux neuronaux : des structures complexes à plusieurs couches, un grand nombre de paramètres, la nécessité de traiter de vastes quantités de données, et des méthodes d'entraînement itératives (pendant la phase d'entraînement, le modèle doit itérer de manière répétée, effectuant des calculs de propagation avant et arrière pour chaque couche, y compris des calculs pour les fonctions d'activation, les fonctions de perte, les gradients et les mises à jour des poids), le besoin de calculs de haute précision, des capacités de calcul parallèle, des techniques d'optimisation et de régularisation, et des processus d'évaluation et de vérification des modèles. À mesure que l'apprentissage profond progresse, l'exigence en puissance de calcul massive pour l'AGI augmente d'environ 10 fois chaque année. Le dernier modèle à ce jour, GPT-4, contient 1,8 billion de paramètres, avec un coût d'entraînement unique de plus de 60 millions de dollars et des exigences en puissance de calcul de 2,15e25 FLOPS (21,5 quadrillion d'opérations en virgule flottante). La demande de puissance de calcul pour l'entraînement de modèles futurs est encore en expansion, et de nouveaux modèles sont développés à un rythme croissant.
Selon les estimations les plus autorisées, le « Rapport d'évaluation de l'indice de puissance de calcul mondial 2022-2023 » compilé conjointement par l'International Data Corporation (IDC), Inspur Information et l'Institut mondial de recherche industrielle de l'Université Tsinghua, la taille du marché mondial de l'informatique en IA devrait passer de 19,5 milliards de dollars en 2022 à 34,66 milliards de dollars en 2026. Le marché de l'informatique en IA générative devrait passer de 820 millions de dollars en 2022 à 10,99 milliards de dollars en 2026. La part de marché de l'informatique en IA générative dans l'ensemble du marché de l'informatique en IA devrait passer de 4,2 % à 31,7 %.
La production de GPU IA a été exclusivement monopolisée par NVIDIA et ils sont extrêmement chers (le dernier H100 a été vendu à 40 000 $ par unité). Dès que les GPU sont disponibles, ils sont achetés par les géants de la technologie de la Silicon Valley. Certains de ces appareils sont utilisés pour former leurs propres nouveaux modèles. Le reste est loué aux développeurs d'IA via des plateformes cloud, telles que celles appartenant à Google, Amazon et Microsoft, qui contrôlent une vaste quantité de ressources informatiques telles que des serveurs, des GPU et des TPU. La puissance de calcul est devenue une nouvelle ressource monopolisée par ces géants. De nombreux développeurs d'IA ne peuvent même pas acheter de GPU dédié sans majoration. Pour utiliser le dernier équipement, les développeurs doivent louer des serveurs cloud AWS ou Microsoft. Les rapports financiers indiquent que cette entreprise génère des profits extrêmement élevés. Les services cloud d'AWS affichent une marge bénéficiaire brute de 61 %, tandis que la marge bénéficiaire brute de Microsoft est encore plus élevée, à 72 %.
Devons-nous accepter cette autorité centralisée et ce contrôle, et payer une marge bénéficiaire de 72% pour les ressources de calcul ? Les géants qui ont monopolisé le Web2 domineront-ils également la prochaine ère ?
En matière de lutte contre les pratiques anticoncurrentielles, la décentralisation est généralement considérée comme la solution optimale. En examinant les projets existants, pouvons-nous atteindre la puissance de calcul massive requise pour l'IA grâce aux projets de stockage DePIN combinés à des protocoles tels que RDNR pour l'utilisation des GPU inactifs ? La réponse est non. La route pour abattre le dragon n'est pas si simple. Les premiers projets n'étaient pas spécifiquement conçus pour la puissance de calcul de l'AGI et ne sont pas réalisables. Amener la puissance de calcul sur la blockchain rencontre au moins les cinq défis suivants :
Vérification du travail : Pour construire un réseau informatique véritablement sans confiance qui offre des incitations économiques aux participants, le réseau doit avoir un moyen de vérifier si les calculs d'apprentissage profond ont réellement été effectués. La question centrale ici est la dépendance à l'état des modèles d'apprentissage profond ; dans ces modèles, l'entrée pour chaque couche dépend de la sortie de la couche précédente. Cela signifie que vous ne pouvez pas simplement valider une seule couche dans un modèle sans prendre en compte toutes les couches précédentes. Le calcul pour chaque couche est basé sur les résultats de toutes les couches précédentes. Par conséquent, afin de vérifier le travail accompli à un point spécifique (comme une couche spécifique), tout le travail depuis le début du modèle jusqu'à ce point spécifique doit être exécuté.
Marché : En tant que marché émergent, le marché de la puissance de calcul de l'IA est confronté à des dilemmes d'offre et de demande, tels que le problème du démarrage à froid. L'offre et la demande de liquidité doivent être approximativement équilibrées dès le début afin que le marché puisse croître avec succès. Afin de capturer l'offre potentielle de puissance de calcul, les participants doivent être incités de manière claire en échange de leurs ressources informatiques. Le marché a besoin d'un mécanisme pour suivre les calculs terminés et rémunérer les fournisseurs en conséquence de manière opportune. Dans les places de marché traditionnelles, les intermédiaires s'occupent de tâches telles que la gestion et l'intégration, tout en réduisant les coûts opérationnels en fixant des seuils de paiement minimum. Cependant, cette approche est coûteuse lors de l'expansion de la taille du marché. Seule une petite partie de l'offre peut être capturée de manière économique, conduisant à un état d'équilibre de seuil selon lequel le marché ne peut capturer et maintenir qu'une offre limitée sans pouvoir se développer davantage;
Problème d'arrêt : Le problème d'arrêt est une question fondamentale en théorie de calcul, qui consiste à déterminer si une tâche de calcul donnée se terminera en temps fini ou continuera indéfiniment. Ce problème est indécidable, ce qui signifie qu'il n'existe pas d'algorithme universel capable de prédire si un calcul donné se terminera en temps fini. Par exemple, l'exécution de contrats intelligents sur Ethereum est également confrontée à un problème similaire d'arrêt. Il est impossible de déterminer à l'avance combien de ressources de calcul l'exécution d'un contrat intelligent nécessitera, ou si elle se terminera dans un délai raisonnable.
(Dans le contexte de l'apprentissage profond, ce problème sera plus complexe car les modèles et les cadres passeront de la construction de graphiques statiques à la construction et à l'exécution dynamiques.)
Confidentialité: La conception et le développement avec une conscience de la confidentialité est un must pour les équipes de projet. Bien qu'une grande quantité de recherche en apprentissage automatique puisse être effectuée sur des ensembles de données publics, afin d'améliorer les performances du modèle et de s'adapter à des applications spécifiques, le modèle doit généralement être peaufiné sur des données utilisateur propriétaires. Ce processus de peaufinage peut impliquer le traitement de données personnelles, il est donc nécessaire de prendre en compte les exigences de protection de la vie privée.
La parallélisation: C'est un facteur clé dans le manque de faisabilité des projets actuels. Les modèles d'apprentissage en profondeur sont généralement entraînés en parallèle sur de grands clusters matériels avec des architectures propriétaires et une latence extrêmement faible, et les GPU dans les réseaux informatiques distribués entraîneraient une latence en raison d'échanges fréquents de données et seraient limités par les performances du GPU le plus lent. Lorsque les sources de calcul ne sont pas fiables et peu fiables, la manière d'atteindre une parallélisation hétérogène est un problème qui doit être résolu. La méthode actuellement réalisable consiste à réaliser une parallélisation grâce à des modèles de transformateur, tels que les transformateurs Switch, qui ont maintenant des caractéristiques hautement parallélisées.
Solutions : Bien que les tentatives actuelles de mise en place d'un marché de la puissance de calcul AGI décentralisé en soient encore à leurs débuts, il existe deux projets qui ont initialement résolu la conception du consensus des réseaux décentralisés et la mise en œuvre des réseaux de puissance de calcul décentralisés dans la formation de modèles et l'inférence. Ce qui suit utilisera Gensyn et Together comme exemples pour analyser les méthodes de conception et les problèmes du marché de la puissance de calcul AGI décentralisé.
Gensyn est un marché de puissance de calcul AGI qui est encore en phase de construction, visant à résoudre les différents défis du calcul distribué en profondeur et à réduire les coûts associés au calcul en profondeur actuel. Gensyn est essentiellement un protocole de participation au premier niveau basé sur le réseau Polkadot, qui récompense directement les solveurs (ceux qui résolvent des tâches informatiques) grâce à des contrats intelligents en échange de leurs appareils GPU inutilisés pour le calcul et l'exécution de tâches d'apprentissage automatique.
En revenant à la question précédente, le cœur de la construction d'un réseau informatique vraiment sans confiance réside dans la vérification du travail de machine learning achevé. Il s'agit d'une question très complexe qui nécessite de trouver un équilibre entre l'intersection de la théorie de la complexité, de la théorie des jeux, de la cryptographie et de l'optimisation.
Gensyn propose une solution simple où les résolveurs soumettent les résultats des tâches d'apprentissage automatique qu'ils ont achevées. Pour vérifier que ces résultats sont précis, un autre vérificateur indépendant tente de rejouer le même travail. Cette approche peut être appelée réplication unique car un seul vérificateur réexécuterait la tâche. Cela signifie qu'il n'y a qu'un seul travail supplémentaire pour vérifier l'exactitude du travail original. Cependant, si la personne vérifiant le travail n'est pas le demandeur original, alors le problème de confiance existe toujours. Les vérificateurs eux-mêmes peuvent ne pas être honnêtes et leur travail doit être vérifié. Cela conduit à un problème potentiel où si la personne vérifiant le travail n'est pas le demandeur original, alors un autre vérificateur sera nécessaire pour vérifier leur travail. Mais ce nouveau vérificateur pourrait également ne pas être digne de confiance, donc un autre vérificateur sera nécessaire pour vérifier leur travail, ce qui pourrait se poursuivre indéfiniment, créant une chaîne de réplication infinie. Ici, nous devons introduire trois concepts clés et les tisser ensemble pour construire un système de participants avec quatre rôles pour résoudre le problème de la chaîne infinie.
Preuves d'apprentissage probabiliste: Construit des certificats de travail terminé en utilisant des métadonnées du processus d'optimisation basé sur le gradient. En répliquant certaines étapes, ces certificats peuvent être rapidement vérifiés pour s'assurer que le travail a été effectué comme prévu.
Protocole de positionnement précis basé sur un graphe : Utilisation de protocoles de positionnement précis basés sur un graphe à multi-granularité, et exécution cohérente de cross-évaluateurs. Cela permet de réexécuter et de comparer le travail de vérification pour assurer la cohérence, qui est finalement confirmée par la blockchain elle-même.
Jeu d'incitation de style Truebit : Utilisez des enjeux et des sanctions pour construire un jeu d'incitation afin de garantir que chaque participant économiquement raisonnable agira honnêtement et accomplira ses tâches attendues.
Le système de participants se compose de soumissionnaires, de solveurs, de vérificateurs et de lanceurs d'alerte.
Soumetteurs :
Les soumissionnaires sont les utilisateurs finaux du système qui fournissent des tâches à calculer et paient pour les unités de travail complétées;
Solveurs :
Les solveurs sont les travailleurs principaux du système, effectuant l'entraînement du modèle et générant des preuves qui sont vérifiées par le vérificateur;
Vérificateurs:
Les vérificateurs sont essentiels pour relier le processus d'entraînement non déterministe aux calculs linéaires déterministes, en reproduisant des parties de la preuve du solveur et en comparant les distances avec les seuils attendus;
Lanceurs d'alerte :
Les lanceurs d'alerte sont la dernière ligne de défense, vérifiant le travail des vérificateurs et relevant les défis dans l'espoir de recevoir des paiements de prime généreux.
Le système de jeu conçu par le protocole fonctionne à travers huit étapes, couvrant quatre rôles principaux des participants, pour compléter l'ensemble du processus de la soumission de tâches à la vérification finale.
Soumission de tâche : Les tâches se composent de trois informations spécifiques :
Métadonnées décrivant la tâche et les hyperparamètres;
Un fichier binaire de modèle (ou une architecture de base);
Données d'entraînement pré-traitées accessibles publiquement.
Pour soumettre une tâche, le soumetteur spécifie les détails de la tâche dans un format lisible par machine et la soumet à la chaîne avec le fichier binaire du modèle (ou l'architecture lisible par machine) et un emplacement publiquement accessible des données d'entraînement prétraitées. Les données publiques peuvent être stockées dans un stockage d'objets simple tel que le S3 d'AWS, ou dans un stockage décentralisé tel que l'IPFS, Arweave, ou Subspace.
Profilage : Le processus de profilage établit un seuil de distance de base pour la vérification de la preuve d'apprentissage. Les vérificateurs récupéreront périodiquement des tâches de profilage et généreront des seuils de mutation pour la comparaison des preuves d'apprentissage. Pour générer le seuil, le vérificateur exécutera de manière déterministe et répétera des parties de la formation en utilisant des graines aléatoires différentes, générant et vérifiant leurs propres preuves. Au cours de ce processus, le vérificateur établit un seuil de distance global attendu pour le travail non déterministe de la solution qui peut être utilisé pour la vérification.
Formation : Après le profilage, les tâches entrent dans le pool de tâches public (similaire au Mempool d'Ethereum). Sélectionnez un solveur pour exécuter la tâche et retirez la tâche du pool de tâches. Les solveurs effectuent la tâche en fonction des métadonnées soumises par le soumetteur et du modèle et des données d'entraînement fournies. Lors de l'exécution des tâches de formation, les solveurs génèrent également des preuves d'apprentissage en vérifiant régulièrement les points et en stockant les métadonnées (y compris les paramètres) pendant le processus de formation, afin que les vérificateurs puissent reproduire les étapes d'optimisation suivantes aussi précisément que possible.
Génération de preuves : Les solveurs stockent périodiquement les poids des modèles ou les mises à jour et leurs indices correspondants de l'ensemble de données d'entraînement pour identifier les échantillons utilisés pour générer les mises à jour des poids. La fréquence des points de contrôle peut être ajustée pour fournir des garanties plus solides ou pour économiser de l'espace de stockage. Les preuves peuvent être “empilées”, ce qui signifie qu'elles peuvent partir d'une distribution aléatoire utilisée pour initialiser les poids, ou à partir de poids pré-entraînés générés à l'aide de leurs propres preuves. Cela permet au protocole de construire un ensemble de modèles de base prouvés et pré-entraînés qui peuvent être affinés pour des tâches plus spécifiques.
Vérification de la preuve : Après l'achèvement de la tâche, les solveurs enregistrent l'achèvement de la tâche sur la chaîne et affichent leur preuve d'apprentissage à un endroit accessible au public pour que les vérificateurs puissent y accéder. Les vérificateurs extraient les tâches de vérification du pool public de tâches et effectuent un travail de calcul pour relancer une partie de la preuve et exécuter des calculs de distance. Ensuite, la chaîne, avec le seuil calculé lors de l'étape de profilage, utilise la distance résultante pour déterminer si la vérification correspond à la preuve.
Défi de localisation basé sur un graphe : Après avoir vérifié la preuve d'apprentissage, les lanceurs d'alerte peuvent reproduire le travail des vérificateurs pour vérifier si le travail de vérification lui-même a été exécuté correctement. Si les lanceurs d'alerte estiment que la vérification a été effectuée de manière incorrecte (de manière malveillante ou non), ils peuvent la contester devant un arbitrage contractuel en échange d'une récompense. Cette récompense peut provenir des dépôts des résolveurs et des validateurs (dans le cas d'un vrai positif), ou d'un bonus de loterie (dans le cas d'un faux positif), l'arbitrage étant effectué en utilisant la chaîne elle-même. Les lanceurs d'alerte (agissant en tant que vérificateurs dans leur cas) ne vérifieront et ne contesteront le travail que s'ils s'attendent à recevoir une rémunération appropriée. En pratique, cela signifie que les lanceurs d'alerte sont censés rejoindre et quitter le réseau en fonction du nombre d'autres lanceurs d'alerte actifs (c'est-à-dire avec des dépôts en cours et des contestations). Par conséquent, la stratégie par défaut attendue pour tout lanceur d'alerte est de rejoindre le réseau lorsqu'il y a moins d'autres lanceurs d'alerte, de déposer une caution, de sélectionner aléatoirement une tâche active, et de commencer leur processus de vérification. Après une tâche, ils prendront une autre tâche active au hasard et répéteront l'opération jusqu'à ce que le nombre de lanceurs d'alerte dépasse leur seuil de paiement déterminé, moment auquel ils quitteront le réseau (ou plus probablement, passeront à un autre rôle dans le réseau - vérificateur ou résolveur - en fonction de leurs capacités matérielles) jusqu'à ce que la situation se retourne à nouveau.
Arbitrage de contrat : Lorsque les vérificateurs sont contestés par des lanceurs d'alerte, ils entrent dans un processus avec la chaîne pour découvrir l'emplacement de l'opération ou de l'entrée contestée, et finalement la chaîne effectuera l'opération de base finale et déterminera si le défi est justifié. Pour maintenir l'honnêteté des lanceurs d'alerte et surmonter le dilemme des vérificateurs, des erreurs forcées périodiques et des paiements de jackpot sont introduits ici.
Règlement : Pendant le processus de règlement, les participants sont payés en fonction des conclusions des vérifications probabilistes et déterministes. Différents scénarios de paiement surviennent en fonction des résultats des vérifications et des défis précédents. Si le travail est considéré comme ayant été effectué correctement et que toutes les vérifications ont été effectuées, les fournisseurs de solutions et les vérificateurs sont récompensés en fonction des opérations effectuées.
Gensyn a conçu un système sophistiqué de théorie des jeux sur la couche de vérification et les couches d'incitation, ce qui permet une identification rapide et une rectification des erreurs en pinpointant les divergences au sein du réseau. Cependant, il manque encore de nombreux détails dans le système actuel. Par exemple, comment définir les paramètres pour garantir que les récompenses et les pénalités sont raisonnables sans fixer le seuil trop haut? Avez-vous envisagé des scénarios extrêmes et la puissance de calcul différente des résolveurs dans les aspects de la théorie des jeux? Il n'y a pas de description détaillée de l'exécution parallèle hétérogène dans la version actuelle du livre blanc. Gensyn a encore du chemin à parcourir.
Together.ai est une entreprise qui se concentre sur des solutions de calcul AI décentralisées en open source pour les grands modèles. Son objectif est de permettre à tout le monde d'accéder à l'IA n'importe où. À proprement parler, Together n'est pas un projet blockchain, mais il a résolu préliminairement les problèmes de latence au sein des réseaux de calcul AGI décentralisés. Par conséquent, l'article suivant n'analyse que les solutions de Together et n'évalue pas le projet en lui-même.
Comment réaliser la formation et l'inférence de grands modèles lorsque les réseaux décentralisés sont 100 fois plus lents que les centres de données?
Imaginons la distribution des GPU participant à un réseau décentralisé. Ces appareils seront répartis sur différents continents et villes, chacun ayant besoin de se connecter avec des latences et des bandes passantes variables. Comme le montre la figure ci-dessous, un scénario distribué simulé montre des appareils situés en Amérique du Nord, en Europe et en Asie, avec des bandes passantes et des latences différentes entre eux. Que faut-il faire pour les relier efficacement ?
Modélisation computationnelle de l'entraînement distribué : Le diagramme ci-dessous montre la situation de l'entraînement d'un modèle de base sur plusieurs appareils, présentant trois types de communication : Activation avant, Gradient arrière et Communication latérale.
En combinant la largeur de bande de communication et la latence, deux formes de parallélisme doivent être prises en compte : le parallélisme de pipeline et le parallélisme des données, correspondant aux trois types de communication dans le scénario multi-appareils :
Dans le parallélisme de pipeline, toutes les couches du modèle sont divisées en plusieurs étapes, où chaque appareil traite une étape, qui est une séquence de couches consécutives, comme plusieurs blocs de transformateur. Pendant la propagation avant, les activations sont transmises à l'étape suivante, et pendant la propagation arrière, les gradients des activations sont renvoyés à l'étape précédente.
En parallélisme de données, les appareils calculent indépendamment les gradients pour différents micro-lots mais doivent synchroniser ces gradients par la communication.
Optimisation de la planification:
Dans un environnement décentralisé, le processus de formation est souvent contraint par la communication. Les algorithmes de planification attribuent généralement des tâches nécessitant une communication étendue à des appareils disposant de connexions plus rapides. En tenant compte des dépendances entre les tâches et de l'hétérogénéité du réseau, il est d'abord nécessaire de modéliser le coût de stratégies de planification spécifiques. Afin de capturer le coût complexe de la communication des modèles de base d'entraînement, Together propose une nouvelle formulation et décompose le modèle de coût en deux niveaux à l'aide de la théorie des graphes:
La théorie des graphes est une branche des mathématiques qui étudie les propriétés et les structures des graphes (réseaux). Un graphe est composé de sommets (nœuds) et d'arêtes (lignes reliant les nœuds). Le but principal de la théorie des graphes est d'étudier diverses propriétés des graphes, telles que la connectivité, la coloration et la nature des chemins et des cycles dans les graphes.
Le premier niveau est un problème d'équilibrage de partition de graphe (diviser l'ensemble des sommets d'un graphe en plusieurs sous-ensembles de taille égale ou presque égale tout en minimisant le nombre d'arêtes entre les sous-ensembles). Dans cette partition, chaque sous-ensemble représente une partition, et les coûts de communication sont réduits en minimisant les arêtes entre les partitions, correspondant aux coûts de communication du parallélisme des données.
Le deuxième niveau implique une correspondance de graphes conjoints et un problème du voyageur de commerce (un problème d'optimisation combinatoire qui combine des éléments de correspondance de graphes et du problème du voyageur de commerce). Le problème de correspondance de graphes consiste à trouver une correspondance dans le graphe qui minimise ou maximise certains coûts. Le problème du voyageur de commerce cherche le chemin le plus court qui visite tous les nœuds du graphe, correspondant aux coûts de communication du parallélisme de pipeline.
Le diagramme ci-dessus est une vue schématique du processus. En raison des calculs complexes impliqués dans la mise en œuvre réelle, le processus décrit dans le diagramme est simplifié pour une meilleure compréhension. Pour une mise en œuvre détaillée, on peut se référer à la documentation sur le site officiel de Together.
Supposons qu'il existe un ensemble de NN appareils, DD, avec des retards de communication incertains (matrice AA) et des bandes passantes (matrice BB), sur la base de l'ensemble d'appareils DD, nous générons d'abord une partition de graphe équilibrée. Chaque partition ou groupe d'appareils contient approximativement un nombre égal d'appareils, et ils gèrent tous la même étape de pipeline. Cela garantit que lors du parallélisme des données, chaque groupe d'appareils effectue une quantité de travail similaire. Selon les retards de communication et les bandes passantes, une formule peut calculer le “coût” du transfert de données entre les groupes d'appareils. Chaque groupe équilibré est fusionné pour créer un graphe grossier entièrement connecté, où chaque nœud représente une étape de pipeline, et les arêtes représentent le coût de communication entre deux étapes. Pour minimiser les coûts de communication, un algorithme d'appariement est utilisé pour déterminer quels groupes d'appareils devraient travailler ensemble.
Pour une optimisation supplémentaire, ce problème peut également être modélisé comme un problème du voyageur de commerce en boucle ouverte (en boucle ouverte signifie qu'il n'est pas nécessaire de revenir au point de départ du trajet) pour trouver un chemin optimal pour transmettre des données à travers tous les appareils. Enfin, Together utilise un algorithme de planification innovant pour trouver la stratégie d'allocation optimale pour le modèle de coûts donné, minimisant ainsi les coûts de communication et maximisant le débit d'entraînement. Selon les tests, même si le réseau est 100 fois plus lent sous cette optimisation de planification, le débit d'entraînement de bout en bout n'est que d'environ 1,7 à 2,3 fois plus lent.
Optimisation de la compression de la communication :
Pour l’optimisation de la compression des communications, Together a introduit l’algorithme AQ-SGD (pour un processus de calcul détaillé, veuillez vous référer à l’article « Fine-tuning Language Models over Slow Networks using Activation Compression with Guarantees »). L’algorithme AQ-SGD est une nouvelle technique de compression d’activation conçue pour résoudre les problèmes d’efficacité de la communication lors de l’entraînement parallèle des pipelines sur des réseaux lents. Contrairement aux méthodes précédentes de compression directe des valeurs d’activation, AQ-SGD se concentre sur la compression des changements dans les valeurs d’activation du même échantillon d’apprentissage à différentes périodes. Cette méthode unique introduit une dynamique « auto-exécutable » intéressante, où les performances de l’algorithme devraient s’améliorer progressivement au fur et à mesure que l’apprentissage se stabilise. L’algorithme AQ-SGD a été rigoureusement analysé théoriquement et il a été prouvé qu’il avait de bons taux de convergence dans certaines conditions techniques et des fonctions de quantification d’erreur bornée. L’algorithme peut être mis en œuvre efficacement sans ajouter de surcharge d’exécution supplémentaire de bout en bout, bien qu’il nécessite l’utilisation de plus de mémoire et de SSD pour stocker les valeurs d’activation. Grâce à des expériences approfondies sur la classification des séquences et les ensembles de données de modélisation du langage, il a été démontré qu’AQ-SGD compresse les valeurs d’activation à 2-4 bits sans sacrifier les performances de convergence. De plus, AQ-SGD peut être intégré à des algorithmes de compression de gradient de pointe pour obtenir une « compression de communication de bout en bout », ce qui signifie que les échanges de données entre toutes les machines, y compris les gradients de modèle, les valeurs d’activation directe et les gradients arrière, sont compressés avec une faible précision, améliorant ainsi considérablement l’efficacité de la communication de l’entraînement distribué. Par rapport aux performances d’entraînement de bout en bout dans un réseau informatique centralisé (par exemple, 10 Gbit/s) sans compression, elles ne sont actuellement que 31 % plus lentes. Si l’on ajoute à cela les données sur l’optimisation de l’ordonnancement, bien qu’il existe encore un certain écart entre les réseaux informatiques centralisés, il y a un grand espoir de rattrapage à l’avenir.
Dans la période de dividende apportée par la vague de l'IA, le marché de la puissance de calcul AGI est sans aucun doute le marché avec le plus grand potentiel et la demande la plus forte parmi les différents marchés de puissance de calcul. Cependant, la plus grande difficulté de développement, les exigences matérielles et les demandes en capital posent des défis à cette industrie. En combinant les deux projets présentés ci-dessus, il faudra encore un certain temps avant que le marché de la puissance de calcul AGI soit lancé. Le réseau décentralisé réel est également beaucoup plus compliqué que le scénario idéal. Il n'est actuellement pas suffisant pour rivaliser avec les géants du cloud.
Au moment d’écrire ces lignes, j’ai également observé que certains projets à petite échelle qui n’en sont encore qu’à leurs balbutiements (l’étape PPT) ont commencé à explorer de nouveaux points d’entrée, comme l’accent mis sur l’étape d’inférence de l’IAG, moins difficile, plutôt que sur l’étape de formation. Cependant, à long terme, l’importance de la décentralisation et des systèmes sans permission est profonde. Le droit d’accéder à la puissance de calcul de l’IAG et de l’entraîner ne doit pas être concentré entre les mains de quelques géants centralisés. L’humanité n’a pas besoin d’une nouvelle « théocratie » ou d’un nouveau « pape », et elle ne devrait pas non plus payer des frais d’adhésion élevés.