iree

👻

Github星跟蹤圖

IREE: Intermediate Representation Execution Environment

IREE (Intermediate Representation Execution Environment,
pronounced as "eerie") is an MLIR-based end-to-end compiler that lowers ML
models to a unified IR optimized for real-time mobile/edge inference against
heterogeneous hardware accelerators. IREE also provides flexible deployment
solutions for the compiled ML models.

Project Status

IREE is still in its early phase. We have settled down on the overarching
infrastructure and are actively improving various software components as well as
project logistics. It is still quite far from ready for everyday use and is made
available without any support at the moment. With that said, we welcome any kind
of feedback on any communication channels!

Communication Channels

  • MLIR topic within LLVM Discourse:
    IREE is enabled by and heavily relies on MLIR. IREE
    sometimes is referred to in certain MLIR discussions. Useful if you are also
    interested in MLIR evolution.

Getting Started

For development, IREE supports both Bazel and CMake on Windows and Linux. We are
working on enabling macOS support. For deployment, IREE aims to additionally
cover Android and iOS.

Please see the Getting Started
pages on IREE's documentation hub to configure,
compile, and run IREE in your favorite development environment!

Documentation and Talks

IREE hosts all its documentation and project status dashboards on
GitHub Pages. We are still building up the
website; please feel free to
create issues for the documentation
you'd like to see!

We also have some public talks that explain IREE's concepts and architecture:

  • 2020-03-18: Interactive HAL IR Walkthrough (Ben Vanik and core team)
    (recording)
  • 2020-01-31: End-to-end MLIR Workflow in IREE
    (recording
    and
    slides)

Architecture and Goals

IREE adopts a holistic approach towards ML model compilation: the IR produced
contains both the scheduling logic, required to communicate data dependencies
to low-level parallel pipelined hardware/API like Vulkan, and the execution
logic, encoding dense computation on the hardware in the form of
hardware/API-specific binaries like SPIR-V.

The architecture of IREE is best illustrated by the following picture:

IREE Architecture

Being compilation-based means IREE does not have a traditional runtime that
dispatches "ops" to their fat kernel implementations. What IREE provides is a
toolbox for different deployment scenarios. It scales from running generated
code on a particular API (such as emitting C code calling external DSP kernels),
to a HAL (Hardware Abstraction Layer) that allows the same generated
code to target multiple APIs (like Vulkan and Direct3D 12), to a full VM
allowing runtime model loading for flexible deployment options and heterogeneous
execution.

IREE aims to

  • Support advanced models on mobile/edge devices. Dynamic shapes, dynamic flow
    control, dynamic multi-model dispatch, streaming models, tree-based search
    algorithms, and other are all good examples of exciting ML evolution. We are
    trying to build IREE from the ground-up to enable these models and run them
    efficiently on modern hardware, especially on mobile/edge devices.
  • Demonstrate MLIR's ability to develop non-traditional ML compiler backends
    and runtimes. MLIR enables IREE's holistic approach of focusing on the math
    being performed and how that math is scheduled rather than graphs of "ops".
  • Embrace standard-based ML via Vulkan. The graphics world is shifting towards
    favoring modern explicit APIs for performance and predictability and Vulkan
    is emerging as the "compatibility" layer. We would love to allow hardware
    vendors to be able to make ML efficient on their hardware without the need
    for bespoke runtimes and special access. We also would love to let
    developers and users utilize all the hardware available on as many platforms
    as possible.

Roadmap and Milestones

IREE is in the early stages of development and not yet ready for broad adoption.
Check out the long-term design roadmap to get
a sense of where we're headed.

We plan on a quarterly basis using OKRs.
Review our latest objectives to get a sense of what
we're up to in the near term.

We use GitHub Projects to track
progress on IREE components and specific efforts. We use
GitHub Milestones to track the
work associated with plans for each quarter.

Build Status

CI System, Build System, Platform, Architecture, Component, Status
:-------:, :----------:, :------:, :-------------:, :------------------:, :----:
Kokoro, Bazel, Linux, x86, Core, kokoro_status_bazel_linux_x86_core
Kokoro, Bazel, Linux, x86, Bindings, kokoro_status_bazel_linux_x86_bindings
Kokoro, Bazel, Linux, x86-swiftshader, Integrations, kokoro_status_bazel_linux_x86-swiftshader_integrations
Kokoro, Bazel, Linux, x86-turing, Integrations, kokoro_status_bazel_linux_x86-turing_integrations
Kokoro, CMake, Linux, x86-swiftshader, Core + Bindings, kokoro_status_cmake_linux_x86-swiftshader
Kokoro, CMake, Linux, x86-turing, Core + Bindings, kokoro_status_cmake_linux_x86-turing
Kokoro, CMake, Android, arm64-v8a, Runtime (build only), kokoro_status_cmake_android_arm64-v8a
BuildKite, CMake, Android, arm64-v8a, Runtime, buildkite-status-cmake-android-arm

License

IREE is licensed under the terms of the Apache license. See LICENSE
for more information.

主要指標

概覽
名稱與所有者iree-org/iree
主編程語言C++
編程語言C++ (語言數: 19)
平台
許可證Apache License 2.0
所有者活动
創建於2019-09-12 20:57:39
推送於2025-06-09 14:54:13
最后一次提交
發布數2022
最新版本名稱iree-3.5.0rc20250609 (發布於 )
第一版名稱snapshot-20210107.21 (發布於 )
用户参与
星數3.2k
關注者數91
派生數704
提交數17.7k
已啟用問題?
問題數4476
打開的問題數1233
拉請求數12754
打開的拉請求數58
關閉的拉請求數3663
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?