I am sending this post as a followup to the TVM unity related development. Specifically, we would like to start a branch development in the tvm community, as a first step of execution.
The main reason of branch development contains two folds. (a) We would like to follow an existing practice enabled by ASF mechanisms and used as existing practices such as Hadoop to enable related development in the tvm community and empower community members who would like to participate. (b) We could give some extra time to develop concrete code examples, tutorials, and community engagement to provide more information to the community members and answering more querstions.
ASF mechanism allows any committer to create a branch in the apache repo and do collaborative development there at their own pace. Per our existing process, merging a branch into main still requires lazy consensus. Branch development offers flexibility while accepting the risk of blocking when merging to the main. As a result, there are general incentives to keep alignment with the majority of the community and continued engagement to get buy-in. Branch development offers a way to collaborate on a possible but not definitive future of the project, as a branch can come with different outcomes such as being partially merged, continued development, or abandoned. Enabling different perspectives is important for us both as a project and community.
TVM PMC re-affirmed that branch development can be used as an option for the project and specific development around tvm unity. We would like to offer it as a possible option for the community and the first step of execution, with the goal of getting related pieces into main. I wrote down a more details below, which we would love to get everyone’s feedback. Of course, this is only one possible option, and community members can freely choose their ways of participation.
Establish TVM Unity Branch
This post proposes the establishment of the branch
unity under apache/tvm.
TVM Unity is a technical strategy that brings many of our past lessons and unifies key technical components under a Unified Composable Flow. It brings unified technical solutions to enable a broader set of workloads(such as dynamic shape) and a composable flow that standardizes the way to interact with TVM. The proposal has received a wide range of support from community members from more than eight organizations. There are also well-documented MLC course series that introduce the related concepts.
Many of us in the community believe that it is critical to keep re-inventing and evolve our key technical solutions to adapt to the latest improvements in ML compilation in an agile way while continuing to support our existing set of applications. To empower the community members who would like to develop TVM unity together in the community. We will open up a new branch unity that starts incorporating contributions around TVM unity, including relax IR, unified composable flow, and related vertical developments.
ASF mechanism allows any committer to create a branch in the apache repo and do collaborative development there at their own pace. This post seeks to bring awareness to the community of this collective development effort.
The collectively development effort also helps us to be able to develop concrete examples, tutorials, and series of followup community enagagement to provide more information to the community about possibilities and opportunities in the space, and hopefully answer extra questions from those who are not yet on board with related new modules.
Because the goal of the unity branch is to bring unity development that we can all leverage. The branch will have the following charter:
- The primary purpose of the branch is to develop TVM unity-related changes and emphasis on agility iteration with quality.
- We will create specific tags
unityon GH issues to indicate the related development.
- The unity branch will bring changes from main back to the unity to keep things in sync, while sending some of the changes back to main following the standard process. We encourage common changes to the existing component(for example, runtime, metaschedule, TensorIR) to be sent to main.
- Documentation, discussion, and community engagement happen in the same way as standard development.
- We encourage continued conversations in the community to facilitate development awareness of the overall unity evolution.
- Developing non tvm-unity related features is a non-goal in the unity branch, we continue to encourage them to happen in the community per normal development process.
There are several possible outcomes of the unity branch as a consequence of the standard ASF development process:
- Changes in unity are brought back to apache-tvm/main through the standard process. This is the primary goal that we aim to pursue.
- The branch development efforts die down.
- Unity and main evolve into different products or different projects.
- Releases can be created from both the unity branch for users who would need these features, following the standard ASF release process.
Note that these are common results of the standard ASF development process, and they may not be exclusive to each other. For example, some of the changes can be brought back, and the branch development effort dies down.
The primary intent of the unity branch is to bring the changes back to main and bring TVM to the next stage. This proposal will enable community members who are interested in unity development to participate in unity development collectively. It will also allow us to continue to bring features to the main and continue developments there.
The initial branch will be created by Tianqi Chen as an initial coordination effort and overseen by the TVM PMC. We also invite additional community members to help coordinate the overall development, including developer meetings and will invite more contributors to co-host the related efforts.