Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Optimiser les performances avec des architectures d'inférence multi-puces

Les deux dernières années ont vu une effervescence d'innovation dans la conception de puces d'inférence. Bien que de nouvelles solutions apparaissent presque chaque semaine, de nombreuses entreprises peinent à les comparer car les benchmarks fiables sont rares. Jusqu'à présent, les fournisseurs ont vanté des TOPS ou TOPS/Watt sans détailler les modèles, tailles de lots ou conditions de fonctionnement, et le benchmark populaire ResNet-50 est trop simpliste pour la plupart des charges de travail réelles.

Ce qui compte vraiment pour mesurer la performance d'une puce d'inférence sont une utilisation élevée des MAC, une faible consommation d'énergie et une empreinte silicium compacte. Une fois ces métriques comprises, l'étape logique suivante est d'explorer les avantages — et les écueils — du déploiement de plusieurs puces dans une seule conception.

Pourquoi plusieurs puces peuvent offrir des gains linéaires

Lorsqu'une puce est conçue pour le parallélisme, l'évolution vers deux, quatre ou plus d'unités peut, en théorie, augmenter le débit proportionnellement — un peu comme transformer une autoroute à une voie en corridor multi-voies. La clé est d'éviter les goulots d'étranglement en choisissant la bonne puce et en partitionnant correctement le réseau de neurones.

Partitionner un réseau de neurones entre puces

Les réseaux de neurones sont organisés en couches. Chaque couche consomme les activations de sortie de la précédente. Dans les modèles profonds tels que ResNet-50 (50 couches) ou YOLOv3 (plus de 100 couches), les premières couches génèrent les plus grandes activations, qui diminuent progressivement au fur et à mesure que le réseau progresse.

Pour diviser un modèle sur plusieurs puces, examinez à la fois la taille des activations et le nombre d'opérations Multiply-Accumulate (MAC) par couche. L'objectif est d'équilibrer la charge : chaque puce doit gérer un nombre comparable de MAC et des volumes de données similaires. Si une puce traite la majeure partie du travail tandis que l'autre est inactive, le débit global est plafonné par l'unité la plus lente.

De plus, le point de coupure dans le modèle détermine les données qui doivent être transférées entre puces. Choisir une coupure où la taille d'activation est minimale réduit les besoins en bande passante inter-puces et la latence, évitant que la liaison de communication ne devienne un goulot d'étranglement de performance.

Exemple illustratif : YOLOv3 sur deux vs quatre puces

Pour YOLOv3 s'exécutant sur une image de 2 mégapixels avec l'algorithme de convolution Winograd, les opérations MAC cumulées et les tailles de sortie d'activation sont illustrées ci-dessous. Une configuration à deux puces divise généralement la charge près de la marque 50 % MAC, résultant en ~1-2 Mo d'activations passées entre puces. Une configuration à quatre puces placerait les coupures à environ 25 %, 50 % et 75 %, la coupure la plus précoce nécessitant souvent 4-8 Mo de transfert de données.

Optimiser les performances avec des architectures d inférence multi-puces

Cliquez ici pour une image plus grande

Taille de sortie d'activation (barres bleues) et opérations MAC cumulées (ligne rouge) pour YOLOv3/Winograd/images 2Mpixel, illustrant la distribution de charge sur plusieurs puces (Image : Flex Logix)

Exploiter les outils de modélisation de performance

Les outils de performance modernes peuvent maintenant modéliser les configurations mono-puce et multi-puces. Ils prennent en compte les comptes MAC par couche, les tailles d'activation et l'impact de la bande passante de transfert de données. Une modélisation précise est essentielle car une bande passante inter-puces insuffisante peut annuler l'accélération théorique.

Pour un pipeline à quatre puces, les demandes de bande passante augmentent car les premières couches — où les activations sont les plus grandes — doivent être partagées entre toutes les unités. Bien qu'une bande passante plus élevée prenne en charge plus de puces, elle ajoute aussi une surcharge que chaque puce doit supporter, même si déployée individuellement.

Conclusion

Le déploiement de plusieurs puces d'inférence peut débloquer des améliorations de performance significatives, mais seulement lorsque le réseau de neurones est partitionné intelligemment et que l'architecture de puce choisie prend en charge une utilisation élevée des MAC et un déplacement de données efficace. Priorisez le débit plutôt que les benchmarks de façade comme les TOPS ou les scores ResNet-50, et concevez le réseau pour correspondre aux forces de la puce. Avec la bonne stratégie, vous pouvez transformer un pipeline d'inférence à voie unique en un système à haute capacité et faible latence.

— Geoff Tate, CEO de Flex Logix

Embarqué

  1. Naviguer dans le SaaS et le cloud : pourquoi une gestion méticuleuse des données est cruciale
  2. Maîtriser les directives using C# : Imports, alias et directives static
  3. RISC‑V International et CHIPS Alliance lancent le groupe de travail OmniXtend pour renforcer les standards de cohérence de cache
  4. Module biosenseur compact OB1203 unit fréquence cardiaque, oxymétrie pouls et plus pour wearables
  5. Altium 365 : La première plateforme cloud pour la conception PCB, favorisant la collaboration et accélérant le time-to-market
  6. Planification de mouvement temps réel pour véhicules autonomes en milieu urbain : Étude prototype à échelle réduite
  7. Initiatives digitales shop floor stratégiques : blueprint pour résilience manufacturière
  8. Un outil d'IA prédit avec précision la vitesse d'exécution des puces, surpassant le modèle d'Intel
  9. Alimentation sans fil unique pour plusieurs appareils portables