Nouvelle architecture matérielle pour le machine learning
- Ce dépôt contient le code source d’une architecture matérielle ML qui atteint les mêmes performances que les opérations classiques de produit scalaire (
inner product), tout en ne nécessitant qu’environ la moitié des multiplications.
- Elle exécute un algorithme alternatif de produit scalaire qui remplace près de la moitié des multiplications par des additions en faible précision (
low-bitwidth), ce qui repousse les limites théoriques de débit et d’efficacité de calcul des accélérateurs ML.
- Plus de détails sont disponibles dans un article publié dans la revue IEEE Transactions on Computers.
Nouvel algorithme et nouvelle architecture matérielle
- Présentation d’un nouvel algorithme et d’une nouvelle architecture matérielle appelés Free-pipeline Fast Inner Product (FFIP).
- Il s’agit d’une amélioration du Fast Inner Product (FIP), un algorithme rapide de produit scalaire proposé par Winograd en 1968.
- Le FIP n’a aucun lien avec l’algorithme de filtrage minimal de Winograd appliqué aux couches convolutionnelles (
convolutional) et peut s’appliquer à toute couche de modèle ML pouvant principalement se ramener à une multiplication de matrices.
- Première implémentation du FIP dans un accélérateur ML, avec présentation de l’algorithme FFIP et d’une architecture généralisée qui améliorent la fréquence d’horloge du FIP et, par conséquent, le débit obtenu.
- Contribution d’optimisations spécialisées ML pour les algorithmes et architectures FIP et FFIP.
- FFIP peut être intégré de façon transparente dans les accélérateurs ML à systolic array en virgule fixe (
fixed-point), afin d’atteindre le même débit avec moitié moins d’unités MAC (multiply-accumulate), ou de permettre une taille maximale de systolic array plus grande à budget matériel constant.
- Les implémentations FFIP pour des modèles ML non clairsemés (
non-sparse) utilisant des entrées en virgule fixe de 8 à 16 bits atteignent un débit et une efficacité de calcul supérieurs à ceux des meilleures solutions actuelles sur le même type de plateforme de calcul.
Structure du code source
compiler : contient un compilateur qui convertit les descriptions de modèles Python en instructions pour l’accélérateur, ainsi que le code d’interface avec le pilote PCIe pour lancer l’exécution du modèle sur l’accélérateur, lire les résultats et les compteurs de performance, et tester l’exactitude des résultats.
rtl : contient du RTL SystemVerilog synthétisable.
sim : contient des scripts qui configurent l’environnement de simulation pour les tests.
tests : contient le code source d’un banc de test basé sur UVM, utilisant Cocotb pour valider l’accélérateur en simulation.
utils : contient des paquets et scripts Python supplémentaires utilisés dans le projet, créés par l’auteur pour l’aide au développement et les utilitaires généraux.
Avis de GN⁺
- Cet article présente une avancée innovante dans l’architecture matérielle ML, en particulier un nouvel algorithme et une nouvelle architecture qui réduisent les multiplications tout en conservant les performances. Il s’agit d’un progrès important susceptible d’améliorer fortement l’efficacité des calculs ML.
- L’algorithme FFIP ajoute une nouvelle dimension à la conception des accélérateurs ML existants et propose une manière d’utiliser les ressources matérielles plus efficacement. C’est particulièrement important dans les environnements informatiques modernes où l’efficacité énergétique et le coût sont des critères majeurs.
- Toutefois, pour que cette technologie soit largement adoptée, il faut tenir compte de sa compatibilité avec les accélérateurs ML existants, de la compréhension de cette nouvelle architecture par les développeurs, ainsi que des questions de performance et de coût lors d’une implémentation sur du matériel réel.
- Parmi les autres projets ou produits offrant des fonctions similaires, on peut citer le TPU (Tensor Processing Unit) de Google ou les cœurs CUDA de NVIDIA, déjà validés par le marché comme solutions d’accélération ML.
- Lorsqu’on adopte une nouvelle technologie ou un nouvel open source, il faut considérer la compatibilité avec les systèmes existants, l’augmentation éventuelle des coûts par rapport aux gains de performance, ainsi que la complexité du développement et de la maintenance. Les avantages de FFIP résident dans l’augmentation du débit et de l’efficacité de calcul, tandis que ses inconvénients potentiels incluent la courbe d’apprentissage pour les développeurs et le coût initial d’implémentation.
1 commentaires
Discussion Hacker News
x + log1p(exp(y - x)).