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 885ef2c8fc0d..087b8166c226 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 03e0fae97090..766fda49997f 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -51,9 +51,8 @@ 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 @@ def git_describe_version(original_version): 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 @@ def git_describe_version(original_version): # 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 @@ def git_describe_version(original_version): "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 @@ def git_describe_version(original_version): "from_caffe2.py", "from_paddle.py", ], - "language": [ + "work_with_schedules": [ "schedule_primitives.py", "reduction.py", "intrin_math.py", @@ -269,26 +284,25 @@ def git_describe_version(original_version): "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 3652a2891b37..e3d12e83865d 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 `_. 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— from installing TVM and supporting ML software, to creating and +training a model, to compiling to different architectures—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 `_ 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 `_ -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 `_ 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 `_ -rules to the `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 +`_ rules to the +`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 `_ to build python tutorials. -You can find the source code under `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 `_ to build many +python how-tos. You can find the source code under `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 `_ and the +`how-to index `_ Refer to Another Location in the Document ----------------------------------------- diff --git a/docs/contribute/index.rst b/docs/contribute/index.rst index e3e4119d803e..acacfdc8a6e2 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% rename from docs/dev/how_to.rst rename to docs/dev/how_to/how_to.rst index dcf8df2331eb..844ae0ad527e 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/dev/tutorial/index.rst b/docs/dev/tutorial/index.rst new file mode 100644 index 000000000000..77fbe0f5405e --- /dev/null +++ b/docs/dev/tutorial/index.rst @@ -0,0 +1,29 @@ +.. 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. + +.. _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 + + codebase_walkthrough diff --git a/docs/errors.rst b/docs/errors.rst index f911ab9c1bab..84ea5551601a 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 b127de982b61..73269e85db70 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/how_to/index.rst b/docs/how_to/index.rst new file mode 100644 index 000000000000..433d7acee95a --- /dev/null +++ b/docs/how_to/index.rst @@ -0,0 +1,39 @@ +.. 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. + +How To Guides +============= + +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 + + 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 9443fef25ea6..33642cf469e7 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 491c42712e9a..a264c9beb8f8 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 ` to install TVM. -- Checkout the :doc:`Getting Started with TVM Tutorial `. - -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 5f739418add3..5759b1eb9186 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 ` 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 `. + +If you would like to quickly try out TVM or run some demo and tutorials, you +can :ref:`install from Docker `, or install using the +third-party :doc:`TLCPack Python and Conda packages ` .. toctree:: :maxdepth: 2 from_source docker + tlcpack diff --git a/docs/install/tlcpack.rst b/docs/install/tlcpack.rst new file mode 100644 index 000000000000..541cffb0c2c2 --- /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 +`_. 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 4b8ab4dd43f6..a2a43bf7d0f2 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 `_ * `Typescript typedoc API `_ 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/reference/publications.rst b/docs/reference/publications.rst new file mode 100644 index 000000000000..3a90a3ad3c25 --- /dev/null +++ b/docs/reference/publications.rst @@ -0,0 +1,31 @@ +.. 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. + +Publications +============ + +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. + +* `TVM: An Automated End-to-End Optimizing Compiler for Deep Learning `_ +* `Learning to Optimize Tensor Programs `_ +* `Ansor: Generating High-Performance Tensor Programs for Deep Learning `_ +* `Nimble: Efficiently Compiling Dynamic Neural Networks for Model Inference + `_ 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 a67b1547d229..ebcadb34427c 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 `. 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 `. +2. Try the :ref:`microTVM with TFLite Tutorial `. 3. Try running a more complex `CIFAR10-CNN model `_. @@ -63,7 +63,7 @@ How microTVM Works ~~~~~~~~~~~~~~~~~~ -You can read more about the design of these pieces at the :doc:`microTVM Design Document `. +You can read more about the design of these pieces at the :ref:`microTVM Design Document `. 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 d97705ef140f..d09b31bb360b 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 000000000000..61cc5be2cb79 --- /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 000000000000..22323c4e521b --- /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 000000000000..09cd220c80b3 --- /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 000000000000..889974c7873c --- /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 000000000000..636a636d81c0 --- /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 000000000000..2b32c085c2fd --- /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 000000000000..a3cc5a0c6c43 --- /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 d1d4477f63e1..cab105cb450f 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 `_ 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 000000000000..e25e1782c03f --- /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 000000000000..6516af3b3d2f --- /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 000000000000..ceac645d7dc1 --- /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 79b87b75fc70..2eb471cbc69f 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 31fc663082f1..b5cac539062c 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 8b137891791f..000000000000 --- 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 75986679f0bd..000000000000 --- 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 a1d33ba088cc..000000000000 --- 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 a358280640de..000000000000 --- 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 319506d21f8f..000000000000 --- 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 aa6c559c1b38..000000000000 --- 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 6da8e3c57c1f..000000000000 --- 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 70a5e580ecd1..000000000000 --- 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 b051548c5351..000000000000 --- 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 eae0aafafc02..000000000000 --- a/tutorials/topi/README.txt +++ /dev/null @@ -1,2 +0,0 @@ -TOPI: TVM Operator Inventory -----------------------------