O projeto Torch-MLIR visa fornecer suporte de compilador de primeira classe do ecossistema Pytorch ao ecossistema MLIR.
Este projeto está participando do processo de incubadora de LLVM: como tal, não faz parte de nenhuma versão oficial do LLVM. Embora o status de incubação não seja necessariamente um reflexo da integridade ou estabilidade do código, indica que o projeto ainda não foi endossado como um componente do LLVM.
O Pytorch Pytorch é uma estrutura de aprendizado de máquina de código aberto que facilita a transição perfeita da pesquisa e prototipagem para a implantação no nível da produção.
MLIR O projeto MLIR oferece uma abordagem nova para a construção de arquiteturas de compiladores extensíveis e reutilizáveis, que abordam a questão da fragmentação de software, reduzem o custo do desenvolvimento de compiladores específicos de domínio, melhoram a compilação para hardware heterogêneo e promove a compatibilidade entre os compiladores existentes.
Torch-mlir Vários fornecedores adotaram o MLIR como a camada média em seus sistemas, permitindo que eles mapeiam estruturas como Pytorch, Jax e Tensorflow no MLIR e subsequentemente os abaixam para seu hardware alvo. Observamos meia dúzia de baixas personalizadas de Pytorch para MLIR, facilitando o foco dos fornecedores de hardware em seu valor exclusivo, em vez de precisar implementar mais um Frontend Pytorch para MLIR. O objetivo final é ser semelhante aos fornecedores atuais de hardware, adicionando suporte de destino LLVM, em vez de cada um implementando o CLANG ou um frontend C ++.
Temos poucos caminhos para abaixar o dialeto da tocha mlir.
#torch-mlir no LLVM Discord - este é o canal de comunicação mais ativotorch-mlir do discurso LLVM No momento da redação deste artigo, lançamos instantâneos pré-criados do Torch-Mlir para Python 3.11 e Python 3.10.
Se você apoiou a versão Python, os seguintes comandos inicializam um ambiente virtual.
python3.11 -m venv mlir_venv
source mlir_venv/bin/activateOu, se você deseja alternar várias versões do Python usando o CONDA, poderá criar um ambiente CONDA com o Python 3.11.
conda create -n torch-mlir python=3.11
conda activate torch-mlir
python -m pip install --upgrade pipEm seguida, podemos instalar a Torch-Mlir com a tocha correspondente e a Torchvision Nightlies.
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
A Torch-Mlir é principalmente um projeto que é integrado aos compiladores para preencher-os para Pytorch e Onnx. Se contemplar uma nova integração, pode ser útil se referir aos jusantes existentes:
Embora a maior parte do projeto seja exercida por meio de caminhos de teste, existem algumas maneiras pelas quais um usuário final pode usar diretamente as APIs sem mais integração:
# 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)]O projeto segue as convenções de projetos típicos baseados em MLIR:
include/torch-mlir , estrutura lib para os dialetos/passes do compilador MLIR C ++.test para manter o código de teste.tools para torch-mlir-opt e tal.python para código Python Se você deseja desenvolver e construir o Torch-Mlir a partir da fonte, veja as notas de desenvolvimento