Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apache TVM v0.8 Release Note Candidate #9416

Closed
junrushao opened this issue Nov 1, 2021 · 12 comments
Closed

Apache TVM v0.8 Release Note Candidate #9416

junrushao opened this issue Nov 1, 2021 · 12 comments

Comments

@junrushao
Copy link
Member

junrushao commented Nov 1, 2021

Apache TVM v0.8 Release Note

Overview

Apache TVM v0.8 brings several major exciting experimental features, including:

  • PaddlePaddle frontend
  • TVMScript: round-trippable python-based syntax for TIR
  • TorchScript integration
  • TensorIR scheduling language
  • TensorRT and CUTLASS integration via BYOC
  • Int4 TensorCore support in AutoTVM
  • MicroTVM Project API and Zephyr, Arduino support
  • AOT executor
  • Robost Windows support
  • Affine analysis infra: iter-affine-map
  • Improved Vulkan backend
  • CUDA graph support in TVM runtime

Besides, The community has been working together to refactor and evolve the existing infrastructure, including but not limited to:

  • Relay compilation engine
  • Relay pattern language
  • CI and build process
  • Refactoring documentation and tutorials
  • Stablizing AutoScheduler
  • Stablizing TVMC command line driver interface
  • Stablizing target system
  • Frontend coverage, quantization, dynamic shape, training

Full changelog: https://gist.github.com/junrushao1994/c669905dbc41edc2e691316df49d8562.

Accepted RFCs

The community has adopted a formal RFC process. Below is a list of the formal RFCs accepted by the community since then:

  • [RFC-0005] Meta schedule (AutoTIR)
  • [RFC-0006] Automatic mixed-precision pass and support
  • [RFC-0007] Parametrized unit tests
  • [RFC-0008] MicroTVM Project API
  • [RFC-0009] Unified static memory planner
  • [RFC-0010] Target-registered compiler flow customisation
  • [RFC-0011] Arm® Ethos-U integration
  • [RFC-0014] Pipeline executor
  • [RFC-0015] Use CMSIS-NN with TVM
  • [RFC-0019] Add PaddlePaddle frontend
  • [RFC-0020] Extend metadata in project option
  • [RFC-0022] TIR non-scalar constants
  • [RFC-0023] Adding annotation field to tir.allocate nodes
  • [RFC-0025] PyTorchTVM
  • [RFC-0027] Formalize TVM documentation organization
  • [RFC-0028] Command line composition from internal registry
  • [RFC-0029] Migrating target attributes to IRModule
  • [RFC-0030] Command line configuration files
  • [RFC-0031] C Device API
  • [RFC-0036] TVMScript namespace
  • [RFC-0041] Update TVMScript block syntax

Features and Improvements

TE, TIR, TVMScript

AutoTVM, AutoScheduler, Meta Schedule

Operator Coverage

Training

Relay

MicroTVM, AOT, Graph Executor and VM

Arithmetic Analysis

  • Tighter bounds and more simplification on cast #6771 #7045
  • Introducing iterator (quasi-) affine map detection #6667 #7752 #7759
  • Inverse of iterator affine map #8384 #8427
  • Subspace division in iterator affine map #7760

Frontends

Codegen Backends and Runtime

BYOC Integration with Vendor Libraries: TensorRT, ACL, VitisAI

TVMC

Rust Binding

Misc

  • Enhanced CPP-RPC implementation: allow user supplied work dir, support of CPP-RPC server for Apple, support adb-shell style CPP-RPC #7670 #8224 #8223 #7766 #7013
  • Use PopenWorker to handle RPC system: #7889 #7757 #7961
  • Fold target host into target #7462 #7791 #7534 #8835
  • Target-based intrinsic lowering and legalization #7936 #7809
  • Add target tags for all existing CUDA GPU models #7410
  • Linear Congruential Random Engine #8642
@junrushao junrushao changed the title TVM v0.8 Release Note Candidate Apache TVM v0.8 Release Note Candidate Nov 1, 2021
@masahi
Copy link
Member

masahi commented Nov 1, 2021

Better to replace "Vulkan backend" at the "major exciting experimental features" section with `Improved Vulkan backend", since the vk backend has been around for a long time by now.

@junrushao
Copy link
Member Author

@masahi @Lunderberg Yeah I totally agree! Would you guys suggest more details like "improved vulkan backends on ..."? Thanks a lot!

@masahi
Copy link
Member

masahi commented Nov 2, 2021

Ok replaced with "Improved Vulkan backend" at the overview, and added following, unusually more details in "Codegen Backends and Runtime" to show off our vk capability.

A critical bug fix in SPIRV codegen allows the Vulkan backend to produce correct outputs on more hardwares and drivers. Added support for querying device specific hardware parameters and capabilities, dynamic shapes, irregular ops such as sorting and NMS, UBO, fp16, and vectorization. We can now run complicated models like MaskRCNN on Vulkan end to end.

@masahi
Copy link
Member

masahi commented Nov 2, 2021

Should we wait for PyTorch TVM PR #8777? It should be merged soon.

@jiangjiajun
Copy link
Contributor

Thanks @junrushao1994 !

There are 2 part I think we may need to fix

For the Accepted RFCs part,

[RFC-0019] Add paddlePaddle frontend

it should be [RFC-0019] Add PaddlePaddle frontend, just a case problem

And for the Frontends part,

PaddlePaddle initial support #8645

I have checked the v0.8 branch, there are 6 pull requests merged, we could list them all like others
#8645 #9126 #9236 #9283 #9295 #9370

@junrushao
Copy link
Member Author

Thank you @masahi for helping edit the description for Vulkan! It looks pretty nice to me :-)

Thanks @jiangjiajun for proofreading the PaddlePaddle-related text. Yep these commits were not there a month ago when we collected the initial changelog draft. Thanks to @vinx13, who acted swiftly and added these commits into both the release notes and the changelog today, these PRs you mentioned are included in the latest draft!

@junrushao
Copy link
Member Author

Should we wait for PyTorch TVM PR #8777? It should be merged soon.

@masahi we can wait for it if this PR could get in this week

@jiangjiajun
Copy link
Contributor

jiangjiajun commented Nov 4, 2021

Should we wait for PyTorch TVM PR #8777? It should be merged soon.

@masahi we can wait for it if this PR could get in this week

Does this mean we will update v0.8 branch again this week, I merged a new pull request this week early #9428 , will it be in v0.8?
I'd love to see this pull request update to v0.8, it will support more operators for PaddlePaddle frontend.

@junrushao
Copy link
Member Author

@jiangjiajun Yes, we will update v0.8 branch and cut a release candidate on Nov 8, 2021. After the cut, we will ask the community and PMC members to test to release, and if there is no regression we will make the release official

1 similar comment
@junrushao
Copy link
Member Author

@jiangjiajun Yes, we will update v0.8 branch and cut a release candidate on Nov 8, 2021. After the cut, we will ask the community and PMC members to test to release, and if there is no regression we will make the release official

@mehrdadh
Copy link
Member

I have tested v0.8 release on microtvm physical hardware for Arduino and Zephyr platforms. It passes the tests for these hardware:

  • Zephyr: qemu_x86, nrf5340dk_nrf5340_cpuapp, nucleo_l4r5zi, stm32f746g_disco, nucleo_f746zg
  • Arduino: due

@junrushao
Copy link
Member Author

junrushao commented Nov 24, 2021

The release candidate v0.8.rc0 is approved:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants