Retour à L’IA est open source
Interprétation open source HPC-Ops : comment la bibliothèque d’opérateurs d’inférence de LLM de qualité production Hunyuan de Tencent extrait les performances de cartes d’inférence comme H20

Interprétation open source HPC-Ops : comment la bibliothèque d’opérateurs d’inférence de LLM de qualité production Hunyuan de Tencent extrait les performances de cartes d’inférence comme H20

L’IA est open source Admin 124 vues

1. Résumé

HPC-Ops est une bibliothèque d’opérateurs d’inférence LLM open source et de qualité production, issue de l’équipe Hunyuan AI Infra de Tencent, dans le but de rapprocher les cartes d’inférence grand public (en particulier les NVIDIA Hopper/SM90, comme le H20) de l’utilisation matérielle maximale. Le projet se concentre sur le perfectionnement du noyau SOTA à partir de CUDA à usage zéro + CuTe/CUTLASS, et fournit une API relativement propre pour une intégration facile dans des cadres d’inférence tels que vLLM et SGLang, et convient aux scénarios d’inférence multi-précision tels que BF16/FP8.

2. Caractéristiques principales

1. Performance ultime pour la production : Pour l’optimisation approfondie des chemins critiques d’inférence, le ratio d’accélération maximale d’observation officiel de l’Attention / GroupGEMM / FusedMoE (jusqu’à 2,22x) est donné.

2. Couverture des opérateurs clés : incluant l’attention (préremplissage/décodage, y compris l’attention pagée), le GEMM groupé, le MoE fusionné et d’autres opérateurs d’inférence à haute fréquence.

3. Prise en charge de la multi-précision et de la quantification : Prend en charge nativement BF16 et FP8, et couvre différentes méthodes d’échelle de quantification (comme bloc par bloc/per-tensor).

4. Intégration facile et lisibilité : Mettre l’accent sur « abstraction propre + personnalisation », tout en transformant l’implémentation du noyau en un exemple d’apprentissage CUDA moderne pour abaisser le seuil de développement secondaire.

3. Installation

1. Exigences environnementales : GPU avec architecture NVIDIA SM90 ; Python 3.8+ ; Compilateur avec prise en charge de C++17 ; Boîte à outils CUDA 12.8+

  1. Installation du code source (roue de construction) :
  • git clone https://github.com/Tencent/hpc-ops.git
  • cd hpc-ops
  • make wheel
  • python3 -m pip install dist/*.whl
  • 3. Suggestions de dépendances : Préparer les dépendances de développement/test selon les requirements-dev.txt du dépôt afin de faciliter l’exécution des cas d’utilisation et l’alignement des versions.

4. Cas d’usage typiques

1. Accélération d’inférence du modèle MoE : Utiliser FusedMoE / GroupGEMM pour réduire la surcharge de GEMM et de fusion après un routage expert, et améliorer QPS/QPM.

2. Services de contexte long et de forte concurrence : L’attention (y compris l’attention paginée) est plus sensible au débit et à la latence du préremplissage/décodage, ce qui la rend adaptée à la pression des GPU sous forte charge.

3. Intégration secondaire du cadre d’inférence : Remplacer/étendre les opérateurs clés dans vLLM, SGLang, etc. pour atteindre la voie d’ingénierie du « remplacement local du noyau et bénéfice global ».

4. R&D et enseignement du noyau : L’implémentation technique de CuTe/CUTLASS est utilisée comme exemple lisible pour la formation des équipes et l’itération de nouveaux opérateurs.

5. Écologie et produits concurrents

  1. Localisation écologique : HPC-Ops ressemble davantage à une « base d’opérateur haute performance » et convient à une utilisation en combinaison avec des cadres d’inférence (vLLM, SGLang) plutôt qu’à un remplacement direct d’un moteur d’inférence complet.
  2. Concurrents/benchmarking : Direction de l’attention : comparaison courante FlashAttention/FlashInfer/TensorRT-LLM ; Les directions MoE et GEMM sont couramment comparées à TensorRT-LLM, DeepGEMM, etc. La différence entre HPC-Ops réside dans l’optimisation plus agressive de la microarchitecture et l’abstraction d’ingénierie de matériels spécifiques et charges de production.

6. Limitations et précautions

1. Seuil matériel : GPU SM90 (Hopper) est actuellement clairement requis ; La disponibilité et les avantages d’autres architectures doivent être vérifiés par elles-mêmes.

2. Couplage de versions : Il est sensible aux versions, compilateurs et dépendances CUDA, et il est recommandé de verrouiller l’environnement strictement selon les instructions du dépôt.

3. Le « ratio d’accélération maximale d’observation » n’est pas égal à des rendements stables : différents lots, longueurs de séquences, méthodes de concurrence et de fusion d’opérateurs entraîneront des différences de rendement, et vous devez évaluer votre propre charge de travail.

4. Coût d’intégration : Lors du remplacement des opérateurs par des piles d’inférence existantes, nous devons prêter attention à la cohérence numérique, à la stratégie de précision (BF16/FP8) et à la voie de repli afin d’éviter les risques incontrôlables en ligne.

7. Adresse du projet

https://github.com/Tencent/hpc-ops

8. Questions fréquemment posées

Q : Qu’est-ce que HPC-Ops et à quoi sert-il ?

R : Il s’agit d’une bibliothèque d’opérateurs d’inférence LLM haute performance, adaptée pour remplacer des opérateurs clés dans des cadres tels que vLLM/SGLang afin d’améliorer le débit et l’utilisation du GPU.

Q : Quelles versions GPU et CUDA HPC-Ops prend-il en charge ?

R : Les GPU NVIDIA SM90 (Hopper) sont officiellement obligatoires, et le CUDA Toolkit nécessite 12,8 ou plus.

Q : Quels liens d’inférence couvre l’opérateur principal de HPC-Ops ?

R : Couvrir les opérateurs de chemin critique d’inférence tels que l’attention (préremplissage/décodage, y compris l’attention pagée), le GEMM groupé et le MoE fusionné.

Q : Comment choisir la méthode de quantification/mise à l’échelle FP8 pour HPC-Ops ?

R : D’abord, exécutez l’interface et le cas de test fournis par le dépôt, puis sélectionnez une stratégie de mise à l’échelle telle que bloc par bloc ou par tenseur basée sur les objectifs de précision et les indicateurs de performance, puis effectuez une régression de bout en bout.

Q : Comment puis-je évaluer les avantages de HPC-Ops sur mon propre modèle/entreprise ?

R : Utiliser la distribution réelle des requêtes (longueur de séquence, batch, concurrence, configuration MoE) comme benchmark A/B, et mesurer respectivement le préremplissage, le décodage et le débit/latence de bout en bout.

Interprétation du code open source HPC-Ops : la bibliothèque d’opérateurs d’inférence LLM haute performance de Tencent Hunyuan AI Infra Comment consommer la puissance de calcul par inférence sur H20/SM90 : une analyse complète des opérations HPC HPC-Ops vs FlashAttention : points d’accélération du noyau et scénarios applicables HPC-Ops vs FlashInfer : comment la performance d’Attention se compare-t-elle en inférence de production ? HPC-Ops vs TensorRT-LLM : différences entre FusedMoE et intégration de la pile d’inférence HPC-Ops vs DeepGEMM : Performance FP8 vs coûts d’ingénierie pour GroupGEMM Guide de démarrage HPC-Ops : compilation du code source, volant de fabrication et processus d’installation Explication détaillée des exigences de l’environnement HPC-Ops : SM90, CUDA 12.8 et C++17 Prise en charge BF16/FP8 pour HPC-Ops : comment choisir une stratégie de mise à l’échelle quantitative Idées d’optimisation de l’attention (préremplissage/décodage) HPC-Ops : pourquoi c’est plus rapide Boostez QPM avec HPC-Ops : du goulot d’étranglement de l’opérateur au débit système La valeur de HPC-Ops dans l’inférence MoE : comment FusedMoE réduit la surcharge Utilisation typique de HPC-Ops GroupGEMM : exemples et notes d’appels PyTorch Tests et benchmarking HPC-Ops : comment utiliser le répertoire des tests pour la régression HPC-Ops Integrated vLLM : Chemin général pour remplacer les couches opérateurs Intégration HPC-Ops SGLang : Adaptation des opérateurs et vérification des performances Pourquoi HPC-Ops met l’accent sur le « rapport d’accélération maximale des observations » : Comment interpréter correctement les données La production introduit les listes de contrôle HPC-Ops : stabilité, précision et retour en arrière Code de style CuTe/CUTLASS pour HPC-Ops : un parcours d’apprentissage CUDA moderne HPC-Ops Attention accélère le combat réel : le cache KV et l’attention paginée sont liés Implémentation d’inférence HPC-Ops FP8 : amélioration du débit et contrôle numérique des erreurs Quantization GroupGEMM pour HPC-Ops : Mise à l’échelle par bloc vs mise à l’échelle par tenseur Quantification de FusedMoE pour HPC-Ops : détails experts en ingénierie de pondération pour FP8 La division du travail entre HPC-Ops et les bibliothèques d’inférence classiques : ordonnancement de cadres vs. opérateurs sous-jacents HPC-Ops de Roofline : comment juger les goulots d’étranglement en puissance de calcul et en largeur de bande passante Quand FlashAttention n’est pas assez rapide : pourquoi utiliser des bibliothèques personnalisées comme HPC-Ops Quels modèles HPC-Ops convient-ils : analyse de charge de travail par inférence comme hybride vs. DeepSeek Guide de réplication des performances HPC-Ops : morphologie d’entrée, longueur de séquence et paramètres de compilation Installation HPC-Ops heurté : compatibilité des versions CUDA et du compilateur Déploiement HPC-Ops dans des environnements conteneurs : recommandations pour l’appariement d’images de construction et de pilotes Comment HPC-Ops réalise le benchmarking A/B : latence, débit et mémoire vidéo La position des opérations HPC dans l’inférence multi-machines multi-cartes : la frontière entre les opérateurs et les communications Explication de la feuille de route HPC-Ops : attention limitée vs. support quantitatif étendu Optimiser l’inférence à long contexte avec HPC-Ops : la signification de l’attention parcipienne HPC-Ops vs. FP16/BF16 : Quand passer à FP8 Conception d’API pour HPC-Ops : comment intégrer et personnaliser Guide de contribution HPC-Ops : Comment soumettre des RP à fort impact et des améliorations de performance HPC-Ops s’adapte à l’orientation de la nouvelle architecture : de SM90 à la mise à jour des GPU Comment évaluer les avantages de production de HPC-Ops : QPS/QPM vs. calcul des coûts Liste de couverture des opérateurs HPC-Ops : Attention, GEMM, MoE en un coup d’œil Accélération d’inférence avec HPC-Ops : étapes minimales viables d’intégration (MVP) HPC-Ops vs. cœurs Triton : contrôlabilité vs. performance maximale Comment construire CMake/Makefile pour HPC-Ops : analyse de structure d’ingénierie Sécurité et stabilité HPC-Ops : point de risque lié au remplacement de l’opérateur sous-jacent en ligne Méthode d’acceptation de précision HPC-Ops : aligner les sorties, tolérances et ensembles de régression HPC-Ops en action pour des services d’inférence à grande échelle : surveillance et niveaux de gris Résumé de la FAQ HPC-Ops : Seuils matériels, exigences de version et fluctuations de performance HPC-Ops est-il fait pour vous : recommandations de sélection pour les goulets d’étranglement professionnels

Outils Recommandés

Plus