Activer des modˆles d’un billion de paramˆtres sur AWS EFA

Rendre disponibles des modˆles d’un billion de paramˆtres gr‚ce ‚ la portabilit‚ de la plateforme infonuagique

AuteursPerplexity Research

Chez Perplexity, nous utilisons les meilleurs modˆles pour notre produit, nos API et nos ‚quipes de recherche. Les grands modˆles de m‚lange d’experts open-source, tels que Kimi-K2, posent des difficult‚s particuliˆres, car les plus grands n‚uds d’inf‚rence dot‚s de 8 processeurs graphiques NVIDIA H200 ne peuvent pas les acc‚ueillir efficacement, ce qui n‚cessite des d‚ploiements multi-n‚uds. Nous pr‚sentons un ensemble de noyaux pour le parallˆlisme des experts qui atteignent des latences de pointe sur ConnectX-7, d‚passant les performances de DeepEP. Ces mˆmes noyaux sont ‚galement les premiers ‚ atteindre des latences viables sur l’Elastic Fabric Adapter (EFA) d’AWS, permettant le d‚ploiement de modˆles comptant un billion de paramˆtres.

Essayez nos noyaux sur GitHub et lisez l’article de recherche complet sur arXiv.

Introduction

Le modˆle de m‚lange d’experts (MoE) s’est impos‚ comme l’architecture standard pour passer ‚ des centaines de milliards ou ‚ des billions de paramˆtres tout en offrant une latence raisonnable au moment de l’inf‚rence. Les modˆles MoE remplacent la couche dense d’un transformateur par un ensemble d‚experts et une petite couche de routage lin‚aire qui d‚cide avec quel expert multiplier un jeton. En regroupant les jetons associ‚s au mˆme expert, le problˆme devient clairsem‚ et facilement parallˆlisable, car les diff‚rents experts peuvent d‚sormais ‚tre h‚berg‚s sur des processeurs graphiques distincts r‚partis sur plusieurs n‚uds.

Contrairement ‚ d‚autres formes de parallˆlisme, telles que le parallˆlisme de tenseurs (TP) et le parallˆlisme de donn‚es (DP) qui peuvent ‚tre facilement impl‚ment‚s ‚ l’aide de bibliothˆques de communication collective telles que torch.distributed et NCCL, le routage MoE implique une communication poste ‚ poste clairsem‚e. Un noyau de r‚partition doit diviser l’ensemble des jetons entrants et les acheminer vers les rangs h‚bergeant les experts, tandis que son problˆme dual, le noyau de combinaison, doit recevoir leurs homologues trait‚s et calculer leur moyenne pond‚r‚e. Ces transferts ne correspondent pas ‚ des op‚rations collectives et n‚cessitent des noyaux personnalis‚s pour atteindre une faible latence.

Chez Perplexity, nous avons d‚velopp‚ ‚ la fois des noyaux inter-n‚uds portables et des noyaux intra-n‚uds sp‚cialis‚s, pr‚sentant notre travail de maniˆre plus approfondie dans un article pr‚c‚dent sur la communication MoE. Nous avons ‚galement montr‚ dans un autre article de blog que le d‚ploiement multi-n‚uds peut apporter une latence plus faible et un d‚bit plus ‚lev‚ pour les grands modˆles MoE.

Dans cet article, nous analysons en profondeur l’impl‚mentation de nos nouveaux noyaux inter-n‚uds qui am‚liorent consid‚rablement les performances de nos travaux pr‚c‚dents fond‚s sur NVSHMEM. En plus de pr‚senter des r‚sultats de pointe sur ConnectX-7, nous d‚montrons ‚galement qu’au sein de notre ex‚cution d’inf‚rence, les noyaux peuvent ‚tre utilis‚s pour servir efficacement les plus grands modˆles open-source.

Inf‚rence sur InfiniBand

Le parallˆlisme de tenseurs et le parallˆlisme d’experts peuvent ‚tre mis ‚ l’‚chelle efficacement au sein d’un seul n‚ud, car NVLink offre un d‚bit ‚lev‚ (900 Go/s) pour une latence de l’ordre de la microseconde. Bien que les systˆmes NVIDIA GB200 et GB300 soient dot‚s d’une m‚moire suffisante pour contenir les poids et les caches KV des modˆles comptant un billion de paramˆtres, les d‚ploiements sur l’instance AWS p5en avec jusqu’‚ 8 processeurs graphiques H200 sont limt‚s ‚ 1 120 Go de HBM, qui doivent ‚tre partag‚s entre les poids du modˆle et les caches KV. Par cons‚quent, certains modˆles n‚cessitent des d‚ploiements inter-n‚uds sur InfiniBand.

Bien qu’InfiniBand soit toujours trˆs rapide, il n’offre qu’un d‚bit de 400 Gb/s (50 Go/s), ce qui ajoute des dizaines ‚ des centaines de microsecondes de latence pour le routage MoE. Heureusement, ces latences suppl‚mentaires peuvent ‚tre masqu‚es gr‚ce ‚ l’utilisation d’experts partag‚s, de micro-lots et du chevauchement calcul-communication pour offrir un d‚bit viable ‚ un co‚t comp‚titif. DeepSeek a ouvert la voie ‚ ces techniques via DeepSeek-R1, d‚ploy‚ sur des grappes de processeurs graphiques H800 et d’adaptateurs NVIDIA ConnectX-7 InfiniBand.

Sur les grappes AWS, la situation est diff‚rente en raison de l’utilisation de leurs adaptateurs personnalis‚s Elastic Fabric Adapters (EFA). Bien que ceux-ci offrent un d‚bit de pointe de 400 Gb/s sur les communications collectives g‚n‚ralement utilis‚es dans les charges de travail d’apprentissage, ils sont l‚g‚rement inf‚rieurs ‚ ConnectX-7 en ce qui concerne la taille des messages ‚chang‚s lors de la r‚partition et de la combinaison MoE. De plus, EFA ne prend pas en charge GPUDirect Async, ce qui n‚cessite un fil d’ex‚cution proxy de UC faisant le pont entre le processeur graphique et la carte r‚seau afin d’initier les transferts. Outre la complexit‚ accrue, les transactions PCIe suppl‚mentaires ajoutent des microsecondes de surcharge ‚ tous les transferts. Des frameworks tels que NVSHMEM permettent aux auteurs de noyaux de fournir des impl‚mentations ind‚pendantes du p‚riph‚rique, mais les API g‚n‚riques engendrent des surcharges qui rendent les d‚ploiements inefficaces en termes de co‚t et de latence.

Noyaux pplx fond‚s sur NVSHMEM

Nos noyaux pr‚c‚dents ont abstrait l’impl‚mentation du transport sous-jacent gr‚ce ‚ NVSHMEM. Ils reposaient sur nvshmemx_putmem_signal_nbi_warp pour transf‚rer les jetons un par un, en utilisant des compteurs atomiques pour synchroniser les pairs. Bien que cela offrait des performances raisonnables sur les cartes r‚seau ConnectX-7 avec IBGDA, l’impl‚mentation ConnectX-7 IBRC bas‚e sur un proxy ‚tait nettement plus lente, tandis que l’impl‚mentation EFA n’a pas parvenu ‚ offrir des latences inf‚rieures ‚ une milliseconde.

Nous avons utilis‚ les noyaux comme banc d’essai pour le mat‚riel sous-jacent, tout en d‚terminant l’interface la plus appropri‚e ‚ exposer ‚ nos modˆles. Nous avons ‚mis l’hypoth‚se que les transferts fr‚quents et les interactions entre les noyaux et les cartes r‚seau ou les fils d’ex‚cution proxy entravaient les performances. De plus, notre impl‚mentation ne reposait sur aucune garantie de la part du mat‚riel autre que la fiabilit‚, ce qui sugg‚rait que nous pouvions acc‚l‚rer les choses en r‚duisant la surcharge des primitives de synchronisation.

la suite de ces observations, nous avons con‚u nos noyaux bas‚s sur EFA exposant la mˆme interface, optimisant les interactions entre le noyau du p‚riph‚rique et le proxy de l’h‚te sous le capot pour des performances maximales.

Routage global MoE sur EFA

Communication hybride RDMA et NVLink avec un proxy hôte, montrant les rangs d’initiation et de réception, les workers du proxy et les NIC.

Les nouveaux noyaux suivent une architecture hybride UC-processeur graphique, o’ les noyaux de processeur graphique interagissent avec le modˆle sur le p‚riph‚rique et un fil d’ex‚cution proxy s’ex‚cutant sur le processeur h‚te g‚re les interactions avec la carte r‚seau. Les nouveaux noyaux r‚utilisent le mˆme TransferEngine que nous avons b‚ti pour les transferts de cache KV.

Le routage MoE est effectu‚ par un noyau de r‚partition, qui re‚‚oit du modˆle les jetons et les experts par jeton afin de les acheminer, en les exp‚diant sur le r‚seau vers les rangs qui h‚bergent les experts. Une fois que les noyaux GEMM group‚s multiplient les jetons avec les poids des experts, le noyau de combinaison transf‚re les jetons vers leurs rangs source et calcule leur moyenne pond‚r‚e avant de les renvoyer au modˆle.

Les noyaux de r‚partition et de combinaison sont divis‚s en une moiti‚ d’‚mission et une moiti‚ de r‚ception pour faciliter le chevauchement et le traitement par micro-lots. L’‚metteur organise les jetons dans des tampons d’‚mission afin qu’ils puissent ‚tre ‚crits aux pairs par le biais d’une seule op‚ration d’‚criture RDMA. Apr‚s l’ex‚cution de l’‚metteur, le processeur graphique peut effectuer d‚s autres t‚ches (telles que la multiplication d’experts partag‚s) pendant que les transferts sur le r‚seau sont en attente en arriˆre-plan. Les noyaux de r‚ception se bloquent jusqu’‚ ce que tous les transferts aient ‚t‚ re‚us. En arriˆre-plan, un fil d’ex‚cution de travail c‚t‚ h‚te g‚re les transferts : il est signal‚ par le processeur graphique lorsque les tampons d’‚mission ont ‚t‚ remplis, apr‚s quoi il r‚partit les ‚critures RDMA. Une fois que la carte r‚seau signale l’ach‚vement, elle d‚bloque le r‚cepteur, qui renvoie les jetons au modˆle.

Les noyaux sont ‚troitement coupl‚s ‚ l’h‚te, communiquant entre eux par l’interm‚diaire de la m‚moire unifi‚e et de GDRCopy. La m‚moire unifi‚e CUDA permet de mapper la m‚moire du p‚riph‚rique ou de l’h‚te dans les Espace d’adressage des deux, g‚rant de maniˆre transparente la communication via PCIe.

Bien que la m‚moire unifi‚e convienne aux transferts en bloc, l’interrogation ‚ faible latence est effectu‚e par GDRCopy. GDRCopy utilise GPUDirect RDMA pour lire et ‚crire dans la m‚moire du processeur graphique avec une latence de l’ordre de la microseconde.

En plus de RDMA, au sein d’un n‚ud, les noyaux tirent ‚galement parti de NVLink pour ‚changer des jetons. Cela permet de d‚lester une fraction importante du trafic, jusqu’‚ un quart pour EP32 et jusqu’‚ un huitiˆme pour EP64, permettant d’atteindre des latences globales plus faibles.

Tampons d’‚mission et de r‚ception

La conception des tampons d’‚mission pour le noyau de r‚partition est cruciale pour atteindre des latences viables impliquant le proxy de l’h‚te. S’il y a N rangs r‚partissant chacun T jetons, chacun achemin‚ vers R experts sur E, un rang peut recevoir jusqu’‚ N * T * max(R, E / N) jetons dans le pire des cas, si tous y sont achemin‚s. De plus, cette limite minimale ne peut ‚tre atteinte que lorsque les ‚metteurs disposent leurs ‚critures de maniˆre contigu‚e, car des tampons de r‚ception priv‚s consommeraient trop de m‚moire. Pour que les ‚metteurs puissent disposer leurs ‚critures cons‚cutivement sans conflit, une connaissance approfondie des informations de routage doit ‚tre distribu‚e ‚ chaque rang. Par cons‚quent, nos noyaux de r‚partition ‚changent d’abord les d‚comptes de jetons par expert, apr‚s quoi chacun peut d‚terminer o’ vont ses ‚critures et ‚ partir de quel d‚calage il re‚‚oit des jetons de chaque rang.

Le simple ‚change d’informations de routage entra‚nerait des latences inopin‚ment ‚lev‚es, car chaque rang devrait attendre l’arriv‚e des ‚critures avant d’exp‚dier ses propres ‚critures. Au lieu de cela, nous r‚servons une petite quantit‚ d’Espace priv‚ par ‚metteur sur chaque rang de r‚ception et exp‚dions certains jetons en mˆme temps que les ‚critures des informations de routage. Cela garantit une utilisation maximale de la bande passante tout au long de la majeure partie du processus de r‚partition. Une fois les routes ‚chang‚es, les jetons restants sont transf‚r‚s via une seule ‚criture par pair distant. L’‚change d’informations de routage et des tampons de taille fixe, ainsi que les transferts les alimentant, sont illustr‚s dans la figure ci-dessous.

Disposition des tampons pour la répartition MoE, montrant comment les données de jetons et les métadonnées de routage sont organisées et échangées entre deux rangs.

Les noyaux de combinaison sont sensiblement plus simples, car les informations de routage leur sont d‚j‚ disponibles ‚ partir de l’‚tape de r‚partition. Ils peuvent copier les jetons en une seule ‚criture par pair, apr‚s quoi ils lisent le tampon de r‚ception pour calculer la moyenne pond‚r‚e des jetons dans les tenseurs de sortie.

Pour NVLink, les tampons d’‚mission et de r‚ception au sein d’un n‚ud sont mapp‚s dans les pairs pour leur permettre de pousser ou de tirer directement des jetons des rangs voisins.

R‚partition et combinaison

Les figures ci-dessous d‚taillent le calendrier et les interactions entre le processeur graphique, le processeur et la carte r‚seau, montrant une it‚ration de r‚partition et de combinaison entrelac‚e avec les noyaux du modˆle.

Le travail commence dans l’‚mission de r‚partition, le noyau agr‚geant les informations de routage et calculant les d‚comptes de jetons par expert par le biais d’une accumulation atomique dans la m‚moire partag‚e au sein d’un seul bloc. Une fois que les d‚comptes de jetons sont disponibles, ils sont copi‚s dans la m‚moire de l’h‚te et le proxy est imm‚diatement averti de commencer ‚ r‚partir les informations de routage vers tous les autres rangs de pairs. En parallˆle, la r‚partition continue de calculer la somme cumulative des d‚comptes de jetons, identifiant les d‚calages n‚cessaires pour emballer les jetons dans des tampons d’‚mission contigus par pair. Une fois que les d‚calages sont disponibles, tous les jetons ‚ envoyer via EFA sont emball‚s dans les tampons d’‚mission. Le proxy est invit‚ ‚ publier les ‚critures dans les tampons d’‚mission des pairs inter-n‚uds. Au niveau intra-n‚ud, les noyaux poussent ‚galement imm‚diatement des jetons dans des tampons priv‚s au sein du mˆme n‚ud via NVLink.

Synchronisation et coordination de la répartition MoE, montrant les opérations GPU, CPU et NIC par étapes ainsi que leur synchronisation.
Synchronisation et coordination du regroupement MoE, montrant les opérations GPU, CPU et NIC ainsi que leur synchronisation.

Une fois qu’un rang re‚‚oit des informations de routage de tous les pairs, il les centralise et calcule divers d‚calages n‚cessaires pour identifier les jetons destin‚s ‚ la r‚partition et ‚ la combinaison. Ce travail est effectu‚ sur le processeur alors que des transferts sont d‚j‚ en attente, il n’est donc pas critique en termes de latence. Par la suite, une fois que tous les d‚calages sont connus, les ‚critures pour le reste des jetons, qui d‚passent la taille du tampon priv‚, sont publi‚es et la phase d’‚mission de la r‚partition est termin‚e.

Du c‚t‚ du r‚cepteur, le noyau tire d’abord du m‚me n‚ud des jetons qui d‚passent la capacit‚ des tampons priv‚s via NVLink. Ensuite, il se bloque jusqu’‚ ce que le proxy de l’h‚te signale l’ach‚vement de tous les transferts. Une fois le signal re‚u, les jetons sont m‚lang‚s des tampons de r‚ception vers le tenseur de sortie transmis au groupe GEMM. ‚tant donn‚ que les tampons sont r‚utilis‚s entre la r‚partition et la combinaison, les bar‚‚res NVLink et RDMA garantissent que les tampons de r‚ception ont ‚t‚ lus avant de permettre au noyau suivant de les ‚craser.

Les noyaux de combinaison suivent un sch‚ma sensiblement similaire, m‚langeant des jetons, signalant le proxy et attendant l’ach‚vement. Cependant, les m‚tadonn‚es permettant de publier leurs ‚critures sont imm‚diatement disponibles et tous les d‚calages distants sont connus, de sorte que tous les jetons transf‚r‚s en intra-n‚ud sont pouss‚s via NVLink vers les r‚cepteurs et les jetons inter-n‚uds sont transf‚r‚s via une seule ‚criture. Avant de renvoyer les r‚sultats, le noyau accumule les jetons provenant des tampons de r‚ception, en les ‚crivant dans les tenseurs de sortie.

TransferEngine pour le routage MoE

Pour prototyper notre impl‚mentation, nous avons initialement r‚utilis‚ le moteur de transfert (Transfer Engine) b‚ti pour le pr‚-remplissage et le d‚codage d‚sagr‚g‚s afin d’‚mettre et de suivre les ‚critures RDMA. Cependant, contrairement au d‚codage d‚sagr‚g‚ o’ chaque n‚ud publie un grand nombre d’‚critures vers le m‚me pair, la r‚partition MoE publie de petits transferts vers tous les pairs en une seule op‚ration. Pr‚‚t ‚ l’emploi, les performances n’‚taient pas optimales et notre impl‚mentation acc‚l‚rait un retard d’environ 20 ‚s par rapport ‚ DeepEP sur ConnectX-7. Par cons‚quent, nous avons sp‚cialis‚ le TransferEngine pour prendre en charge deux op‚rations, la dispersion (scatter) et la barriˆre, afin d’optimiser les interactions avec un grand nombre de pairs.

Les op‚rations de dispersion et de barriˆre exposent des groupes de pairs qui peuvent ‚tre pr‚-enregistr‚s pour pr‚-remplir les structures de donn‚es utilis‚es par l’impl‚mentation du transport sous-jacent (modˆlisation de requ‚tes de travail [WR]). La dispersion copie diff‚rentes tranches du m‚me tampon source dans diff‚rents d’calages sur tous les membres d’un groupe de pairs. La barriˆre signale tous les pairs par le biais d’une imm‚diate. Mettre en file d’attente et g‚rer ces op‚rations en bloc permet d’‚conomiser de pr‚cieuses microsecondes sur le chemin critique. Sur EFA, o’ deux cartes r‚seau de 200 Gb/s s’agr‚g‚ment pour fournir une bande passante de 400 Gb/s, nous fractionnons les pairs du groupe entre les deux cartes r‚seau au lieu de fractionner les octets de chaque transfert.

Bien qu’initialement nous ayons d‚velopp‚ le TransferEngine uniquement sur EFA en utilisant libfabric, les noyaux MoE fonctionnent sur ConnectX-7 sans modifier une seule ligne de code apr‚s l’ajout de la prise en charge de ConnectX-7 dans le TransferEngine en utilisant libibverbs. Par rapport ‚ l’EFA fond‚ sur des datagrammes fiables et ‚ l’‚chelle (SRD), ConnectX-7 n‚cessite un travail suppl‚mentaire pour la configuration de la connexion et la gestion des pairs. Nous utilisons une paire de files d’attente de datagrammes non fiables (UD) pour amorcer la connexion fiable (RC). Nous cr‚ons deux paires de files d’attente pour chaque pair distant, l’une pour SEND/RECV bilat‚ral et l’autre pour WRITE_IMM unilat‚ral, car RECV et WRITE_IMM consomment tous deux l’op‚ration RECV dans l’ordre tandis que les deux op‚rations n‚cessitent des tailles de tampon diff‚rentes. En outre, nous assouplissons l’ordonnancement des transactions PCIe entre ConnectX-7 et la m‚moire du processeur graphique. De maniˆre similaire ‚ l’EFA, nous impl‚mentons l’optimisation de la modˆlisation des requ‚tes de travail (WR). De plus, lors de l’envoi de plusieurs petits messages au m‚me pair, nous utilisons le cha‚nage de requ‚tes de travail pour am‚liorer le d‚bit des messages.

‚tant donn‚ que le travail du c‚t‚ du processeur graphique est identique sur les deux adaptateurs, nous avons pouss‚ l’impl‚mentation du transport sous-jacent ‚ ses limites pour d‚passer les performances de DeepEP afin de souligner que l’‚cart entre le routage MoE EFA et ConnectX-7 est d‚termin‚ par les capacit‚s du mat‚riel sous-jacent.

‚valuation

Latence de r‚partition/combinaison

Nous avons ‚valu‚ les latences de r‚partition et de combinaison sur des systˆmes H200 ‚quip‚s d’adaptateurs ConnectX-7 et EFA sur la configuration standard DeepSeek-V3 et Kimi-K2 avec une dimension cach‚e de 7168, une r‚partition fp8 mise ‚ l’‚chelle par blocs et une combinaison bf16. Nous consid‚rons une taille de lot de 128 pour la r‚partition et de 4096 pour la combinaison. Sur ConnectX-7, nous comparons ‚ DeepEP et ‚ nos noyaux pplx pr‚c‚dents fond‚s sur NVSHMEM, en utilisant ‚ la fois GPUDirect Async (IBGDA) et un proxy h‚te (IBRC). Nous obtenons des latences combin‚es de 459 ‚s, 582 ‚s et 692 ‚s sur EP16, EP32 et EP64, respectivement. Nous surpassons d‚s autres noyaux fond‚s sur EFA reposant sur des proxys g‚n‚riques, tels que UCCL-EP, qui atteignent 519 ‚s, 966 ‚s et 1159 ‚s.

Latence de répartition et de regroupement pour le décodage MoE EP64, comparant les implémentations et les chemins de communication illustrés.

Sur le d‚codage, bien que nos noyaux soient quelques microsecondes plus lents que DeepEP, nous obtenons des latences globales plus faibles car nos noyaux de combinaison sont sensiblement plus rapides. Bien que nous utilisions un proxy h‚te, en raison de nos transferts en bloc, nous d‚passons les performances de toutes les impl‚mentations sans proxy fond‚es sur IBGDA. Nous montrons ‚galement que l’impl‚mentation du proxy importe, car notre proxy hautement sp‚cialis‚ est un ordre de grandeur plus rapide que l’impl‚mentation NVSHMEM g‚n‚rique. Malgr‚ le fait que l’EFA soit deux fois plus lent que ConnectX-7 lors du transfert de paquets de 256 Ko, qui sont proches de la taille de paquet typique ‚chang‚e par le routage MoE, l’‚cart entre les deux adaptateurs est globalement moins important.

Latence de répartition et de regroupement pour le préremplissage MoE EP64, comparant les chemins de communication de pplx et de DeepEP.

M‚me si nos noyaux optimis‚s pour le d‚codage peuvent passer ‚ l’‚chelle des tailles de lot de pr‚-remplissage sans aucun r‚glage suppl‚mentaire, les performances accusent un retard par rapport ‚ DeepEP. Cela est principalement d’ au fait que nous accumulons les jetons uniquement du c‚t‚ du r‚cepteur de la combinaison, alors que DeepEP accumule dans l’‚metteur pour r‚duire la quantit‚ de donn‚es transf‚r‚es. Cependant, cette optimisation peut avoir des r‚percussions sur la pr‚cision. De plus, comme les noyaux transf‚rent les donn‚es en une seule ‚criture, nous utilisons plus de m‚moire pour les tampons d’‚mission et de r‚ception.

D‚bit Kimi-K2 / DeepSeek-V3

Pour prouver la viabilit‚ de nos noyaux, nous effectuons des tests de performance de bout en bout de notre moteur d’inf‚rence interne desservant DeepSeek-V3 (671 milliards de paramˆtres) et Kimi-K2 (1 billion de paramˆtres) sur de multiples instances p5en ‚quip‚es d’adaptateurs Elastic Fabric Adapters (EFA) et de processeurs graphiques H200. Nous ex‚cutons le modˆle en mode de v‚rification de brouillon et signalons la latence en supposant un taux d’acceptation de 80 % en utilisant une seule couche MTP.

Sur DeepSeek-V3, nous comparons par rapport ‚ une ligne de base intra-n‚ud EP=8 ex‚cutant des noyaux de r‚partition et de combinaison efficaces fond‚s uniquement sur NVLink. Les d‚ploiements inter-n‚uds ‚galent ou d‚passent globalement les performances du d‚ploiement sur un seul n‚ud, en particulier sur les lots de taille moyenne, d‚montrant que la mise ‚ l’‚chelle entre les n‚uds apporte des am‚liorations au d‚bit global.

Sur Kimi-K2, les noyaux permettent le service. En raison de sa taille, le modˆle ne peut pas tenir dans le m‚me n‚ud en utilisant le parallˆlisme de donn‚es (DP) sur un n‚ud H200, un d‚ploiement inter-n‚ud est donc n‚cessaire pour servir le modˆle. Comme le modˆle a moins de t‚tes d’attention, nous obtenons de meilleures latences que DeepSeek-V3 et nous pouvons servir le modˆle sur EFA ‚ une latence viable.

Débit par GPU de DeepSeek-V3 par rapport à la vitesse de génération pour les configurations EP32, EP16 et EP8.
Débit par GPU de Kimi-K2 par rapport à la vitesse de génération pour les configurations EP32 et EP16.

Nous avons ‚galement examin‚ le traitement par micro-lots, bien qu’il n’ait am‚lior‚ les latences qu’‚ des tailles de lot tr‚s ‚lev‚es ou lors de l’utilisation de plus d’un jeton de brouillon. Pour b‚n‚ficier de la division des problˆmes GEMM group‚s en deux, les tailles de lot de jetons doivent ‚tre suffisamment denses. Le plus clair du temps est toujours consacr‚ ‚ la r‚partition et ‚ la combinaison MoE, ce qui indique que toute am‚lioration suppl‚mentaire apport‚e aux noyaux am‚liorera par cons‚quent les latences et facilitera le traitement par micro-lots.

Travaux futurs

Nous travaillons en collaboration ‚troite avec les ing‚nieurs d’AWS pour am‚liorer les performances sur EFA. De notre c‚t‚, nous suivrons les mises ‚ jour de libfabric qui r‚duiront la surcharge du plan de donn‚es. En outre, nous exp‚rimenterons avec efa-direct pour r‚duire davantage les surcharges de l’espace utilisateur et interagir directement avec le mat‚riel.

R‚f‚rences

Rapport technique de DeepSeek R1

Rapport technique de Kimi K2

DeepEP

UCCL-EP

Am‚lioration des performances r‚seau des systˆmes HPC ‚ l’aide de NVIDIA Magnum IO NVSHMEM et GPUDirect Async

Citation

BibTeX
@online{perplexity2025EnablingTrillionParameterModelsOnAwsEfa,
  author = {{Perplexity} and Nandor Licker and Kevin Hu and Vladimir Zaytsev and Lequn Chen},
  title = {{Enabling trillion-parameter models on AWS EFA}},
  date = {2025-11-04},
  url = {https://www.perplexity.ai/hub/blog/enabling-trillion-parameter-models-on-aws-efa}
}