DeepSeek V3 détails de l'article : Comment contourner le monopole de CUDA !

Les deux modèles récemment lancés par DeepSeek, DeepSeek-V3 et DeepSeek-R1, atteignent des performances comparables à celles des modèles similaires d'OpenAI pour un coût nettement inférieur.

Selon les médias étrangers, en seulement deux mois, ils ont formé un modèle linguistique MoE avec 671 milliards de paramètres sur une grappe de 2 048 GPU H800, ce qui est 10 fois plus efficace que l'IA la plus performante.

Cette avancée n'a pas été réalisée avec CUDA, mais grâce à un grand nombre d'optimisations fines et à l'utilisation de la programmation PTX (parallel thread execution) de NVIDIA, semblable à l'assemblage.

DeepSeek a été contrainte d'emprunter une voie différente de celle d'OpenAI et d'autres entreprises qui s'appuient sur la puissance de calcul brute dans le cadre de contraintes matérielles. Elle a eu recours à une série d'innovations technologiques pour réduire les besoins en énergie du modèle tout en réalisant des gains de performance.

Quelques commentaires enthousiastes de la part des internautes :

Dans ce monde, s'il existe des groupes de personnes assez folles pour dire des choses comme "CUDA est trop lent !

Les génies peaufinent le PTX pour maximiser les performances du GPU

NVIDIA PTX (Parallel Thread Execution) est une architecture de jeu d'instructions intermédiaire conçue spécifiquement pour ses GPU, qui se situe entre les langages de programmation GPU de haut niveau (tels que CUDA C/C++) ou d'autres langages frontaux et le code machine de bas niveau (assemblage en continu ou SASS).

PTX est une architecture de jeu d'instructions de bas niveau qui présente le GPU comme un dispositif de calcul parallèle de données, permettant des optimisations fines telles que l'allocation de registres et le réglage au niveau du thread/thread-bundle qui ne sont pas possibles avec des langages tels que CUDA C/C++.

Lorsque PTX est converti en SASS, il est optimisé pour une génération spécifique de GPU NVIDIA.

Lors de l'entraînement du modèle V3, DeepSeek a reconfiguré le GPU NVIDIA H800 :

Sur les 132 cœurs du processeur de flux, 20 ont été alloués à la communication inter-serveurs, principalement pour la compression et la décompression des données, afin de dépasser la limite de connexion du processeur et d'améliorer la vitesse de traitement des transactions.

Pour maximiser les performances, DeepSeek a également mis en œuvre des algorithmes avancés de pipelining par le biais d'ajustements supplémentaires au niveau du faisceau de threads/threads à grain fin.

Ces optimisations vont bien au-delà du niveau de développement CUDA conventionnel, mais sont extrêmement difficiles à maintenir. Cependant, ce niveau d'optimisation est précisément ce qui démontre pleinement les capacités techniques exceptionnelles de l'équipe DeepSeek.

Le document V3 mentionne spécifiquement des détails sur le PTX

En effet, sous la double pression d'une pénurie mondiale de GPU et des restrictions imposées par les États-Unis, des entreprises telles que DeepSeek ont dû chercher des solutions innovantes.

Heureusement, ils ont réalisé des avancées significatives dans ce domaine.

Un développeur estime que "la programmation GPU de bas niveau est la bonne direction. Plus l'optimisation est importante, plus le coût est faible, ou le budget de performance qui peut être utilisé pour d'autres progrès sans dépenses supplémentaires".

Cette percée a eu un impact significatif sur le marché, et certains investisseurs pensent que le nouveau modèle réduira la demande de matériel de haute performance, ce qui pourrait affecter les performances de vente d'entreprises telles que NVIDIA.

Toutefois, des vétérans de l'industrie, dont l'ancien PDG d'Intel Pat Gelsinger, estiment que les applications d'IA peuvent utiliser pleinement toute la puissance de calcul disponible.

M. Gelsinger voit dans cette percée de DeepSeek un nouveau moyen d'intégrer des capacités d'IA dans des appareils bon marché destinés au marché de masse.

PTX et CUDA

L'arrivée de DeepSeek signifie-t-elle que le développement de LLM de pointe ne nécessite plus de grands clusters de GPU ?

Les énormes investissements en ressources informatiques de Google, OpenAIL'intelligence artificielle, Meta et xAI sont-elles en fin de compte vouées à l'échec ? Le consensus général parmi les développeurs d'IA est que ce n'est pas le cas.

Cependant, il est certain qu'il existe encore un énorme potentiel à exploiter en termes de traitement des données et d'optimisation des algorithmes, et que des méthodes d'optimisation plus innovantes verront certainement le jour à l'avenir.

Le modèle V3 de DeepSeek étant en source ouverte, les détails sont divulgués en détail dans son rapport technique.

Le rapport documente les profondes optimisations sous-jacentes réalisées par DeepSeek. En bref, le degré d'optimisation peut être résumé comme suit : "ils ont reconstruit le système entier à partir de la base".

Comme indiqué plus haut, lors de l'entraînement du V3 à l'aide du GPU H800, DeepSeek a personnalisé les unités de calcul du GPU (cœurs multiprocesseurs en continu, ou SM) pour répondre à des besoins spécifiques.

Sur un total de 132 SM, 20 ont été spécifiquement affectés à des tâches de communication entre serveurs plutôt qu'à des tâches de calcul.

Cette personnalisation s'effectue au niveau du PTX (parallel thread execution), qui est le jeu d'instructions de bas niveau du GPU NVIDIA.

PTX fonctionne à un niveau proche du langage d'assemblage et permet des optimisations fines telles que l'allocation de registres et l'ajustement au niveau du thread/thread-bundle. Cependant, ce contrôle fin est complexe et difficile à maintenir.

C'est pourquoi les développeurs préfèrent généralement utiliser des langages de programmation de haut niveau tels que CUDA, qui fournissent des optimisations de performance suffisantes pour la plupart des tâches de programmation parallèle et éliminent le besoin d'optimisations de bas niveau.

Cependant, lorsqu'il s'agit de maximiser l'efficacité des ressources GPU et de répondre à des exigences d'optimisation spécifiques, les développeurs doivent recourir au PTX.

Toutefois, les obstacles techniques demeurent

À cet égard, l'internaute Ian Cutress a déclaré : "L'utilisation de PTX par Deepseek n'élimine pas les obstacles techniques de CUDA".

CUDA est un langage de haut niveau. Il facilite le développement de bibliothèques et d'interfaces avec les GPU NVIDIA et permet un développement itératif rapide.

CUDA peut optimiser les performances en affinant le code sous-jacent (c'est-à-dire PTX), et les bibliothèques de base sont déjà complètes. La plupart des logiciels de production sont actuellement construits sur CUDA.

PTX est plus proche d'un langage d'assemblage directement compréhensible pour le GPU. Il fonctionne à bas niveau et permet une micro optimisation.

Si vous choisissez de programmer en PTX, cela signifie qu'aucune des bibliothèques CUDA intégrées mentionnées ci-dessus ne peut être utilisée. Il s'agit d'une tâche très fastidieuse qui nécessite une expertise approfondie du matériel et des problèmes d'exécution.

Toutefois, si les développeurs comprennent parfaitement ce qu'ils font, ils peuvent effectivement obtenir de meilleures performances et une meilleure optimisation au moment de l'exécution.

Actuellement, le courant dominant de l'écosystème NVIDIA reste l'utilisation de CUDA.

Les développeurs qui souhaitent obtenir 10-20% de performance ou d'efficacité énergétique supplémentaires pour leur charge de calcul, comme les entreprises qui déploient des modèles dans le nuage et vendent des services de jetons, ont en effet optimisé du niveau CUDA au niveau PTX. Elles sont prêtes à investir du temps parce que cela en vaut la peine à long terme.

Il convient de noter que le PTX est généralement optimisé pour un modèle de matériel spécifique et qu'il est difficile de le transférer d'un matériel à l'autre, à moins que la logique d'adaptation ne soit spécialement écrite.

En outre, la mise au point manuelle du noyau de calcul exige beaucoup de persévérance, de courage et une capacité particulière à rester calme, car le programme peut avoir une erreur d'accès à la mémoire tous les 5 000 cycles.

Bien sûr, pour les scénarios où le PTX est vraiment nécessaire, et pour les développeurs qui sont suffisamment payés pour s'occuper de ces questions, nous exprimons notre pleine compréhension et notre respect.

Pour tous les autres développeurs, il est conseillé de continuer à utiliser CUDA ou d'autres variantes avancées basées sur CUDA (ou MLIR).

A lire également

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *