Le projet Torch-Mlir vise à fournir un support de compilateur de première classe à partir de l'écosystème Pytorch à l'écosystème Mlir.
Ce projet participe au processus d'incubateur LLVM: en tant que tel, il ne fait partie d'aucune version officielle de LLVM. Bien que l'état d'incubation ne soit pas nécessairement le reflet de l'exhaustivité ou de la stabilité du code, il indique que le projet n'est pas encore approuvé en tant que composant de LLVM.
Pytorch Pytorch est un cadre d'apprentissage automatique open source qui facilite la transition transparente de la recherche et du prototypage au déploiement au niveau de la production.
MLIR Le projet MLIR propose une nouvelle approche pour construire des architectures de compilation extensibles et réutilisables, qui abordent la question de la fragmentation des logiciels, réduisent le coût du développement des compilateurs spécifiques au domaine, améliorent la compilation pour le matériel hétérogène et favorisent la compatibilité entre les compilateurs existants.
TORCH-MLIR Plusieurs fournisseurs ont adopté Mlir comme couche intermédiaire dans leurs systèmes, leur permettant de cartographier des frameworks tels que Pytorch, Jax et TensorFlow dans Mlir et les abaisser par la suite à leur matériel cible. Nous avons observé une demi-douzaine de baisses personnalisées de Pytorch au Mlir, ce qui permet aux fournisseurs de matériel de se concentrer plus facilement sur leur valeur unique, plutôt que de devoir implémenter un autre frontage Pytorch pour Mlir. L'objectif ultime est d'être similaire aux fournisseurs de matériel actuels ajoutant une prise en charge cible LLVM, plutôt que chacune implémentant Clang ou un frontend C ++.
Nous avons peu de chemins pour abaisser vers le dialecte de la torche Mlir.
#torch-mlir sur la discorde LLVM - c'est le canal de communication le plus actiftorch-mlir du discours LLVM Au moment de la rédaction, nous publions des instantanés prédéfinis de Torch-Mlir pour Python 3.11 et Python 3.10.
Si vous avez pris en charge la version Python, les commandes suivantes initialisent un environnement virtuel.
python3.11 -m venv mlir_venv
source mlir_venv/bin/activateOu, si vous souhaitez passer à plusieurs versions de Python à l'aide de Conda, vous pouvez créer un environnement conda avec Python 3.11.
conda create -n torch-mlir python=3.11
conda activate torch-mlir
python -m pip install --upgrade pipEnsuite, nous pouvons installer Torch-Mlir avec les nightlies de torche et de torche correspondantes.
pip install --pre torch-mlir torchvision
--extra-index-url https://download.pytorch.org/whl/nightly/cpu
-f https://github.com/llvm/torch-mlir-release/releases/expanded_assets/dev-wheels
Torch-Mlir est principalement un projet qui est intégré dans les compilateurs pour les combler à Pytorch et ONNX. Si vous envisagez une nouvelle intégration, il peut être utile de se référer aux en aval existant:
Bien que la majeure partie du projet soit exercée par des chemins de test, il existe des moyens qu'un utilisateur final puisse utiliser directement les API sans autre intégration:
# Get the latest example if you haven't checked out the code
wget https://raw.githubusercontent.com/llvm/torch-mlir/main/projects/pt1/examples/fximporter_resnet18.py
# Run ResNet18 as a standalone script.
python projects/pt1/examples/fximporter_resnet18.py
# Output
load image from https://upload.wikimedia.org/wikipedia/commons/2/26/YellowLabradorLooking_new.jpg
...
PyTorch prediction
[( ' Labrador retriever ' , 70.65674591064453), ( ' golden retriever ' , 4.988346099853516), ( ' Saluki, gazelle hound ' , 4.477451324462891)]
torch-mlir prediction
[( ' Labrador retriever ' , 70.6567153930664), ( ' golden retriever ' , 4.988325119018555), ( ' Saluki, gazelle hound ' , 4.477458477020264)]Le projet suit les conventions des projets typiques basés sur MLIR:
include/torch-mlir , structure lib pour les dialectes / passes du compilateur C ++ Mlir.test pour maintenir le code de test.tools pour torch-mlir-opt et autres.python pour le code Python Si vous souhaitez développer et construire Torch-Mlir à partir de la source, veuillez consulter les notes de développement