โครงการ Torch-MLIR มีวัตถุประสงค์เพื่อให้การสนับสนุนคอมไพเลอร์ชั้นหนึ่งจากระบบนิเวศ Pytorch ไปยังระบบนิเวศ MLIR
โครงการนี้มีส่วนร่วมในกระบวนการศูนย์บ่มเพาะ LLVM: ดังนั้นจึงไม่ได้เป็นส่วนหนึ่งของการเปิดตัว LLVM อย่างเป็นทางการ ในขณะที่สถานะการฟักตัวไม่จำเป็นต้องเป็นภาพสะท้อนของความสมบูรณ์หรือความเสถียรของรหัส แต่ก็บ่งชี้ว่าโครงการยังไม่ได้รับการรับรองเป็นส่วนประกอบของ LLVM
Pytorch Pytorch เป็นกรอบการเรียนรู้ของเครื่องโอเพนซอร์สที่อำนวยความสะดวกในการเปลี่ยนผ่านอย่างราบรื่นจากการวิจัยและการสร้างต้นแบบไปสู่การปรับใช้ระดับการผลิต
MLIR โครงการ MLIR นำเสนอวิธีการใหม่สำหรับการสร้างสถาปัตยกรรมคอมไพเลอร์ที่ขยายได้และนำกลับมาใช้ใหม่ได้ซึ่งแก้ไขปัญหาการกระจายตัวของซอฟต์แวร์ลดค่าใช้จ่ายในการพัฒนาคอมไพเลอร์เฉพาะโดเมนปรับปรุงการรวบรวมฮาร์ดแวร์ที่แตกต่างกันและส่งเสริมความเข้ากันได้ระหว่างคอมไพเลอร์ที่มีอยู่
Torch-MLIR ผู้ขายหลายรายได้นำ MLIR มาใช้เป็นชั้นกลางในระบบของพวกเขาทำให้พวกเขาสามารถทำแผนที่เฟรมเวิร์กเช่น Pytorch, Jax และ Tensorflow ลงใน MLIR และลดลงไปยังฮาร์ดแวร์เป้าหมายของพวกเขา เราได้สังเกตการลดลงครึ่งโหลจาก Pytorch ถึง MLIR ทำให้ผู้ขายฮาร์ดแวร์มุ่งเน้นไปที่คุณค่าที่เป็นเอกลักษณ์ของพวกเขาได้ง่ายขึ้น เป้าหมายสูงสุดคือการคล้ายกับผู้ขายฮาร์ดแวร์ปัจจุบันที่เพิ่มการสนับสนุนเป้าหมาย LLVM แทนที่จะเป็นแต่ละการใช้งาน Clang หรือ Frontend C ++
เรามีเส้นทางไม่กี่เส้นทางที่จะลดลงไปที่คบเพลิง MLIR ภาษา
#torch-mlir บน LLVM Discord - นี่คือช่องทางการสื่อสารที่ใช้งานมากที่สุดtorch-mlir ของวาทกรรม LLVM ในช่วงเวลาของการเขียนเราปล่อยสแนปชอตที่สร้างไว้ล่วงหน้าของ Torch-MLIR สำหรับ Python 3.11 และ Python 3.10
หากคุณมีเวอร์ชัน Python ที่รองรับคำสั่งต่อไปนี้จะเริ่มต้นสภาพแวดล้อมเสมือนจริง
python3.11 -m venv mlir_venv
source mlir_venv/bin/activateหรือหากคุณต้องการเปลี่ยน Python หลายรุ่นโดยใช้ Conda คุณสามารถสร้างสภาพแวดล้อม conda ด้วย Python 3.11
conda create -n torch-mlir python=3.11
conda activate torch-mlir
python -m pip install --upgrade pipจากนั้นเราสามารถติดตั้งคบเพลิง-MLIR ด้วยคบเพลิงที่สอดคล้องกันและ Nightlies Torchvision
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 เป็นโครงการที่รวมเข้ากับคอมไพเลอร์เป็นหลักเพื่อเชื่อมพวกเขาไปยัง Pytorch และ Onnx หากใคร่ครวญการบูรณาการใหม่อาจเป็นประโยชน์ในการอ้างถึงดาวน์สตรีมที่มีอยู่:
ในขณะที่โครงการส่วนใหญ่ใช้งานผ่านเส้นทางการทดสอบมีบางวิธีที่ผู้ใช้ปลายทางสามารถใช้ API โดยตรงโดยไม่ต้องรวมเพิ่มเติม:
# 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)]โครงการดังต่อไปนี้การประชุมของโครงการที่ใช้ MLIR ทั่วไป:
include/torch-mlir โครงสร้าง lib สำหรับภาษาคอมไพเลอร์ C ++ MLIR/ผ่านtest รหัสทดสอบtools สำหรับ torch-mlir-opt และอื่น ๆpython สำหรับรหัส Python หากคุณต้องการพัฒนาและสร้าง Torch-MLIR จากแหล่งที่มาโปรดดูที่บันทึกการพัฒนา