Overview
Documentation is one of the pieces of TVM that we would like to improve in the near future. Currently, much of our documentation is tutorial-focused, but we would like to add several new types of documentation in the future. The Documentation Refactor RFC from July proposes four types of documentation:
- Introductory Tutorials: Practical documents that are most helpful in helping new users learn the software.
- How-to Guides: Practical documents that are most helpful in getting work done.
- References: Advanced documents that are most helpful in getting work done
- Deep Dives: Advanced documents that are most helpful in learning they whyâs of the software.
An open question is where these should live in the Sphinx doctree. This RFC proposes an organization and seeks feedback from the community.
Landing Pages
Additionally, there is some need for another class of document: a landing page, which is useful to give 10,000-foot explanations of large subjects or describe how components interoperate. The closest example we have to this now is the VTA page, under Misc. We expect to add these sparingly, but we think they will serve as an important top-level directory page for large topics and for TVM verticals.
Also, there are often times in tutorials or other lower-level documentation when it would be helpful to reference a concise definition of a large component (i.e. TIR). A top-level TVM Components landing page can serve both as a directory and a glossary.
We expect to have:
- A TVM Components overview page, which groups TVM components by subject area, briefly defines them and their relationship with others, and links out to tutorials for each component
- A Deploy and Integration landing page, which is just exactly the page we have now. This anticipates further content development here.
- A Developer Guide landing page, which describes the different categories of developer documentation in the TVM Docs page and links out to them
- A ”TVM landing page, which describes the project and its components, and links out to tutorials and design docs.
- A VTA page, which is as is checked-in now.
Tutorial Reorganization
This RFC proposes we reorganize the tutorials according to subject area, and add content describing the grouping at the toctree root. Here is an example tutorial subsection:
- Import Models â Add content here
- Compile Caffe2 Models
- Compile CoreML Models
- Compile Keras Models
- Compile MXNet Models
- Compile ONNX Models
- Compile PyTorch Models
- Compile TensorFlow Models
- Compile TFLite Models
- Compile YOLO-V2 and V3 in DarkNet
Each tutorial in this section demonstrates how to import a model, and some of them also verify the imported Relay model against the original framework. At the end of this process, the user is left with a Relay model plus some parameters. This higher-level pattern isnât currently explained anywhereâthe reader has to deduce it by reading multiple tutorials. This task is especially challenging for users new to ML, such as deployment engineers.
In this example, a brief high-level explanation belongs in the Import Models page at the root of this tutorial category.
Therefore, the root toctree element of each tutorial section should bring the user to a page or subsection that motivates the grouping based on the following questions:
- Briefly, what do these tutorials do?
- Why would you want to do these things?
- If these tutorials describe a common piece of TVM (i.e. Tensor Expression), what is that thing and how does it relate to the compilation process?
- If these tutorials describe a common process, what is that process? What is the user left with at the end of it? Where do they go next?
These descriptions should emphasize brevity so as not to erect too much of a barrier between tutorial groups. They can always link out to landing pages or design docs for a bigger picture with more description about the relationship between this piece of TVM and others.
Toctree Organization
Before I give the full proposed toctree, letâs first look at a generic toctree that demonstrates the proposed layout:
- Getting Started
- Installation
- Getting Started Tutorial (a high-level How-To Guide)
- Landing pages (until we have more than a few)
- Tutorials
- How-to Guides
- Design Docs
- Deep Dives
- References
- References
- Misc
- FAQ
- Index
Proposed Toctree
- Getting Started
- Installation
- Introduction to TVM [A new tutorial similar to Learning PyTorch]
- TVM Components Landing Page
- Deploy and Integration Landing Page
- Developer Guide Landing Page
- ”TVM Landing Page
- VTA Landing Page
- Tutorials
- Import Models
- All of the âCompile Modelsâ tutorials
- Compile YOLO-V2 and V3 in DarkNet
- Relay
- need tutorials
- Tensor Expression
- AutoTVM: Template-based Auto-tuning
- AutoScheduler: Template-free Auto Scheduling
- TOPI: TVM Operator Inventory
- Deploy and Integration
- microTVM
- Import Models
- Design Docs
- Design and Architecture
- References
- Language Reference
- Python API
- Links to other API References
- Misc
- FAQ
- Index