You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by tq...@apache.org on 2021/10/09 23:53:29 UTC

[tvm] branch main updated: Documentation Refactor (#9203)

This is an automated email from the ASF dual-hosted git repository.

tqchen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git


The following commit(s) were added to refs/heads/main by this push:
     new 44549e6  Documentation Refactor (#9203)
44549e6 is described below

commit 44549e623433dd10d9e97e442ef529fb44c46c14
Author: Chris Hoge <ch...@octoml.ai>
AuthorDate: Sat Oct 9 16:52:54 2021 -0700

    Documentation Refactor (#9203)
    
    * Documentation Refactor - Stage 1
    
    RFC: https://github.com/apache/tvm-rfcs/blob/main/rfcs/0027-formalize-documentation-organization.md
    Tracking Issue: https://github.com/apache/tvm/issues/8987
    
    Stage 1 of the documentation refactor reorganizes the docs structure,
    moving files (without content changes) and adding new scaffolding to
    generate the proper document tree.
    
    It does not address naming, style, content, links, or other existing
    content in documents that were moved. State 2 will address fixing these
    issues with existing content.
    
    Major changes include but are not limited to:
    
    * Dividing the existing tutorials into two sections:
      * Tutorials
      * How Tos
    * Moving all of the existing tutorials out of the `/tutorial`
      directory and into the more general `/gallery` directory.
    * Breaking up how-tos into individual sections for more
      flexibility and more consistent rendering.
    * Moving content into new classifications:
      * `/docs/arch` for architecture guides
      * `/docs/reference` for API guides and other reference material
      * `/docs/topic` for topic specific guides such as microTVM and VTA
      * Restructuring `/docs/dev`
    * Adding a table of contents to the doc index
    * Adding instructions on how to install using third-party tlcpack
    
    * Documentation Refactor - Stage 2
    
    RFC: https://github.com/apache/tvm-rfcs/blob/main/rfcs/0027-formalize-documentation-organization.md
    Tracking Issue: https://github.com/apache/tvm/issues/8987
    
    Stage 2 of the documentation refactor fixes naming and links
    in the documentation to be consistent with the overall structure.
    
    Major changes include:
    
    * an update to how to contribute to docs.
    * several updated index pages with title changes to match
      the organization style and bring consistency to the sections
    * expanded descriptions of some page collections
    * fixed links
    
    * Documentation Refactor - Stage 3
    
    RFC: https://github.com/apache/tvm-rfcs/blob/main/rfcs/0027-formalize-documentation-organization.md
    Tracking Issue: https://github.com/apache/tvm/issues/8987
    
    Stage 3 of the documentation refactor adjusts CI for the new structure.
    The CI build script takes into account the new gallery format. It
    also prevents deleting existing documents, and takes advantage of the
    `_staging` and `_build` directories to clean out previous builds.
---
 docs/{dev => arch}/benchmark.rst                   |   0
 docs/{dev => arch}/convert_layout.rst              |   0
 docs/{dev => arch}/debugger.rst                    |   0
 docs/{dev => arch}/device_target_interactions.rst  |   0
 docs/{dev => arch}/frontend/tensorflow.rst         |   0
 docs/{dev => arch}/hybrid_script.rst               |   0
 docs/{dev => arch}/index.rst                       |   0
 docs/{dev => arch}/inferbound.rst                  |   0
 .../introduction_to_module_serialization.rst       |   0
 docs/{dev => arch}/microtvm_design.rst             |   2 +
 docs/{dev => arch}/model_library_format.rst        |   0
 docs/{dev => arch}/pass_infra.rst                  |   0
 docs/{dev => arch}/relay_intro.rst                 |   0
 docs/{dev => arch}/relay_op_strategy.rst           |   0
 docs/{dev => arch}/runtime.rst                     |   0
 docs/{dev => arch}/runtimes/vulkan.rst             |   0
 docs/{dev => arch}/security.rst                    |   0
 docs/{dev => arch}/virtual_machine.rst             |   0
 docs/conf.py                                       |  60 ++++---
 docs/contribute/document.rst                       | 177 +++++++++++++++++----
 docs/contribute/index.rst                          |   2 +-
 docs/dev/{ => how_to}/how_to.rst                   |   1 -
 .../{ => how_to}/pytest_target_parametrization.rst |   0
 docs/dev/{ => how_to}/relay_add_op.rst             |   0
 docs/dev/{ => how_to}/relay_add_pass.rst           |   0
 .../{ => how_to}/relay_bring_your_own_codegen.rst  |   0
 docs/dev/{ => tutorial}/codebase_walkthrough.rst   |   0
 docs/{profiling => dev/tutorial}/index.rst         |  11 +-
 docs/errors.rst                                    |   4 +-
 docs/{ => how_to}/deploy/android.rst               |   0
 docs/{ => how_to}/deploy/arm_compute_lib.rst       |   0
 docs/{ => how_to}/deploy/bnns.rst                  |   0
 docs/{ => how_to}/deploy/cpp_deploy.rst            |   0
 docs/{ => how_to}/deploy/hls.rst                   |   0
 docs/{ => how_to}/deploy/index.rst                 |  14 +-
 docs/{ => how_to}/deploy/integrate.rst             |   0
 docs/{ => how_to}/deploy/tensorrt.rst              |   0
 docs/{ => how_to}/deploy/vitis_ai.rst              |   0
 docs/{dev/how_to.rst => how_to/index.rst}          |  27 ++--
 docs/{profiling => how_to/profile}/index.rst       |   4 +-
 docs/{profiling => how_to/profile}/papi.rst        |   0
 docs/index.rst                                     |  81 ++++------
 docs/install/index.rst                             |  22 ++-
 docs/install/tlcpack.rst                           |  38 +++++
 docs/{ => reference}/api/links.rst                 |   7 +-
 docs/{ => reference}/api/python/auto_scheduler.rst |   0
 docs/{ => reference}/api/python/autotvm.rst        |   0
 docs/{ => reference}/api/python/contrib.rst        |   0
 docs/{ => reference}/api/python/driver.rst         |   0
 docs/{ => reference}/api/python/error.rst          |   0
 docs/{ => reference}/api/python/graph_executor.rst |   0
 docs/{ => reference}/api/python/index.rst          |   0
 docs/{ => reference}/api/python/ir.rst             |   0
 docs/{ => reference}/api/python/micro.rst          |   0
 docs/{ => reference}/api/python/ndarray.rst        |   0
 docs/{ => reference}/api/python/relay/analysis.rst |   0
 docs/{ => reference}/api/python/relay/backend.rst  |   0
 .../api/python/relay/dataflow_pattern.rst          |   0
 docs/{ => reference}/api/python/relay/frontend.rst |   0
 docs/{ => reference}/api/python/relay/image.rst    |   0
 docs/{ => reference}/api/python/relay/index.rst    |   0
 docs/{ => reference}/api/python/relay/nn.rst       |   0
 docs/{ => reference}/api/python/relay/testing.rst  |   0
 .../{ => reference}/api/python/relay/transform.rst |   0
 docs/{ => reference}/api/python/relay/vision.rst   |   0
 docs/{ => reference}/api/python/rpc.rst            |   0
 docs/{ => reference}/api/python/runtime.rst        |   0
 docs/{ => reference}/api/python/target.rst         |   0
 docs/{ => reference}/api/python/te.rst             |   0
 docs/{ => reference}/api/python/tir.rst            |   0
 docs/{ => reference}/api/python/topi.rst           |   0
 docs/{ => reference}/api/python/vta/index.rst      |   0
 docs/{ => reference}/langref/hybrid_script.rst     |   0
 docs/{ => reference}/langref/index.rst             |   0
 docs/{ => reference}/langref/relay_adt.rst         |   0
 docs/{ => reference}/langref/relay_expr.rst        |   0
 docs/{ => reference}/langref/relay_op.rst          |   0
 docs/{ => reference}/langref/relay_pattern.rst     |   0
 docs/{ => reference}/langref/relay_type.rst        |   0
 .../index.rst => reference/publications.rst}       |  23 ++-
 docs/{ => topic}/microtvm/index.rst                |   4 +-
 docs/{ => topic}/vta/.gitignore                    |   0
 docs/{ => topic}/vta/dev/config.rst                |   0
 docs/{ => topic}/vta/dev/hardware.rst              |   0
 docs/{ => topic}/vta/dev/index.rst                 |   0
 docs/{ => topic}/vta/index.rst                     |   4 +-
 docs/{ => topic}/vta/install.rst                   |   0
 gallery/how_to/compile_models/README.txt           |   7 +
 .../how_to/compile_models}/from_caffe2.py          |   0
 .../how_to/compile_models}/from_coreml.py          |   0
 .../how_to/compile_models}/from_darknet.py         |   0
 .../how_to/compile_models}/from_keras.py           |   0
 .../how_to/compile_models}/from_mxnet.py           |   0
 .../how_to/compile_models}/from_onnx.py            |   0
 .../how_to/compile_models}/from_paddle.py          |   0
 .../how_to/compile_models}/from_pytorch.py         |   0
 .../how_to/compile_models}/from_tensorflow.py      |   0
 .../how_to/compile_models}/from_tflite.py          |   0
 gallery/how_to/deploy_models/README.txt            |   6 +
 .../deploy_models}/deploy_model_on_android.py      |   0
 .../how_to/deploy_models}/deploy_model_on_rasp.py  |   0
 .../deploy_object_detection_pytorch.py             |   0
 .../how_to/deploy_models}/deploy_prequantized.py   |   0
 .../deploy_models}/deploy_prequantized_tflite.py   |   0
 .../how_to/deploy_models}/deploy_quantized.py      |   0
 .../how_to/deploy_models}/deploy_sparse.py         |   0
 .../how_to/deploy_models}/deploy_ssd_gluoncv.py    |   0
 gallery/how_to/extend_tvm/README.txt               |   7 +
 .../how_to/extend_tvm}/bring_your_own_datatypes.py |   0
 .../how_to/extend_tvm}/low_level_custom_pass.py    |   0
 .../how_to/extend_tvm}/use_pass_infra.py           |   0
 .../how_to/extend_tvm}/use_pass_instrument.py      |   0
 gallery/how_to/optimize_operators/README.txt       |   5 +
 .../how_to/optimize_operators}/opt_conv_cuda.py    |   0
 .../optimize_operators}/opt_conv_tensorcore.py     |   0
 .../how_to/optimize_operators}/opt_gemm.py         |   0
 gallery/how_to/tune_with_autoscheduler/README.txt  |   6 +
 .../tune_with_autoscheduler}/ci_logs/conv2d.json   |   0
 .../tune_with_autoscheduler}/ci_logs/matmul.json   |   0
 .../ci_logs/resnet-18-NHWC-B1-cuda.json            |   0
 .../ci_logs/resnet-50-NHWC-B1-llvm.json            |   0
 .../ci_logs/sparse_dense.json                      |   0
 .../tune_conv2d_layer_cuda.py                      |   0
 .../tune_with_autoscheduler}/tune_network_arm.py   |   0
 .../tune_with_autoscheduler}/tune_network_cuda.py  |   0
 .../tune_with_autoscheduler}/tune_network_mali.py  |   0
 .../tune_with_autoscheduler}/tune_network_x86.py   |   0
 .../tune_with_autoscheduler}/tune_sparse_x86.py    |   0
 gallery/how_to/tune_with_autotvm/README.txt        |   9 ++
 .../how_to/tune_with_autotvm}/tune_conv2d_cuda.py  |   0
 .../how_to/tune_with_autotvm}/tune_relay_arm.py    |   0
 .../how_to/tune_with_autotvm}/tune_relay_cuda.py   |   0
 .../tune_with_autotvm}/tune_relay_mobile_gpu.py    |   0
 .../how_to/tune_with_autotvm}/tune_relay_x86.py    |   0
 gallery/how_to/work_with_microtvm/README.txt       |   7 +
 .../how_to/work_with_microtvm}/micro_autotune.py   |   0
 .../work_with_microtvm}/micro_reference_vm.py      |   0
 .../how_to/work_with_microtvm}/micro_tflite.py     |   2 +
 gallery/how_to/work_with_relay/README.txt          |   2 +
 .../how_to/work_with_relay}/build_gcn.py           |   0
 .../how_to/work_with_relay}/using_external_lib.py  |   0
 gallery/how_to/work_with_schedules/README.txt      |   2 +
 .../how_to/work_with_schedules}/extern_op.py       |   0
 .../how_to/work_with_schedules}/intrin_math.py     |   0
 .../how_to/work_with_schedules}/reduction.py       |   0
 .../how_to/work_with_schedules}/scan.py            |   0
 .../work_with_schedules}/schedule_primitives.py    |   0
 .../how_to/work_with_schedules}/tedd.py            |   0
 .../how_to/work_with_schedules}/tensorize.py       |   0
 .../how_to/work_with_schedules}/tuple_inputs.py    |   0
 gallery/tutorial/README.txt                        |  10 ++
 .../tutorial}/auto_scheduler_matmul_x86.py         |   0
 .../tutorial}/autotvm_matmul_x86.py                |   0
 .../tutorial}/autotvm_relay_x86.py                 |   0
 .../tutorial}/cross_compilation_and_rpc.py         |   0
 .../get_started => gallery/tutorial}/install.py    |   0
 {tutorials/topi => gallery/tutorial}/intro_topi.py |   0
 .../tutorial}/introduction.py                      |   0
 .../tutorial}/relay_quick_start.py                 |   0
 .../tutorial}/tensor_expr_get_started.py           |   0
 .../tutorial}/tvmc_command_line_driver.py          |   0
 tests/scripts/task_python_docs.sh                  |  15 +-
 tests/scripts/task_sphinx_precheck.sh              |   4 +-
 tutorials/README.txt                               |   1 -
 tutorials/auto_scheduler/README.txt                |   2 -
 tutorials/autotvm/README.txt                       |   4 -
 tutorials/dev/README.txt                           |   3 -
 tutorials/frontend/README.txt                      |   4 -
 tutorials/get_started/README.txt                   |   2 -
 tutorials/language/README.txt                      |   2 -
 tutorials/micro/README.txt                         |   4 -
 tutorials/optimize/README.txt                      |   2 -
 tutorials/topi/README.txt                          |   2 -
 173 files changed, 401 insertions(+), 188 deletions(-)

diff --git a/docs/dev/benchmark.rst b/docs/arch/benchmark.rst
similarity index 100%
rename from docs/dev/benchmark.rst
rename to docs/arch/benchmark.rst
diff --git a/docs/dev/convert_layout.rst b/docs/arch/convert_layout.rst
similarity index 100%
rename from docs/dev/convert_layout.rst
rename to docs/arch/convert_layout.rst
diff --git a/docs/dev/debugger.rst b/docs/arch/debugger.rst
similarity index 100%
rename from docs/dev/debugger.rst
rename to docs/arch/debugger.rst
diff --git a/docs/dev/device_target_interactions.rst b/docs/arch/device_target_interactions.rst
similarity index 100%
rename from docs/dev/device_target_interactions.rst
rename to docs/arch/device_target_interactions.rst
diff --git a/docs/dev/frontend/tensorflow.rst b/docs/arch/frontend/tensorflow.rst
similarity index 100%
rename from docs/dev/frontend/tensorflow.rst
rename to docs/arch/frontend/tensorflow.rst
diff --git a/docs/dev/hybrid_script.rst b/docs/arch/hybrid_script.rst
similarity index 100%
rename from docs/dev/hybrid_script.rst
rename to docs/arch/hybrid_script.rst
diff --git a/docs/dev/index.rst b/docs/arch/index.rst
similarity index 100%
rename from docs/dev/index.rst
rename to docs/arch/index.rst
diff --git a/docs/dev/inferbound.rst b/docs/arch/inferbound.rst
similarity index 100%
rename from docs/dev/inferbound.rst
rename to docs/arch/inferbound.rst
diff --git a/docs/dev/introduction_to_module_serialization.rst b/docs/arch/introduction_to_module_serialization.rst
similarity index 100%
rename from docs/dev/introduction_to_module_serialization.rst
rename to docs/arch/introduction_to_module_serialization.rst
diff --git a/docs/dev/microtvm_design.rst b/docs/arch/microtvm_design.rst
similarity index 99%
rename from docs/dev/microtvm_design.rst
rename to docs/arch/microtvm_design.rst
index 885ef2c..087b816 100644
--- a/docs/dev/microtvm_design.rst
+++ b/docs/arch/microtvm_design.rst
@@ -13,6 +13,8 @@
     specific language governing permissions and limitations
     under the License.
 
+.. _microtvm-design:
+
 **************************
 microTVM Design Document
 **************************
diff --git a/docs/dev/model_library_format.rst b/docs/arch/model_library_format.rst
similarity index 100%
rename from docs/dev/model_library_format.rst
rename to docs/arch/model_library_format.rst
diff --git a/docs/dev/pass_infra.rst b/docs/arch/pass_infra.rst
similarity index 100%
rename from docs/dev/pass_infra.rst
rename to docs/arch/pass_infra.rst
diff --git a/docs/dev/relay_intro.rst b/docs/arch/relay_intro.rst
similarity index 100%
rename from docs/dev/relay_intro.rst
rename to docs/arch/relay_intro.rst
diff --git a/docs/dev/relay_op_strategy.rst b/docs/arch/relay_op_strategy.rst
similarity index 100%
rename from docs/dev/relay_op_strategy.rst
rename to docs/arch/relay_op_strategy.rst
diff --git a/docs/dev/runtime.rst b/docs/arch/runtime.rst
similarity index 100%
rename from docs/dev/runtime.rst
rename to docs/arch/runtime.rst
diff --git a/docs/dev/runtimes/vulkan.rst b/docs/arch/runtimes/vulkan.rst
similarity index 100%
rename from docs/dev/runtimes/vulkan.rst
rename to docs/arch/runtimes/vulkan.rst
diff --git a/docs/dev/security.rst b/docs/arch/security.rst
similarity index 100%
rename from docs/dev/security.rst
rename to docs/arch/security.rst
diff --git a/docs/dev/virtual_machine.rst b/docs/arch/virtual_machine.rst
similarity index 100%
rename from docs/dev/virtual_machine.rst
rename to docs/arch/virtual_machine.rst
diff --git a/docs/conf.py b/docs/conf.py
index 03e0fae..766fda4 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -51,9 +51,8 @@ if curr_path.name == "_staging":
 else:
     tvm_path = Path(os.pardir)
 
-
-sys.path.insert(0, str(tvm_path / "python"))
-sys.path.insert(0, str(tvm_path / "vta" / "python"))
+sys.path.insert(0, str(tvm_path.resolve() / "python"))
+sys.path.insert(0, str(tvm_path.resolve() / "vta" / "python"))
 
 # -- General configuration ------------------------------------------------
 
@@ -209,22 +208,37 @@ intersphinx_mapping = {
 
 from sphinx_gallery.sorting import ExplicitOrder
 
-examples_dirs = [tvm_path.joinpath("tutorials"), tvm_path.joinpath("vta", "tutorials")]
-gallery_dirs = ["tutorials", "vta/tutorials"]
+examples_dirs = [
+    tvm_path.joinpath("gallery", "tutorial"),
+    tvm_path.joinpath("gallery", "how_to", "compile_models"),
+    tvm_path.joinpath("gallery", "how_to", "deploy_models"),
+    tvm_path.joinpath("gallery", "how_to", "work_with_relay"),
+    tvm_path.joinpath("gallery", "how_to", "work_with_schedules"),
+    tvm_path.joinpath("gallery", "how_to", "optimize_operators"),
+    tvm_path.joinpath("gallery", "how_to", "tune_with_autotvm"),
+    tvm_path.joinpath("gallery", "how_to", "tune_with_autoscheduler"),
+    tvm_path.joinpath("gallery", "how_to", "work_with_microtvm"),
+    tvm_path.joinpath("gallery", "how_to", "extend_tvm"),
+    tvm_path.joinpath("vta", "tutorials"),
+]
+
+gallery_dirs = [
+    "tutorial",
+    "how_to/compile_models",
+    "how_to/deploy_models",
+    "how_to/work_with_relay",
+    "how_to/work_with_schedules",
+    "how_to/optimize_operators",
+    "how_to/tune_with_autotvm",
+    "how_to/tune_with_autoscheduler",
+    "how_to/work_with_microtvm",
+    "how_to/extend_tvm",
+    "topic/vta/tutorials",
+]
 
 subsection_order = ExplicitOrder(
     str(p)
     for p in [
-        tvm_path / "tutorials" / "get_started",
-        tvm_path / "tutorials" / "frontend",
-        tvm_path / "tutorials" / "language",
-        tvm_path / "tutorials" / "optimize",
-        tvm_path / "tutorials" / "autotvm",
-        tvm_path / "tutorials" / "auto_scheduler",
-        tvm_path / "tutorials" / "dev",
-        tvm_path / "tutorials" / "topi",
-        tvm_path / "tutorials" / "deployment",
-        tvm_path / "tutorials" / "micro",
         tvm_path / "vta" / "tutorials" / "frontend",
         tvm_path / "vta" / "tutorials" / "optimize",
         tvm_path / "vta" / "tutorials" / "autotvm",
@@ -236,7 +250,7 @@ subsection_order = ExplicitOrder(
 # The unlisted files are sorted by filenames.
 # The unlisted files always appear after listed files.
 within_subsection_order = {
-    "get_started": [
+    "tutorial": [
         "introduction.py",
         "install.py",
         "tvmc_command_line_driver.py",
@@ -244,10 +258,11 @@ within_subsection_order = {
         "tensor_expr_get_started.py",
         "autotvm_matmul_x86.py",
         "auto_scheduler_matmul_x86.py",
+        "topi.pi",
         "cross_compilation_and_rpc.py",
         "relay_quick_start.py",
     ],
-    "frontend": [
+    "compile_models": [
         "from_pytorch.py",
         "from_tensorflow.py",
         "from_mxnet.py",
@@ -259,7 +274,7 @@ within_subsection_order = {
         "from_caffe2.py",
         "from_paddle.py",
     ],
-    "language": [
+    "work_with_schedules": [
         "schedule_primitives.py",
         "reduction.py",
         "intrin_math.py",
@@ -269,26 +284,25 @@ within_subsection_order = {
         "tuple_inputs.py",
         "tedd.py",
     ],
-    "optimize": [
+    "optimize_operators": [
         "opt_gemm.py",
         "opt_conv_cuda.py",
         "opt_conv_tensorcore.py",
     ],
-    "autotvm": [
-        "tune_simple_template.py",
+    "tune_with_autotvm": [
         "tune_conv2d_cuda.py",
         "tune_relay_cuda.py",
         "tune_relay_x86.py",
         "tune_relay_arm.py",
         "tune_relay_mobile_gpu.py",
     ],
-    "auto_scheduler": [
+    "tune_with_autoscheduler": [
         "tune_matmul_x86.py",
         "tune_conv2d_layer_cuda.py",
         "tune_network_x86.py",
         "tune_network_cuda.py",
     ],
-    "dev": [
+    "extend_tvm": [
         "low_level_custom_pass.py",
         "use_pass_infra.py",
         "use_pass_instrument.py",
diff --git a/docs/contribute/document.rst b/docs/contribute/document.rst
index 3652a28..e3d12e8 100644
--- a/docs/contribute/document.rst
+++ b/docs/contribute/document.rst
@@ -17,22 +17,125 @@
 
 .. _doc_guide:
 
-Write Document and Tutorials
-============================
+Write Documentation for TVM
+===========================
+
+TVM documentation loosely follows the `formal documentation style described by
+Divio <https://documentation.divio.com>`_. This system has been chosen because
+it is a "simple, comprehensive and nearly universally-applicable scheme. It is
+proven in practice across a wide variety of fields and applications."
+
+This document describes the organization of TVM documentation, and how to write
+new documentation.
+
+The Four Document Types
+***********************
+
+Introductory Tutorials
+----------------------
+
+These are step by step guides to introduce new users to a project. An
+introductory tutorial is designed to get a user engaged with the software
+without necessarily explaining why the software works the way it does. Those
+explanations can be saved for other document types. An introductory tutorial
+focuses on a successful first experience. These are the most important docs to
+turning newcomers into new users and developers. A fully end-to-end
+tutorial&mdash; from installing TVM and supporting ML software, to creating and
+training a model, to compiling to different architectures&mdash;will give a new
+user the opportunity to use TVM in the most efficient way possible. A tutorial
+teaches a beginner something they need to know. This is in contrast with a
+how-to, which is meant to be an answer to a question that a user with some
+experience would ask.
+
+Tutorials need to be repeatable and reliable, because the lack of success means
+a user will look for other solutions.
+
+How-to Guides
+-------------
+
+These are step by step guides on how to solve particular problems. The user can
+ask meaningful questions, and the documents provide answers. An examples of
+this type of document might be, "how do I compile an optimized model for ARM
+architecture?" or "how do I compile and optimize a TensorFlow model?" These
+documents should be open enough that a user could see how to apply it to a new
+use case. Practical usability is more important than completeness. The title
+should tell the user what problem the how-to is solving.
+
+How are tutorials different from how-tos? A tutorial is oriented towards the
+new developer, and focuses on successfully introducing them to the software and
+community. A how-to, in contrast, focuses on accomplishing a specific task
+within the context of basic understanding. A tutorial helps to on-board and
+assumes no prior knowledge. A how-to assumes minimum knowledge, and is meant to
+guide someone to accomplish a specific task.
+
+Reference
+---------
+
+Reference documentation describes how the software is configured and operated.
+APIs, key functions, commands, and interfaces are all candidates for reference
+documentation. These are the technical manuals that let users build their own
+interfaces and programs. They are information oriented, focused on lists and
+descriptions. You can assume that the audience has a grasp on how the software
+works and is looking for specific answers to specific questions. Ideally, the
+reference documentation should have the same structure as the code base and be
+generated automatically as much as possible.
+
+Architecture Guides
+-------------------
+
+Architecture Guides are explanations are background material on a topic. These
+documents help to illuminate and understand the application environment. Why
+are things the way they are? What were the design decisions, what alternatives
+were considered, what are the RFCs describing the existing system? This
+includes academic papers and links to publications relevant to the software.
+Within these documents you can explore contradictory and conflicting position,
+and help the reader make sense of how and why the software was built the way it
+is. It's not the place for how-tos and descriptions on how to accomplish tasks.
+They instead focus on higher level concepts that help with the understanding of
+the project.  Generally these are written by the architects and developers of
+the project, but can useful to help both users and developers to have a deeper
+understanding of why the software works the way it does, and how to contribute
+to it in ways that are consistent with the underlying design principles.
+
+Special considerations for TVM
+------------------------------
+
+The TVM community has some special considerations that require deviation from
+the simple docs style outlined by Divio. The first consideration is that there
+is frequently overlap between the user and developer communities. Many projects
+document the developer and user experience with separate systems, but it is
+appropriate to consider both in this system, with differentiations where
+appropriate. As a result the tutorials and how-tos will be divided between
+"User Guides" that focus on the user experience, and "Developer Guides" that
+focus on the developer experience.
+
+The next consideration is that there are special topics within the TVM
+community that benefit from additional attention. These topics include, but are
+not limited to, microTVM and VTA. Special "Topic Guides" can be created to
+index existing material, and provide context on how to navigate that material
+most effectively.
+
+To facilitate newcomers, a special "Getting Started" section with installation
+instructions, a overview of why to use TVM, and other first-experience
+documents will be produced.
+
+
+Technical Details
+*****************
 
 We use the `Sphinx <http://sphinx-doc.org>`_ for the main documentation.
-Sphinx support both the reStructuredText and markdown.
-When possible, we encourage to use reStructuredText as it has richer features.
-Note that the python doc-string and tutorials allow you to embed reStructuredText syntax.
+Sphinx support both the reStructuredText and markdown.  When possible, we
+encourage to use reStructuredText as it has richer features.  Note that the
+python doc-string and tutorials allow you to embed reStructuredText syntax.
 
 
-Document Python
----------------
-We use `numpydoc <https://numpydoc.readthedocs.io/en/latest/>`_
-format to document the function and classes.
-The following snippet gives an example docstring.
-We always document all the public functions,
-when necessary, provide an usage example of the features we support(as shown below).
+Python Reference Documentation
+------------------------------
+
+We use `numpydoc <https://numpydoc.readthedocs.io/en/latest/>`_ format to
+document the function and classes.  The following snippet gives an example
+docstring.  We always document all the public functions, when necessary,
+provide an usage example of the features we support(as shown below).
 
 .. code:: python
 
@@ -64,18 +167,20 @@ when necessary, provide an usage example of the features we support(as shown bel
         """
         return rv1
 
-Be careful to leave blank lines between sections of your documents.
-In the above case, there has to be a blank line before `Parameters`, `Returns` and `Examples`
-in order for the doc to be built correctly. To add a new function to the doc,
-we need to add the `sphinx.autodoc <http://www.sphinx-doc.org/en/master/ext/autodoc.html>`_
-rules to the `docs/api/python <https://github.com/apache/tvm/tree/main/docs/api/python>`_).
-You can refer to the existing files under this folder on how to add the functions.
+Be careful to leave blank lines between sections of your documents.  In the
+above case, there has to be a blank line before `Parameters`, `Returns` and
+`Examples` in order for the doc to be built correctly. To add a new function to
+the doc, we need to add the `sphinx.autodoc
+<http://www.sphinx-doc.org/en/master/ext/autodoc.html>`_ rules to the
+`docs/api/python <https://github.com/apache/tvm/tree/main/docs/api/python>`_).
+You can refer to the existing files under this folder on how to add the
+functions.
 
+C++ Reference Documentation
+---------------------------
 
-Document C++
-------------
-We use the doxgen format to document c++ functions.
-The following snippet shows an example of c++ docstring.
+We use the doxgen format to document c++ functions.  The following snippet
+shows an example of c++ docstring.
 
 .. code:: c++
 
@@ -89,21 +194,27 @@ The following snippet shows an example of c++ docstring.
       // When necessary, also add comment to clarify internal logics
     }
 
-Besides documenting function usages, we also highly recommend contributors
-to add comments about code logics to improve readability.
+Besides documenting function usages, we also highly recommend contributors to
+add comments about code logics to improve readability.
 
+Sphinx Gallery How-Tos
+----------------------
 
-Write Tutorials
----------------
-We use the `sphinx-gallery <https://sphinx-gallery.github.io/>`_ to build python tutorials.
-You can find the source code under `tutorials <https://github.com/apache/tvm/tree/main/tutorials>`_ quite self explanatory.
-One thing that worth noting is that the comment blocks are written in reStructuredText instead of markdown so be aware of the syntax.
+We use the `sphinx-gallery <https://sphinx-gallery.github.io/>`_ to build many
+python how-tos.  You can find the source code under `gallery
+<https://github.com/apache/tvm/tree/main/gallery>`_ quite self explanatory.
+One thing that worth noting is that the comment blocks are written in
+reStructuredText instead of markdown so be aware of the syntax.
 
-The tutorial code will run on our build server to generate the document page.
-So we may have a restriction like not being able to access a remote Raspberry Pi,
-in such case add a flag variable to the tutorial (e.g. `use_rasp`) and allow users to easily switch to the real device by changing one flag.
-Then use the existing environment to demonstrate the usage.
+The how-to code will run on our build server to generate the document page.  So
+we may have a restriction like not being able to access a remote Raspberry Pi,
+in such case add a flag variable to the tutorial (e.g. `use_rasp`) and allow
+users to easily switch to the real device by changing one flag. Then use the
+existing environment to demonstrate the usage.
 
+If you add a new categorization of how-to, you will need to add references to
+`conf.py <https://github.com/apache/tvm/tree/main/docs/conf.py>`_ and the
+`how-to index <https://github.com/apache/tvm/tree/main/docs/how-to/index.rst>`_
 
 Refer to Another Location in the Document
 -----------------------------------------
diff --git a/docs/contribute/index.rst b/docs/contribute/index.rst
index e3e4119..acacfdc 100644
--- a/docs/contribute/index.rst
+++ b/docs/contribute/index.rst
@@ -15,7 +15,7 @@
     specific language governing permissions and limitations
     under the License.
 
-Contribute to TVM
+Contributor Guide
 =================
 
 TVM has been developed by community members.
diff --git a/docs/dev/how_to.rst b/docs/dev/how_to/how_to.rst
similarity index 97%
copy from docs/dev/how_to.rst
copy to docs/dev/how_to/how_to.rst
index dcf8df2..844ae0a 100644
--- a/docs/dev/how_to.rst
+++ b/docs/dev/how_to/how_to.rst
@@ -28,5 +28,4 @@ various areas of the TVM stack.
    relay_add_op
    relay_add_pass
    relay_bring_your_own_codegen
-   codebase_walkthrough
    pytest_target_parametrization
diff --git a/docs/dev/pytest_target_parametrization.rst b/docs/dev/how_to/pytest_target_parametrization.rst
similarity index 100%
rename from docs/dev/pytest_target_parametrization.rst
rename to docs/dev/how_to/pytest_target_parametrization.rst
diff --git a/docs/dev/relay_add_op.rst b/docs/dev/how_to/relay_add_op.rst
similarity index 100%
rename from docs/dev/relay_add_op.rst
rename to docs/dev/how_to/relay_add_op.rst
diff --git a/docs/dev/relay_add_pass.rst b/docs/dev/how_to/relay_add_pass.rst
similarity index 100%
rename from docs/dev/relay_add_pass.rst
rename to docs/dev/how_to/relay_add_pass.rst
diff --git a/docs/dev/relay_bring_your_own_codegen.rst b/docs/dev/how_to/relay_bring_your_own_codegen.rst
similarity index 100%
rename from docs/dev/relay_bring_your_own_codegen.rst
rename to docs/dev/how_to/relay_bring_your_own_codegen.rst
diff --git a/docs/dev/codebase_walkthrough.rst b/docs/dev/tutorial/codebase_walkthrough.rst
similarity index 100%
rename from docs/dev/codebase_walkthrough.rst
rename to docs/dev/tutorial/codebase_walkthrough.rst
diff --git a/docs/profiling/index.rst b/docs/dev/tutorial/index.rst
similarity index 80%
copy from docs/profiling/index.rst
copy to docs/dev/tutorial/index.rst
index 9443fef..77fbe0f 100644
--- a/docs/profiling/index.rst
+++ b/docs/dev/tutorial/index.rst
@@ -15,10 +15,15 @@
     specific language governing permissions and limitations
     under the License.
 
-Profiling Deep Learning Models
-====================================
+.. _dev-tutorial:
+
+Developer Tutorial
+==================
+
+This section is a guide to the TVM codebase, and an introduction on how to
+contribute to different parts of the platform.
 
 .. toctree::
    :maxdepth: 1
 
-   papi
+   codebase_walkthrough
diff --git a/docs/errors.rst b/docs/errors.rst
index f911ab9..84ea555 100644
--- a/docs/errors.rst
+++ b/docs/errors.rst
@@ -16,8 +16,8 @@
     under the License.
 
 
-What do to when encountering TVM Errors
-=======================================
+Handle TVM Errors
+=================
 
 When running TVM, you may encounter an error message like:
 
diff --git a/docs/deploy/android.rst b/docs/how_to/deploy/android.rst
similarity index 100%
rename from docs/deploy/android.rst
rename to docs/how_to/deploy/android.rst
diff --git a/docs/deploy/arm_compute_lib.rst b/docs/how_to/deploy/arm_compute_lib.rst
similarity index 100%
rename from docs/deploy/arm_compute_lib.rst
rename to docs/how_to/deploy/arm_compute_lib.rst
diff --git a/docs/deploy/bnns.rst b/docs/how_to/deploy/bnns.rst
similarity index 100%
rename from docs/deploy/bnns.rst
rename to docs/how_to/deploy/bnns.rst
diff --git a/docs/deploy/cpp_deploy.rst b/docs/how_to/deploy/cpp_deploy.rst
similarity index 100%
rename from docs/deploy/cpp_deploy.rst
rename to docs/how_to/deploy/cpp_deploy.rst
diff --git a/docs/deploy/hls.rst b/docs/how_to/deploy/hls.rst
similarity index 100%
rename from docs/deploy/hls.rst
rename to docs/how_to/deploy/hls.rst
diff --git a/docs/deploy/index.rst b/docs/how_to/deploy/index.rst
similarity index 93%
rename from docs/deploy/index.rst
rename to docs/how_to/deploy/index.rst
index b127de9..73269e8 100644
--- a/docs/deploy/index.rst
+++ b/docs/how_to/deploy/index.rst
@@ -17,8 +17,8 @@
 
 .. _deploy-and-integration:
 
-Deploy and Integration
-======================
+Deploy Models and Integrate TVM
+===============================
 
 This page contains guidelines on how to deploy TVM to various platforms
 as well as how to integrate it with your project.
@@ -176,4 +176,14 @@ target device without relying on RPC. See the following resources on how to do s
    vitis_ai
    bnns
 
+Additional Deployment How-Tos
+-----------------------------
+
+We have also developed a number of how-tos targeting specific devices, with
+working Python code that can be viewed in a Jupyter notebook. These how-tos
+describe how to prepare and deploy models to many of the supported backends.
+
+.. toctree::
+   :maxdepth: 1
 
+   ../deploy_models/index
diff --git a/docs/deploy/integrate.rst b/docs/how_to/deploy/integrate.rst
similarity index 100%
rename from docs/deploy/integrate.rst
rename to docs/how_to/deploy/integrate.rst
diff --git a/docs/deploy/tensorrt.rst b/docs/how_to/deploy/tensorrt.rst
similarity index 100%
rename from docs/deploy/tensorrt.rst
rename to docs/how_to/deploy/tensorrt.rst
diff --git a/docs/deploy/vitis_ai.rst b/docs/how_to/deploy/vitis_ai.rst
similarity index 100%
rename from docs/deploy/vitis_ai.rst
rename to docs/how_to/deploy/vitis_ai.rst
diff --git a/docs/dev/how_to.rst b/docs/how_to/index.rst
similarity index 63%
rename from docs/dev/how_to.rst
rename to docs/how_to/index.rst
index dcf8df2..433d7ac 100644
--- a/docs/dev/how_to.rst
+++ b/docs/how_to/index.rst
@@ -15,18 +15,25 @@
     specific language governing permissions and limitations
     under the License.
 
-.. _dev-how-to:
+How To Guides
+=============
 
-Developer How-To Guide
-======================
-This section contains a collection of tips about how to work on
-various areas of the TVM stack.
+These user-focused "how to" guides are designed to help you find answers to
+specific questions, like "How do I compile a model?" or "How to I optimize a
+schedule with tesor expressions?"
 
 .. toctree::
    :maxdepth: 1
 
-   relay_add_op
-   relay_add_pass
-   relay_bring_your_own_codegen
-   codebase_walkthrough
-   pytest_target_parametrization
+   compile_models/index
+   deploy/index
+   work_with_relay/index
+   work_with_schedules/index
+   optimize_operators/index
+   tune_with_autotvm/index
+   tune_with_autoscheduler/index
+   work_with_microtvm/index
+   extend_tvm/index
+   profile/index
+   ../errors
+   ../faq
diff --git a/docs/profiling/index.rst b/docs/how_to/profile/index.rst
similarity index 92%
rename from docs/profiling/index.rst
rename to docs/how_to/profile/index.rst
index 9443fef..33642cf 100644
--- a/docs/profiling/index.rst
+++ b/docs/how_to/profile/index.rst
@@ -15,8 +15,8 @@
     specific language governing permissions and limitations
     under the License.
 
-Profiling Deep Learning Models
-====================================
+Profile Models
+==============
 
 .. toctree::
    :maxdepth: 1
diff --git a/docs/profiling/papi.rst b/docs/how_to/profile/papi.rst
similarity index 100%
rename from docs/profiling/papi.rst
rename to docs/how_to/profile/papi.rst
diff --git a/docs/index.rst b/docs/index.rst
index 491c427..a264c9b 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -15,76 +15,59 @@
     specific language governing permissions and limitations
     under the License.
 
-TVM Documentation
-=================
-
-TVM is an open deep learning compiler stack for CPUs, GPUs, and specialized accelerators. It aims to close the gap between the productivity-focused deep learning frameworks, and the performance- or efficiency-oriented hardware backends.
-
-
-Get Started
------------
-
-- Follow the :doc:`instructions <install/index>` to install TVM.
-- Checkout the :doc:`Getting Started with TVM Tutorial <tutorials/index>`.
-
-For Developers
---------------
-
-- :doc:`dev/index` is useful for developers who want to understand the
-  architecture of TVM and/or actively develop on the project.
-- :doc:`dev/how_to` gives quick development tips on various topics.
-
+Apache TVM Documentation
+========================
+
+Welcome to the the documentation for Apache TVM, a deep learning compiler that
+enables access to high-performance machine learning anywhere for everyone.
+TVM's diverse community of hardware vendors, compiler engineers and ML
+researchers work together to build a unified, programmable software stack, that
+enriches the entire ML technology ecosystem and make it accessible to the wider
+ML community. TVM empowers users to leverage community-driven ML-based
+optimizations to push the limits and amplify the reach of their research and
+development, which in turn raises the collective performance of all ML, while
+driving its costs down.
 
 .. toctree::
    :maxdepth: 1
-   :caption: How to
-   :hidden:
+   :caption: Getting Started
 
    install/index
    contribute/index
-   deploy/index
-   dev/how_to
-   microtvm/index
-   errors
-   faq
 
 .. toctree::
    :maxdepth: 1
-   :caption: Tutorials
-   :hidden:
-
-   tutorials/index
+   :caption: User Guide
 
+   tutorial/index
+   how_to/index
 
 .. toctree::
-   :maxdepth: 2
-   :caption: References
-   :hidden:
+   :maxdepth: 1
+   :caption: Developer Guide
 
-   langref/index
-   api/python/index
-   api/links
+   dev/tutorial/index
+   dev/how_to/how_to.rst
 
 .. toctree::
-   :maxdepth: 2
-   :hidden:
-   :caption: Deep Dive
+   :maxdepth: 1
+   :caption: Architecture  Guide
 
-   dev/index
+   arch/index
 
 .. toctree::
-   :maxdepth: 2
-   :hidden:
-   :caption: MISC
-
-   vta/index
-   profiling/index
-
+   :maxdepth: 1
+   :caption: Topic Guides
 
-Index
------
+   topic/microtvm/index
+   topic/vta/index
 
 .. toctree::
    :maxdepth: 1
+   :caption: Reference Guide
 
+   reference/langref/index
+   reference/api/python/index
+   reference/api/links
+   reference/publications
    genindex
diff --git a/docs/install/index.rst b/docs/install/index.rst
index 5f73941..5759b1e 100644
--- a/docs/install/index.rst
+++ b/docs/install/index.rst
@@ -17,16 +17,24 @@
 
 .. _installation:
 
-Installation
-============
-To install TVM, please read :ref:`install-from-source`.
-If you are interested in deploying to mobile/embedded devices,
-you do not need to install the entire TVM stack on your device,
-instead, you only need the runtime, please read :ref:`deploy-and-integration`.
-If you would like to quickly try out TVM or do demo/tutorials, checkout :ref:`docker-images`
+Installing TVM
+==============
+
+TVM is still pre-1.0 release software, meaning that it is under active
+development and is changing quickly. Because of this, it is best to
+:ref:`install TVM from source <install_from_source>` to guarantee you
+have the latest features and bug fixes. If you are interested in deploying to
+mobile or embedded devices, you do not need to install the entire TVM stack on
+your device. Instead, you only need the runtime and can install using the
+:ref:`deployment and integration guide <deploy-and-integration>`.
+
+If you would like to quickly try out TVM or run some demo and tutorials, you
+can :ref:`install from Docker <docker-images>`, or install using the
+third-party :doc:`TLCPack Python and Conda packages <tlcpack>`
 
 .. toctree::
    :maxdepth: 2
 
    from_source
    docker
+   tlcpack
diff --git a/docs/install/tlcpack.rst b/docs/install/tlcpack.rst
new file mode 100644
index 0000000..541cffb
--- /dev/null
+++ b/docs/install/tlcpack.rst
@@ -0,0 +1,38 @@
+..  Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+..    http://www.apache.org/licenses/LICENSE-2.0
+
+..  Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+.. _tlcpack:
+
+TLCPack
+=======
+
+The Tensor Learning Compiler binary Package (TLCPack) community builds and
+maintains third-party packaging based on Apache TVM. TLCPack is a community
+maintained release that does not contain any additional source code from the
+TVM source repository. It takes source code from Apache TVM and builds Pip and
+Conda binary packages with different build configurations, for both the stable
+release and the nightly release. Please note that additional licensing
+conditions may apply (for example, the CUDA EULA is enforced for the CUDA
+enabled package) when you use the binary builds.
+
+TLCPack is not part of Apache and is run by thirdparty community volunteers.
+Please refer to the official Apache TVM website for Apache source releases.
+
+Licenses for TVM and its dependencies can be found in the github repository.
+
+More information on installing with TLCPack can be found on the `TLCPack site
+<https://tlcpack.ai>`_.
diff --git a/docs/api/links.rst b/docs/reference/api/links.rst
similarity index 86%
rename from docs/api/links.rst
rename to docs/reference/api/links.rst
index 4b8ab4d..a2a43bf 100644
--- a/docs/api/links.rst
+++ b/docs/reference/api/links.rst
@@ -15,10 +15,11 @@
     specific language governing permissions and limitations
     under the License.
 
-Links to Other API References
-=============================
+Other APIs
+==========
 
-This page contains links to API references that are build with different doc build system.
+This page contains links to API references that are built with different doc
+build system.
 
 * `C++ doyxgen API <doxygen/index.html>`_
 * `Typescript typedoc API <typedoc/index.html>`_
diff --git a/docs/api/python/auto_scheduler.rst b/docs/reference/api/python/auto_scheduler.rst
similarity index 100%
rename from docs/api/python/auto_scheduler.rst
rename to docs/reference/api/python/auto_scheduler.rst
diff --git a/docs/api/python/autotvm.rst b/docs/reference/api/python/autotvm.rst
similarity index 100%
rename from docs/api/python/autotvm.rst
rename to docs/reference/api/python/autotvm.rst
diff --git a/docs/api/python/contrib.rst b/docs/reference/api/python/contrib.rst
similarity index 100%
rename from docs/api/python/contrib.rst
rename to docs/reference/api/python/contrib.rst
diff --git a/docs/api/python/driver.rst b/docs/reference/api/python/driver.rst
similarity index 100%
rename from docs/api/python/driver.rst
rename to docs/reference/api/python/driver.rst
diff --git a/docs/api/python/error.rst b/docs/reference/api/python/error.rst
similarity index 100%
rename from docs/api/python/error.rst
rename to docs/reference/api/python/error.rst
diff --git a/docs/api/python/graph_executor.rst b/docs/reference/api/python/graph_executor.rst
similarity index 100%
rename from docs/api/python/graph_executor.rst
rename to docs/reference/api/python/graph_executor.rst
diff --git a/docs/api/python/index.rst b/docs/reference/api/python/index.rst
similarity index 100%
rename from docs/api/python/index.rst
rename to docs/reference/api/python/index.rst
diff --git a/docs/api/python/ir.rst b/docs/reference/api/python/ir.rst
similarity index 100%
rename from docs/api/python/ir.rst
rename to docs/reference/api/python/ir.rst
diff --git a/docs/api/python/micro.rst b/docs/reference/api/python/micro.rst
similarity index 100%
rename from docs/api/python/micro.rst
rename to docs/reference/api/python/micro.rst
diff --git a/docs/api/python/ndarray.rst b/docs/reference/api/python/ndarray.rst
similarity index 100%
rename from docs/api/python/ndarray.rst
rename to docs/reference/api/python/ndarray.rst
diff --git a/docs/api/python/relay/analysis.rst b/docs/reference/api/python/relay/analysis.rst
similarity index 100%
rename from docs/api/python/relay/analysis.rst
rename to docs/reference/api/python/relay/analysis.rst
diff --git a/docs/api/python/relay/backend.rst b/docs/reference/api/python/relay/backend.rst
similarity index 100%
rename from docs/api/python/relay/backend.rst
rename to docs/reference/api/python/relay/backend.rst
diff --git a/docs/api/python/relay/dataflow_pattern.rst b/docs/reference/api/python/relay/dataflow_pattern.rst
similarity index 100%
rename from docs/api/python/relay/dataflow_pattern.rst
rename to docs/reference/api/python/relay/dataflow_pattern.rst
diff --git a/docs/api/python/relay/frontend.rst b/docs/reference/api/python/relay/frontend.rst
similarity index 100%
rename from docs/api/python/relay/frontend.rst
rename to docs/reference/api/python/relay/frontend.rst
diff --git a/docs/api/python/relay/image.rst b/docs/reference/api/python/relay/image.rst
similarity index 100%
rename from docs/api/python/relay/image.rst
rename to docs/reference/api/python/relay/image.rst
diff --git a/docs/api/python/relay/index.rst b/docs/reference/api/python/relay/index.rst
similarity index 100%
rename from docs/api/python/relay/index.rst
rename to docs/reference/api/python/relay/index.rst
diff --git a/docs/api/python/relay/nn.rst b/docs/reference/api/python/relay/nn.rst
similarity index 100%
rename from docs/api/python/relay/nn.rst
rename to docs/reference/api/python/relay/nn.rst
diff --git a/docs/api/python/relay/testing.rst b/docs/reference/api/python/relay/testing.rst
similarity index 100%
rename from docs/api/python/relay/testing.rst
rename to docs/reference/api/python/relay/testing.rst
diff --git a/docs/api/python/relay/transform.rst b/docs/reference/api/python/relay/transform.rst
similarity index 100%
rename from docs/api/python/relay/transform.rst
rename to docs/reference/api/python/relay/transform.rst
diff --git a/docs/api/python/relay/vision.rst b/docs/reference/api/python/relay/vision.rst
similarity index 100%
rename from docs/api/python/relay/vision.rst
rename to docs/reference/api/python/relay/vision.rst
diff --git a/docs/api/python/rpc.rst b/docs/reference/api/python/rpc.rst
similarity index 100%
rename from docs/api/python/rpc.rst
rename to docs/reference/api/python/rpc.rst
diff --git a/docs/api/python/runtime.rst b/docs/reference/api/python/runtime.rst
similarity index 100%
rename from docs/api/python/runtime.rst
rename to docs/reference/api/python/runtime.rst
diff --git a/docs/api/python/target.rst b/docs/reference/api/python/target.rst
similarity index 100%
rename from docs/api/python/target.rst
rename to docs/reference/api/python/target.rst
diff --git a/docs/api/python/te.rst b/docs/reference/api/python/te.rst
similarity index 100%
rename from docs/api/python/te.rst
rename to docs/reference/api/python/te.rst
diff --git a/docs/api/python/tir.rst b/docs/reference/api/python/tir.rst
similarity index 100%
rename from docs/api/python/tir.rst
rename to docs/reference/api/python/tir.rst
diff --git a/docs/api/python/topi.rst b/docs/reference/api/python/topi.rst
similarity index 100%
rename from docs/api/python/topi.rst
rename to docs/reference/api/python/topi.rst
diff --git a/docs/api/python/vta/index.rst b/docs/reference/api/python/vta/index.rst
similarity index 100%
rename from docs/api/python/vta/index.rst
rename to docs/reference/api/python/vta/index.rst
diff --git a/docs/langref/hybrid_script.rst b/docs/reference/langref/hybrid_script.rst
similarity index 100%
rename from docs/langref/hybrid_script.rst
rename to docs/reference/langref/hybrid_script.rst
diff --git a/docs/langref/index.rst b/docs/reference/langref/index.rst
similarity index 100%
rename from docs/langref/index.rst
rename to docs/reference/langref/index.rst
diff --git a/docs/langref/relay_adt.rst b/docs/reference/langref/relay_adt.rst
similarity index 100%
rename from docs/langref/relay_adt.rst
rename to docs/reference/langref/relay_adt.rst
diff --git a/docs/langref/relay_expr.rst b/docs/reference/langref/relay_expr.rst
similarity index 100%
rename from docs/langref/relay_expr.rst
rename to docs/reference/langref/relay_expr.rst
diff --git a/docs/langref/relay_op.rst b/docs/reference/langref/relay_op.rst
similarity index 100%
rename from docs/langref/relay_op.rst
rename to docs/reference/langref/relay_op.rst
diff --git a/docs/langref/relay_pattern.rst b/docs/reference/langref/relay_pattern.rst
similarity index 100%
rename from docs/langref/relay_pattern.rst
rename to docs/reference/langref/relay_pattern.rst
diff --git a/docs/langref/relay_type.rst b/docs/reference/langref/relay_type.rst
similarity index 100%
rename from docs/langref/relay_type.rst
rename to docs/reference/langref/relay_type.rst
diff --git a/docs/install/index.rst b/docs/reference/publications.rst
similarity index 54%
copy from docs/install/index.rst
copy to docs/reference/publications.rst
index 5f73941..3a90a3a 100644
--- a/docs/install/index.rst
+++ b/docs/reference/publications.rst
@@ -15,18 +15,17 @@
     specific language governing permissions and limitations
     under the License.
 
-.. _installation:
-
-Installation
+Publications
 ============
-To install TVM, please read :ref:`install-from-source`.
-If you are interested in deploying to mobile/embedded devices,
-you do not need to install the entire TVM stack on your device,
-instead, you only need the runtime, please read :ref:`deploy-and-integration`.
-If you would like to quickly try out TVM or do demo/tutorials, checkout :ref:`docker-images`
 
-.. toctree::
-   :maxdepth: 2
+TVM is developed as part of peer-reviewed research in machine learning compiler
+framework for CPUs, GPUs, and machine learning accelerators.
+
+This document includes references to publications describing the research,
+results, and design underlying TVM.
 
-   from_source
-   docker
+* `TVM: An Automated End-to-End Optimizing Compiler for Deep Learning <https://arxiv.org/abs/1802.04799>`_
+* `Learning to Optimize Tensor Programs <https://arxiv.org/pdf/1805.08166.pdf>`_
+* `Ansor: Generating High-Performance Tensor Programs for Deep Learning <https://arxiv.org/abs/2006.06762>`_
+* `Nimble: Efficiently Compiling Dynamic Neural Networks for Model Inference
+  <https://arxiv.org/abs/2006.03031>`_
diff --git a/docs/microtvm/index.rst b/docs/topic/microtvm/index.rst
similarity index 93%
rename from docs/microtvm/index.rst
rename to docs/topic/microtvm/index.rst
index a67b154..ebcadb3 100644
--- a/docs/microtvm/index.rst
+++ b/docs/topic/microtvm/index.rst
@@ -55,7 +55,7 @@ tutorials to get started with microTVM:
 1. :ref:`Start the microTVM Reference VM <tutorial-micro-reference-vm>`. The microTVM tutorials
    depend on Zephyr and on a compiler toolchain for your hardware. The reference VM is a convenient
    way to install those dependencies.
-2. Try the :doc:`microTVM with TFLite Tutorial </tutorials/micro/micro_tflite>`.
+2. Try the :ref:`microTVM with TFLite Tutorial <microTVM-with-TFLite>`.
 3. Try running a more complex `CIFAR10-CNN model <https://github.com/areusch/microtvm-blogpost-eval>`_.
 
 
@@ -63,7 +63,7 @@ How microTVM Works
 ~~~~~~~~~~~~~~~~~~
 
 
-You can read more about the design of these pieces at the :doc:`microTVM Design Document </dev/microtvm_design>`.
+You can read more about the design of these pieces at the :ref:`microTVM Design Document <microTVM-design>`.
 
 
 Help and Discussion
diff --git a/docs/vta/.gitignore b/docs/topic/vta/.gitignore
similarity index 100%
rename from docs/vta/.gitignore
rename to docs/topic/vta/.gitignore
diff --git a/docs/vta/dev/config.rst b/docs/topic/vta/dev/config.rst
similarity index 100%
rename from docs/vta/dev/config.rst
rename to docs/topic/vta/dev/config.rst
diff --git a/docs/vta/dev/hardware.rst b/docs/topic/vta/dev/hardware.rst
similarity index 100%
rename from docs/vta/dev/hardware.rst
rename to docs/topic/vta/dev/hardware.rst
diff --git a/docs/vta/dev/index.rst b/docs/topic/vta/dev/index.rst
similarity index 100%
rename from docs/vta/dev/index.rst
rename to docs/topic/vta/dev/index.rst
diff --git a/docs/vta/index.rst b/docs/topic/vta/index.rst
similarity index 96%
rename from docs/vta/index.rst
rename to docs/topic/vta/index.rst
index d97705e..d09b31b 100644
--- a/docs/vta/index.rst
+++ b/docs/topic/vta/index.rst
@@ -17,8 +17,8 @@
 
 .. _vta-index:
 
-VTA: Deep Learning Accelerator Stack
-====================================
+VTA: Versatile Tensor Accelerator
+=================================
 
 The Versatile Tensor Accelerator (VTA) is an open, generic, and customizable deep learning accelerator with a complete TVM-based compiler stack. We designed VTA to expose the most salient and common characteristics of mainstream deep learning accelerators. Together TVM and VTA form an end-to-end hardware-software deep learning system stack that includes hardware design, drivers, a JIT runtime, and an optimizing compiler stack based on TVM.
 
diff --git a/docs/vta/install.rst b/docs/topic/vta/install.rst
similarity index 100%
rename from docs/vta/install.rst
rename to docs/topic/vta/install.rst
diff --git a/gallery/how_to/compile_models/README.txt b/gallery/how_to/compile_models/README.txt
new file mode 100644
index 0000000..61cc5be
--- /dev/null
+++ b/gallery/how_to/compile_models/README.txt
@@ -0,0 +1,7 @@
+.. _tutorial-frontend:
+
+Compile Deep Learning Models
+============================
+
+TVM includes a variety of front-ends that can import models in different
+formats. These how-tos demostrate how to import models using the Python API.
diff --git a/tutorials/frontend/from_caffe2.py b/gallery/how_to/compile_models/from_caffe2.py
similarity index 100%
rename from tutorials/frontend/from_caffe2.py
rename to gallery/how_to/compile_models/from_caffe2.py
diff --git a/tutorials/frontend/from_coreml.py b/gallery/how_to/compile_models/from_coreml.py
similarity index 100%
rename from tutorials/frontend/from_coreml.py
rename to gallery/how_to/compile_models/from_coreml.py
diff --git a/tutorials/frontend/from_darknet.py b/gallery/how_to/compile_models/from_darknet.py
similarity index 100%
rename from tutorials/frontend/from_darknet.py
rename to gallery/how_to/compile_models/from_darknet.py
diff --git a/tutorials/frontend/from_keras.py b/gallery/how_to/compile_models/from_keras.py
similarity index 100%
rename from tutorials/frontend/from_keras.py
rename to gallery/how_to/compile_models/from_keras.py
diff --git a/tutorials/frontend/from_mxnet.py b/gallery/how_to/compile_models/from_mxnet.py
similarity index 100%
rename from tutorials/frontend/from_mxnet.py
rename to gallery/how_to/compile_models/from_mxnet.py
diff --git a/tutorials/frontend/from_onnx.py b/gallery/how_to/compile_models/from_onnx.py
similarity index 100%
rename from tutorials/frontend/from_onnx.py
rename to gallery/how_to/compile_models/from_onnx.py
diff --git a/tutorials/frontend/from_paddle.py b/gallery/how_to/compile_models/from_paddle.py
similarity index 100%
rename from tutorials/frontend/from_paddle.py
rename to gallery/how_to/compile_models/from_paddle.py
diff --git a/tutorials/frontend/from_pytorch.py b/gallery/how_to/compile_models/from_pytorch.py
similarity index 100%
rename from tutorials/frontend/from_pytorch.py
rename to gallery/how_to/compile_models/from_pytorch.py
diff --git a/tutorials/frontend/from_tensorflow.py b/gallery/how_to/compile_models/from_tensorflow.py
similarity index 100%
rename from tutorials/frontend/from_tensorflow.py
rename to gallery/how_to/compile_models/from_tensorflow.py
diff --git a/tutorials/frontend/from_tflite.py b/gallery/how_to/compile_models/from_tflite.py
similarity index 100%
rename from tutorials/frontend/from_tflite.py
rename to gallery/how_to/compile_models/from_tflite.py
diff --git a/gallery/how_to/deploy_models/README.txt b/gallery/how_to/deploy_models/README.txt
new file mode 100644
index 0000000..22323c4
--- /dev/null
+++ b/gallery/how_to/deploy_models/README.txt
@@ -0,0 +1,6 @@
+Deploy Deep Learning Models
+---------------------------
+
+TVM is capable of deploying models to a variety of different platforms. These
+how-tos describe how to prepapre and deploy models to many of the supported
+backends.
diff --git a/tutorials/frontend/deploy_model_on_android.py b/gallery/how_to/deploy_models/deploy_model_on_android.py
similarity index 100%
rename from tutorials/frontend/deploy_model_on_android.py
rename to gallery/how_to/deploy_models/deploy_model_on_android.py
diff --git a/tutorials/frontend/deploy_model_on_rasp.py b/gallery/how_to/deploy_models/deploy_model_on_rasp.py
similarity index 100%
rename from tutorials/frontend/deploy_model_on_rasp.py
rename to gallery/how_to/deploy_models/deploy_model_on_rasp.py
diff --git a/tutorials/frontend/deploy_object_detection_pytorch.py b/gallery/how_to/deploy_models/deploy_object_detection_pytorch.py
similarity index 100%
rename from tutorials/frontend/deploy_object_detection_pytorch.py
rename to gallery/how_to/deploy_models/deploy_object_detection_pytorch.py
diff --git a/tutorials/frontend/deploy_prequantized.py b/gallery/how_to/deploy_models/deploy_prequantized.py
similarity index 100%
rename from tutorials/frontend/deploy_prequantized.py
rename to gallery/how_to/deploy_models/deploy_prequantized.py
diff --git a/tutorials/frontend/deploy_prequantized_tflite.py b/gallery/how_to/deploy_models/deploy_prequantized_tflite.py
similarity index 100%
rename from tutorials/frontend/deploy_prequantized_tflite.py
rename to gallery/how_to/deploy_models/deploy_prequantized_tflite.py
diff --git a/tutorials/frontend/deploy_quantized.py b/gallery/how_to/deploy_models/deploy_quantized.py
similarity index 100%
rename from tutorials/frontend/deploy_quantized.py
rename to gallery/how_to/deploy_models/deploy_quantized.py
diff --git a/tutorials/frontend/deploy_sparse.py b/gallery/how_to/deploy_models/deploy_sparse.py
similarity index 100%
rename from tutorials/frontend/deploy_sparse.py
rename to gallery/how_to/deploy_models/deploy_sparse.py
diff --git a/tutorials/frontend/deploy_ssd_gluoncv.py b/gallery/how_to/deploy_models/deploy_ssd_gluoncv.py
similarity index 100%
rename from tutorials/frontend/deploy_ssd_gluoncv.py
rename to gallery/how_to/deploy_models/deploy_ssd_gluoncv.py
diff --git a/gallery/how_to/extend_tvm/README.txt b/gallery/how_to/extend_tvm/README.txt
new file mode 100644
index 0000000..09cd220
--- /dev/null
+++ b/gallery/how_to/extend_tvm/README.txt
@@ -0,0 +1,7 @@
+Extend TVM
+----------
+
+TVM is an extensible development platform, with many points of entry to work
+with, including options for bringing new datatypes and adding lower level
+custom optimization passes. These how-tos describe some ways that TVM can be
+extended.
diff --git a/tutorials/dev/bring_your_own_datatypes.py b/gallery/how_to/extend_tvm/bring_your_own_datatypes.py
similarity index 100%
rename from tutorials/dev/bring_your_own_datatypes.py
rename to gallery/how_to/extend_tvm/bring_your_own_datatypes.py
diff --git a/tutorials/dev/low_level_custom_pass.py b/gallery/how_to/extend_tvm/low_level_custom_pass.py
similarity index 100%
rename from tutorials/dev/low_level_custom_pass.py
rename to gallery/how_to/extend_tvm/low_level_custom_pass.py
diff --git a/tutorials/dev/use_pass_infra.py b/gallery/how_to/extend_tvm/use_pass_infra.py
similarity index 100%
rename from tutorials/dev/use_pass_infra.py
rename to gallery/how_to/extend_tvm/use_pass_infra.py
diff --git a/tutorials/dev/use_pass_instrument.py b/gallery/how_to/extend_tvm/use_pass_instrument.py
similarity index 100%
rename from tutorials/dev/use_pass_instrument.py
rename to gallery/how_to/extend_tvm/use_pass_instrument.py
diff --git a/gallery/how_to/optimize_operators/README.txt b/gallery/how_to/optimize_operators/README.txt
new file mode 100644
index 0000000..889974c
--- /dev/null
+++ b/gallery/how_to/optimize_operators/README.txt
@@ -0,0 +1,5 @@
+Optimize Tensor Operators
+-------------------------
+
+These how-tos demonstrate how to optimize a variety of tensor operations for a
+variety of targets.
diff --git a/tutorials/optimize/opt_conv_cuda.py b/gallery/how_to/optimize_operators/opt_conv_cuda.py
similarity index 100%
rename from tutorials/optimize/opt_conv_cuda.py
rename to gallery/how_to/optimize_operators/opt_conv_cuda.py
diff --git a/tutorials/optimize/opt_conv_tensorcore.py b/gallery/how_to/optimize_operators/opt_conv_tensorcore.py
similarity index 100%
rename from tutorials/optimize/opt_conv_tensorcore.py
rename to gallery/how_to/optimize_operators/opt_conv_tensorcore.py
diff --git a/tutorials/optimize/opt_gemm.py b/gallery/how_to/optimize_operators/opt_gemm.py
similarity index 100%
rename from tutorials/optimize/opt_gemm.py
rename to gallery/how_to/optimize_operators/opt_gemm.py
diff --git a/gallery/how_to/tune_with_autoscheduler/README.txt b/gallery/how_to/tune_with_autoscheduler/README.txt
new file mode 100644
index 0000000..636a636
--- /dev/null
+++ b/gallery/how_to/tune_with_autoscheduler/README.txt
@@ -0,0 +1,6 @@
+Use AutoScheduler for Template-Free Scheduling
+----------------------------------------------
+
+The TVM AutoScheduler offers a template-free way to tune models. These how-tos
+demonstrate how to tune a variety of different models to target a number of
+common platforms.
diff --git a/tutorials/auto_scheduler/ci_logs/conv2d.json b/gallery/how_to/tune_with_autoscheduler/ci_logs/conv2d.json
similarity index 100%
rename from tutorials/auto_scheduler/ci_logs/conv2d.json
rename to gallery/how_to/tune_with_autoscheduler/ci_logs/conv2d.json
diff --git a/tutorials/auto_scheduler/ci_logs/matmul.json b/gallery/how_to/tune_with_autoscheduler/ci_logs/matmul.json
similarity index 100%
rename from tutorials/auto_scheduler/ci_logs/matmul.json
rename to gallery/how_to/tune_with_autoscheduler/ci_logs/matmul.json
diff --git a/tutorials/auto_scheduler/ci_logs/resnet-18-NHWC-B1-cuda.json b/gallery/how_to/tune_with_autoscheduler/ci_logs/resnet-18-NHWC-B1-cuda.json
similarity index 100%
rename from tutorials/auto_scheduler/ci_logs/resnet-18-NHWC-B1-cuda.json
rename to gallery/how_to/tune_with_autoscheduler/ci_logs/resnet-18-NHWC-B1-cuda.json
diff --git a/tutorials/auto_scheduler/ci_logs/resnet-50-NHWC-B1-llvm.json b/gallery/how_to/tune_with_autoscheduler/ci_logs/resnet-50-NHWC-B1-llvm.json
similarity index 100%
rename from tutorials/auto_scheduler/ci_logs/resnet-50-NHWC-B1-llvm.json
rename to gallery/how_to/tune_with_autoscheduler/ci_logs/resnet-50-NHWC-B1-llvm.json
diff --git a/tutorials/auto_scheduler/ci_logs/sparse_dense.json b/gallery/how_to/tune_with_autoscheduler/ci_logs/sparse_dense.json
similarity index 100%
rename from tutorials/auto_scheduler/ci_logs/sparse_dense.json
rename to gallery/how_to/tune_with_autoscheduler/ci_logs/sparse_dense.json
diff --git a/tutorials/auto_scheduler/tune_conv2d_layer_cuda.py b/gallery/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.py
similarity index 100%
rename from tutorials/auto_scheduler/tune_conv2d_layer_cuda.py
rename to gallery/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.py
diff --git a/tutorials/auto_scheduler/tune_network_arm.py b/gallery/how_to/tune_with_autoscheduler/tune_network_arm.py
similarity index 100%
rename from tutorials/auto_scheduler/tune_network_arm.py
rename to gallery/how_to/tune_with_autoscheduler/tune_network_arm.py
diff --git a/tutorials/auto_scheduler/tune_network_cuda.py b/gallery/how_to/tune_with_autoscheduler/tune_network_cuda.py
similarity index 100%
rename from tutorials/auto_scheduler/tune_network_cuda.py
rename to gallery/how_to/tune_with_autoscheduler/tune_network_cuda.py
diff --git a/tutorials/auto_scheduler/tune_network_mali.py b/gallery/how_to/tune_with_autoscheduler/tune_network_mali.py
similarity index 100%
rename from tutorials/auto_scheduler/tune_network_mali.py
rename to gallery/how_to/tune_with_autoscheduler/tune_network_mali.py
diff --git a/tutorials/auto_scheduler/tune_network_x86.py b/gallery/how_to/tune_with_autoscheduler/tune_network_x86.py
similarity index 100%
rename from tutorials/auto_scheduler/tune_network_x86.py
rename to gallery/how_to/tune_with_autoscheduler/tune_network_x86.py
diff --git a/tutorials/auto_scheduler/tune_sparse_x86.py b/gallery/how_to/tune_with_autoscheduler/tune_sparse_x86.py
similarity index 100%
rename from tutorials/auto_scheduler/tune_sparse_x86.py
rename to gallery/how_to/tune_with_autoscheduler/tune_sparse_x86.py
diff --git a/gallery/how_to/tune_with_autotvm/README.txt b/gallery/how_to/tune_with_autotvm/README.txt
new file mode 100644
index 0000000..2b32c08
--- /dev/null
+++ b/gallery/how_to/tune_with_autotvm/README.txt
@@ -0,0 +1,9 @@
+.. _tutorials-autotvm-sec:
+
+Auto-Tune with Templates and AutoTVM
+------------------------------------
+
+AutoTVM offers a way to tune models and operators by providing a template
+schedule, and searcing the parameter space defined by the template. These
+how-tos demonstrate how to write template schedules and optimize them for a
+variety of different hardware platforms.
diff --git a/tutorials/autotvm/tune_conv2d_cuda.py b/gallery/how_to/tune_with_autotvm/tune_conv2d_cuda.py
similarity index 100%
rename from tutorials/autotvm/tune_conv2d_cuda.py
rename to gallery/how_to/tune_with_autotvm/tune_conv2d_cuda.py
diff --git a/tutorials/autotvm/tune_relay_arm.py b/gallery/how_to/tune_with_autotvm/tune_relay_arm.py
similarity index 100%
rename from tutorials/autotvm/tune_relay_arm.py
rename to gallery/how_to/tune_with_autotvm/tune_relay_arm.py
diff --git a/tutorials/autotvm/tune_relay_cuda.py b/gallery/how_to/tune_with_autotvm/tune_relay_cuda.py
similarity index 100%
rename from tutorials/autotvm/tune_relay_cuda.py
rename to gallery/how_to/tune_with_autotvm/tune_relay_cuda.py
diff --git a/tutorials/autotvm/tune_relay_mobile_gpu.py b/gallery/how_to/tune_with_autotvm/tune_relay_mobile_gpu.py
similarity index 100%
rename from tutorials/autotvm/tune_relay_mobile_gpu.py
rename to gallery/how_to/tune_with_autotvm/tune_relay_mobile_gpu.py
diff --git a/tutorials/autotvm/tune_relay_x86.py b/gallery/how_to/tune_with_autotvm/tune_relay_x86.py
similarity index 100%
rename from tutorials/autotvm/tune_relay_x86.py
rename to gallery/how_to/tune_with_autotvm/tune_relay_x86.py
diff --git a/gallery/how_to/work_with_microtvm/README.txt b/gallery/how_to/work_with_microtvm/README.txt
new file mode 100644
index 0000000..a3cc5a0
--- /dev/null
+++ b/gallery/how_to/work_with_microtvm/README.txt
@@ -0,0 +1,7 @@
+.. _tutorial-micro:
+
+Work With microTVM
+------------------
+microTVM enables inference on bare-metal platforms, for example, those without
+a traditional Operating System such as Linux, OS X, or Windows. These how-tos
+demonstrate how to tune and deploy models with microTVM.
diff --git a/tutorials/micro/micro_autotune.py b/gallery/how_to/work_with_microtvm/micro_autotune.py
similarity index 100%
rename from tutorials/micro/micro_autotune.py
rename to gallery/how_to/work_with_microtvm/micro_autotune.py
diff --git a/tutorials/micro/micro_reference_vm.py b/gallery/how_to/work_with_microtvm/micro_reference_vm.py
similarity index 100%
rename from tutorials/micro/micro_reference_vm.py
rename to gallery/how_to/work_with_microtvm/micro_reference_vm.py
diff --git a/tutorials/micro/micro_tflite.py b/gallery/how_to/work_with_microtvm/micro_tflite.py
similarity index 99%
rename from tutorials/micro/micro_tflite.py
rename to gallery/how_to/work_with_microtvm/micro_tflite.py
index d1d4477..cab105c 100644
--- a/tutorials/micro/micro_tflite.py
+++ b/gallery/how_to/work_with_microtvm/micro_tflite.py
@@ -15,6 +15,8 @@
 # specific language governing permissions and limitations
 # under the License.
 """
+.. _microTVM-with-TFLite:
+
 microTVM with TFLite Models
 ===========================
 **Author**: `Tom Gall <https://github.com/tom-gall>`_
diff --git a/gallery/how_to/work_with_relay/README.txt b/gallery/how_to/work_with_relay/README.txt
new file mode 100644
index 0000000..e25e178
--- /dev/null
+++ b/gallery/how_to/work_with_relay/README.txt
@@ -0,0 +1,2 @@
+Work With Relay
+---------------
diff --git a/tutorials/frontend/build_gcn.py b/gallery/how_to/work_with_relay/build_gcn.py
similarity index 100%
rename from tutorials/frontend/build_gcn.py
rename to gallery/how_to/work_with_relay/build_gcn.py
diff --git a/tutorials/frontend/using_external_lib.py b/gallery/how_to/work_with_relay/using_external_lib.py
similarity index 100%
rename from tutorials/frontend/using_external_lib.py
rename to gallery/how_to/work_with_relay/using_external_lib.py
diff --git a/gallery/how_to/work_with_schedules/README.txt b/gallery/how_to/work_with_schedules/README.txt
new file mode 100644
index 0000000..6516af3
--- /dev/null
+++ b/gallery/how_to/work_with_schedules/README.txt
@@ -0,0 +1,2 @@
+Work With Tensor Expression and Schedules
+-----------------------------------------
diff --git a/tutorials/language/extern_op.py b/gallery/how_to/work_with_schedules/extern_op.py
similarity index 100%
rename from tutorials/language/extern_op.py
rename to gallery/how_to/work_with_schedules/extern_op.py
diff --git a/tutorials/language/intrin_math.py b/gallery/how_to/work_with_schedules/intrin_math.py
similarity index 100%
rename from tutorials/language/intrin_math.py
rename to gallery/how_to/work_with_schedules/intrin_math.py
diff --git a/tutorials/language/reduction.py b/gallery/how_to/work_with_schedules/reduction.py
similarity index 100%
rename from tutorials/language/reduction.py
rename to gallery/how_to/work_with_schedules/reduction.py
diff --git a/tutorials/language/scan.py b/gallery/how_to/work_with_schedules/scan.py
similarity index 100%
rename from tutorials/language/scan.py
rename to gallery/how_to/work_with_schedules/scan.py
diff --git a/tutorials/language/schedule_primitives.py b/gallery/how_to/work_with_schedules/schedule_primitives.py
similarity index 100%
rename from tutorials/language/schedule_primitives.py
rename to gallery/how_to/work_with_schedules/schedule_primitives.py
diff --git a/tutorials/language/tedd.py b/gallery/how_to/work_with_schedules/tedd.py
similarity index 100%
rename from tutorials/language/tedd.py
rename to gallery/how_to/work_with_schedules/tedd.py
diff --git a/tutorials/language/tensorize.py b/gallery/how_to/work_with_schedules/tensorize.py
similarity index 100%
rename from tutorials/language/tensorize.py
rename to gallery/how_to/work_with_schedules/tensorize.py
diff --git a/tutorials/language/tuple_inputs.py b/gallery/how_to/work_with_schedules/tuple_inputs.py
similarity index 100%
rename from tutorials/language/tuple_inputs.py
rename to gallery/how_to/work_with_schedules/tuple_inputs.py
diff --git a/gallery/tutorial/README.txt b/gallery/tutorial/README.txt
new file mode 100644
index 0000000..ceac645
--- /dev/null
+++ b/gallery/tutorial/README.txt
@@ -0,0 +1,10 @@
+User Tutorial
+-------------
+
+This tutorial provides an introduction to TVM, meant to address user who is new
+to the TVM project. It begins with some basic information on how TVM works,
+then works through installing TVM, compiling and optimizing models, then
+digging in deeper to the Tensor Expression language and the tuning and
+optimization tools that are built on top of it. After completing the tutorial,
+a new user should be familiar enough with TVM to optimize models, and will be
+prepared to dig into TVM more deeply.
diff --git a/tutorials/get_started/auto_scheduler_matmul_x86.py b/gallery/tutorial/auto_scheduler_matmul_x86.py
similarity index 100%
rename from tutorials/get_started/auto_scheduler_matmul_x86.py
rename to gallery/tutorial/auto_scheduler_matmul_x86.py
diff --git a/tutorials/get_started/autotvm_matmul_x86.py b/gallery/tutorial/autotvm_matmul_x86.py
similarity index 100%
rename from tutorials/get_started/autotvm_matmul_x86.py
rename to gallery/tutorial/autotvm_matmul_x86.py
diff --git a/tutorials/get_started/autotvm_relay_x86.py b/gallery/tutorial/autotvm_relay_x86.py
similarity index 100%
rename from tutorials/get_started/autotvm_relay_x86.py
rename to gallery/tutorial/autotvm_relay_x86.py
diff --git a/tutorials/get_started/cross_compilation_and_rpc.py b/gallery/tutorial/cross_compilation_and_rpc.py
similarity index 100%
rename from tutorials/get_started/cross_compilation_and_rpc.py
rename to gallery/tutorial/cross_compilation_and_rpc.py
diff --git a/tutorials/get_started/install.py b/gallery/tutorial/install.py
similarity index 100%
rename from tutorials/get_started/install.py
rename to gallery/tutorial/install.py
diff --git a/tutorials/topi/intro_topi.py b/gallery/tutorial/intro_topi.py
similarity index 100%
rename from tutorials/topi/intro_topi.py
rename to gallery/tutorial/intro_topi.py
diff --git a/tutorials/get_started/introduction.py b/gallery/tutorial/introduction.py
similarity index 100%
rename from tutorials/get_started/introduction.py
rename to gallery/tutorial/introduction.py
diff --git a/tutorials/get_started/relay_quick_start.py b/gallery/tutorial/relay_quick_start.py
similarity index 100%
rename from tutorials/get_started/relay_quick_start.py
rename to gallery/tutorial/relay_quick_start.py
diff --git a/tutorials/get_started/tensor_expr_get_started.py b/gallery/tutorial/tensor_expr_get_started.py
similarity index 100%
rename from tutorials/get_started/tensor_expr_get_started.py
rename to gallery/tutorial/tensor_expr_get_started.py
diff --git a/tutorials/get_started/tvmc_command_line_driver.py b/gallery/tutorial/tvmc_command_line_driver.py
similarity index 100%
rename from tutorials/get_started/tvmc_command_line_driver.py
rename to gallery/tutorial/tvmc_command_line_driver.py
diff --git a/tests/scripts/task_python_docs.sh b/tests/scripts/task_python_docs.sh
index 79b87b7..2eb471c 100755
--- a/tests/scripts/task_python_docs.sh
+++ b/tests/scripts/task_python_docs.sh
@@ -34,19 +34,18 @@ trap cleanup 0
 
 # cleanup old states
 rm -rf docs/_build
+rm -rf docs/_staging
 mkdir -p docs/_build/html
+mkdir -p docs/_staging/html
 rm -rf docs/gen_modules
 rm -rf docs/doxygen
 
 # prepare auto scheduler tutorials
-rm -rf tutorials/auto_scheduler/*.json
-rm -rf tutorials/get_started/*.json
-cp -f tutorials/auto_scheduler/ci_logs/*.json tutorials/auto_scheduler
-cp -f tutorials/auto_scheduler/ci_logs/*.json tutorials/get_started
-
-# remove stale tutorials and always build from scratch.
-rm -rf docs/tutorials
-rm -rf docs/vta/tutorials
+rm -rf gallery/how_to/tune_with_auto_scheduler/*.json
+rm -rf gallery/tutorial/*.json
+cp -f gallery/how_to/tune_with_autoscheduler/ci_logs/*.json gallery/how_to/tune_with_autoscheduler
+cp -f gallery/how_to/tune_with_autoscheduler/ci_logs/*.json gallery/tutorial
+
 
 # cleanup stale log files
 find . -type f -path "*.log" | xargs rm -f
diff --git a/tests/scripts/task_sphinx_precheck.sh b/tests/scripts/task_sphinx_precheck.sh
index 31fc663..b5cac53 100755
--- a/tests/scripts/task_sphinx_precheck.sh
+++ b/tests/scripts/task_sphinx_precheck.sh
@@ -28,8 +28,8 @@ cleanup()
 trap cleanup 0
 
 # cleanup cache
-rm -rf docs/tutorials
-rm -rf docs/vta/tutorials
+rm -rf docs/_staging
+rm -rf docs/_build
 find . -type f -path "*.pyc" | xargs rm -f
 make cython3
 
diff --git a/tutorials/README.txt b/tutorials/README.txt
deleted file mode 100644
index 8b13789..0000000
--- a/tutorials/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/tutorials/auto_scheduler/README.txt b/tutorials/auto_scheduler/README.txt
deleted file mode 100644
index 7598667..0000000
--- a/tutorials/auto_scheduler/README.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-AutoScheduler : Template-free Auto Scheduling
----------------------------------------------
diff --git a/tutorials/autotvm/README.txt b/tutorials/autotvm/README.txt
deleted file mode 100644
index a1d33ba..0000000
--- a/tutorials/autotvm/README.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-.. _tutorials-autotvm-sec:
-
-AutoTVM : Template-based Auto Tuning
-------------------------------------
diff --git a/tutorials/dev/README.txt b/tutorials/dev/README.txt
deleted file mode 100644
index a358280..0000000
--- a/tutorials/dev/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Developer Tutorials
--------------------
-
diff --git a/tutorials/frontend/README.txt b/tutorials/frontend/README.txt
deleted file mode 100644
index 319506d..0000000
--- a/tutorials/frontend/README.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-.. _tutorial-frontend:
-
-Compile Deep Learning Models
-----------------------------
diff --git a/tutorials/get_started/README.txt b/tutorials/get_started/README.txt
deleted file mode 100644
index aa6c559..0000000
--- a/tutorials/get_started/README.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Getting Started With TVM
-------------------------
diff --git a/tutorials/language/README.txt b/tutorials/language/README.txt
deleted file mode 100644
index 6da8e3c..0000000
--- a/tutorials/language/README.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Tensor Expression and Schedules
--------------------------------
diff --git a/tutorials/micro/README.txt b/tutorials/micro/README.txt
deleted file mode 100644
index 70a5e58..0000000
--- a/tutorials/micro/README.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-.. _tutorial-micro:
-
-microTVM
---------
diff --git a/tutorials/optimize/README.txt b/tutorials/optimize/README.txt
deleted file mode 100644
index b051548..0000000
--- a/tutorials/optimize/README.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Optimize Tensor Operators
--------------------------
diff --git a/tutorials/topi/README.txt b/tutorials/topi/README.txt
deleted file mode 100644
index eae0aaf..0000000
--- a/tutorials/topi/README.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-TOPI: TVM Operator Inventory
-----------------------------