MTIA v1 : Le premier accélérateur d'inférence IA de Meta

Meta, anciennement Facebook, a récemment dévoilé son premier accélérateur d'inférence d'intelligence artificielle, le Meta Training and Inference Accelerator (MTIA). Initié en 2020, le MTIA a été conçu pour soutenir les charges de travail en IA en constante évolution de Meta, en commençant par un ASIC d'accélération d'inférence pour les modèles de recommandation d'apprentissage profond (DLRMs).

MTIA v1: Meta’s first-generation AI inference accelerator
In 2020, we initiated the Meta Training and Inference Accelerator (MTIA) family of chips to support our evolving AI workloads, starting with an inference accelerator ASIC for deep learning recommendation models (DLRMs).

Le Stack Logiciel MTIA : Efficacité et Performance

Le stack logiciel (SW) du MTIA vise à offrir une efficacité pour les développeurs et une haute performance. Il s'intègre parfaitement à PyTorch, offrant une expérience familière aux développeurs. Utiliser PyTorch avec MTIA est aussi simple que d'utiliser PyTorch pour les CPU ou les GPU. Le stack SW du MTIA bénéficie de l'écosystème de développeurs PyTorch en plein essor et de ses outils.

Le compilateur effectue des transformations et des optimisations au niveau du modèle en utilisant PyTorch FX IR et des optimisations de bas niveau en utilisant LLVM IR, avec des extensions pour supporter l'architecture personnalisée et l'ISA de l'accélérateur MTIA.

Exécution et Gestion de la Mémoire avec MTIA

Le runtime PyTorch pour MTIA gère l'exécution sur le dispositif et des fonctionnalités telles que les tenseurs MTIA, la gestion de la mémoire, et les API pour la planification des opérateurs sur l'accélérateur. Le runtime et le firmware effectuent la communication avec le dispositif accélérateur. Le stack SW supporte différents modes d'exécution, tels que le mode eager et le mode graph, et permet aux charges de travail d'être réparties sur plusieurs cartes accélératrices.

Auteur de Noyaux de Calcul pour l'Accélérateur

Il existe plusieurs façons de créer des noyaux de calcul qui peuvent s'exécuter sur l'accélérateur, y compris en utilisant PyTorch, C/C++ (pour des noyaux très optimisés), et un nouveau langage spécifique à un domaine appelé KNYFE. Ce dernier prend une description de haut niveau d'un opérateur ML en entrée et génère un code de noyau C++ de bas niveau optimisé qui est l'implémentation de cet opérateur pour MTIA.

Dans le cadre du stack SW, Meta a également développé une bibliothèque de noyaux hautement optimisés pour les noyaux ML critiques en termes de performance, tels que les opérateurs fully connected et embedding-bag. Les niveaux supérieurs du stack SW peuvent choisir d'instancier et d'utiliser ces noyaux hautement optimisés lors du processus de compilation et de génération de code.

Pour plus d'informations, vous pouvez consulter l'article original sur le blog de Meta.