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

Ansor Stabilization Todo Items Tracking #6133

Closed
4 tasks
merrymercy opened this issue Jul 24, 2020 · 3 comments
Closed
4 tasks

Ansor Stabilization Todo Items Tracking #6133

merrymercy opened this issue Jul 24, 2020 · 3 comments

Comments

@merrymercy
Copy link
Member

merrymercy commented Jul 24, 2020

This issue is used to track all unresolved todo items in Ansor (RFC) during upstream.

Motivation and Plan

Ansor has more than 13K lines of code in our internal codebase.
To upstream the huge code base of Ansor, we divide Ansor into several (10+) small PRs to make the review process easier.

However, addressing every little detail in these small PRs makes the upstream process slow and painful.
The refactor/renaming happens in one PR will affect later PRs and bring extra efforts to the latter PRs because we have to maintain two codebases at the same time. (i.e. tvm master and our internal codebase)

Therefore, the plan is to merge these small PRs quickly and then do a round of polish before the release.
The polish phase will happen after we got most of the code merged. So we do not have to maintain two codebases and only need to do refactor/renaming in a single place.
The polish phase will mainly focus on API design and documentation.

This plan does not mean the quality of the small PRs is low. Actually, all these small PRs are carefully reviewed by multiple people and most of the comments are addressed. The first PR of Ansor got 436 comments, making it one of the most commented PR, if not the most, in the TVM history.

Todo items

  • The design of python/tvm/auto_schedule/auto_scheduler.py::auto_schedule. This is the most important user interface to use the auto-scheduler. We will send an RFC to discuss this.
  • Consolidate the usage of python/tvm/auto_schedule/utils.py::get_const_int, python/tvm/auto_schedule/utils.py::get_const_tuple in the whole TVM code base.
  • Improve the hash of LoopState and TransformStep. Try to implement it with SHashReduce, SEqualReduce
  • Improve the record serialization format. Do not use only a hash key as the workload key. Try to use a relay subgraph as the hash key.
@merrymercy merrymercy changed the title Ansor Stabalization Tracking Ansor Stabalization Todo Items Tracking Jul 24, 2020
@merrymercy merrymercy changed the title Ansor Stabalization Todo Items Tracking Ansor Stabilization Todo Items Tracking Jul 24, 2020
@tqchen
Copy link
Member

tqchen commented Jul 25, 2020

cc @jroesch @jwfromm @yzhliu @ajtulloch

@tqchen
Copy link
Member

tqchen commented Nov 1, 2020

@merrymercy would be great if we can update the status of the issue

@merrymercy
Copy link
Member Author

merrymercy commented Dec 9, 2020

The functionality of Ansor is complete. Tutorials on tuning operators/networks on CPU/GPU are available on https://tvm.apache.org/docs/tutorials/#autoscheduler-template-free-auto-scheduling
The APIs should be stable.

Some remaining performance enhancements (layout rewrite support for more ops, winograd for CPU) will be finished by one or two follow-ups PRs.

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

No branches or pull requests

2 participants