El proyecto Torch-Mlir tiene como objetivo proporcionar soporte de compilador de primera clase desde el ecosistema Pytorch al ecosistema MLIR.
Este proyecto participa en el proceso de incubadora LLVM: como tal, no forma parte de ninguna versión oficial de LLVM. Si bien el estado de incubación no es necesariamente un reflejo de la integridad o estabilidad del código, sí indica que el proyecto aún no está respaldado como un componente de LLVM.
Pytorch Pytorch es un marco de aprendizaje automático de código abierto que facilita la transición perfecta de la investigación y la creación de prototipos a la implementación de nivel de producción.
MLIR El proyecto MLIR ofrece un enfoque novedoso para construir arquitecturas de compiladores extensibles y reutilizables, que abordan el problema de la fragmentación de software, reducen el costo de desarrollar compiladores específicos de dominio, mejoran la compilación para el hardware heterogéneo y promueven la compatibilidad entre los compiladores existentes.
Torch-Mlir Varios proveedores han adoptado MLIR como la capa media en sus sistemas, permitiéndoles mapear marcos como Pytorch, Jax y Tensorflow en MLIR y posteriormente los baja a su hardware objetivo. Hemos observado media docena de bajadas las bajas personalizadas de Pytorch a MLIR, lo que hace que sea más fácil para los proveedores de hardware centrarse en su valor único, en lugar de necesitar implementar otra frontend de Pytorch para MLIR. El objetivo final es ser similar a los proveedores de hardware actuales que agregan soporte de destino LLVM, en lugar de cada uno implementando Clang o una frontend C ++.
Tenemos pocos caminos para bajar al dialecto Mlir de antorcha.
#torch-mlir en la discordia LLVM: este es el canal de comunicación más activotorch-mlir del discurso LLVM Al momento de escribir, lanzamos instantáneas preconstruidas de Torch-Mlir para Python 3.11 y Python 3.10.
Si ha admitido la versión de Python, los siguientes comandos inicializan un entorno virtual.
python3.11 -m venv mlir_venv
source mlir_venv/bin/activateO, si desea cambiar múltiples versiones de Python usando Conda, puede crear un entorno de conda con Python 3.11.
conda create -n torch-mlir python=3.11
conda activate torch-mlir
python -m pip install --upgrade pipLuego, podemos instalar Torch-Mlir con los noches de antorcha y atorchvision de antorchas correspondientes.
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 es principalmente un proyecto que se integra en los compiladores para unirlos a Pytorch y ONNX. Si contempla una nueva integración, puede ser útil referirse a los aguas abajo existentes:
Si bien la mayor parte del proyecto se ejerce a través de rutas de prueba, hay algunas formas en que un usuario final puede usar directamente las API sin más integración:
# 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)]El proyecto sigue las convenciones de proyectos típicos basados en MLIR:
include/torch-mlir , estructura lib para dialectos/pases del compilador C ++ MLIR.test para mantener el código de prueba.tools para torch-mlir-opt y tal.python para el código Python Si desea desarrollar y construir Torch-Mlir a partir de la fuente, mire las notas de desarrollo