Transition to Unity Branch
tqchen opened this issue · 8 comments
Thanks to the effort of many, we are now at a stage where most of the related relax components are now part of apache/unity. Thanks to the effort of many, the unity branch now contains most of the changes in tlc with a cleaned-up history to enable easier rebasing.
I would like to propose that we start a freeze and transition period so we can switch over tlc/relax development effort to apache unity. We can discuss this item in the incoming community meeting and start transition at that time pt.
- We will stop sending PRs about new code contributions to tlc/relax; please send PRs to apache/unity branch with the tag [Unity] as the prefix. Depending on the authors and reviewers, we can continue to work on some of the outstanding ones.
- Admittedly, we could still miss some of the features(e.g. Some BYOC components). Let us work together to send these remaining modules to apache/unity. To keep the module in a clean slate, we do not need to pick the history but instead can manually extract the current state of the modules, add relevant people as co-authors and bring them to the unity branch. Let us aim to bring the code in an agile manner, then have follow-up polishment PRs so we can iterate on it.
- We will continue to use the issue tracker in tlc/relax to track the remaining TODOs until the end of the transition period.
In the meantime, we can use the forum unity tag for design discussions and related proposals. Additionally, we can use the apache issue tracker with [Unity] prefix and label(branch: Unity). We encourage creating a thread for existing items(such as BYOC), as they can attract new audiences to the topic. - We will create a list of tracking to check the remaining items to Unity and send them timely.
- The unity branch will still use an rebase operation mode to keep sync with main during the transition period, we will continue use the relax discord channel as a way to semi-sync communicate the related efforts.
Thanks, everyone, for bearing with us through the transition period. We understand that this will take a bit of extra work, but it is a positive step towards bringing development in the apache tvm community and towards a normal state of development after the transition.
Tracking Remaining Items to send to Unity Branch
This is a tracking list that we will keep updating in the following weeks. Please also help add to this list
Components
The following module components do not yet exists in unity and needs to be upstreamed.
- BYOC
- RunCodegen Basic Infra @sunggg
- DNNL
- cutlass
- TensorRT
- FuseOpsByPattern apache/tvm#14054
- MergeCompositeFunctions
- AST debug printer
- Expr arg converter tests: test_expr_args_converter.py
- CanonicalizeBinding
- CopyWithNewVars
Outstanding PRs
We need to confirm if we need to send follows PRs to the unity branch
We've just finished upstreaming all BYOC stuff.
What is the status of the transition? How much longer will the rebasing continue for? We'd like to use unity
as the base branch for our downstream work, but the rebases will make it harder.
Thanks to everyone's effort. We are getting close to the ready. We will likely use the incoming two weeks for closing up some finished of items, then start to enter a period of more stable dev.
After the most recent rebase we get this:
$ git merge unity
Auto-merging web/emcc/webgpu_runtime.cc
CONFLICT (add/add): Merge conflict in tests/python/relax/test_tvmscript_parser.py
Auto-merging tests/python/relax/test_tvmscript_parser.py
CONFLICT (add/add): Merge conflict in tests/python/relax/test_dataflow_pattern.py
Auto-merging tests/python/relax/test_dataflow_pattern.py
Auto-merging src/tir/transforms/lower_tvm_builtin.cc
CONFLICT (content): Merge conflict in src/tir/transforms/lower_tvm_builtin.cc
Auto-merging src/tir/op/builtin.cc
CONFLICT (content): Merge conflict in src/tir/op/builtin.cc
Auto-merging src/target/source/codegen_webgpu.cc
Auto-merging src/target/llvm/codegen_hexagon.cc
Auto-merging src/target/llvm/codegen_cpu.cc
Auto-merging src/runtime/module.cc
Auto-merging src/runtime/library_module.cc
Auto-merging src/runtime/hexagon/hexagon_module.h
CONFLICT (add/add): Merge conflict in src/relax/ir/dataflow_pattern.cc
Auto-merging src/relax/ir/dataflow_pattern.cc
CONFLICT (add/add): Merge conflict in src/relax/ir/dataflow_matcher.cc
Auto-merging src/relax/ir/dataflow_matcher.cc
CONFLICT (add/add): Merge conflict in src/relax/ir/binding_rewrite.cc
Auto-merging src/relax/ir/binding_rewrite.cc
CONFLICT (add/add): Merge conflict in src/relax/analysis/udchain.cc
Auto-merging src/relax/analysis/udchain.cc
Auto-merging python/tvm/topi/nn/__init__.py
Auto-merging python/tvm/topi/hexagon/qnn/nn.py
CONFLICT (content): Merge conflict in python/tvm/topi/hexagon/qnn/nn.py
Auto-merging python/tvm/tir/transform/transform.py
Auto-merging python/tvm/runtime/module.py
CONFLICT (add/add): Merge conflict in python/tvm/relax/op/vm/vm.py
Auto-merging python/tvm/relax/op/vm/vm.py
CONFLICT (add/add): Merge conflict in python/tvm/relax/dpl/pattern.py
Auto-merging python/tvm/relax/dpl/pattern.py
CONFLICT (add/add): Merge conflict in python/tvm/relax/dpl/__init__.py
Auto-merging python/tvm/relax/dpl/__init__.py
CONFLICT (add/add): Merge conflict in python/tvm/relax/__init__.py
Auto-merging python/tvm/relax/__init__.py
Auto-merging include/tvm/tir/transform.h
Auto-merging include/tvm/tir/builtin.h
CONFLICT (content): Merge conflict in include/tvm/tir/builtin.h
CONFLICT (add/add): Merge conflict in include/tvm/runtime/relax_vm/executable.h
Auto-merging include/tvm/runtime/relax_vm/executable.h
Auto-merging include/tvm/runtime/module.h
Auto-merging include/tvm/relay/transform.h
CONFLICT (add/add): Merge conflict in include/tvm/relax/dataflow_pattern.h
Auto-merging include/tvm/relax/dataflow_pattern.h
CONFLICT (add/add): Merge conflict in include/tvm/relax/dataflow_matcher.h
Auto-merging include/tvm/relax/dataflow_matcher.h
CONFLICT (add/add): Merge conflict in include/tvm/relax/binding_rewrite.h
Auto-merging include/tvm/relax/binding_rewrite.h
Auto-merging CMakeLists.txt
Automatic merge failed; fix conflicts and then commit the result.
I don't want to keep dealing with this. We want to support unity, and we're adopting it, but this is not making our lives easy. I don't know what benefits we get out of rebases that are worth the hassle.
Thanks @kparzysz-quic for bringing it up. We bought up in our last open dev meeting that we will start transition to try out merge except and only use rebase for possible major refactors where linearization can make history cleaner.
After the recent set of changes we are getting into that mode of smooth operation. Let us discuss and start try out in the incoming community meeting.
Cross linking apache/tvm#13876. This issue can now be closed as all of our developments are transitioned as part of the unity branch. Thanks everyone's effort to making it happen and thank you for bearing with us during this initial establishment period.
@kparzysz-quic Try git rebase --onto upstream/unity upstream/unity-rebase-backup-2023-04-01