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 2024/09/17 17:19:22 UTC

(tvm-site) branch asf-site updated: deploying docs (apache/tvm@9f281758e8a1a3c1c649b995367b0166da55f2c6)

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new 58334dce7c deploying docs (apache/tvm@9f281758e8a1a3c1c649b995367b0166da55f2c6)
58334dce7c is described below

commit 58334dce7cf8e37f78b020592bf1516b30d8a204
Author: tvm-bot <95...@users.noreply.github.com>
AuthorDate: Tue Sep 17 17:19:12 2024 +0000

    deploying docs (apache/tvm@9f281758e8a1a3c1c649b995367b0166da55f2c6)
---
 .../relax_creation.ipynb                           | 190 +++++
 .../relax_transformation.ipynb                     | 140 ++++
 .../tir_transformation.py}                         |   0
 .../relax_transformation.py                        | 141 ++++
 .../tir_creation.py}                               |   0
 .../relax_creation.py                              | 281 +++++++
 .../tir_creation.ipynb}                            |   0
 .../tir_transformation.ipynb}                      |   0
 ...thumb.png => sphx_glr_relax_creation_thumb.png} | Bin
 ...png => sphx_glr_relax_transformation_thumb.png} | Bin
 ...n_thumb.png => sphx_glr_tir_creation_thumb.png} | Bin
 ...b.png => sphx_glr_tir_transformation_thumb.png} | Bin
 docs/_sources/deep_dive/relax/abstraction.rst.txt  |  73 ++
 .../deep_dive/{tensor_ir => relax}/index.rst.txt   |  17 +-
 docs/_sources/deep_dive/relax/learning.rst.txt     | 272 ++++++
 .../deep_dive/relax/tutorials/index.rst.txt        |  64 ++
 .../relax/tutorials/relax_creation.rst.txt         | 642 ++++++++++++++
 .../relax/tutorials/relax_transformation.rst.txt   | 512 ++++++++++++
 .../relax/tutorials/sg_execution_times.rst.txt     |  14 +
 .../deep_dive/tensor_ir/abstraction.rst.txt        |   1 -
 docs/_sources/deep_dive/tensor_ir/index.rst.txt    |   6 +-
 .../deep_dive/tensor_ir/tutorials/index.rst.txt    |  12 +-
 .../tensor_ir/tutorials/sg_execution_times.rst.txt |  12 +-
 .../{creation.rst.txt => tir_creation.rst.txt}     |  14 +-
 ...ormation.rst.txt => tir_transformation.rst.txt} |  20 +-
 .../get_started/tutorials/ir_module.rst.txt        |   8 +-
 .../tutorials/sg_execution_times.rst.txt           |   6 +-
 .../how_to/compile_models/from_darknet.rst.txt     |   2 +-
 .../how_to/compile_models/from_keras.rst.txt       |   2 +-
 .../how_to/compile_models/from_oneflow.rst.txt     |   2 +-
 .../how_to/compile_models/from_paddle.rst.txt      |   2 +-
 .../how_to/compile_models/from_pytorch.rst.txt     |   2 +-
 .../how_to/compile_models/from_tensorflow.rst.txt  |   2 +-
 .../compile_models/sg_execution_times.rst.txt      |  20 +-
 .../deploy_models/deploy_model_on_adreno.rst.txt   |   4 +-
 .../deploy_model_on_adreno_tvmc.rst.txt            |   2 +-
 .../deploy_models/deploy_model_on_android.rst.txt  |   2 +-
 .../deploy_object_detection_pytorch.rst.txt        |   4 +-
 .../deploy_models/deploy_prequantized.rst.txt      |   6 +-
 .../deploy_prequantized_tflite.rst.txt             |   2 +-
 .../deploy_models/sg_execution_times.rst.txt       |  18 +-
 .../how_to/extend_tvm/sg_execution_times.rst.txt   |   6 +-
 .../how_to/extend_tvm/use_pass_instrument.rst.txt  |  16 +-
 .../optimize_operators/opt_conv_cuda.rst.txt       |   2 +-
 .../optimize_operators/opt_conv_tensorcore.rst.txt |   2 +-
 .../how_to/optimize_operators/opt_gemm.rst.txt     |  16 +-
 .../optimize_operators/sg_execution_times.rst.txt  |   8 +-
 .../sg_execution_times.rst.txt                     |  14 +-
 .../tune_network_cuda.rst.txt                      |   4 +-
 .../tune_network_x86.rst.txt                       |   4 +-
 .../tune_with_autotvm/sg_execution_times.rst.txt   |   8 +-
 .../tune_with_autotvm/tune_conv2d_cuda.rst.txt     |   2 +-
 .../tutorials/cross_compilation_and_rpc.rst.txt    |   2 +-
 .../_sources/how_to/tutorials/optimize_llm.rst.txt |   2 +-
 .../how_to/tutorials/sg_execution_times.rst.txt    |  10 +-
 .../work_with_microtvm/micro_autotune.rst.txt      |  18 +-
 .../work_with_microtvm/micro_pytorch.rst.txt       |   4 +-
 .../how_to/work_with_microtvm/micro_train.rst.txt  |  16 +-
 .../work_with_microtvm/sg_execution_times.rst.txt  |  18 +-
 .../work_with_relay/sg_execution_times.rst.txt     |   8 +-
 .../work_with_schedules/sg_execution_times.rst.txt |  14 +-
 docs/_sources/index.rst.txt                        |   1 +
 .../tutorials/frontend/deploy_detection.rst.txt    |   4 +-
 .../tutorials/frontend/sg_execution_times.rst.txt  |   4 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |   6 +-
 .../topic/vta/tutorials/sg_execution_times.rst.txt |   6 +-
 .../tutorial/auto_scheduler_matmul_x86.rst.txt     |   4 +-
 docs/_sources/tutorial/autotvm_matmul_x86.rst.txt  |  20 +-
 docs/_sources/tutorial/autotvm_relay_x86.rst.txt   |  60 +-
 docs/_sources/tutorial/intro_topi.rst.txt          |   2 +-
 docs/_sources/tutorial/sg_execution_times.rst.txt  |  16 +-
 .../tutorial/tensor_expr_get_started.rst.txt       |  46 +-
 docs/arch/benchmark.html                           |   8 +-
 docs/arch/convert_layout.html                      |   8 +-
 docs/arch/debugger.html                            |   8 +-
 docs/arch/device_target_interactions.html          |   8 +-
 docs/arch/frontend/tensorflow.html                 |   8 +-
 docs/arch/hybrid_script.html                       |   8 +-
 docs/arch/index.html                               |   8 +-
 docs/arch/inferbound.html                          |   8 +-
 .../arch/introduction_to_module_serialization.html |   8 +-
 docs/arch/microtvm_design.html                     |   8 +-
 docs/arch/microtvm_project_api.html                |   8 +-
 docs/arch/model_library_format.html                |   8 +-
 docs/arch/pass_infra.html                          |   8 +-
 docs/arch/relay_intro.html                         |   8 +-
 docs/arch/relay_op_strategy.html                   |   8 +-
 docs/arch/runtime.html                             |   8 +-
 docs/arch/runtimes/vulkan.html                     |   8 +-
 docs/arch/virtual_machine.html                     |   8 +-
 docs/commit_hash                                   |   2 +-
 docs/contribute/ci.html                            |   8 +-
 docs/contribute/code_guide.html                    |   8 +-
 docs/contribute/code_review.html                   |   8 +-
 docs/contribute/committer_guide.html               |   8 +-
 docs/contribute/community.html                     |   8 +-
 docs/contribute/document.html                      |   8 +-
 docs/contribute/error_handling.html                |   8 +-
 docs/contribute/git_howto.html                     |   8 +-
 docs/contribute/index.html                         |   8 +-
 docs/contribute/pull_request.html                  |   8 +-
 docs/contribute/release_process.html               |   8 +-
 .../{tensor_ir => relax}/abstraction.html          | 128 ++-
 docs/deep_dive/{tensor_ir => relax}/index.html     |  76 +-
 docs/deep_dive/relax/learning.html                 | 704 ++++++++++++++++
 .../{tensor_ir => relax}/tutorials/index.html      |  30 +-
 docs/deep_dive/relax/tutorials/relax_creation.html | 929 +++++++++++++++++++++
 .../relax/tutorials/relax_transformation.html      | 842 +++++++++++++++++++
 .../tutorials/sg_execution_times.html              |  28 +-
 docs/deep_dive/tensor_ir/abstraction.html          |  12 +-
 docs/deep_dive/tensor_ir/index.html                |  32 +-
 docs/deep_dive/tensor_ir/learning.html             |  16 +-
 docs/deep_dive/tensor_ir/tutorials/index.html      |  16 +-
 .../tensor_ir/tutorials/sg_execution_times.html    |  22 +-
 .../tutorials/{creation.html => tir_creation.html} |  28 +-
 ...transformation.html => tir_transformation.html} |  38 +-
 docs/dev/how_to/debugging_tvm.html                 |   8 +-
 docs/dev/how_to/how_to.html                        |   8 +-
 docs/dev/how_to/relay_add_op.html                  |   8 +-
 docs/dev/how_to/relay_add_pass.html                |   8 +-
 docs/dev/how_to/relay_bring_your_own_codegen.html  |   8 +-
 docs/dev/tutorial/codebase_walkthrough.html        |   8 +-
 docs/dev/tutorial/index.html                       |   8 +-
 docs/errors.html                                   |   8 +-
 docs/faq.html                                      |   8 +-
 docs/genindex.html                                 |   8 +-
 docs/get_started/overview.html                     |   8 +-
 docs/get_started/tutorials/index.html              |   8 +-
 docs/get_started/tutorials/ir_module.html          |  16 +-
 docs/get_started/tutorials/quick_start.html        |   8 +-
 docs/get_started/tutorials/sg_execution_times.html |  14 +-
 docs/how_to/compile_models/from_coreml.html        |   8 +-
 docs/how_to/compile_models/from_darknet.html       |  10 +-
 docs/how_to/compile_models/from_keras.html         |  10 +-
 docs/how_to/compile_models/from_oneflow.html       |  24 +-
 docs/how_to/compile_models/from_onnx.html          |   8 +-
 docs/how_to/compile_models/from_paddle.html        |  10 +-
 docs/how_to/compile_models/from_pytorch.html       |  21 +-
 docs/how_to/compile_models/from_tensorflow.html    |  10 +-
 docs/how_to/compile_models/from_tflite.html        |   8 +-
 docs/how_to/compile_models/index.html              |   8 +-
 docs/how_to/compile_models/sg_execution_times.html |  28 +-
 docs/how_to/deploy/adreno.html                     |   8 +-
 docs/how_to/deploy/android.html                    |   8 +-
 docs/how_to/deploy/arm_compute_lib.html            |   8 +-
 docs/how_to/deploy/bnns.html                       |   8 +-
 docs/how_to/deploy/cpp_deploy.html                 |   8 +-
 docs/how_to/deploy/hls.html                        |   8 +-
 docs/how_to/deploy/index.html                      |   8 +-
 docs/how_to/deploy/integrate.html                  |   8 +-
 docs/how_to/deploy/mrvl.html                       |   8 +-
 docs/how_to/deploy/tensorrt.html                   |   8 +-
 docs/how_to/deploy/vitis_ai.html                   |   8 +-
 .../deploy_models/deploy_model_on_adreno.html      |  12 +-
 .../deploy_models/deploy_model_on_adreno_tvmc.html |  35 +-
 .../deploy_models/deploy_model_on_android.html     |  10 +-
 .../how_to/deploy_models/deploy_model_on_nano.html |   8 +-
 .../how_to/deploy_models/deploy_model_on_rasp.html |   8 +-
 .../deploy_object_detection_pytorch.html           |  66 +-
 docs/how_to/deploy_models/deploy_prequantized.html |  19 +-
 .../deploy_models/deploy_prequantized_tflite.html  |  10 +-
 docs/how_to/deploy_models/deploy_sparse.html       |   8 +-
 docs/how_to/deploy_models/index.html               |   8 +-
 docs/how_to/deploy_models/sg_execution_times.html  |  30 +-
 docs/how_to/dev/index.html                         |   8 +-
 docs/how_to/dev/pytest_target_parametrization.html |   8 +-
 docs/how_to/dev/setup_rpc_system.html              |   8 +-
 docs/how_to/extend_tvm/index.html                  |   8 +-
 docs/how_to/extend_tvm/low_level_custom_pass.html  |   8 +-
 docs/how_to/extend_tvm/sg_execution_times.html     |  14 +-
 docs/how_to/extend_tvm/use_pass_infra.html         |   8 +-
 docs/how_to/extend_tvm/use_pass_instrument.html    |  24 +-
 docs/how_to/legacy_index.html                      |   8 +-
 docs/how_to/optimize_operators/index.html          |   8 +-
 docs/how_to/optimize_operators/opt_conv_cuda.html  |  10 +-
 .../optimize_operators/opt_conv_tensorcore.html    |  10 +-
 docs/how_to/optimize_operators/opt_gemm.html       |  24 +-
 .../optimize_operators/sg_execution_times.html     |  16 +-
 docs/how_to/profile/index.html                     |   8 +-
 docs/how_to/profile/papi.html                      |   8 +-
 docs/how_to/tune_with_autoscheduler/index.html     |   8 +-
 .../sg_execution_times.html                        |  22 +-
 .../tune_conv2d_layer_cuda.html                    |   8 +-
 .../tune_with_autoscheduler/tune_network_arm.html  |   8 +-
 .../tune_with_autoscheduler/tune_network_cuda.html |  12 +-
 .../tune_with_autoscheduler/tune_network_mali.html |   8 +-
 .../tune_with_autoscheduler/tune_network_x86.html  |  12 +-
 .../tune_with_autoscheduler/tune_sparse_x86.html   |   8 +-
 docs/how_to/tune_with_autotvm/index.html           |   8 +-
 .../tune_with_autotvm/sg_execution_times.html      |  16 +-
 .../how_to/tune_with_autotvm/tune_conv2d_cuda.html |  10 +-
 docs/how_to/tune_with_autotvm/tune_relay_arm.html  |   8 +-
 docs/how_to/tune_with_autotvm/tune_relay_cuda.html |   8 +-
 .../tune_with_autotvm/tune_relay_mobile_gpu.html   |   8 +-
 docs/how_to/tune_with_autotvm/tune_relay_x86.html  |   8 +-
 .../tutorials/cross_compilation_and_rpc.html       |  10 +-
 docs/how_to/tutorials/customize_opt.html           |   8 +-
 docs/how_to/tutorials/e2e_opt_model.html           |   8 +-
 docs/how_to/tutorials/index.html                   |   8 +-
 docs/how_to/tutorials/optimize_llm.html            |  10 +-
 docs/how_to/tutorials/sg_execution_times.html      |  22 +-
 docs/how_to/work_with_microtvm/index.html          |   8 +-
 docs/how_to/work_with_microtvm/micro_aot.html      |   8 +-
 docs/how_to/work_with_microtvm/micro_autotune.html |  26 +-
 .../work_with_microtvm/micro_custom_ide.html       |   8 +-
 docs/how_to/work_with_microtvm/micro_ethosu.html   |   8 +-
 .../work_with_microtvm/micro_mlperftiny.html       |   8 +-
 docs/how_to/work_with_microtvm/micro_pytorch.html  |  12 +-
 docs/how_to/work_with_microtvm/micro_tflite.html   |   8 +-
 docs/how_to/work_with_microtvm/micro_train.html    |  24 +-
 docs/how_to/work_with_microtvm/micro_tvmc.html     |   8 +-
 .../work_with_microtvm/sg_execution_times.html     |  26 +-
 docs/how_to/work_with_relay/build_gcn.html         |   8 +-
 docs/how_to/work_with_relay/index.html             |   8 +-
 .../how_to/work_with_relay/sg_execution_times.html |  16 +-
 .../how_to/work_with_relay/using_external_lib.html |   8 +-
 .../work_with_relay/using_pipeline_executor.html   |   8 +-
 docs/how_to/work_with_relay/using_relay_viz.html   |   8 +-
 docs/how_to/work_with_schedules/extern_op.html     |   8 +-
 docs/how_to/work_with_schedules/index.html         |   8 +-
 docs/how_to/work_with_schedules/reduction.html     |   8 +-
 docs/how_to/work_with_schedules/scan.html          |   8 +-
 .../work_with_schedules/schedule_primitives.html   |   8 +-
 .../work_with_schedules/sg_execution_times.html    |  22 +-
 docs/how_to/work_with_schedules/tedd.html          |   8 +-
 docs/how_to/work_with_schedules/tensorize.html     |   8 +-
 docs/how_to/work_with_schedules/tuple_inputs.html  |   8 +-
 docs/index.html                                    |  19 +-
 docs/install/docker.html                           |   8 +-
 docs/install/from_source.html                      |   8 +-
 docs/install/index.html                            |   8 +-
 docs/objects.inv                                   | Bin 31494 -> 31716 bytes
 docs/py-modindex.html                              |   8 +-
 docs/reference/api/links.html                      |   8 +-
 docs/reference/api/python/auto_scheduler.html      |  12 +-
 docs/reference/api/python/autotvm.html             |   8 +-
 docs/reference/api/python/contrib.html             |   8 +-
 docs/reference/api/python/dlight.html              |   8 +-
 docs/reference/api/python/driver.html              |   8 +-
 docs/reference/api/python/error.html               |   8 +-
 docs/reference/api/python/graph_executor.html      |   8 +-
 docs/reference/api/python/index.html               |  12 +-
 docs/reference/api/python/instrument.html          |   8 +-
 docs/reference/api/python/ir.html                  |   8 +-
 docs/reference/api/python/meta_schedule.html       |   8 +-
 docs/reference/api/python/micro.html               |   8 +-
 docs/reference/api/python/relax/analysis.html      |   8 +-
 docs/reference/api/python/relax/block_builder.html |   8 +-
 docs/reference/api/python/relax/frontend.html      |   8 +-
 docs/reference/api/python/relax/op.html            |   8 +-
 docs/reference/api/python/relax/relax.html         |  10 +-
 docs/reference/api/python/relax/transform.html     |   8 +-
 docs/reference/api/python/relay/analysis.html      |   8 +-
 docs/reference/api/python/relay/backend.html       |   8 +-
 .../api/python/relay/dataflow_pattern.html         |   8 +-
 docs/reference/api/python/relay/frontend.html      |   8 +-
 docs/reference/api/python/relay/image.html         |   8 +-
 docs/reference/api/python/relay/index.html         |   8 +-
 docs/reference/api/python/relay/nn.html            |   8 +-
 docs/reference/api/python/relay/testing.html       |   8 +-
 docs/reference/api/python/relay/transform.html     |   8 +-
 docs/reference/api/python/relay/vision.html        |   8 +-
 docs/reference/api/python/rpc.html                 |   8 +-
 docs/reference/api/python/runtime/disco.html       |   8 +-
 docs/reference/api/python/runtime/ndarray.html     |   8 +-
 docs/reference/api/python/runtime/profiling.html   |   8 +-
 docs/reference/api/python/runtime/relax_vm.html    |   8 +-
 docs/reference/api/python/runtime/runtime.html     |   8 +-
 docs/reference/api/python/target.html              |   8 +-
 docs/reference/api/python/te.html                  |   8 +-
 docs/reference/api/python/tir/analysis.html        |   8 +-
 docs/reference/api/python/tir/schedule.html        |   8 +-
 docs/reference/api/python/tir/stmt_functor.html    |   8 +-
 docs/reference/api/python/tir/tir.html             |   8 +-
 docs/reference/api/python/tir/transform.html       |   8 +-
 docs/reference/api/python/topi.html                |   8 +-
 docs/reference/api/python/transform.html           |   8 +-
 .../api/typedoc/classes/ArtifactCache.html         |  14 +-
 .../typedoc/classes/ArtifactIndexedDBCache.html    |  16 +-
 docs/reference/api/typedoc/classes/DLDataType.html |  14 +-
 docs/reference/api/typedoc/classes/DLDevice.html   |  12 +-
 docs/reference/api/typedoc/classes/Instance.html   | 114 +--
 .../classes/LinearCongruentialGenerator.html       |  16 +-
 docs/reference/api/typedoc/classes/Module.html     |  12 +-
 docs/reference/api/typedoc/classes/NDArray.html    |  30 +-
 docs/reference/api/typedoc/classes/RPCServer.html  |  16 +-
 docs/reference/api/typedoc/classes/Scalar.html     |   8 +-
 docs/reference/api/typedoc/classes/TVMArray.html   |  16 +-
 docs/reference/api/typedoc/classes/TVMObject.html  |  12 +-
 .../api/typedoc/classes/VirtualMachine.html        |  10 +-
 .../classes/_internal_.AsyncifyHandler.html        |  12 +-
 .../classes/_internal_.CachedCallStack.html        |  36 +-
 .../classes/_internal_.CanvasRenderManager.html    |  10 +-
 .../typedoc/classes/_internal_.Environment.html    |  14 +-
 .../api/typedoc/classes/_internal_.FFILibrary.html |  22 +-
 .../api/typedoc/classes/_internal_.Memory.html     |  36 +-
 .../typedoc/classes/_internal_.PackedFuncCell.html |   8 +-
 .../typedoc/classes/_internal_.RuntimeContext.html |  58 +-
 .../api/typedoc/classes/_internal_.TVMString.html  |  14 +-
 .../typedoc/classes/_internal_.WebGPUContext.html  |  28 +-
 .../enums/_internal_.AsyncifyStateKind.html        |   8 +-
 .../typedoc/enums/_internal_.RPCServerState.html   |  14 +-
 docs/reference/api/typedoc/functions/assert.html   |   2 +-
 .../api/typedoc/functions/createPolyfillWASI.html  |   2 +-
 .../api/typedoc/functions/deleteNDArrayCache.html  |   2 +-
 .../api/typedoc/functions/detectGPUDevice.html     |   2 +-
 .../api/typedoc/functions/hasNDArrayInCache.html   |   2 +-
 .../api/typedoc/functions/instantiate.html         |   2 +-
 docs/reference/api/typedoc/functions/wasmPath.html |   2 +-
 .../typedoc/interfaces/ArtifactCacheTemplate.html  |  10 +-
 .../api/typedoc/interfaces/Disposable.html         |   4 +-
 .../typedoc/interfaces/GPUDeviceDetectOutput.html  |   8 +-
 .../api/typedoc/interfaces/InitProgressReport.html |   8 +-
 .../api/typedoc/interfaces/LibraryProvider.html    |   6 +-
 .../interfaces/_internal_.FunctionInfo.html        |   8 +-
 .../interfaces/_internal_.NDArrayCacheEntry.html   |  14 +-
 .../interfaces/_internal_.NDArrayShardEntry.html   |  10 +-
 .../api/typedoc/types/InitProgressCallback.html    |   2 +-
 docs/reference/api/typedoc/types/PackedFunc.html   |   2 +-
 .../typedoc/types/_internal_.AsyncPackedFunc.html  |   2 +-
 .../types/_internal_.FObjectConstructor.html       |   2 +-
 .../types/_internal_.FTVMWasmAllocSpace.html       |   2 +-
 .../types/_internal_.FTVMWasmFreeSpace.html        |   2 +-
 .../types/_internal_.FTVMWasmPackedCFunc.html      |   2 +-
 .../api/typedoc/types/_internal_.Pointer.html      |   2 +-
 .../typedoc/types/_internal_.TVMObjectBase.html    |   2 +-
 docs/reference/langref/hybrid_script.html          |   8 +-
 docs/reference/langref/index.html                  |   8 +-
 docs/reference/langref/relay_adt.html              |   8 +-
 docs/reference/langref/relay_expr.html             |   8 +-
 docs/reference/langref/relay_op.html               |   8 +-
 docs/reference/langref/relay_pattern.html          |   8 +-
 docs/reference/langref/relay_type.html             |   8 +-
 docs/reference/publications.html                   |   8 +-
 docs/reference/security.html                       |   8 +-
 docs/search.html                                   |   8 +-
 docs/searchindex.js                                |   2 +-
 docs/topic/microtvm/index.html                     |   8 +-
 docs/topic/vta/dev/config.html                     |   8 +-
 docs/topic/vta/dev/hardware.html                   |   8 +-
 docs/topic/vta/dev/index.html                      |   8 +-
 docs/topic/vta/index.html                          |   8 +-
 docs/topic/vta/install.html                        |   8 +-
 .../vta/tutorials/frontend/deploy_detection.html   |  12 +-
 docs/topic/vta/tutorials/frontend/index.html       |   8 +-
 .../vta/tutorials/frontend/sg_execution_times.html |  12 +-
 docs/topic/vta/tutorials/index.html                |   8 +-
 docs/topic/vta/tutorials/matrix_multiply.html      |   8 +-
 .../vta/tutorials/optimize/convolution_opt.html    |   8 +-
 docs/topic/vta/tutorials/optimize/index.html       |   8 +-
 .../tutorials/optimize/matrix_multiply_opt.html    |   8 +-
 .../vta/tutorials/optimize/sg_execution_times.html |  14 +-
 docs/topic/vta/tutorials/sg_execution_times.html   |  14 +-
 docs/topic/vta/tutorials/vta_get_started.html      |   8 +-
 docs/tutorial/auto_scheduler_matmul_x86.html       |  12 +-
 docs/tutorial/autotvm_matmul_x86.html              |  28 +-
 docs/tutorial/autotvm_relay_x86.html               | 282 ++++---
 docs/tutorial/index.html                           |   8 +-
 docs/tutorial/intro_topi.html                      |  10 +-
 docs/tutorial/introduction.html                    |   8 +-
 docs/tutorial/relay_quick_start.html               |   8 +-
 docs/tutorial/sg_execution_times.html              |  24 +-
 docs/tutorial/tensor_expr_get_started.html         |  54 +-
 docs/tutorial/tensor_ir_blitz_course.html          |   8 +-
 docs/tutorial/tvmc_command_line_driver.html        |   8 +-
 docs/tutorial/tvmc_python.html                     |   8 +-
 docs/tutorial/uma.html                             |   8 +-
 367 files changed, 6673 insertions(+), 2330 deletions(-)

diff --git a/docs/_downloads/315fcda965a8d605f81705edf19ea2c6/relax_creation.ipynb b/docs/_downloads/315fcda965a8d605f81705edf19ea2c6/relax_creation.ipynb
new file mode 100644
index 0000000000..e42660d1bf
--- /dev/null
+++ b/docs/_downloads/315fcda965a8d605f81705edf19ea2c6/relax_creation.ipynb
@@ -0,0 +1,190 @@
+{
+  "cells": [
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "%%shell\n# Installs the latest dev build of TVM from PyPI. If you wish to build\n# from source, see https://tvm.apache.org/docs/install/from_source.html\npip install apache-tvm --pre"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "\n\n# Relax Creation\nThis tutorial demonstrates how to create Relax functions and programs.\nWe'll cover various ways to define Relax functions, including using TVMScript,\nand relax NNModule API.\n"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Create Relax programs using TVMScript\nTVMScript is a domain-specific language for representing Apache TVM's\nintermediate representation (IR). It is a Python dialect that can be used\nto define an IRModule, which contains both TensorIR and Relax functions.\n\nIn this section, we will show how to define a simple MLP model with only\nhigh-level Relax operators using TVMScript.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "from tvm import relax, topi\nfrom tvm.script import ir as I\nfrom tvm.script import relax as R\nfrom tvm.script import tir as T\n\n\n@I.ir_module\nclass RelaxModule:\n    @R.function\n    def forward(\n        data: R.Tensor((\"n\", 784), dtype=\"float32\"),\n        w0: R.Tensor((128, 784), dtype=\"float32\"),\n        b0: R.Tensor((128,), dtype=\"float32\"),\n        w1: R.Tensor((10, 128), dtype=\"float32\"),\n        b1: R.Tensor((10,), dtype=\"float32\"),\n    ) -> R.Tensor [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "Relax is not only a graph-level IR, but also supports cross-level\nrepresentation and transformation. To be specific, we can directly call\nTensorIR functions in Relax function.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "@I.ir_module\nclass RelaxModuleWithTIR:\n    @T.prim_func\n    def relu(x: T.handle, y: T.handle):\n        n, m = T.int64(), T.int64()\n        X = T.match_buffer(x, (n, m), \"float32\")\n        Y = T.match_buffer(y, (n, m), \"float32\")\n        for i, j in T.grid(n, m):\n            with T.block(\"relu\"):\n                vi, vj = T.axis.remap(\"SS\", [i, j])\n                Y[vi, vj] = T.max(X[vi, vj], T.float32(0))\n\n    @R.function\n    def forward(\n        data: R.Te [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "<div class=\"alert alert-info\"><h4>Note</h4><p>You may notice that the printed output is different from the written\n  TVMScript code. This is because we print the IRModule in a standard\n  format, while we support syntax sugar for the input\n\n  For example, we can combine multiple operators into a single line, as\n\n```python\nlv0 = R.matmul(data, R.permute_dims(w0)) + b0\n```\n  However, the normalized expression requires only one operation in one\n  binding. So the printed  [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Create Relax programs using NNModule API\nBesides TVMScript, we also provide a PyTorch-like API for defining neural networks.\nIt is designed to be more intuitive and easier to use than TVMScript.\n\nIn this section, we will show how to define the same MLP model using\nRelax NNModule API.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "from tvm.relax.frontend import nn\n\n\nclass NNModule(nn.Module):\n    def __init__(self):\n        super().__init__()\n        self.fc1 = nn.Linear(784, 128)\n        self.relu1 = nn.ReLU()\n        self.fc2 = nn.Linear(128, 10)\n\n    def forward(self, x):\n        x = self.fc1(x)\n        x = self.relu1(x)\n        x = self.fc2(x)\n        return x"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "After we define the NNModule, we can export it to TVM IRModule via\n``export_tvm``.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "mod, params = NNModule().export_tvm({\"forward\": {\"x\": nn.spec.Tensor((\"n\", 784), \"float32\")}})\nmod.show()"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "We can also insert customized function calls into the NNModule, such as\nTensor Expression(TE), TensorIR functions or other TVM packed functions.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "@T.prim_func\ndef tir_linear(x: T.handle, w: T.handle, b: T.handle, z: T.handle):\n    M, N, K = T.int64(), T.int64(), T.int64()\n    X = T.match_buffer(x, (M, K), \"float32\")\n    W = T.match_buffer(w, (N, K), \"float32\")\n    B = T.match_buffer(b, (N,), \"float32\")\n    Z = T.match_buffer(z, (M, N), \"float32\")\n    for i, j, k in T.grid(M, N, K):\n        with T.block(\"linear\"):\n            vi, vj, vk = T.axis.remap(\"SSR\", [i, j, k])\n            with T.init():\n     [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Create Relax programs using Block Builder API\nIn addition to the above APIs, we also provide a Block Builder API for\ncreating Relax programs. It is a IR builder API, which is more\nlow-level and widely used in TVM's internal logic, e.g writing a\ncustomized pass.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "bb = relax.BlockBuilder()\nn = T.int64()\nx = relax.Var(\"x\", R.Tensor((n, 784), \"float32\"))\nfc1_weight = relax.Var(\"fc1_weight\", R.Tensor((128, 784), \"float32\"))\nfc1_bias = relax.Var(\"fc1_bias\", R.Tensor((128,), \"float32\"))\nfc2_weight = relax.Var(\"fc2_weight\", R.Tensor((10, 128), \"float32\"))\nfc2_bias = relax.Var(\"fc2_bias\", R.Tensor((10,), \"float32\"))\nwith bb.function(\"forward\", [x, fc1_weight, fc1_bias, fc2_weight, fc2_bias]):\n    with bb.dataflow(): [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "Also, Block Builder API supports building cross-level IRModule with both\nRelax functions, TensorIR functions and other TVM packed functions.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "bb = relax.BlockBuilder()\nwith bb.function(\"forward\", [x, fc1_weight, fc1_bias, fc2_weight, fc2_bias]):\n    with bb.dataflow():\n        lv0 = bb.emit(\n            relax.call_dps_packed(\n                \"env.linear\",\n                [x, fc1_weight, fc1_bias],\n                out_sinfo=relax.TensorStructInfo((n, 128), \"float32\"),\n            )\n        )\n        lv1 = bb.emit_te(topi.nn.relu, lv0)\n        tir_gv = bb.add_func(tir_linear, \"tir_linear\")\n        gv [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "Note that the Block Builder API is not as user-friendly as the above APIs,\nbut it is lowest-level API and works closely with the IR definition. We\nrecommend using the above APIs for users who only want to define and\ntransform a ML model. But for those who want to build more complex\ntransformations, the Block Builder API is a more flexible choice.\n\n"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Summary\nThis tutorial demonstrates how to create Relax programs using TVMScript,\nNNModule API, Block Builder API and PackedFunc API for different use cases.\n\n"
+      ]
+    }
+  ],
+  "metadata": {
+    "kernelspec": {
+      "display_name": "Python 3",
+      "language": "python",
+      "name": "python3"
+    },
+    "language_info": {
+      "codemirror_mode": {
+        "name": "ipython",
+        "version": 3
+      },
+      "file_extension": ".py",
+      "mimetype": "text/x-python",
+      "name": "python",
+      "nbconvert_exporter": "python",
+      "pygments_lexer": "ipython3",
+      "version": "3.8.19"
+    }
+  },
+  "nbformat": 4,
+  "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/docs/_downloads/31d077cfa7c55c0edcd16ad5d4faf483/relax_transformation.ipynb b/docs/_downloads/31d077cfa7c55c0edcd16ad5d4faf483/relax_transformation.ipynb
new file mode 100644
index 0000000000..71aa851557
--- /dev/null
+++ b/docs/_downloads/31d077cfa7c55c0edcd16ad5d4faf483/relax_transformation.ipynb
@@ -0,0 +1,140 @@
+{
+  "cells": [
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "%%shell\n# Installs the latest dev build of TVM from PyPI. If you wish to build\n# from source, see https://tvm.apache.org/docs/install/from_source.html\npip install apache-tvm --pre"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "\n\n# Transformation\nIn this section, we will dive into the transformation of Relax programs.\nTransformations is one of the key ingredients of the compilation flows\nfor optimizing and integrating with hardware backends.\n"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "Let's first create a simple Relax program as what we have done in\nthe `previous section <relax-creation>`.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "import tvm\nfrom tvm import IRModule, relax\nfrom tvm.relax.frontend import nn\n\n\nclass NNModule(nn.Module):\n    def __init__(self):\n        super().__init__()\n        self.fc1 = nn.Linear(784, 128)\n        self.relu1 = nn.ReLU()\n        self.fc2 = nn.Linear(128, 10)\n\n    def forward(self, x):\n        x = self.fc1(x)\n        x = self.relu1(x)\n        x = self.fc2(x)\n        return x\n\n\norigin_mod, params = NNModule().export_tvm(\n    {\"forward\": {\"x\": nn.spec. [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Apply transformations\nPasses are the main way to apply transformations to the program.\nWe can apply passes to the program. As first step, let's apply\na built-in pass ``LegalizeOps`` to lower the high-level operators\ninto low-level operators.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "mod = tvm.relax.transform.LegalizeOps()(origin_mod)\nmod.show()"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "As we can see from the output, the high-level operators (aka ``relax.op``) in the program\nare replaced by their corresponding low-level operators (aka ``relax.call_tir``).\n\nThen let's trying to apply the operator fusion, which is a wide-used optimization technique\nin ML compilers. Note that in relax, fusion optimizations are done with the collaboration of\na set of passes. We can apply them in a sequence.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "mod = tvm.ir.transform.Sequential(\n    [\n        tvm.relax.transform.AnnotateTIROpPattern(),\n        tvm.relax.transform.FuseOps(),\n        tvm.relax.transform.FuseTIR(),\n    ]\n)(mod)\nmod.show()"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "As result, we can see that the ``matmul``, ``add`` and ``relu`` operators are fused\ninto one kernel (aka one ``call_tir``).\n\nFor all built-in passes, please refer to :py:class:`relax.transform`.\n\n## Custom Passes\nWe can also define our own passes. Let's taking an example of rewrite the ``relu``\noperator to ``gelu`` operator.\n\nFirst, we need to write a Relax IR Mutator to do the rewriting.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "from tvm.relax.expr_functor import PyExprMutator, mutator\n\n\n@mutator\nclass ReluRewriter(PyExprMutator):\n    def __init__(self, mod):\n        super().__init__(mod)\n\n    def visit_call_(self, call: relax.Call) -> relax.Expr:\n        # visit the relax.Call expr, and only handle the case when op is relax.nn.relu\n        if call.op.name == \"relax.nn.relu\":\n            return relax.op.nn.gelu(call.args[0])\n\n        return super().visit_call_(call)"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "Then we can write a pass to apply the mutator to the whole module.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "@tvm.transform.module_pass(opt_level=0, name=\"ReluToGelu\")\nclass ReluToGelu:  # pylint: disable=too-few-public-methods\n    def transform_module(self, mod: IRModule, _ctx: tvm.transform.PassContext) -> IRModule:\n        \"\"\"IRModule-level transformation\"\"\"\n        rewriter = ReluRewriter(mod)\n        for g_var, func in mod.functions_items():\n            if isinstance(func, relax.Function):\n                func = rewriter.visit_expr(func)\n                rewriter.bu [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "The printed output shows that the ``relax.nn.relu`` operator is\nrewritten to ``relax.nn.gelu`` operator.\n\nFor the details of the mutator, please refer to :py:class:`relax.expr_functor.PyExprMutator`.\n\n## Summary\nIn this section, we have shown how to apply transformations to the Relax program.\nWe have also shown how to define and apply custom transformations.\n\n"
+      ]
+    }
+  ],
+  "metadata": {
+    "kernelspec": {
+      "display_name": "Python 3",
+      "language": "python",
+      "name": "python3"
+    },
+    "language_info": {
+      "codemirror_mode": {
+        "name": "ipython",
+        "version": 3
+      },
+      "file_extension": ".py",
+      "mimetype": "text/x-python",
+      "name": "python",
+      "nbconvert_exporter": "python",
+      "pygments_lexer": "ipython3",
+      "version": "3.8.19"
+    }
+  },
+  "nbformat": 4,
+  "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/docs/_downloads/bc1bac7f794da78c8dd6d92437be7ef5/transformation.py b/docs/_downloads/335201bfd37b29f9d9fd7765217e7ba9/tir_transformation.py
similarity index 100%
rename from docs/_downloads/bc1bac7f794da78c8dd6d92437be7ef5/transformation.py
rename to docs/_downloads/335201bfd37b29f9d9fd7765217e7ba9/tir_transformation.py
diff --git a/docs/_downloads/4e684410fb30ce02332f55fde123c42e/relax_transformation.py b/docs/_downloads/4e684410fb30ce02332f55fde123c42e/relax_transformation.py
new file mode 100644
index 0000000000..01d8e4e320
--- /dev/null
+++ b/docs/_downloads/4e684410fb30ce02332f55fde123c42e/relax_transformation.py
@@ -0,0 +1,141 @@
+# 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.
+
+"""
+.. _relax-transform:
+
+Transformation
+--------------
+In this section, we will dive into the transformation of Relax programs.
+Transformations is one of the key ingredients of the compilation flows
+for optimizing and integrating with hardware backends.
+"""
+
+######################################################################
+# Let's first create a simple Relax program as what we have done in
+# the :ref:`previous section <relax-creation>`.
+
+import tvm
+from tvm import IRModule, relax
+from tvm.relax.frontend import nn
+
+
+class NNModule(nn.Module):
+    def __init__(self):
+        super().__init__()
+        self.fc1 = nn.Linear(784, 128)
+        self.relu1 = nn.ReLU()
+        self.fc2 = nn.Linear(128, 10)
+
+    def forward(self, x):
+        x = self.fc1(x)
+        x = self.relu1(x)
+        x = self.fc2(x)
+        return x
+
+
+origin_mod, params = NNModule().export_tvm(
+    {"forward": {"x": nn.spec.Tensor(("n", 784), "float32")}}
+)
+origin_mod.show()
+
+######################################################################
+# Apply transformations
+# ~~~~~~~~~~~~~~~~~~~~~
+# Passes are the main way to apply transformations to the program.
+# We can apply passes to the program. As first step, let's apply
+# a built-in pass ``LegalizeOps`` to lower the high-level operators
+# into low-level operators.
+
+mod = tvm.relax.transform.LegalizeOps()(origin_mod)
+mod.show()
+
+######################################################################
+# As we can see from the output, the high-level operators (aka ``relax.op``) in the program
+# are replaced by their corresponding low-level operators (aka ``relax.call_tir``).
+#
+# Then let's trying to apply the operator fusion, which is a wide-used optimization technique
+# in ML compilers. Note that in relax, fusion optimizations are done with the collaboration of
+# a set of passes. We can apply them in a sequence.
+
+mod = tvm.ir.transform.Sequential(
+    [
+        tvm.relax.transform.AnnotateTIROpPattern(),
+        tvm.relax.transform.FuseOps(),
+        tvm.relax.transform.FuseTIR(),
+    ]
+)(mod)
+mod.show()
+
+######################################################################
+# As result, we can see that the ``matmul``, ``add`` and ``relu`` operators are fused
+# into one kernel (aka one ``call_tir``).
+#
+# For all built-in passes, please refer to :py:class:`relax.transform`.
+#
+# Custom Passes
+# ~~~~~~~~~~~~~
+# We can also define our own passes. Let's taking an example of rewrite the ``relu``
+# operator to ``gelu`` operator.
+#
+# First, we need to write a Relax IR Mutator to do the rewriting.
+
+from tvm.relax.expr_functor import PyExprMutator, mutator
+
+
+@mutator
+class ReluRewriter(PyExprMutator):
+    def __init__(self, mod):
+        super().__init__(mod)
+
+    def visit_call_(self, call: relax.Call) -> relax.Expr:
+        # visit the relax.Call expr, and only handle the case when op is relax.nn.relu
+        if call.op.name == "relax.nn.relu":
+            return relax.op.nn.gelu(call.args[0])
+
+        return super().visit_call_(call)
+
+
+######################################################################
+# Then we can write a pass to apply the mutator to the whole module.
+
+
+@tvm.transform.module_pass(opt_level=0, name="ReluToGelu")
+class ReluToGelu:  # pylint: disable=too-few-public-methods
+    def transform_module(self, mod: IRModule, _ctx: tvm.transform.PassContext) -> IRModule:
+        """IRModule-level transformation"""
+        rewriter = ReluRewriter(mod)
+        for g_var, func in mod.functions_items():
+            if isinstance(func, relax.Function):
+                func = rewriter.visit_expr(func)
+                rewriter.builder_.update_func(g_var, func)
+        return rewriter.builder_.get()
+
+
+mod = ReluToGelu()(origin_mod)
+mod.show()
+
+######################################################################
+# The printed output shows that the ``relax.nn.relu`` operator is
+# rewritten to ``relax.nn.gelu`` operator.
+#
+# For the details of the mutator, please refer to :py:class:`relax.expr_functor.PyExprMutator`.
+#
+# Summary
+# ~~~~~~~
+# In this section, we have shown how to apply transformations to the Relax program.
+# We have also shown how to define and apply custom transformations.
diff --git a/docs/_downloads/5fde583f102218c7d123f522a7aef688/creation.py b/docs/_downloads/69cc67b95e2c6b258f6dc9c7367fe71e/tir_creation.py
similarity index 100%
rename from docs/_downloads/5fde583f102218c7d123f522a7aef688/creation.py
rename to docs/_downloads/69cc67b95e2c6b258f6dc9c7367fe71e/tir_creation.py
diff --git a/docs/_downloads/a67d9d8c1ea48d5e0c95591f8c9bfd6f/relax_creation.py b/docs/_downloads/a67d9d8c1ea48d5e0c95591f8c9bfd6f/relax_creation.py
new file mode 100644
index 0000000000..f6278e3b65
--- /dev/null
+++ b/docs/_downloads/a67d9d8c1ea48d5e0c95591f8c9bfd6f/relax_creation.py
@@ -0,0 +1,281 @@
+# 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.
+
+"""
+.. _relax-creation:
+
+Relax Creation
+==============
+This tutorial demonstrates how to create Relax functions and programs.
+We'll cover various ways to define Relax functions, including using TVMScript,
+and relax NNModule API.
+"""
+
+
+######################################################################
+# Create Relax programs using TVMScript
+# -------------------------------------
+# TVMScript is a domain-specific language for representing Apache TVM's
+# intermediate representation (IR). It is a Python dialect that can be used
+# to define an IRModule, which contains both TensorIR and Relax functions.
+#
+# In this section, we will show how to define a simple MLP model with only
+# high-level Relax operators using TVMScript.
+
+from tvm import relax, topi
+from tvm.script import ir as I
+from tvm.script import relax as R
+from tvm.script import tir as T
+
+
+@I.ir_module
+class RelaxModule:
+    @R.function
+    def forward(
+        data: R.Tensor(("n", 784), dtype="float32"),
+        w0: R.Tensor((128, 784), dtype="float32"),
+        b0: R.Tensor((128,), dtype="float32"),
+        w1: R.Tensor((10, 128), dtype="float32"),
+        b1: R.Tensor((10,), dtype="float32"),
+    ) -> R.Tensor(("n", 10), dtype="float32"):
+        with R.dataflow():
+            lv0 = R.matmul(data, R.permute_dims(w0)) + b0
+            lv1 = R.nn.relu(lv0)
+            lv2 = R.matmul(lv1, R.permute_dims(w1)) + b1
+            R.output(lv2)
+        return lv2
+
+
+RelaxModule.show()
+
+######################################################################
+# Relax is not only a graph-level IR, but also supports cross-level
+# representation and transformation. To be specific, we can directly call
+# TensorIR functions in Relax function.
+
+
+@I.ir_module
+class RelaxModuleWithTIR:
+    @T.prim_func
+    def relu(x: T.handle, y: T.handle):
+        n, m = T.int64(), T.int64()
+        X = T.match_buffer(x, (n, m), "float32")
+        Y = T.match_buffer(y, (n, m), "float32")
+        for i, j in T.grid(n, m):
+            with T.block("relu"):
+                vi, vj = T.axis.remap("SS", [i, j])
+                Y[vi, vj] = T.max(X[vi, vj], T.float32(0))
+
+    @R.function
+    def forward(
+        data: R.Tensor(("n", 784), dtype="float32"),
+        w0: R.Tensor((128, 784), dtype="float32"),
+        b0: R.Tensor((128,), dtype="float32"),
+        w1: R.Tensor((10, 128), dtype="float32"),
+        b1: R.Tensor((10,), dtype="float32"),
+    ) -> R.Tensor(("n", 10), dtype="float32"):
+        n = T.int64()
+        cls = RelaxModuleWithTIR
+        with R.dataflow():
+            lv0 = R.matmul(data, R.permute_dims(w0)) + b0
+            lv1 = R.call_tir(cls.relu, lv0, R.Tensor((n, 128), dtype="float32"))
+            lv2 = R.matmul(lv1, R.permute_dims(w1)) + b1
+            R.output(lv2)
+        return lv2
+
+
+RelaxModuleWithTIR.show()
+
+######################################################################
+# .. note::
+#
+#   You may notice that the printed output is different from the written
+#   TVMScript code. This is because we print the IRModule in a standard
+#   format, while we support syntax sugar for the input
+#
+#   For example, we can combine multiple operators into a single line, as
+#
+#   .. code-block:: python
+#
+#     lv0 = R.matmul(data, R.permute_dims(w0)) + b0
+#
+#   However, the normalized expression requires only one operation in one
+#   binding. So the printed output is different from the written TVMScript code,
+#   as
+#
+#   .. code-block:: python
+#
+#     lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(w0, axes=None)
+#     lv1: R.Tensor((n, 128), dtype="float32") = R.matmul(data, lv, out_dtype="void")
+#     lv0: R.Tensor((n, 128), dtype="float32") = R.add(lv1, b0)
+#
+
+######################################################################
+# Create Relax programs using NNModule API
+# ----------------------------------------
+# Besides TVMScript, we also provide a PyTorch-like API for defining neural networks.
+# It is designed to be more intuitive and easier to use than TVMScript.
+#
+# In this section, we will show how to define the same MLP model using
+# Relax NNModule API.
+
+from tvm.relax.frontend import nn
+
+
+class NNModule(nn.Module):
+    def __init__(self):
+        super().__init__()
+        self.fc1 = nn.Linear(784, 128)
+        self.relu1 = nn.ReLU()
+        self.fc2 = nn.Linear(128, 10)
+
+    def forward(self, x):
+        x = self.fc1(x)
+        x = self.relu1(x)
+        x = self.fc2(x)
+        return x
+
+
+######################################################################
+# After we define the NNModule, we can export it to TVM IRModule via
+# ``export_tvm``.
+
+mod, params = NNModule().export_tvm({"forward": {"x": nn.spec.Tensor(("n", 784), "float32")}})
+mod.show()
+
+######################################################################
+# We can also insert customized function calls into the NNModule, such as
+# Tensor Expression(TE), TensorIR functions or other TVM packed functions.
+
+
+@T.prim_func
+def tir_linear(x: T.handle, w: T.handle, b: T.handle, z: T.handle):
+    M, N, K = T.int64(), T.int64(), T.int64()
+    X = T.match_buffer(x, (M, K), "float32")
+    W = T.match_buffer(w, (N, K), "float32")
+    B = T.match_buffer(b, (N,), "float32")
+    Z = T.match_buffer(z, (M, N), "float32")
+    for i, j, k in T.grid(M, N, K):
+        with T.block("linear"):
+            vi, vj, vk = T.axis.remap("SSR", [i, j, k])
+            with T.init():
+                Z[vi, vj] = 0
+            Z[vi, vj] = Z[vi, vj] + X[vi, vk] * W[vj, vk]
+    for i, j in T.grid(M, N):
+        with T.block("add"):
+            vi, vj = T.axis.remap("SS", [i, j])
+            Z[vi, vj] = Z[vi, vj] + B[vj]
+
+
+class NNModuleWithTIR(nn.Module):
+    def __init__(self):
+        super().__init__()
+        self.fc1 = nn.Linear(784, 128)
+        self.fc2 = nn.Linear(128, 10)
+
+    def forward(self, x):
+        n = x.shape[0]
+        # We can call external functions using nn.extern
+        x = nn.extern(
+            "env.linear",
+            [x, self.fc1.weight, self.fc1.bias],
+            out=nn.Tensor.placeholder((n, 128), "float32"),
+        )
+        # We can also call TensorIR via Tensor Expression API in TOPI
+        x = nn.tensor_expr_op(topi.nn.relu, "relu", [x])
+        # We can also call other TVM packed functions
+        x = nn.tensor_ir_op(
+            tir_linear,
+            "tir_linear",
+            [x, self.fc2.weight, self.fc2.bias],
+            out=nn.Tensor.placeholder((n, 10), "float32"),
+        )
+        return x
+
+
+mod, params = NNModuleWithTIR().export_tvm(
+    {"forward": {"x": nn.spec.Tensor(("n", 784), "float32")}}
+)
+mod.show()
+
+
+######################################################################
+# Create Relax programs using Block Builder API
+# ---------------------------------------------
+# In addition to the above APIs, we also provide a Block Builder API for
+# creating Relax programs. It is a IR builder API, which is more
+# low-level and widely used in TVM's internal logic, e.g writing a
+# customized pass.
+
+bb = relax.BlockBuilder()
+n = T.int64()
+x = relax.Var("x", R.Tensor((n, 784), "float32"))
+fc1_weight = relax.Var("fc1_weight", R.Tensor((128, 784), "float32"))
+fc1_bias = relax.Var("fc1_bias", R.Tensor((128,), "float32"))
+fc2_weight = relax.Var("fc2_weight", R.Tensor((10, 128), "float32"))
+fc2_bias = relax.Var("fc2_bias", R.Tensor((10,), "float32"))
+with bb.function("forward", [x, fc1_weight, fc1_bias, fc2_weight, fc2_bias]):
+    with bb.dataflow():
+        lv0 = bb.emit(relax.op.matmul(x, relax.op.permute_dims(fc1_weight)) + fc1_bias)
+        lv1 = bb.emit(relax.op.nn.relu(lv0))
+        gv = bb.emit(relax.op.matmul(lv1, relax.op.permute_dims(fc2_weight)) + fc2_bias)
+        bb.emit_output(gv)
+    bb.emit_func_output(gv)
+
+mod = bb.get()
+mod.show()
+
+######################################################################
+# Also, Block Builder API supports building cross-level IRModule with both
+# Relax functions, TensorIR functions and other TVM packed functions.
+
+bb = relax.BlockBuilder()
+with bb.function("forward", [x, fc1_weight, fc1_bias, fc2_weight, fc2_bias]):
+    with bb.dataflow():
+        lv0 = bb.emit(
+            relax.call_dps_packed(
+                "env.linear",
+                [x, fc1_weight, fc1_bias],
+                out_sinfo=relax.TensorStructInfo((n, 128), "float32"),
+            )
+        )
+        lv1 = bb.emit_te(topi.nn.relu, lv0)
+        tir_gv = bb.add_func(tir_linear, "tir_linear")
+        gv = bb.emit(
+            relax.call_tir(
+                tir_gv,
+                [lv1, fc2_weight, fc2_bias],
+                out_sinfo=relax.TensorStructInfo((n, 10), "float32"),
+            )
+        )
+        bb.emit_output(gv)
+    bb.emit_func_output(gv)
+mod = bb.get()
+mod.show()
+
+######################################################################
+# Note that the Block Builder API is not as user-friendly as the above APIs,
+# but it is lowest-level API and works closely with the IR definition. We
+# recommend using the above APIs for users who only want to define and
+# transform a ML model. But for those who want to build more complex
+# transformations, the Block Builder API is a more flexible choice.
+
+######################################################################
+# Summary
+# -------
+# This tutorial demonstrates how to create Relax programs using TVMScript,
+# NNModule API, Block Builder API and PackedFunc API for different use cases.
diff --git a/docs/_downloads/904ea2b1aa828d1e33fe24c7159ed30b/creation.ipynb b/docs/_downloads/c43b2ae5210f95ce8dae6102e9b060fd/tir_creation.ipynb
similarity index 100%
rename from docs/_downloads/904ea2b1aa828d1e33fe24c7159ed30b/creation.ipynb
rename to docs/_downloads/c43b2ae5210f95ce8dae6102e9b060fd/tir_creation.ipynb
diff --git a/docs/_downloads/7f7965d8006d56cdc5a7bb4ecf47205c/transformation.ipynb b/docs/_downloads/e2a9c4bfdec7a9365ef67c5335b1aaa4/tir_transformation.ipynb
similarity index 100%
rename from docs/_downloads/7f7965d8006d56cdc5a7bb4ecf47205c/transformation.ipynb
rename to docs/_downloads/e2a9c4bfdec7a9365ef67c5335b1aaa4/tir_transformation.ipynb
diff --git a/docs/_images/sphx_glr_creation_thumb.png b/docs/_images/sphx_glr_relax_creation_thumb.png
similarity index 100%
copy from docs/_images/sphx_glr_creation_thumb.png
copy to docs/_images/sphx_glr_relax_creation_thumb.png
diff --git a/docs/_images/sphx_glr_transformation_thumb.png b/docs/_images/sphx_glr_relax_transformation_thumb.png
similarity index 100%
rename from docs/_images/sphx_glr_transformation_thumb.png
rename to docs/_images/sphx_glr_relax_transformation_thumb.png
diff --git a/docs/_images/sphx_glr_creation_thumb.png b/docs/_images/sphx_glr_tir_creation_thumb.png
similarity index 100%
copy from docs/_images/sphx_glr_creation_thumb.png
copy to docs/_images/sphx_glr_tir_creation_thumb.png
diff --git a/docs/_images/sphx_glr_creation_thumb.png b/docs/_images/sphx_glr_tir_transformation_thumb.png
similarity index 100%
rename from docs/_images/sphx_glr_creation_thumb.png
rename to docs/_images/sphx_glr_tir_transformation_thumb.png
diff --git a/docs/_sources/deep_dive/relax/abstraction.rst.txt b/docs/_sources/deep_dive/relax/abstraction.rst.txt
new file mode 100644
index 0000000000..2b9ee8b5d7
--- /dev/null
+++ b/docs/_sources/deep_dive/relax/abstraction.rst.txt
@@ -0,0 +1,73 @@
+..  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.
+
+.. _relax-abstraction:
+
+Graph Abstraction for ML Models
+-------------------------------
+Graph abstraction is a key technique used in machine learning (ML) compilers
+to represent and reason about the structure and data flow of ML models. By
+abstracting the model into a graph representation, the compiler can perform
+various optimizations to improve performance and efficiency. This tutorial will
+cover the basics of graph abstraction, its key elements of Relax IR, and how it enables optimization in ML compilers.
+
+What is Graph Abstraction?
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+Graph abstraction is the process of representing an ML model as a directed graph,
+where the nodes represent computational operations (e.g., matrix multiplication,
+convolution) and the edges represent the flow of data between these operations.
+This abstraction allows the compiler to analyze the dependencies and
+relationships between different parts of the model.
+
+.. code:: python
+
+    from tvm.script import relax as R
+
+    @R.function
+    def main(
+        x: R.Tensor((1, 784), dtype="float32"),
+        weight: R.Tensor((784, 256), dtype="float32"),
+        bias: R.Tensor((256,), dtype="float32"),
+    ) -> R.Tensor((1, 256), dtype="float32"):
+        with R.dataflow():
+            lv0 = R.matmul(x, weight)
+            lv1 = R.add(lv0, bias)
+            gv = R.nn.relu(lv1)
+            R.output(gv)
+        return gv
+
+Key Features of Relax
+~~~~~~~~~~~~~~~~~~~~~
+Relax, the graph representation utilized in Apache TVM's Unity strategy,
+facilitates end-to-end optimization of ML models through several crucial
+features:
+
+- **First-class symbolic shape**: Relax employs symbolic shapes to represent
+  tensor dimensions, enabling global tracking of dynamic shape relationships
+  across tensor operators and function calls.
+
+- **Multi-level abstractions**: Relax supports cross-level abstractions, from
+  high-level neural network layers to low-level tensor operations, enabling
+  optimizations that span different hierarchies within the model.
+
+- **Composable transformations**: Relax offers a framework for composable
+  transformations that can be selectively applied to different model components.
+  This includes capabilities such as partial lowering and partial specialization,
+  providing flexible customization and optimization options.
+
+These features collectively empower Relax to offer a powerful and adaptable approach
+to ML model optimization within the Apache TVM ecosystem.
diff --git a/docs/_sources/deep_dive/tensor_ir/index.rst.txt b/docs/_sources/deep_dive/relax/index.rst.txt
similarity index 68%
copy from docs/_sources/deep_dive/tensor_ir/index.rst.txt
copy to docs/_sources/deep_dive/relax/index.rst.txt
index 432d47116a..f891eb2793 100644
--- a/docs/_sources/deep_dive/tensor_ir/index.rst.txt
+++ b/docs/_sources/deep_dive/relax/index.rst.txt
@@ -15,17 +15,20 @@
     specific language governing permissions and limitations
     under the License.
 
-.. _tensor-ir:
+.. _relax:
+
+Relax
+=====
+Relax is a high-level abstraction for graph optimization and transformation in Apache TVM stack.
+Additionally, Apache TVM combine Relax and TensorIR together as a unity strategy for cross-level
+optimization. Hence, Relax is usually working closely with TensorIR for representing and optimizing
+the whole IRModule
 
-TensorIR
-========
-TensorIR is one of the core abstraction in Apache TVM Unity stack, which is used to
-represent and optimize the primitive tensor functions.
 
 .. toctree::
     :maxdepth: 2
 
     abstraction
     learning
-    tutorials/creation
-    tutorials/transformation
+    tutorials/relax_creation
+    tutorials/relax_transformation
diff --git a/docs/_sources/deep_dive/relax/learning.rst.txt b/docs/_sources/deep_dive/relax/learning.rst.txt
new file mode 100644
index 0000000000..702b0e0a9f
--- /dev/null
+++ b/docs/_sources/deep_dive/relax/learning.rst.txt
@@ -0,0 +1,272 @@
+..  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.
+
+.. _relax-learning:
+
+Understand Relax Abstraction
+============================
+Relax is a graph abstraction used in Apache TVM Unity strategy, which
+helps to end-to-end optimize ML models. The principal objective of Relax
+is to depict the structure and data flow of ML models, including the
+dependencies and relationships between different parts of the model, as
+well as how to execute the model on hardware.
+
+End to End Model Execution
+--------------------------
+
+In this chapter, we will use the following model as an example. This is
+a two-layer neural network that consists of two linear operations with
+relu activation.
+
+.. image:: https://mlc.ai/_images/e2e_fashionmnist_mlp_model.png
+   :width: 85%
+   :align: center
+
+
+High-Level Operations Representation
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Let us begin by reviewing a Numpy implementation of the model.
+
+.. code:: python
+
+    def numpy_mlp(data, w0, b0, w1, b1):
+        lv0 = data @ w0 + b0
+        lv1 = np.maximum(lv0, 0)
+        lv2 = lv1 @ w1 + b1
+        return lv2
+
+The above example code shows the high-level array operations to perform the end-to-end model
+execution. Of course, we can rewrite the above code using Relax as follows:
+
+.. code:: python
+
+    from tvm.script import relax as R
+
+    @R.function
+    def relax_mlp(
+        data: R.Tensor(("n", 784), dtype="float32"),
+        w0: R.Tensor((784, 128), dtype="float32"),
+        b0: R.Tensor((128,), dtype="float32"),
+        w1: R.Tensor((128, 10), dtype="float32"),
+        b1: R.Tensor((10,), dtype="float32"),
+    ) -> R.Tensor(("n", 10), dtype="float32"):
+        with R.dataflow():
+            lv0 = R.matmul(data, w0) + b0
+            lv1 = R.nn.relu(lv0)
+            lv2 = R.matmul(lv1, w1) + b1
+            R.output(lv2)
+        return lv2
+
+Low-Level Integration
+~~~~~~~~~~~~~~~~~~~~~
+
+However, again from the pov of machine learning compilation (MLC), we would like to see
+through the details under the hood of these array computations.
+
+For the purpose of illustrating details under the hood, we will again write examples in low-level numpy:
+
+We will use a loop instead of array functions when necessary to demonstrate the possible loop computations.
+When possible, we always explicitly allocate arrays via numpy.empty and pass them around.
+The code block below shows a low-level numpy implementation of the same model.
+
+.. code:: python
+
+    def lnumpy_linear(X: np.ndarray, W: np.ndarray, B: np.ndarray, Z: np.ndarray):
+        n, m, K = X.shape[0], W.shape[1], X.shape[1]
+        Y = np.empty((n, m), dtype="float32")
+        for i in range(n):
+            for j in range(m):
+                for k in range(K):
+                    if k == 0:
+                        Y[i, j] = 0
+                    Y[i, j] = Y[i, j] + X[i, k] * W[k, j]
+
+        for i in range(n):
+            for j in range(m):
+                Z[i, j] = Y[i, j] + B[j]
+
+
+    def lnumpy_relu0(X: np.ndarray, Y: np.ndarray):
+        n, m = X.shape
+        for i in range(n):
+            for j in range(m):
+                Y[i, j] = np.maximum(X[i, j], 0)
+
+    def lnumpy_mlp(data, w0, b0, w1, b1):
+        n = data.shape[0]
+        lv0 = np.empty((n, 128), dtype="float32")
+        lnumpy_matmul(data, w0, b0, lv0)
+
+        lv1 = np.empty((n, 128), dtype="float32")
+        lnumpy_relu(lv0, lv1)
+
+        out = np.empty((n, 10), dtype="float32")
+        lnumpy_matmul(lv1, w1, b1, out)
+        return out
+
+With the low-level NumPy example in mind, now we are ready to introduce an Relax abstraction
+for the end-to-end model execution. The code block below shows a TVMScript implementation of the model.
+
+.. code:: python
+
+    @I.ir_module
+    class Module:
+        @T.prim_func(private=True)
+        def linear(x: T.handle, w: T.handle, b: T.handle, z: T.handle):
+            M, N, K = T.int64(), T.int64(), T.int64()
+            X = T.match_buffer(x, (M, K), "float32")
+            W = T.match_buffer(w, (K, N), "float32")
+            B = T.match_buffer(b, (N,), "float32")
+            Z = T.match_buffer(z, (M, N), "float32")
+            Y = T.alloc_buffer((M, N), "float32")
+            for i, j, k in T.grid(M, N, K):
+                with T.block("Y"):
+                    v_i, v_j, v_k = T.axis.remap("SSR", [i, j, k])
+                    with T.init():
+                        Y[v_i, v_j] = T.float32(0.0)
+                    Y[v_i, v_j] = Y[v_i, v_j] + X[v_i, v_k] * W[v_k, v_j]
+            for i, j in T.grid(M, N):
+                with T.block("Z"):
+                    v_i, v_j = T.axis.remap("SS", [i, j])
+                    Z[v_i, v_j] = Y[v_i, v_j] + B[v_j]
+
+        @T.prim_func(private=True)
+        def relu(x: T.handle, y: T.handle):
+            M, N = T.int64(), T.int64()
+            X = T.match_buffer(x, (M, N), "float32")
+            Y = T.match_buffer(y, (M, N), "float32")
+            for i, j in T.grid(M, N):
+                with T.block("Y"):
+                    v_i, v_j = T.axis.remap("SS", [i, j])
+                    Y[v_i, v_j] = T.max(X[v_i, v_j], T.float32(0.0))
+
+        @R.function
+        def main(
+            x: R.Tensor(("n", 784), dtype="float32"),
+            w0: R.Tensor((784, 256), dtype="float32"),
+            b0: R.Tensor((256,), dtype="float32"),
+            w1: R.Tensor((256, 10), dtype="float32"),
+            b1: R.Tensor((10,), dtype="float32")
+        ) -> R.Tensor(("n", 10), dtype="float32"):
+            cls = Module
+            n = T.int64()
+            with R.dataflow():
+                lv = R.call_tir(cls.linear, (x, w0, b0), out_sinfo=R.Tensor((n, 256), dtype="float32"))
+                lv1 = R.call_tir(cls.relu, (lv0,), out_sinfo=R.Tensor((n, 256), dtype="float32"))
+                lv2 = R.call_tir(cls.linear, (lv1, w1, b1), out_sinfo=R.Tensor((b, 10), dtype="float32"))
+                R.output(lv2)
+            return lv2
+
+The above code contains kinds of functions: the primitive tensor functions (``T.prim_func``) and a
+``R.function`` (relax function). Relax function is a new type of abstraction representing
+high-level neural network executions.
+
+Note that the above relax module natively supports symbolic shapes, see the ``"n"`` in the
+tensor shapes in ``main`` function and ``M``, ``N``, ``K`` in the ``linear`` function. This is
+a key feature of Relax abstraction, which enables the compiler to track dynamic shape relations
+globally across tensor operators and function calls.
+
+Again it is helpful to see the TVMScript code and low-level numpy code side-by-side and check the
+corresponding elements, and we are going to walk through each of them in detail. Since we already
+learned about primitive tensor functions, we are going to focus on the high-level execution part.
+
+Key Elements of Relax
+---------------------
+This section will introduce the key elements of Relax abstraction and how it enables optimization
+in ML compilers.
+
+Structure Info
+~~~~~~~~~~~~~~
+Structure info is a new concept in Relax that represents the type of relax expressions. It can
+be ``TensorStructInfo``, ``TupleStructInfo``, etc. In the above example, we use ``TensorStructInfo``
+(short in ``R.Tensor`` in TVMScript) to represent the shape and dtype of the tensor of the inputs,
+outputs, and intermediate results.
+
+R.call_tir
+~~~~~~~~~~
+The ``R.call_tir`` function is a new abstraction in Relax that allows calling primitive tensor
+functions in the same IRModule. This is a key feature of Relax that enables cross-level
+abstractions, from high-level neural network layers to low-level tensor operations.
+Taking one line from the above code as an example:
+
+.. code:: python
+
+    lv = R.call_tir(cls.linear, (x, w0, b0), out_sinfo=R.Tensor((n, 256), dtype="float32"))
+
+To explain what does ``R.call_tir`` work, let us review an equivalent low-level numpy
+implementation of the operation, as follows:
+
+.. code:: python
+
+    lv0 = np.empty((n, 256), dtype="float32")
+    lnumpy_linear(x, w0, b0, lv0)
+
+Specifically, ``call_tir`` allocates an output tensor res, then pass the inputs and the output
+to the prim_func. After executing prim_func the result is populated in res, then we can return
+the result.
+
+This convention is called **destination passing**, The idea is that input and output are explicitly
+allocated outside and passed to the low-level primitive function. This style is commonly used
+in low-level library designs, so higher-level frameworks can handle that memory allocation
+decision. Note that not all tensor operations can be presented in this style (specifically,
+there are operations whose output shape depends on the input). Nevertheless, in common practice,
+it is usually helpful to write the low-level function in this style when possible.
+
+Dataflow Block
+~~~~~~~~~~~~~~
+Another important element in a relax function is the R.dataflow() scope annotation.
+
+.. code:: python
+
+    with R.dataflow():
+        lv = R.call_tir(cls.linear, (x, w0, b0), out_sinfo=R.Tensor((n, 256), dtype="float32"))
+        lv1 = R.call_tir(cls.relu, (lv0,), out_sinfo=R.Tensor((n, 256), dtype="float32"))
+        lv2 = R.call_tir(cls.linear, (lv1, w1, b1), out_sinfo=R.Tensor((b, 10), dtype="float32"))
+        R.output(lv2)
+
+Before we talk about the dataflow block, let us first introduce the concept of **pure** and
+**side-effect**. A function is **pure** or **side-effect free** if:
+
+- it only reads from its inputs and returns the result via its output
+- it will not change other parts of the program (such as incrementing a global counter).
+
+For example, all ``R.call_tir`` functions are pure functions, as they only read from their inputs
+and write the output to another new allocated tensor. However, the **inplace operations** are not
+pure functions, in other words, they are side-effect functions, because they will change the existing
+intermediate or input tensors.
+
+A dataflow block is a way for us to mark the computational graph regions of the program.
+Specifically, within a dataflow block, all the operations need to be **side-effect free**.
+Outside a dataflow block, the operations can contain side-effect.
+
+.. note::
+
+    A common question that arises is why we need to manually mark dataflow blocks instead of
+    automatically inferring them. There are two main reasons for this approach:
+
+    - Automatic inference of dataflow blocks can be challenging and imprecise, particularly
+      when dealing with calls to packed functions (such as cuBLAS integrations). By manually
+      marking dataflow blocks, we enable the compiler to accurately understand and optimize
+      the program's dataflow.
+    - Many optimizations can only be applied within dataflow blocks. For instance, fusion
+      optimization is limited to operations within a single dataflow block. If the compiler
+      were to incorrectly infer dataflow boundaries, it might miss crucial optimization
+      opportunities, potentially impacting the program's performance.
+
+By allowing manual marking of dataflow blocks, we ensure that the compiler has the most
+accurate information to work with, leading to more effective optimizations.
diff --git a/docs/_sources/deep_dive/relax/tutorials/index.rst.txt b/docs/_sources/deep_dive/relax/tutorials/index.rst.txt
new file mode 100644
index 0000000000..8dcbe77b63
--- /dev/null
+++ b/docs/_sources/deep_dive/relax/tutorials/index.rst.txt
@@ -0,0 +1,64 @@
+:orphan:
+
+Deep Dive: Relax
+----------------
+
+
+
+.. raw:: html
+
+    <div class="sphx-glr-thumbnails">
+
+
+.. raw:: html
+
+    <div class="sphx-glr-thumbcontainer" tooltip="Relax Creation">
+
+.. only:: html
+
+  .. image:: /deep_dive/relax/tutorials/images/thumb/sphx_glr_relax_creation_thumb.png
+    :alt: Relax Creation
+
+  :ref:`sphx_glr_deep_dive_relax_tutorials_relax_creation.py`
+
+.. raw:: html
+
+      <div class="sphx-glr-thumbnail-title">Relax Creation</div>
+    </div>
+
+
+.. raw:: html
+
+    <div class="sphx-glr-thumbcontainer" tooltip="Transformation">
+
+.. only:: html
+
+  .. image:: /deep_dive/relax/tutorials/images/thumb/sphx_glr_relax_transformation_thumb.png
+    :alt: Transformation
+
+  :ref:`sphx_glr_deep_dive_relax_tutorials_relax_transformation.py`
+
+.. raw:: html
+
+      <div class="sphx-glr-thumbnail-title">Transformation</div>
+    </div>
+
+
+.. raw:: html
+
+    </div>
+
+
+.. toctree::
+   :hidden:
+
+   /deep_dive/relax/tutorials/relax_creation
+   /deep_dive/relax/tutorials/relax_transformation
+
+
+
+.. only:: html
+
+ .. rst-class:: sphx-glr-signature
+
+    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
diff --git a/docs/_sources/deep_dive/relax/tutorials/relax_creation.rst.txt b/docs/_sources/deep_dive/relax/tutorials/relax_creation.rst.txt
new file mode 100644
index 0000000000..2d50b8ef32
--- /dev/null
+++ b/docs/_sources/deep_dive/relax/tutorials/relax_creation.rst.txt
@@ -0,0 +1,642 @@
+
+.. DO NOT EDIT. THIS FILE WAS AUTOMATICALLY GENERATED BY
+.. TVM'S MONKEY-PATCHED VERSION OF SPHINX-GALLERY. TO MAKE
+.. CHANGES, EDIT THE SOURCE PYTHON FILE:
+.. "deep_dive/relax/tutorials/relax_creation.py"
+
+.. only:: html
+
+    .. note::
+        :class: sphx-glr-download-link-note
+
+        This tutorial can be used interactively with Google Colab! You can also click
+        :ref:`here <sphx_glr_download_deep_dive_relax_tutorials_relax_creation.py>` to run the Jupyter notebook locally.
+
+        .. image:: https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg
+            :align: center
+            :target: https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/315fcda965a8d605f81705edf19ea2c6/relax_creation.ipynb
+            :width: 300px
+
+.. rst-class:: sphx-glr-example-title
+
+.. _sphx_glr_deep_dive_relax_tutorials_relax_creation.py:
+
+
+.. _relax-creation:
+
+Relax Creation
+==============
+This tutorial demonstrates how to create Relax functions and programs.
+We'll cover various ways to define Relax functions, including using TVMScript,
+and relax NNModule API.
+
+.. GENERATED FROM PYTHON SOURCE LINES 30-38
+
+Create Relax programs using TVMScript
+-------------------------------------
+TVMScript is a domain-specific language for representing Apache TVM's
+intermediate representation (IR). It is a Python dialect that can be used
+to define an IRModule, which contains both TensorIR and Relax functions.
+
+In this section, we will show how to define a simple MLP model with only
+high-level Relax operators using TVMScript.
+
+.. GENERATED FROM PYTHON SOURCE LINES 38-65
+
+.. code-block:: default
+
+
+    from tvm import relax, topi
+    from tvm.script import ir as I
+    from tvm.script import relax as R
+    from tvm.script import tir as T
+
+
+    @I.ir_module
+    class RelaxModule:
+        @R.function
+        def forward(
+            data: R.Tensor(("n", 784), dtype="float32"),
+            w0: R.Tensor((128, 784), dtype="float32"),
+            b0: R.Tensor((128,), dtype="float32"),
+            w1: R.Tensor((10, 128), dtype="float32"),
+            b1: R.Tensor((10,), dtype="float32"),
+        ) -> R.Tensor(("n", 10), dtype="float32"):
+            with R.dataflow():
+                lv0 = R.matmul(data, R.permute_dims(w0)) + b0
+                lv1 = R.nn.relu(lv0)
+                lv2 = R.matmul(lv1, R.permute_dims(w1)) + b1
+                R.output(lv2)
+            return lv2
+
+
+    RelaxModule.show()
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ .. code-block:: none
+
+    # from tvm.script import ir as I
+    # from tvm.script import tir as T
+    # from tvm.script import relax as R
+
+    @I.ir_module
+    class Module:
+        @R.function
+        def forward(data: R.Tensor(("n", 784), dtype="float32"), w0: R.Tensor((128, 784), dtype="float32"), b0: R.Tensor((128,), dtype="float32"), w1: R.Tensor((10, 128), dtype="float32"), b1: R.Tensor((10,), dtype="float32")) -> R.Tensor(("n", 10), dtype="float32"):
+            n = T.int64()
+            with R.dataflow():
+                lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(w0, axes=None)
+                lv1: R.Tensor((n, 128), dtype="float32") = R.matmul(data, lv, out_dtype="void")
+                lv0: R.Tensor((n, 128), dtype="float32") = R.add(lv1, b0)
+                lv1_1: R.Tensor((n, 128), dtype="float32") = R.nn.relu(lv0)
+                lv4: R.Tensor((128, 10), dtype="float32") = R.permute_dims(w1, axes=None)
+                lv5: R.Tensor((n, 10), dtype="float32") = R.matmul(lv1_1, lv4, out_dtype="void")
+                lv2: R.Tensor((n, 10), dtype="float32") = R.add(lv5, b1)
+                R.output(lv2)
+            return lv2
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 66-69
+
+Relax is not only a graph-level IR, but also supports cross-level
+representation and transformation. To be specific, we can directly call
+TensorIR functions in Relax function.
+
+.. GENERATED FROM PYTHON SOURCE LINES 69-103
+
+.. code-block:: default
+
+
+
+    @I.ir_module
+    class RelaxModuleWithTIR:
+        @T.prim_func
+        def relu(x: T.handle, y: T.handle):
+            n, m = T.int64(), T.int64()
+            X = T.match_buffer(x, (n, m), "float32")
+            Y = T.match_buffer(y, (n, m), "float32")
+            for i, j in T.grid(n, m):
+                with T.block("relu"):
+                    vi, vj = T.axis.remap("SS", [i, j])
+                    Y[vi, vj] = T.max(X[vi, vj], T.float32(0))
+
+        @R.function
+        def forward(
+            data: R.Tensor(("n", 784), dtype="float32"),
+            w0: R.Tensor((128, 784), dtype="float32"),
+            b0: R.Tensor((128,), dtype="float32"),
+            w1: R.Tensor((10, 128), dtype="float32"),
+            b1: R.Tensor((10,), dtype="float32"),
+        ) -> R.Tensor(("n", 10), dtype="float32"):
+            n = T.int64()
+            cls = RelaxModuleWithTIR
+            with R.dataflow():
+                lv0 = R.matmul(data, R.permute_dims(w0)) + b0
+                lv1 = R.call_tir(cls.relu, lv0, R.Tensor((n, 128), dtype="float32"))
+                lv2 = R.matmul(lv1, R.permute_dims(w1)) + b1
+                R.output(lv2)
+            return lv2
+
+
+    RelaxModuleWithTIR.show()
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ .. code-block:: none
+
+    # from tvm.script import ir as I
+    # from tvm.script import tir as T
+    # from tvm.script import relax as R
+
+    @I.ir_module
+    class Module:
+        @T.prim_func
+        def relu(x: T.handle, y: T.handle):
+            n, m = T.int64(), T.int64()
+            X = T.match_buffer(x, (n, m))
+            Y = T.match_buffer(y, (n, m))
+            # with T.block("root"):
+            for i, j in T.grid(n, m):
+                with T.block("relu"):
+                    vi, vj = T.axis.remap("SS", [i, j])
+                    T.reads(X[vi, vj])
+                    T.writes(Y[vi, vj])
+                    Y[vi, vj] = T.max(X[vi, vj], T.float32(0.0))
+
+        @R.function
+        def forward(data: R.Tensor(("n", 784), dtype="float32"), w0: R.Tensor((128, 784), dtype="float32"), b0: R.Tensor((128,), dtype="float32"), w1: R.Tensor((10, 128), dtype="float32"), b1: R.Tensor((10,), dtype="float32")) -> R.Tensor(("n", 10), dtype="float32"):
+            n = T.int64()
+            cls = Module
+            with R.dataflow():
+                lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(w0, axes=None)
+                lv1: R.Tensor((n, 128), dtype="float32") = R.matmul(data, lv, out_dtype="void")
+                lv0: R.Tensor((n, 128), dtype="float32") = R.add(lv1, b0)
+                lv1_1 = R.call_tir(cls.relu, (lv0,), out_sinfo=R.Tensor((n, 128), dtype="float32"))
+                lv4: R.Tensor((128, 10), dtype="float32") = R.permute_dims(w1, axes=None)
+                lv5: R.Tensor((n, 10), dtype="float32") = R.matmul(lv1_1, lv4, out_dtype="void")
+                lv2: R.Tensor((n, 10), dtype="float32") = R.add(lv5, b1)
+                R.output(lv2)
+            return lv2
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 104-126
+
+.. note::
+
+  You may notice that the printed output is different from the written
+  TVMScript code. This is because we print the IRModule in a standard
+  format, while we support syntax sugar for the input
+
+  For example, we can combine multiple operators into a single line, as
+
+  .. code-block:: python
+
+    lv0 = R.matmul(data, R.permute_dims(w0)) + b0
+
+  However, the normalized expression requires only one operation in one
+  binding. So the printed output is different from the written TVMScript code,
+  as
+
+  .. code-block:: python
+
+    lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(w0, axes=None)
+    lv1: R.Tensor((n, 128), dtype="float32") = R.matmul(data, lv, out_dtype="void")
+    lv0: R.Tensor((n, 128), dtype="float32") = R.add(lv1, b0)
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 128-135
+
+Create Relax programs using NNModule API
+----------------------------------------
+Besides TVMScript, we also provide a PyTorch-like API for defining neural networks.
+It is designed to be more intuitive and easier to use than TVMScript.
+
+In this section, we will show how to define the same MLP model using
+Relax NNModule API.
+
+.. GENERATED FROM PYTHON SOURCE LINES 135-153
+
+.. code-block:: default
+
+
+    from tvm.relax.frontend import nn
+
+
+    class NNModule(nn.Module):
+        def __init__(self):
+            super().__init__()
+            self.fc1 = nn.Linear(784, 128)
+            self.relu1 = nn.ReLU()
+            self.fc2 = nn.Linear(128, 10)
+
+        def forward(self, x):
+            x = self.fc1(x)
+            x = self.relu1(x)
+            x = self.fc2(x)
+            return x
+
+
+
+
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 154-156
+
+After we define the NNModule, we can export it to TVM IRModule via
+``export_tvm``.
+
+.. GENERATED FROM PYTHON SOURCE LINES 156-160
+
+.. code-block:: default
+
+
+    mod, params = NNModule().export_tvm({"forward": {"x": nn.spec.Tensor(("n", 784), "float32")}})
+    mod.show()
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ .. code-block:: none
+
+    # from tvm.script import ir as I
+    # from tvm.script import tir as T
+    # from tvm.script import relax as R
+
+    @I.ir_module
+    class Module:
+        @R.function
+        def forward(x: R.Tensor(("n", 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor(("n", 10), dtype="float32"):
+            n = T.int64()
+            R.func_attr({"num_input": 1})
+            with R.dataflow():
+                permute_dims: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight, axes=None)
+                matmul: R.Tensor((n, 128), dtype="float32") = R.matmul(x, permute_dims, out_dtype="void")
+                add: R.Tensor((n, 128), dtype="float32") = R.add(matmul, fc1_bias)
+                relu: R.Tensor((n, 128), dtype="float32") = R.nn.relu(add)
+                permute_dims1: R.Tensor((128, 10), dtype="float32") = R.permute_dims(fc2_weight, axes=None)
+                matmul1: R.Tensor((n, 10), dtype="float32") = R.matmul(relu, permute_dims1, out_dtype="void")
+                add1: R.Tensor((n, 10), dtype="float32") = R.add(matmul1, fc2_bias)
+                gv: R.Tensor((n, 10), dtype="float32") = add1
+                R.output(gv)
+            return gv
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 161-163
+
+We can also insert customized function calls into the NNModule, such as
+Tensor Expression(TE), TensorIR functions or other TVM packed functions.
+
+.. GENERATED FROM PYTHON SOURCE LINES 163-216
+
+.. code-block:: default
+
+
+
+    @T.prim_func
+    def tir_linear(x: T.handle, w: T.handle, b: T.handle, z: T.handle):
+        M, N, K = T.int64(), T.int64(), T.int64()
+        X = T.match_buffer(x, (M, K), "float32")
+        W = T.match_buffer(w, (N, K), "float32")
+        B = T.match_buffer(b, (N,), "float32")
+        Z = T.match_buffer(z, (M, N), "float32")
+        for i, j, k in T.grid(M, N, K):
+            with T.block("linear"):
+                vi, vj, vk = T.axis.remap("SSR", [i, j, k])
+                with T.init():
+                    Z[vi, vj] = 0
+                Z[vi, vj] = Z[vi, vj] + X[vi, vk] * W[vj, vk]
+        for i, j in T.grid(M, N):
+            with T.block("add"):
+                vi, vj = T.axis.remap("SS", [i, j])
+                Z[vi, vj] = Z[vi, vj] + B[vj]
+
+
+    class NNModuleWithTIR(nn.Module):
+        def __init__(self):
+            super().__init__()
+            self.fc1 = nn.Linear(784, 128)
+            self.fc2 = nn.Linear(128, 10)
+
+        def forward(self, x):
+            n = x.shape[0]
+            # We can call external functions using nn.extern
+            x = nn.extern(
+                "env.linear",
+                [x, self.fc1.weight, self.fc1.bias],
+                out=nn.Tensor.placeholder((n, 128), "float32"),
+            )
+            # We can also call TensorIR via Tensor Expression API in TOPI
+            x = nn.tensor_expr_op(topi.nn.relu, "relu", [x])
+            # We can also call other TVM packed functions
+            x = nn.tensor_ir_op(
+                tir_linear,
+                "tir_linear",
+                [x, self.fc2.weight, self.fc2.bias],
+                out=nn.Tensor.placeholder((n, 10), "float32"),
+            )
+            return x
+
+
+    mod, params = NNModuleWithTIR().export_tvm(
+        {"forward": {"x": nn.spec.Tensor(("n", 784), "float32")}}
+    )
+    mod.show()
+
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ .. code-block:: none
+
+    # from tvm.script import ir as I
+    # from tvm.script import tir as T
+    # from tvm.script import relax as R
+
+    @I.ir_module
+    class Module:
+        @T.prim_func(private=True)
+        def relu(var_env_linear: T.handle, var_compute: T.handle):
+            T.func_attr({"tir.noalias": T.bool(True)})
+            n = T.int64()
+            env_linear = T.match_buffer(var_env_linear, (n, T.int64(128)))
+            compute = T.match_buffer(var_compute, (n, T.int64(128)))
+            # with T.block("root"):
+            for i0, i1 in T.grid(n, T.int64(128)):
+                with T.block("compute"):
+                    v_i0, v_i1 = T.axis.remap("SS", [i0, i1])
+                    T.reads(env_linear[v_i0, v_i1])
+                    T.writes(compute[v_i0, v_i1])
+                    compute[v_i0, v_i1] = T.max(env_linear[v_i0, v_i1], T.float32(0.0))
+
+        @T.prim_func
+        def tir_linear(x: T.handle, w: T.handle, b: T.handle, z: T.handle):
+            M, K = T.int64(), T.int64()
+            X = T.match_buffer(x, (M, K))
+            N = T.int64()
+            W = T.match_buffer(w, (N, K))
+            B = T.match_buffer(b, (N,))
+            Z = T.match_buffer(z, (M, N))
+            # with T.block("root"):
+            for i, j, k in T.grid(M, N, K):
+                with T.block("linear"):
+                    vi, vj, vk = T.axis.remap("SSR", [i, j, k])
+                    T.reads(X[vi, vk], W[vj, vk])
+                    T.writes(Z[vi, vj])
+                    with T.init():
+                        Z[vi, vj] = T.float32(0.0)
+                    Z[vi, vj] = Z[vi, vj] + X[vi, vk] * W[vj, vk]
+            for i, j in T.grid(M, N):
+                with T.block("add"):
+                    vi, vj = T.axis.remap("SS", [i, j])
+                    T.reads(Z[vi, vj], B[vj])
+                    T.writes(Z[vi, vj])
+                    Z[vi, vj] = Z[vi, vj] + B[vj]
+
+        @R.function
+        def forward(x: R.Tensor(("n", 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor(("n", 10), dtype="float32"):
+            n = T.int64()
+            R.func_attr({"num_input": 1})
+            cls = Module
+            with R.dataflow():
+                env_linear = R.call_dps_packed("env.linear", (x, fc1_weight, fc1_bias), out_sinfo=R.Tensor((n, 128), dtype="float32"))
+                lv = R.call_tir(cls.relu, (env_linear,), out_sinfo=R.Tensor((n, 128), dtype="float32"))
+                lv1 = R.call_tir(cls.tir_linear, (lv, fc2_weight, fc2_bias), out_sinfo=R.Tensor((n, 10), dtype="float32"))
+                gv: R.Tensor((n, 10), dtype="float32") = lv1
+                R.output(gv)
+            return gv
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 217-223
+
+Create Relax programs using Block Builder API
+---------------------------------------------
+In addition to the above APIs, we also provide a Block Builder API for
+creating Relax programs. It is a IR builder API, which is more
+low-level and widely used in TVM's internal logic, e.g writing a
+customized pass.
+
+.. GENERATED FROM PYTHON SOURCE LINES 223-242
+
+.. code-block:: default
+
+
+    bb = relax.BlockBuilder()
+    n = T.int64()
+    x = relax.Var("x", R.Tensor((n, 784), "float32"))
+    fc1_weight = relax.Var("fc1_weight", R.Tensor((128, 784), "float32"))
+    fc1_bias = relax.Var("fc1_bias", R.Tensor((128,), "float32"))
+    fc2_weight = relax.Var("fc2_weight", R.Tensor((10, 128), "float32"))
+    fc2_bias = relax.Var("fc2_bias", R.Tensor((10,), "float32"))
+    with bb.function("forward", [x, fc1_weight, fc1_bias, fc2_weight, fc2_bias]):
+        with bb.dataflow():
+            lv0 = bb.emit(relax.op.matmul(x, relax.op.permute_dims(fc1_weight)) + fc1_bias)
+            lv1 = bb.emit(relax.op.nn.relu(lv0))
+            gv = bb.emit(relax.op.matmul(lv1, relax.op.permute_dims(fc2_weight)) + fc2_bias)
+            bb.emit_output(gv)
+        bb.emit_func_output(gv)
+
+    mod = bb.get()
+    mod.show()
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ .. code-block:: none
+
+    # from tvm.script import ir as I
+    # from tvm.script import tir as T
+    # from tvm.script import relax as R
+
+    @I.ir_module
+    class Module:
+        @R.function
+        def forward(x: R.Tensor(("v", 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor(("v", 10), dtype="float32"):
+            v = T.int64()
+            with R.dataflow():
+                lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight, axes=None)
+                lv1: R.Tensor((v, 128), dtype="float32") = R.matmul(x, lv, out_dtype="void")
+                lv2: R.Tensor((v, 128), dtype="float32") = R.add(lv1, fc1_bias)
+                lv3: R.Tensor((v, 128), dtype="float32") = R.nn.relu(lv2)
+                lv4: R.Tensor((128, 10), dtype="float32") = R.permute_dims(fc2_weight, axes=None)
+                lv5: R.Tensor((v, 10), dtype="float32") = R.matmul(lv3, lv4, out_dtype="void")
+                lv6: R.Tensor((v, 10), dtype="float32") = R.add(lv5, fc2_bias)
+                gv: R.Tensor((v, 10), dtype="float32") = lv6
+                R.output(gv)
+            return lv6
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 243-245
+
+Also, Block Builder API supports building cross-level IRModule with both
+Relax functions, TensorIR functions and other TVM packed functions.
+
+.. GENERATED FROM PYTHON SOURCE LINES 245-270
+
+.. code-block:: default
+
+
+    bb = relax.BlockBuilder()
+    with bb.function("forward", [x, fc1_weight, fc1_bias, fc2_weight, fc2_bias]):
+        with bb.dataflow():
+            lv0 = bb.emit(
+                relax.call_dps_packed(
+                    "env.linear",
+                    [x, fc1_weight, fc1_bias],
+                    out_sinfo=relax.TensorStructInfo((n, 128), "float32"),
+                )
+            )
+            lv1 = bb.emit_te(topi.nn.relu, lv0)
+            tir_gv = bb.add_func(tir_linear, "tir_linear")
+            gv = bb.emit(
+                relax.call_tir(
+                    tir_gv,
+                    [lv1, fc2_weight, fc2_bias],
+                    out_sinfo=relax.TensorStructInfo((n, 10), "float32"),
+                )
+            )
+            bb.emit_output(gv)
+        bb.emit_func_output(gv)
+    mod = bb.get()
+    mod.show()
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ .. code-block:: none
+
+    # from tvm.script import ir as I
+    # from tvm.script import tir as T
+    # from tvm.script import relax as R
+
+    @I.ir_module
+    class Module:
+        @T.prim_func(private=True)
+        def relu(var_lv: T.handle, var_compute: T.handle):
+            T.func_attr({"tir.noalias": T.bool(True)})
+            v = T.int64()
+            lv = T.match_buffer(var_lv, (v, T.int64(128)))
+            compute = T.match_buffer(var_compute, (v, T.int64(128)))
+            # with T.block("root"):
+            for i0, i1 in T.grid(v, T.int64(128)):
+                with T.block("compute"):
+                    v_i0, v_i1 = T.axis.remap("SS", [i0, i1])
+                    T.reads(lv[v_i0, v_i1])
+                    T.writes(compute[v_i0, v_i1])
+                    compute[v_i0, v_i1] = T.max(lv[v_i0, v_i1], T.float32(0.0))
+
+        @T.prim_func
+        def tir_linear(x: T.handle, w: T.handle, b: T.handle, z: T.handle):
+            M, K = T.int64(), T.int64()
+            X = T.match_buffer(x, (M, K))
+            N = T.int64()
+            W = T.match_buffer(w, (N, K))
+            B = T.match_buffer(b, (N,))
+            Z = T.match_buffer(z, (M, N))
+            # with T.block("root"):
+            for i, j, k in T.grid(M, N, K):
+                with T.block("linear"):
+                    vi, vj, vk = T.axis.remap("SSR", [i, j, k])
+                    T.reads(X[vi, vk], W[vj, vk])
+                    T.writes(Z[vi, vj])
+                    with T.init():
+                        Z[vi, vj] = T.float32(0.0)
+                    Z[vi, vj] = Z[vi, vj] + X[vi, vk] * W[vj, vk]
+            for i, j in T.grid(M, N):
+                with T.block("add"):
+                    vi, vj = T.axis.remap("SS", [i, j])
+                    T.reads(Z[vi, vj], B[vj])
+                    T.writes(Z[vi, vj])
+                    Z[vi, vj] = Z[vi, vj] + B[vj]
+
+        @R.function
+        def forward(x: R.Tensor(("v", 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor(("v", 10), dtype="float32"):
+            v = T.int64()
+            cls = Module
+            with R.dataflow():
+                lv = R.call_dps_packed("env.linear", (x, fc1_weight, fc1_bias), out_sinfo=R.Tensor((v, 128), dtype="float32"))
+                lv1 = R.call_tir(cls.relu, (lv,), out_sinfo=R.Tensor((v, 128), dtype="float32"))
+                lv2 = R.call_tir(cls.tir_linear, (lv1, fc2_weight, fc2_bias), out_sinfo=R.Tensor((v, 10), dtype="float32"))
+                gv: R.Tensor((v, 10), dtype="float32") = lv2
+                R.output(gv)
+            return lv2
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 271-276
+
+Note that the Block Builder API is not as user-friendly as the above APIs,
+but it is lowest-level API and works closely with the IR definition. We
+recommend using the above APIs for users who only want to define and
+transform a ML model. But for those who want to build more complex
+transformations, the Block Builder API is a more flexible choice.
+
+.. GENERATED FROM PYTHON SOURCE LINES 278-282
+
+Summary
+-------
+This tutorial demonstrates how to create Relax programs using TVMScript,
+NNModule API, Block Builder API and PackedFunc API for different use cases.
+
+
+.. _sphx_glr_download_deep_dive_relax_tutorials_relax_creation.py:
+
+.. only:: html
+
+  .. container:: sphx-glr-footer sphx-glr-footer-example
+
+
+    .. container:: sphx-glr-download sphx-glr-download-python
+
+      :download:`Download Python source code: relax_creation.py <relax_creation.py>`
+
+    .. container:: sphx-glr-download sphx-glr-download-jupyter
+
+      :download:`Download Jupyter notebook: relax_creation.ipynb <relax_creation.ipynb>`
+
+
+.. only:: html
+
+ .. rst-class:: sphx-glr-signature
+
+    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
diff --git a/docs/_sources/deep_dive/relax/tutorials/relax_transformation.rst.txt b/docs/_sources/deep_dive/relax/tutorials/relax_transformation.rst.txt
new file mode 100644
index 0000000000..0d1f0d3657
--- /dev/null
+++ b/docs/_sources/deep_dive/relax/tutorials/relax_transformation.rst.txt
@@ -0,0 +1,512 @@
+
+.. DO NOT EDIT. THIS FILE WAS AUTOMATICALLY GENERATED BY
+.. TVM'S MONKEY-PATCHED VERSION OF SPHINX-GALLERY. TO MAKE
+.. CHANGES, EDIT THE SOURCE PYTHON FILE:
+.. "deep_dive/relax/tutorials/relax_transformation.py"
+
+.. only:: html
+
+    .. note::
+        :class: sphx-glr-download-link-note
+
+        This tutorial can be used interactively with Google Colab! You can also click
+        :ref:`here <sphx_glr_download_deep_dive_relax_tutorials_relax_transformation.py>` to run the Jupyter notebook locally.
+
+        .. image:: https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg
+            :align: center
+            :target: https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/31d077cfa7c55c0edcd16ad5d4faf483/relax_transformation.ipynb
+            :width: 300px
+
+.. rst-class:: sphx-glr-example-title
+
+.. _sphx_glr_deep_dive_relax_tutorials_relax_transformation.py:
+
+
+.. _relax-transform:
+
+Transformation
+--------------
+In this section, we will dive into the transformation of Relax programs.
+Transformations is one of the key ingredients of the compilation flows
+for optimizing and integrating with hardware backends.
+
+.. GENERATED FROM PYTHON SOURCE LINES 29-31
+
+Let's first create a simple Relax program as what we have done in
+the :ref:`previous section <relax-creation>`.
+
+.. GENERATED FROM PYTHON SOURCE LINES 31-56
+
+.. code-block:: default
+
+
+    import tvm
+    from tvm import IRModule, relax
+    from tvm.relax.frontend import nn
+
+
+    class NNModule(nn.Module):
+        def __init__(self):
+            super().__init__()
+            self.fc1 = nn.Linear(784, 128)
+            self.relu1 = nn.ReLU()
+            self.fc2 = nn.Linear(128, 10)
+
+        def forward(self, x):
+            x = self.fc1(x)
+            x = self.relu1(x)
+            x = self.fc2(x)
+            return x
+
+
+    origin_mod, params = NNModule().export_tvm(
+        {"forward": {"x": nn.spec.Tensor(("n", 784), "float32")}}
+    )
+    origin_mod.show()
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ .. code-block:: none
+
+    # from tvm.script import ir as I
+    # from tvm.script import tir as T
+    # from tvm.script import relax as R
+
+    @I.ir_module
+    class Module:
+        @R.function
+        def forward(x: R.Tensor(("n", 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor(("n", 10), dtype="float32"):
+            n = T.int64()
+            R.func_attr({"num_input": 1})
+            with R.dataflow():
+                permute_dims: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight, axes=None)
+                matmul: R.Tensor((n, 128), dtype="float32") = R.matmul(x, permute_dims, out_dtype="void")
+                add: R.Tensor((n, 128), dtype="float32") = R.add(matmul, fc1_bias)
+                relu: R.Tensor((n, 128), dtype="float32") = R.nn.relu(add)
+                permute_dims1: R.Tensor((128, 10), dtype="float32") = R.permute_dims(fc2_weight, axes=None)
+                matmul1: R.Tensor((n, 10), dtype="float32") = R.matmul(relu, permute_dims1, out_dtype="void")
+                add1: R.Tensor((n, 10), dtype="float32") = R.add(matmul1, fc2_bias)
+                gv: R.Tensor((n, 10), dtype="float32") = add1
+                R.output(gv)
+            return gv
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 57-63
+
+Apply transformations
+~~~~~~~~~~~~~~~~~~~~~
+Passes are the main way to apply transformations to the program.
+We can apply passes to the program. As first step, let's apply
+a built-in pass ``LegalizeOps`` to lower the high-level operators
+into low-level operators.
+
+.. GENERATED FROM PYTHON SOURCE LINES 63-67
+
+.. code-block:: default
+
+
+    mod = tvm.relax.transform.LegalizeOps()(origin_mod)
+    mod.show()
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ .. code-block:: none
+
+    # from tvm.script import ir as I
+    # from tvm.script import tir as T
+    # from tvm.script import relax as R
+
+    @I.ir_module
+    class Module:
+        @T.prim_func(private=True)
+        def add(var_matmul: T.handle, fc1_bias: T.Buffer((T.int64(128),), "float32"), var_T_add: T.handle):
+            T.func_attr({"tir.noalias": T.bool(True)})
+            n = T.int64()
+            matmul = T.match_buffer(var_matmul, (n, T.int64(128)))
+            T_add = T.match_buffer(var_T_add, (n, T.int64(128)))
+            # with T.block("root"):
+            for ax0, ax1 in T.grid(n, T.int64(128)):
+                with T.block("T_add"):
+                    v_ax0, v_ax1 = T.axis.remap("SS", [ax0, ax1])
+                    T.reads(matmul[v_ax0, v_ax1], fc1_bias[v_ax1])
+                    T.writes(T_add[v_ax0, v_ax1])
+                    T_add[v_ax0, v_ax1] = matmul[v_ax0, v_ax1] + fc1_bias[v_ax1]
+
+        @T.prim_func(private=True)
+        def add1(var_matmul1: T.handle, fc2_bias: T.Buffer((T.int64(10),), "float32"), var_T_add: T.handle):
+            T.func_attr({"tir.noalias": T.bool(True)})
+            n = T.int64()
+            matmul1 = T.match_buffer(var_matmul1, (n, T.int64(10)))
+            T_add = T.match_buffer(var_T_add, (n, T.int64(10)))
+            # with T.block("root"):
+            for ax0, ax1 in T.grid(n, T.int64(10)):
+                with T.block("T_add"):
+                    v_ax0, v_ax1 = T.axis.remap("SS", [ax0, ax1])
+                    T.reads(matmul1[v_ax0, v_ax1], fc2_bias[v_ax1])
+                    T.writes(T_add[v_ax0, v_ax1])
+                    T_add[v_ax0, v_ax1] = matmul1[v_ax0, v_ax1] + fc2_bias[v_ax1]
+
+        @T.prim_func(private=True)
+        def matmul(var_x: T.handle, permute_dims: T.Buffer((T.int64(784), T.int64(128)), "float32"), var_matmul: T.handle):
+            T.func_attr({"tir.noalias": T.bool(True)})
+            n = T.int64()
+            x = T.match_buffer(var_x, (n, T.int64(784)))
+            matmul = T.match_buffer(var_matmul, (n, T.int64(128)))
+            # with T.block("root"):
+            for i0, i1, k in T.grid(n, T.int64(128), T.int64(784)):
+                with T.block("matmul"):
+                    v_i0, v_i1, v_k = T.axis.remap("SSR", [i0, i1, k])
+                    T.reads(x[v_i0, v_k], permute_dims[v_k, v_i1])
+                    T.writes(matmul[v_i0, v_i1])
+                    with T.init():
+                        matmul[v_i0, v_i1] = T.float32(0.0)
+                    matmul[v_i0, v_i1] = matmul[v_i0, v_i1] + x[v_i0, v_k] * permute_dims[v_k, v_i1]
+
+        @T.prim_func(private=True)
+        def matmul1(var_relu: T.handle, permute_dims1: T.Buffer((T.int64(128), T.int64(10)), "float32"), var_matmul: T.handle):
+            T.func_attr({"tir.noalias": T.bool(True)})
+            n = T.int64()
+            relu = T.match_buffer(var_relu, (n, T.int64(128)))
+            matmul = T.match_buffer(var_matmul, (n, T.int64(10)))
+            # with T.block("root"):
+            for i0, i1, k in T.grid(n, T.int64(10), T.int64(128)):
+                with T.block("matmul"):
+                    v_i0, v_i1, v_k = T.axis.remap("SSR", [i0, i1, k])
+                    T.reads(relu[v_i0, v_k], permute_dims1[v_k, v_i1])
+                    T.writes(matmul[v_i0, v_i1])
+                    with T.init():
+                        matmul[v_i0, v_i1] = T.float32(0.0)
+                    matmul[v_i0, v_i1] = matmul[v_i0, v_i1] + relu[v_i0, v_k] * permute_dims1[v_k, v_i1]
+
+        @T.prim_func(private=True)
+        def relu(var_add: T.handle, var_compute: T.handle):
+            T.func_attr({"tir.noalias": T.bool(True)})
+            n = T.int64()
+            add = T.match_buffer(var_add, (n, T.int64(128)))
+            compute = T.match_buffer(var_compute, (n, T.int64(128)))
+            # with T.block("root"):
+            for i0, i1 in T.grid(n, T.int64(128)):
+                with T.block("compute"):
+                    v_i0, v_i1 = T.axis.remap("SS", [i0, i1])
+                    T.reads(add[v_i0, v_i1])
+                    T.writes(compute[v_i0, v_i1])
+                    compute[v_i0, v_i1] = T.max(add[v_i0, v_i1], T.float32(0.0))
+
+        @T.prim_func(private=True)
+        def transpose(fc1_weight: T.Buffer((T.int64(128), T.int64(784)), "float32"), T_transpose: T.Buffer((T.int64(784), T.int64(128)), "float32")):
+            T.func_attr({"tir.noalias": T.bool(True)})
+            # with T.block("root"):
+            for ax0, ax1 in T.grid(T.int64(784), T.int64(128)):
+                with T.block("T_transpose"):
+                    v_ax0, v_ax1 = T.axis.remap("SS", [ax0, ax1])
+                    T.reads(fc1_weight[v_ax1, v_ax0])
+                    T.writes(T_transpose[v_ax0, v_ax1])
+                    T_transpose[v_ax0, v_ax1] = fc1_weight[v_ax1, v_ax0]
+
+        @T.prim_func(private=True)
+        def transpose1(fc2_weight: T.Buffer((T.int64(10), T.int64(128)), "float32"), T_transpose: T.Buffer((T.int64(128), T.int64(10)), "float32")):
+            T.func_attr({"tir.noalias": T.bool(True)})
+            # with T.block("root"):
+            for ax0, ax1 in T.grid(T.int64(128), T.int64(10)):
+                with T.block("T_transpose"):
+                    v_ax0, v_ax1 = T.axis.remap("SS", [ax0, ax1])
+                    T.reads(fc2_weight[v_ax1, v_ax0])
+                    T.writes(T_transpose[v_ax0, v_ax1])
+                    T_transpose[v_ax0, v_ax1] = fc2_weight[v_ax1, v_ax0]
+
+        @R.function
+        def forward(x: R.Tensor(("n", 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor(("n", 10), dtype="float32"):
+            n = T.int64()
+            R.func_attr({"num_input": 1})
+            cls = Module
+            with R.dataflow():
+                permute_dims = R.call_tir(cls.transpose, (fc1_weight,), out_sinfo=R.Tensor((784, 128), dtype="float32"))
+                matmul = R.call_tir(cls.matmul, (x, permute_dims), out_sinfo=R.Tensor((n, 128), dtype="float32"))
+                add = R.call_tir(cls.add, (matmul, fc1_bias), out_sinfo=R.Tensor((n, 128), dtype="float32"))
+                relu = R.call_tir(cls.relu, (add,), out_sinfo=R.Tensor((n, 128), dtype="float32"))
+                permute_dims1 = R.call_tir(cls.transpose1, (fc2_weight,), out_sinfo=R.Tensor((128, 10), dtype="float32"))
+                matmul1 = R.call_tir(cls.matmul1, (relu, permute_dims1), out_sinfo=R.Tensor((n, 10), dtype="float32"))
+                add1 = R.call_tir(cls.add1, (matmul1, fc2_bias), out_sinfo=R.Tensor((n, 10), dtype="float32"))
+                gv: R.Tensor((n, 10), dtype="float32") = add1
+                R.output(gv)
+            return gv
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 68-74
+
+As we can see from the output, the high-level operators (aka ``relax.op``) in the program
+are replaced by their corresponding low-level operators (aka ``relax.call_tir``).
+
+Then let's trying to apply the operator fusion, which is a wide-used optimization technique
+in ML compilers. Note that in relax, fusion optimizations are done with the collaboration of
+a set of passes. We can apply them in a sequence.
+
+.. GENERATED FROM PYTHON SOURCE LINES 74-84
+
+.. code-block:: default
+
+
+    mod = tvm.ir.transform.Sequential(
+        [
+            tvm.relax.transform.AnnotateTIROpPattern(),
+            tvm.relax.transform.FuseOps(),
+            tvm.relax.transform.FuseTIR(),
+        ]
+    )(mod)
+    mod.show()
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ .. code-block:: none
+
+    # from tvm.script import ir as I
+    # from tvm.script import tir as T
+    # from tvm.script import relax as R
+
+    @I.ir_module
+    class Module:
+        @T.prim_func(private=True)
+        def fused_matmul1_add1(p_relu: T.handle, permute_dims1: T.Buffer((T.int64(128), T.int64(10)), "float32"), fc2_bias: T.Buffer((T.int64(10),), "float32"), p_output0: T.handle):
+            T.func_attr({"tir.noalias": T.bool(True)})
+            n = T.int64()
+            relu = T.match_buffer(p_relu, (n, T.int64(128)))
+            T_add_intermediate = T.match_buffer(p_output0, (n, T.int64(10)))
+            # with T.block("root"):
+            matmul_intermediate = T.alloc_buffer((n, T.int64(10)))
+            for i0, i1, k in T.grid(n, T.int64(10), T.int64(128)):
+                with T.block("matmul"):
+                    v_i0, v_i1, v_k = T.axis.remap("SSR", [i0, i1, k])
+                    T.reads(relu[v_i0, v_k], permute_dims1[v_k, v_i1])
+                    T.writes(matmul_intermediate[v_i0, v_i1])
+                    with T.init():
+                        matmul_intermediate[v_i0, v_i1] = T.float32(0.0)
+                    matmul_intermediate[v_i0, v_i1] = matmul_intermediate[v_i0, v_i1] + relu[v_i0, v_k] * permute_dims1[v_k, v_i1]
+            for ax0, ax1 in T.grid(n, T.int64(10)):
+                with T.block("T_add"):
+                    v_ax0, v_ax1 = T.axis.remap("SS", [ax0, ax1])
+                    T.reads(matmul_intermediate[v_ax0, v_ax1], fc2_bias[v_ax1])
+                    T.writes(T_add_intermediate[v_ax0, v_ax1])
+                    T_add_intermediate[v_ax0, v_ax1] = matmul_intermediate[v_ax0, v_ax1] + fc2_bias[v_ax1]
+
+        @T.prim_func(private=True)
+        def fused_matmul_add_relu(p_x: T.handle, permute_dims: T.Buffer((T.int64(784), T.int64(128)), "float32"), fc1_bias: T.Buffer((T.int64(128),), "float32"), p_output0: T.handle):
+            T.func_attr({"tir.noalias": T.bool(True)})
+            n = T.int64()
+            x = T.match_buffer(p_x, (n, T.int64(784)))
+            compute_intermediate = T.match_buffer(p_output0, (n, T.int64(128)))
+            # with T.block("root"):
+            matmul_intermediate = T.alloc_buffer((n, T.int64(128)))
+            T_add_intermediate = T.alloc_buffer((n, T.int64(128)))
+            for i0, i1, k in T.grid(n, T.int64(128), T.int64(784)):
+                with T.block("matmul"):
+                    v_i0, v_i1, v_k = T.axis.remap("SSR", [i0, i1, k])
+                    T.reads(x[v_i0, v_k], permute_dims[v_k, v_i1])
+                    T.writes(matmul_intermediate[v_i0, v_i1])
+                    with T.init():
+                        matmul_intermediate[v_i0, v_i1] = T.float32(0.0)
+                    matmul_intermediate[v_i0, v_i1] = matmul_intermediate[v_i0, v_i1] + x[v_i0, v_k] * permute_dims[v_k, v_i1]
+            for ax0, ax1 in T.grid(n, T.int64(128)):
+                with T.block("T_add"):
+                    v_ax0, v_ax1 = T.axis.remap("SS", [ax0, ax1])
+                    T.reads(matmul_intermediate[v_ax0, v_ax1], fc1_bias[v_ax1])
+                    T.writes(T_add_intermediate[v_ax0, v_ax1])
+                    T_add_intermediate[v_ax0, v_ax1] = matmul_intermediate[v_ax0, v_ax1] + fc1_bias[v_ax1]
+            for i0, i1 in T.grid(n, T.int64(128)):
+                with T.block("compute"):
+                    v_i0, v_i1 = T.axis.remap("SS", [i0, i1])
+                    T.reads(T_add_intermediate[v_i0, v_i1])
+                    T.writes(compute_intermediate[v_i0, v_i1])
+                    compute_intermediate[v_i0, v_i1] = T.max(T_add_intermediate[v_i0, v_i1], T.float32(0.0))
+
+        @T.prim_func(private=True)
+        def transpose(fc1_weight: T.Buffer((T.int64(128), T.int64(784)), "float32"), T_transpose: T.Buffer((T.int64(784), T.int64(128)), "float32")):
+            T.func_attr({"op_pattern": 2, "tir.noalias": T.bool(True)})
+            # with T.block("root"):
+            for ax0, ax1 in T.grid(T.int64(784), T.int64(128)):
+                with T.block("T_transpose"):
+                    v_ax0, v_ax1 = T.axis.remap("SS", [ax0, ax1])
+                    T.reads(fc1_weight[v_ax1, v_ax0])
+                    T.writes(T_transpose[v_ax0, v_ax1])
+                    T_transpose[v_ax0, v_ax1] = fc1_weight[v_ax1, v_ax0]
+
+        @T.prim_func(private=True)
+        def transpose1(fc2_weight: T.Buffer((T.int64(10), T.int64(128)), "float32"), T_transpose: T.Buffer((T.int64(128), T.int64(10)), "float32")):
+            T.func_attr({"op_pattern": 2, "tir.noalias": T.bool(True)})
+            # with T.block("root"):
+            for ax0, ax1 in T.grid(T.int64(128), T.int64(10)):
+                with T.block("T_transpose"):
+                    v_ax0, v_ax1 = T.axis.remap("SS", [ax0, ax1])
+                    T.reads(fc2_weight[v_ax1, v_ax0])
+                    T.writes(T_transpose[v_ax0, v_ax1])
+                    T_transpose[v_ax0, v_ax1] = fc2_weight[v_ax1, v_ax0]
+
+        @R.function
+        def forward(x: R.Tensor(("n", 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor(("n", 10), dtype="float32"):
+            n = T.int64()
+            R.func_attr({"num_input": 1})
+            cls = Module
+            with R.dataflow():
+                permute_dims = R.call_tir(cls.transpose, (fc1_weight,), out_sinfo=R.Tensor((784, 128), dtype="float32"))
+                lv = R.call_tir(cls.fused_matmul_add_relu, (x, permute_dims, fc1_bias), out_sinfo=R.Tensor((n, 128), dtype="float32"))
+                permute_dims1 = R.call_tir(cls.transpose1, (fc2_weight,), out_sinfo=R.Tensor((128, 10), dtype="float32"))
+                gv = R.call_tir(cls.fused_matmul1_add1, (lv, permute_dims1, fc2_bias), out_sinfo=R.Tensor((n, 10), dtype="float32"))
+                R.output(gv)
+            return gv
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 85-96
+
+As result, we can see that the ``matmul``, ``add`` and ``relu`` operators are fused
+into one kernel (aka one ``call_tir``).
+
+For all built-in passes, please refer to :py:class:`relax.transform`.
+
+Custom Passes
+~~~~~~~~~~~~~
+We can also define our own passes. Let's taking an example of rewrite the ``relu``
+operator to ``gelu`` operator.
+
+First, we need to write a Relax IR Mutator to do the rewriting.
+
+.. GENERATED FROM PYTHON SOURCE LINES 96-113
+
+.. code-block:: default
+
+
+    from tvm.relax.expr_functor import PyExprMutator, mutator
+
+
+    @mutator
+    class ReluRewriter(PyExprMutator):
+        def __init__(self, mod):
+            super().__init__(mod)
+
+        def visit_call_(self, call: relax.Call) -> relax.Expr:
+            # visit the relax.Call expr, and only handle the case when op is relax.nn.relu
+            if call.op.name == "relax.nn.relu":
+                return relax.op.nn.gelu(call.args[0])
+
+            return super().visit_call_(call)
+
+
+
+
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 114-115
+
+Then we can write a pass to apply the mutator to the whole module.
+
+.. GENERATED FROM PYTHON SOURCE LINES 115-132
+
+.. code-block:: default
+
+
+
+    @tvm.transform.module_pass(opt_level=0, name="ReluToGelu")
+    class ReluToGelu:  # pylint: disable=too-few-public-methods
+        def transform_module(self, mod: IRModule, _ctx: tvm.transform.PassContext) -> IRModule:
+            """IRModule-level transformation"""
+            rewriter = ReluRewriter(mod)
+            for g_var, func in mod.functions_items():
+                if isinstance(func, relax.Function):
+                    func = rewriter.visit_expr(func)
+                    rewriter.builder_.update_func(g_var, func)
+            return rewriter.builder_.get()
+
+
+    mod = ReluToGelu()(origin_mod)
+    mod.show()
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ .. code-block:: none
+
+    # from tvm.script import ir as I
+    # from tvm.script import tir as T
+    # from tvm.script import relax as R
+
+    @I.ir_module
+    class Module:
+        @R.function
+        def forward(x: R.Tensor(("n", 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor(("n", 10), dtype="float32"):
+            n = T.int64()
+            R.func_attr({"num_input": 1})
+            with R.dataflow():
+                permute_dims: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight, axes=None)
+                matmul: R.Tensor((n, 128), dtype="float32") = R.matmul(x, permute_dims, out_dtype="void")
+                add: R.Tensor((n, 128), dtype="float32") = R.add(matmul, fc1_bias)
+                relu: R.Tensor((n, 128), dtype="float32") = R.nn.gelu(add)
+                permute_dims1: R.Tensor((128, 10), dtype="float32") = R.permute_dims(fc2_weight, axes=None)
+                matmul1: R.Tensor((n, 10), dtype="float32") = R.matmul(relu, permute_dims1, out_dtype="void")
+                add1: R.Tensor((n, 10), dtype="float32") = R.add(matmul1, fc2_bias)
+                gv: R.Tensor((n, 10), dtype="float32") = add1
+                R.output(gv)
+            return gv
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 133-142
+
+The printed output shows that the ``relax.nn.relu`` operator is
+rewritten to ``relax.nn.gelu`` operator.
+
+For the details of the mutator, please refer to :py:class:`relax.expr_functor.PyExprMutator`.
+
+Summary
+~~~~~~~
+In this section, we have shown how to apply transformations to the Relax program.
+We have also shown how to define and apply custom transformations.
+
+
+.. _sphx_glr_download_deep_dive_relax_tutorials_relax_transformation.py:
+
+.. only:: html
+
+  .. container:: sphx-glr-footer sphx-glr-footer-example
+
+
+    .. container:: sphx-glr-download sphx-glr-download-python
+
+      :download:`Download Python source code: relax_transformation.py <relax_transformation.py>`
+
+    .. container:: sphx-glr-download sphx-glr-download-jupyter
+
+      :download:`Download Jupyter notebook: relax_transformation.ipynb <relax_transformation.ipynb>`
+
+
+.. only:: html
+
+ .. rst-class:: sphx-glr-signature
+
+    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
diff --git a/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst.txt b/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst.txt
new file mode 100644
index 0000000000..00a7c3b041
--- /dev/null
+++ b/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst.txt
@@ -0,0 +1,14 @@
+
+:orphan:
+
+.. _sphx_glr_deep_dive_relax_tutorials_sg_execution_times:
+
+Computation times
+=================
+**00:00.234** total execution time for **deep_dive_relax_tutorials** files:
+
++-------------------------------------------------------------------------------------------------+-----------+--------+
+| :ref:`sphx_glr_deep_dive_relax_tutorials_relax_creation.py` (``relax_creation.py``)             | 00:00.151 | 0.0 MB |
++-------------------------------------------------------------------------------------------------+-----------+--------+
+| :ref:`sphx_glr_deep_dive_relax_tutorials_relax_transformation.py` (``relax_transformation.py``) | 00:00.083 | 0.0 MB |
++-------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/deep_dive/tensor_ir/abstraction.rst.txt b/docs/_sources/deep_dive/tensor_ir/abstraction.rst.txt
index fc11d7f391..a832fef995 100644
--- a/docs/_sources/deep_dive/tensor_ir/abstraction.rst.txt
+++ b/docs/_sources/deep_dive/tensor_ir/abstraction.rst.txt
@@ -44,7 +44,6 @@ the compute statements themselves.
 
 Key Elements of Tensor Programs
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
 The demonstrated primitive tensor function calculates the element-wise sum of two vectors.
 The function:
 
diff --git a/docs/_sources/deep_dive/tensor_ir/index.rst.txt b/docs/_sources/deep_dive/tensor_ir/index.rst.txt
index 432d47116a..46bed7c423 100644
--- a/docs/_sources/deep_dive/tensor_ir/index.rst.txt
+++ b/docs/_sources/deep_dive/tensor_ir/index.rst.txt
@@ -19,7 +19,7 @@
 
 TensorIR
 ========
-TensorIR is one of the core abstraction in Apache TVM Unity stack, which is used to
+TensorIR is one of the core abstraction in Apache TVM stack, which is used to
 represent and optimize the primitive tensor functions.
 
 .. toctree::
@@ -27,5 +27,5 @@ represent and optimize the primitive tensor functions.
 
     abstraction
     learning
-    tutorials/creation
-    tutorials/transformation
+    tutorials/tir_creation
+    tutorials/tir_transformation
diff --git a/docs/_sources/deep_dive/tensor_ir/tutorials/index.rst.txt b/docs/_sources/deep_dive/tensor_ir/tutorials/index.rst.txt
index 511a2e3c7b..2cd4bb7e7b 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/index.rst.txt
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/index.rst.txt
@@ -16,10 +16,10 @@ Deep Dive: TensorIR
 
 .. only:: html
 
-  .. image:: /deep_dive/tensor_ir/tutorials/images/thumb/sphx_glr_creation_thumb.png
+  .. image:: /deep_dive/tensor_ir/tutorials/images/thumb/sphx_glr_tir_creation_thumb.png
     :alt: TensorIR Creation
 
-  :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_creation.py`
+  :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py`
 
 .. raw:: html
 
@@ -33,10 +33,10 @@ Deep Dive: TensorIR
 
 .. only:: html
 
-  .. image:: /deep_dive/tensor_ir/tutorials/images/thumb/sphx_glr_transformation_thumb.png
+  .. image:: /deep_dive/tensor_ir/tutorials/images/thumb/sphx_glr_tir_transformation_thumb.png
     :alt: Transformation
 
-  :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_transformation.py`
+  :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_transformation.py`
 
 .. raw:: html
 
@@ -52,8 +52,8 @@ Deep Dive: TensorIR
 .. toctree::
    :hidden:
 
-   /deep_dive/tensor_ir/tutorials/creation
-   /deep_dive/tensor_ir/tutorials/transformation
+   /deep_dive/tensor_ir/tutorials/tir_creation
+   /deep_dive/tensor_ir/tutorials/tir_transformation
 
 
 
diff --git a/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst.txt b/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst.txt
index 3a91f2f64a..15b3554c17 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst.txt
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:00.537** total execution time for **deep_dive_tensor_ir_tutorials** files:
+**00:00.517** total execution time for **deep_dive_tensor_ir_tutorials** files:
 
-+-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_transformation.py` (``transformation.py``) | 00:00.318 | 0.0 MB |
-+-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_creation.py` (``creation.py``)             | 00:00.219 | 0.0 MB |
-+-----------------------------------------------------------------------------------------+-----------+--------+
++-------------------------------------------------------------------------------------------------+-----------+--------+
+| :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_transformation.py` (``tir_transformation.py``) | 00:00.309 | 0.0 MB |
++-------------------------------------------------------------------------------------------------+-----------+--------+
+| :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py` (``tir_creation.py``)             | 00:00.208 | 0.0 MB |
++-------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/deep_dive/tensor_ir/tutorials/creation.rst.txt b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_creation.rst.txt
similarity index 96%
rename from docs/_sources/deep_dive/tensor_ir/tutorials/creation.rst.txt
rename to docs/_sources/deep_dive/tensor_ir/tutorials/tir_creation.rst.txt
index e5b1bb4987..cc5e7d87cd 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/creation.rst.txt
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_creation.rst.txt
@@ -2,7 +2,7 @@
 .. DO NOT EDIT. THIS FILE WAS AUTOMATICALLY GENERATED BY
 .. TVM'S MONKEY-PATCHED VERSION OF SPHINX-GALLERY. TO MAKE
 .. CHANGES, EDIT THE SOURCE PYTHON FILE:
-.. "deep_dive/tensor_ir/tutorials/creation.py"
+.. "deep_dive/tensor_ir/tutorials/tir_creation.py"
 
 .. only:: html
 
@@ -10,16 +10,16 @@
         :class: sphx-glr-download-link-note
 
         This tutorial can be used interactively with Google Colab! You can also click
-        :ref:`here <sphx_glr_download_deep_dive_tensor_ir_tutorials_creation.py>` to run the Jupyter notebook locally.
+        :ref:`here <sphx_glr_download_deep_dive_tensor_ir_tutorials_tir_creation.py>` to run the Jupyter notebook locally.
 
         .. image:: https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg
             :align: center
-            :target: https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/904ea2b1aa828d1e33fe24c7159ed30b/creation.ipynb
+            :target: https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/c43b2ae5210f95ce8dae6102e9b060fd/tir_creation.ipynb
             :width: 300px
 
 .. rst-class:: sphx-glr-example-title
 
-.. _sphx_glr_deep_dive_tensor_ir_tutorials_creation.py:
+.. _sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py:
 
 
 .. _tir-creation:
@@ -511,7 +511,7 @@ is that we need to specify the shape of the input tensors as symbolic variables.
 
 
 
-.. _sphx_glr_download_deep_dive_tensor_ir_tutorials_creation.py:
+.. _sphx_glr_download_deep_dive_tensor_ir_tutorials_tir_creation.py:
 
 .. only:: html
 
@@ -520,11 +520,11 @@ is that we need to specify the shape of the input tensors as symbolic variables.
 
     .. container:: sphx-glr-download sphx-glr-download-python
 
-      :download:`Download Python source code: creation.py <creation.py>`
+      :download:`Download Python source code: tir_creation.py <tir_creation.py>`
 
     .. container:: sphx-glr-download sphx-glr-download-jupyter
 
-      :download:`Download Jupyter notebook: creation.ipynb <creation.ipynb>`
+      :download:`Download Jupyter notebook: tir_creation.ipynb <tir_creation.ipynb>`
 
 
 .. only:: html
diff --git a/docs/_sources/deep_dive/tensor_ir/tutorials/transformation.rst.txt b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst.txt
similarity index 95%
rename from docs/_sources/deep_dive/tensor_ir/tutorials/transformation.rst.txt
rename to docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst.txt
index 4e4f9ec0fd..483cd0d416 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/transformation.rst.txt
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst.txt
@@ -2,7 +2,7 @@
 .. DO NOT EDIT. THIS FILE WAS AUTOMATICALLY GENERATED BY
 .. TVM'S MONKEY-PATCHED VERSION OF SPHINX-GALLERY. TO MAKE
 .. CHANGES, EDIT THE SOURCE PYTHON FILE:
-.. "deep_dive/tensor_ir/tutorials/transformation.py"
+.. "deep_dive/tensor_ir/tutorials/tir_transformation.py"
 
 .. only:: html
 
@@ -10,16 +10,16 @@
         :class: sphx-glr-download-link-note
 
         This tutorial can be used interactively with Google Colab! You can also click
-        :ref:`here <sphx_glr_download_deep_dive_tensor_ir_tutorials_transformation.py>` to run the Jupyter notebook locally.
+        :ref:`here <sphx_glr_download_deep_dive_tensor_ir_tutorials_tir_transformation.py>` to run the Jupyter notebook locally.
 
         .. image:: https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg
             :align: center
-            :target: https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/7f7965d8006d56cdc5a7bb4ecf47205c/transformation.ipynb
+            :target: https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/e2a9c4bfdec7a9365ef67c5335b1aaa4/tir_transformation.ipynb
             :width: 300px
 
 .. rst-class:: sphx-glr-example-title
 
-.. _sphx_glr_deep_dive_tensor_ir_tutorials_transformation.py:
+.. _sphx_glr_deep_dive_tensor_ir_tutorials_tir_transformation.py:
 
 
 .. _tir-transform:
@@ -123,7 +123,7 @@ original implementation.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       2.2466       2.2466       2.2466       2.2466       0.0000                  
+       2.2441       2.2441       2.2441       2.2441       0.0000                  
 
 
 
@@ -295,7 +295,7 @@ action involves reordering these two loops.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       0.8808       0.8808       0.8808       0.8808       0.0000                  
+       0.8906       0.8906       0.8906       0.8906       0.0000                  
 
 
 
@@ -423,7 +423,7 @@ from the reduction update via the **decompose_reduction** primitive.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       0.3269       0.3269       0.3269       0.3269       0.0000                  
+       0.3211       0.3211       0.3211       0.3211       0.0000                  
 
 
 
@@ -535,7 +535,7 @@ Alternatively, we can output the IRModule in conjunction with the historical tra
 
 
 
-.. _sphx_glr_download_deep_dive_tensor_ir_tutorials_transformation.py:
+.. _sphx_glr_download_deep_dive_tensor_ir_tutorials_tir_transformation.py:
 
 .. only:: html
 
@@ -544,11 +544,11 @@ Alternatively, we can output the IRModule in conjunction with the historical tra
 
     .. container:: sphx-glr-download sphx-glr-download-python
 
-      :download:`Download Python source code: transformation.py <transformation.py>`
+      :download:`Download Python source code: tir_transformation.py <tir_transformation.py>`
 
     .. container:: sphx-glr-download sphx-glr-download-jupyter
 
-      :download:`Download Jupyter notebook: transformation.ipynb <transformation.ipynb>`
+      :download:`Download Jupyter notebook: tir_transformation.ipynb <tir_transformation.ipynb>`
 
 
 .. only:: html
diff --git a/docs/_sources/get_started/tutorials/ir_module.rst.txt b/docs/_sources/get_started/tutorials/ir_module.rst.txt
index 39a8685d0e..86854e481e 100644
--- a/docs/_sources/get_started/tutorials/ir_module.rst.txt
+++ b/docs/_sources/get_started/tutorials/ir_module.rst.txt
@@ -695,8 +695,8 @@ We can deploy the IRModule on CPU by specifying the target as ``llvm``.
 
  .. code-block:: none
 
-    [[ 0.28885508 -0.02175649  0.31497347  0.0424832  -0.06461287 -0.04746976
-       0.21574533  0.24022415 -0.0051444  -0.24149173]]
+    [[ 0.04749872  0.238076    0.1217846  -0.0657324   0.20582433 -0.316358
+       0.05158069 -0.18476681  0.09485649  0.05732439]]
 
 
 
@@ -762,8 +762,8 @@ Now we can compile the IRModule on GPU, the similar way as we did on CPU.
 
  .. code-block:: none
 
-    [[ 0.28885505 -0.02175652  0.31497344  0.04248314 -0.06461293 -0.04746976
-       0.21574533  0.24022417 -0.00514441 -0.24149173]]
+    [[ 0.04749867  0.2380758   0.12178457 -0.06573245  0.2058243  -0.31635788
+       0.0515807  -0.18476681  0.09485647  0.05732441]]
 
 
 
diff --git a/docs/_sources/get_started/tutorials/sg_execution_times.rst.txt b/docs/_sources/get_started/tutorials/sg_execution_times.rst.txt
index fb91a75967..52baaf92f7 100644
--- a/docs/_sources/get_started/tutorials/sg_execution_times.rst.txt
+++ b/docs/_sources/get_started/tutorials/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:02.421** total execution time for **get_started_tutorials** files:
+**00:02.525** total execution time for **get_started_tutorials** files:
 
 +---------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_get_started_tutorials_ir_module.py` (``ir_module.py``)     | 00:02.223 | 0.0 MB |
+| :ref:`sphx_glr_get_started_tutorials_ir_module.py` (``ir_module.py``)     | 00:02.331 | 0.0 MB |
 +---------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_get_started_tutorials_quick_start.py` (``quick_start.py``) | 00:00.198 | 0.0 MB |
+| :ref:`sphx_glr_get_started_tutorials_quick_start.py` (``quick_start.py``) | 00:00.195 | 0.0 MB |
 +---------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/compile_models/from_darknet.rst.txt b/docs/_sources/how_to/compile_models/from_darknet.rst.txt
index b2662559b0..4b7f0f9473 100644
--- a/docs/_sources/how_to/compile_models/from_darknet.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_darknet.rst.txt
@@ -318,7 +318,7 @@ The process is no different from other examples.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  36.117 seconds)
+   **Total running time of the script:** ( 1 minutes  39.094 seconds)
 
 
 .. _sphx_glr_download_how_to_compile_models_from_darknet.py:
diff --git a/docs/_sources/how_to/compile_models/from_keras.rst.txt b/docs/_sources/how_to/compile_models/from_keras.rst.txt
index 32f7c821f4..e7f0075bee 100644
--- a/docs/_sources/how_to/compile_models/from_keras.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_keras.rst.txt
@@ -232,7 +232,7 @@ Look up prediction top 1 index in 1000 class synset.
  .. code-block:: none
 
     Relay top-1 id: 285, class name: Egyptian cat
-     1/1 [==============================] - ETA: 0s     1/1 [==============================] - 1s 899ms/step
+     1/1 [==============================] - ETA: 0s     1/1 [==============================] - 1s 900ms/step
     Keras top-1 id: 285, class name: Egyptian cat
 
 
diff --git a/docs/_sources/how_to/compile_models/from_oneflow.rst.txt b/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
index ecf5c42d0e..ddeb62b419 100644
--- a/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
@@ -121,7 +121,7 @@ Load a pretrained OneFlow model and save model
  .. code-block:: none
 
     Downloading: "https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/flowvision/classification/ResNet/resnet18.zip" to /workspace/.oneflow/flowvision_cache/resnet18.zip
-       0%|          | 0.00/41.5M [00:00<?, ?B/s]      22%|##1       | 9.03M/41.5M [00:00<00:00, 94.6MB/s]      44%|####3     | 18.1M/41.5M [00:00<00:00, 59.1MB/s]      59%|#####8    | 24.4M/41.5M [00:00<00:00, 49.9MB/s]      77%|#######7  | 32.0M/41.5M [00:00<00:00, 54.3MB/s]      96%|#########6| 40.0M/41.5M [00:00<00:00, 56.1MB/s]     100%|##########| 41.5M/41.5M [00:00<00:00, 58.5MB/s]
+       0%|          | 0.00/41.5M [00:00<?, ?B/s]      15%|#5        | 6.33M/41.5M [00:00<00:01, 34.0MB/s]      23%|##3       | 9.58M/41.5M [00:00<00:01, 23.1MB/s]      35%|###4      | 14.3M/41.5M [00:00<00:00, 30.1MB/s]      42%|####2     | 17.5M/41.5M [00:00<00:01, 22.9MB/s]      54%|#####3    | 22.3M/41.5M [00:01<00:00, 20.6MB/s]      59%|#####9    | 24.6M/41.5M [00:01<00:00, 20.4MB/s]      77%|#######7  | 32.0M/41.5M [00:01<00:00, 29.5MB/s]      85%|########4 | 35.1M/41.5M [00:01<00:00, 20.5MB/s]      99%|#########8| 40.9M/41.5M [00:01<00:00, 27.5MB/s]     100%|##########| 41.5M/41.5M [00:01<00:00, 25.4MB/s]
 
 
 
diff --git a/docs/_sources/how_to/compile_models/from_paddle.rst.txt b/docs/_sources/how_to/compile_models/from_paddle.rst.txt
index 67ef8fa12b..8caa193dc5 100644
--- a/docs/_sources/how_to/compile_models/from_paddle.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_paddle.rst.txt
@@ -209,7 +209,7 @@ Look up prediction top 1 index in 1000 class synset.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  3.510 seconds)
+   **Total running time of the script:** ( 1 minutes  5.300 seconds)
 
 
 .. _sphx_glr_download_how_to_compile_models_from_paddle.py:
diff --git a/docs/_sources/how_to/compile_models/from_pytorch.rst.txt b/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
index 48ee55ddea..0270aaa2a2 100644
--- a/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
@@ -101,7 +101,7 @@ Load a pretrained PyTorch model
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.
       warnings.warn(msg)
     Downloading: "https://download.pytorch.org/models/resnet18-f37072fd.pth" to /workspace/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth
-       0%|          | 0.00/44.7M [00:00<?, ?B/s]      46%|####6     | 20.7M/44.7M [00:00<00:00, 217MB/s]     100%|##########| 44.7M/44.7M [00:00<00:00, 254MB/s]
+       0%|          | 0.00/44.7M [00:00<?, ?B/s]      10%|#         | 4.50M/44.7M [00:00<00:00, 43.9MB/s]      19%|#9        | 8.70M/44.7M [00:00<00:00, 41.6MB/s]      29%|##8       | 12.7M/44.7M [00:00<00:00, 41.8MB/s]      38%|###8      | 17.0M/44.7M [00:00<00:00, 41.7MB/s]      47%|####6     | 21.0M/44.7M [00:00<00:00, 35.9MB/s]      58%|#####7    | 25.7M/44.7M [00:00<00:00, 40.1MB/s]      68%|######7   | 30.2M/44.7M [00:00<00:00, 42.0MB/s]      77%|#######6  | 34.3M/44.7M [00:00<00:00, 42.0MB/s]      89%|########9 | 40.0M/44.7M [00:00<00:00, 47.2MB/s]     100%|#########9| 44.5M/44.7M [00:01<00:00, 45.2MB/s]     100%|##########| 44.7M/44.7M [00:01<00:00, 42.9MB/s]
 
 
 
diff --git a/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt b/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
index 3ea2fa0e0d..3fea12539c 100644
--- a/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
@@ -424,7 +424,7 @@ Run the corresponding model on tensorflow
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  32.393 seconds)
+   **Total running time of the script:** ( 1 minutes  33.187 seconds)
 
 
 .. _sphx_glr_download_how_to_compile_models_from_tensorflow.py:
diff --git a/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt b/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
index e6af41bbfc..633de186a9 100644
--- a/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
@@ -5,24 +5,24 @@
 
 Computation times
 =================
-**06:46.011** total execution time for **how_to_compile_models** files:
+**06:53.218** total execution time for **how_to_compile_models** files:
 
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)       | 01:36.117 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)       | 01:39.094 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``) | 01:32.393 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``) | 01:33.187 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)         | 01:03.510 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)         | 01:05.300 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)       | 00:42.941 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)       | 00:44.034 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)         | 00:40.624 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)         | 00:39.191 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)       | 00:27.775 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)       | 00:28.706 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)           | 00:27.433 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)           | 00:27.324 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)         | 00:12.278 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)         | 00:13.565 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)             | 00:02.939 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)             | 00:02.816 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt
index 077579a953..47108120a1 100644
--- a/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt
@@ -664,7 +664,7 @@ well as provides information about the model's performance
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-     3992.3845    3992.5465    3993.8998    3990.8549      0.9370                  
+     3991.1715    3991.5389    3994.6278    3988.6856      1.7877                  
 
 
 
@@ -672,7 +672,7 @@ well as provides information about the model's performance
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  18.539 seconds)
+   **Total running time of the script:** ( 1 minutes  18.619 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_model_on_adreno.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_model_on_adreno_tvmc.rst.txt b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno_tvmc.rst.txt
index 98bbad8b44..a8b3f4d53d 100644
--- a/docs/_sources/how_to/deploy_models/deploy_model_on_adreno_tvmc.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno_tvmc.rst.txt
@@ -127,7 +127,7 @@ Make a Keras Resnet50 Model
  .. code-block:: none
 
     Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/resnet/resnet50_weights_tf_dim_ordering_tf_kernels.h5
-          8192/102967424 [..............................] - ETA: 0s       8380416/102967424 [=>............................] - ETA: 1s      15024128/102967424 [===>..........................] - ETA: 1s      16769024/102967424 [===>..........................] - ETA: 1s      25157632/102967424 [======>.......................] - ETA: 1s      31072256/102967424 [========>.....................] - ETA: 1s      33546240/102967424 [========>.....................] - ETA: 1s      40189952/102967424 [==========>...................] - ETA: 1s
       41934848/102967424 [===========>..................] - ETA: 1s      48578560/102967424 [=============>................] - ETA: 1s      50323456/102967424 [=============>................] - ETA: 1s      56967168/102967424 [===============>..............] - ETA: 0s      58712064/102967424 [================>.............] - ETA: 0s      65355776/102967424 [==================>...........] - ETA: 0s      67100672/102967424 [==================>...........] - ETA: 0s      69296128/102967424 [===================>..........] -
  ETA: 0s      73744384/102967424 [====================>.........] - ETA: 0s      75489280/102967424 [====================>.........] - ETA: 0s      83877888/102967424 [=======================>......] - ETA: 0s      92266496/102967424 [=========================>....] - ETA: 0s      98910208/102967424 [===========================>..] - ETA: 0s     100646912/102967424 [============================>.] - ETA: 0s     102850560/102967424 [============================>.] - ETA: 0s     102967424/102967424
  [==============================] - 2s 0us/step
+          8192/102967424 [..............................] - ETA: 0s       6635520/102967424 [>.............................] - ETA: 2s       8380416/102967424 [=>............................] - ETA: 3s      16769024/102967424 [===>..........................] - ETA: 2s      19562496/102967424 [====>.........................] - ETA: 2s      23412736/102967424 [=====>........................] - ETA: 2s      25157632/102967424 [======>.......................] - ETA: 2s      32129024/102967424 [========>.....................] - ETA: 2s
       33546240/102967424 [========>.....................] - ETA: 2s      40189952/102967424 [==========>...................] - ETA: 1s      41934848/102967424 [===========>..................] - ETA: 1s      48578560/102967424 [=============>................] - ETA: 1s      50323456/102967424 [=============>................] - ETA: 1s      56967168/102967424 [===============>..............] - ETA: 1s      58712064/102967424 [================>.............] - ETA: 1s      67100672/102967424 [==================>...........] -
  ETA: 1s      69296128/102967424 [===================>..........] - ETA: 1s      73744384/102967424 [====================>.........] - ETA: 0s      75489280/102967424 [====================>.........] - ETA: 0s      82124800/102967424 [======================>.......] - ETA: 0s      83877888/102967424 [=======================>......] - ETA: 0s      92184576/102967424 [=========================>....] - ETA: 0s      92266496/102967424 [=========================>....] - ETA: 0s      98910208/102967424
  [===========================>..] - ETA: 0s     100646912/102967424 [============================>.] - ETA: 0s     102850560/102967424 [============================>.] - ETA: 0s     102967424/102967424 [==============================] - 3s 0us/step
 
 
 
diff --git a/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt b/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
index bc3df456fe..6efd29de43 100644
--- a/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
@@ -437,7 +437,7 @@ Execute on TVM
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      13.7737      13.7536      13.9726      13.6904       0.0820                  
+      14.3748      14.3605      14.7964      14.1328       0.1738                  
 
 
 
diff --git a/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt b/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
index c667bf6b41..fb6736b9fb 100644
--- a/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
@@ -130,7 +130,7 @@ Load pre-trained maskrcnn from torchvision and do tracing
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=MaskRCNN_ResNet50_FPN_Weights.COCO_V1`. You can also use `weights=MaskRCNN_ResNet50_FPN_Weights.DEFAULT` to get the most up-to-date weights.
       warnings.warn(msg)
     Downloading: "https://download.pytorch.org/models/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth" to /workspace/.cache/torch/hub/checkpoints/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth
-       0%|          | 0.00/170M [00:00<?, ?B/s]       3%|3         | 5.94M/170M [00:00<00:02, 61.7MB/s]       7%|6         | 11.8M/170M [00:00<00:03, 51.2MB/s]      10%|9         | 16.8M/170M [00:00<00:03, 51.6MB/s]      13%|#2        | 21.8M/170M [00:00<00:03, 49.8MB/s]      16%|#6        | 27.4M/170M [00:00<00:02, 52.6MB/s]      19%|#9        | 32.6M/170M [00:00<00:02, 51.9MB/s]      22%|##2       | 37.9M/170M [00:00<00:02, 53.2MB/s]      25%|##5       | 43.0M/170M [00:00<00:02, 51.8MB/s]      29%|##8       | 48.5M/170M [00:00<00:02, 53.4MB/s]      32%|###2      | 54.9M/170M [00:01<00:02, 57.3MB/s]      36%|###5      | 60.8M/170M [00:01<00:01, 58.6MB/s]      39%|###9      | 66.5M/170M [00:01<00:01, 59.0MB/s]      42%|####2     | 72.2M/170M [00:01<00:01, 56.0MB/s]      46%|####6     | 78.2M/170M [00:01<00:01, 57.8MB/s]      50%|####9     | 84.4M/170M [00:01<00:01, 59.8MB/s]      54%|#####3    | 90.9M/170M [00:01<00:01, 62.2MB/s]      57%|#####7    | 97.0M/170M [00:01<00:01, 62.7MB/
 s]      61%|######    | 103M/170M [00:01<00:01, 61.4MB/s]       64%|######4   | 109M/170M [00:01<00:01, 62.5MB/s]      68%|######7   | 115M/170M [00:02<00:00, 62.2MB/s]      71%|#######1  | 121M/170M [00:02<00:00, 61.7MB/s]      75%|#######4  | 127M/170M [00:02<00:00, 59.7MB/s]      78%|#######8  | 133M/170M [00:02<00:00, 59.4MB/s]      82%|########1 | 139M/170M [00:02<00:00, 59.7MB/s]      85%|########5 | 145M/170M [00:02<00:00, 60.2MB/s]      89%|########8 | 151M/170M [00:02<00:00, 61.3MB/s]      92%|#########2| 157M/170M [00:02<00:00, 61.1MB/s]      96%|#########5| 162M/170M [00:02<00:00, 53.3MB/s]      99%|#########8| 168M/170M [00:03<00:00, 53.7MB/s]     100%|##########| 170M/170M [00:03<00:00, 57.3MB/s]
+       0%|          | 0.00/170M [00:00<?, ?B/s]      12%|#1        | 20.1M/170M [00:00<00:00, 211MB/s]      24%|##3       | 40.2M/170M [00:00<00:00, 184MB/s]      34%|###4      | 58.0M/170M [00:00<00:01, 113MB/s]      42%|####1     | 70.9M/170M [00:00<00:01, 64.6MB/s]      47%|####7     | 80.0M/170M [00:01<00:01, 53.7MB/s]      51%|#####1    | 87.0M/170M [00:01<00:01, 48.2MB/s]      55%|#####4    | 92.7M/170M [00:01<00:01, 46.9MB/s]      58%|#####7    | 97.9M/170M [00:01<00:01, 44.8MB/s]      60%|######    | 103M/170M [00:01<00:01, 44.5MB/s]       63%|######3   | 107M/170M [00:01<00:01, 41.8MB/s]      65%|######5   | 111M/170M [00:02<00:01, 38.1MB/s]      68%|######7   | 115M/170M [00:02<00:01, 34.8MB/s]      70%|######9   | 118M/170M [00:02<00:01, 35.2MB/s]      72%|#######2  | 123M/170M [00:02<00:01, 37.6MB/s]      75%|#######4  | 127M/170M [00:02<00:01, 38.3MB/s]      77%|#######6  | 130M/170M [00:02<00:01, 38.8MB/s]      79%|#######9  | 134M/170M [00:02<00:00, 38.0MB/s]      81%
 |########1 | 138M/170M [00:02<00:00, 38.5MB/s]      84%|########3 | 142M/170M [00:02<00:00, 39.1MB/s]      86%|########6 | 146M/170M [00:03<00:00, 40.7MB/s]      89%|########8 | 150M/170M [00:03<00:00, 39.4MB/s]      91%|#########1| 155M/170M [00:03<00:00, 41.3MB/s]      94%|#########3| 160M/170M [00:03<00:00, 43.5MB/s]      97%|#########6| 164M/170M [00:03<00:00, 44.9MB/s]      99%|#########9| 169M/170M [00:03<00:00, 46.2MB/s]     100%|##########| 170M/170M [00:03<00:00, 49.9MB/s]
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/models/detection/generalized_rcnn.py:75: TracerWarning: Iterating over a tensor might cause the trace to be incorrect. Passing a tensor of different shape won't change the number of iterations executed (and might lead to errors or silently give incorrect results).
       for img in images:
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/models/detection/transform.py:110: TracerWarning: Iterating over a tensor might cause the trace to be incorrect. Passing a tensor of different shape won't change the number of iterations executed (and might lead to errors or silently give incorrect results).
@@ -330,7 +330,7 @@ Get boxes with score larger than 0.9
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 3 minutes  27.796 seconds)
+   **Total running time of the script:** ( 3 minutes  34.716 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_object_detection_pytorch.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt b/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
index 4648426c13..de05bc159e 100644
--- a/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
@@ -227,7 +227,7 @@ training. Other models require a full post training calibration.
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=MobileNet_V2_Weights.IMAGENET1K_V1`. You can also use `weights=MobileNet_V2_Weights.DEFAULT` to get the most up-to-date weights.
       warnings.warn(msg)
     Downloading: "https://download.pytorch.org/models/mobilenet_v2-b0353104.pth" to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2-b0353104.pth
-       0%|          | 0.00/13.6M [00:00<?, ?B/s]      42%|####2     | 5.73M/13.6M [00:00<00:00, 59.9MB/s]      84%|########4 | 11.4M/13.6M [00:00<00:00, 56.8MB/s]     100%|##########| 13.6M/13.6M [00:00<00:00, 57.2MB/s]
+       0%|          | 0.00/13.6M [00:00<?, ?B/s]      22%|##2       | 2.98M/13.6M [00:00<00:00, 28.6MB/s]      42%|####2     | 5.71M/13.6M [00:00<00:00, 27.3MB/s]      74%|#######3  | 10.0M/13.6M [00:00<00:00, 34.4MB/s]     100%|##########| 13.6M/13.6M [00:00<00:00, 36.0MB/s]
 
 
 
@@ -404,7 +404,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      85.8332      85.8239      86.3681      85.5316       0.1478                  
+      85.9355      85.8337      89.1938      85.6052       0.4025                  
 
 
 
@@ -452,7 +452,7 @@ TODO
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  30.238 seconds)
+   **Total running time of the script:** ( 1 minutes  30.214 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_prequantized.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt b/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
index f60760a000..02dc8ac007 100644
--- a/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
@@ -423,7 +423,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      105.2045     104.9305     123.3581     103.9535      1.9317                  
+      105.4285     105.1303     110.4694     103.7653      1.1855                  
 
 
 
diff --git a/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt b/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
index 7359c5e855..6be595bf4f 100644
--- a/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
@@ -5,24 +5,24 @@
 
 Computation times
 =================
-**09:48.296** total execution time for **how_to_deploy_models** files:
+**09:59.386** total execution time for **how_to_deploy_models** files:
 
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``) | 03:27.796 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``) | 03:34.716 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)                         | 01:30.238 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)                         | 01:30.214 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno.py` (``deploy_model_on_adreno.py``)                   | 01:18.539 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno.py` (``deploy_model_on_adreno.py``)                   | 01:18.619 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)                 | 00:52.063 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)                 | 00:52.882 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)           | 00:51.014 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)           | 00:51.698 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno_tvmc.py` (``deploy_model_on_adreno_tvmc.py``)         | 00:48.412 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno_tvmc.py` (``deploy_model_on_adreno_tvmc.py``)         | 00:49.505 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_nano.py` (``deploy_model_on_nano.py``)                       | 00:30.167 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)                       | 00:30.879 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)                       | 00:30.061 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_nano.py` (``deploy_model_on_nano.py``)                       | 00:30.864 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_deploy_models_deploy_sparse.py` (``deploy_sparse.py``)                                     | 00:00.007 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt b/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
index 3b0244c815..ab1982d349 100644
--- a/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
@@ -5,12 +5,12 @@
 
 Computation times
 =================
-**00:03.979** total execution time for **how_to_extend_tvm** files:
+**00:03.960** total execution time for **how_to_extend_tvm** files:
 
 +-------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)     | 00:02.751 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)     | 00:02.743 | 0.0 MB |
 +-------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)               | 00:01.220 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)               | 00:01.210 | 0.0 MB |
 +-------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_extend_tvm_low_level_custom_pass.py` (``low_level_custom_pass.py``) | 00:00.007 | 0.0 MB |
 +-------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt b/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
index e32b56f992..e2a084d301 100644
--- a/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
@@ -220,10 +220,10 @@ profile the execution time of each passes.
  .. code-block:: none
 
     Printing results of timing profile...
-    InferType: 25420us [25420us] (49.29%; 49.29%)
-    FoldScaleAxis: 26149us [8us] (50.71%; 50.71%)
-            FoldConstant: 26141us [1769us] (50.69%; 99.97%)
-                    InferType: 24371us [24371us] (47.26%; 93.23%)
+    InferType: 24632us [24632us] (48.57%; 48.57%)
+    FoldScaleAxis: 26082us [8us] (51.43%; 51.43%)
+            FoldConstant: 26074us [1747us] (51.41%; 99.97%)
+                    InferType: 24328us [24328us] (47.97%; 93.30%)
 
 
 
@@ -262,10 +262,10 @@ Refer to following sections and :py:func:`tvm.instrument.pass_instrument` for th
  .. code-block:: none
 
     Printing results of timing profile...
-    InferType: 24258us [24258us] (48.50%; 48.50%)
-    FoldScaleAxis: 25755us [7us] (51.50%; 51.50%)
-            FoldConstant: 25748us [1702us] (51.48%; 99.97%)
-                    InferType: 24045us [24045us] (48.08%; 93.39%)
+    InferType: 24275us [24275us] (48.85%; 48.85%)
+    FoldScaleAxis: 25420us [6us] (51.15%; 51.15%)
+            FoldConstant: 25413us [1664us] (51.14%; 99.97%)
+                    InferType: 23750us [23750us] (47.79%; 93.45%)
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt b/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
index 7f3fa4de91..b5df0129dc 100644
--- a/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
@@ -331,7 +331,7 @@ latency of convolution.
 
  .. code-block:: none
 
-    Convolution: 41.407711 ms
+    Convolution: 53.398078 ms
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt b/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
index c10818f76e..0fe1c8c665 100644
--- a/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
@@ -598,7 +598,7 @@ be able to run on our build server
 
  .. code-block:: none
 
-    conv2d with tensor core: 11.681357 ms
+    conv2d with tensor core: 11.884803 ms
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt b/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
index 2350c09daa..d5296c7efc 100644
--- a/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
@@ -134,8 +134,8 @@ Then we write a baseline implementation, the simplest way to write a matrix mult
 
  .. code-block:: none
 
-    Numpy running time: 0.013970
-    Baseline: 3.394549
+    Numpy running time: 0.014288
+    Baseline: 3.207451
 
 
 
@@ -227,7 +227,7 @@ fill 32 * 32 * sizeof(float) which is 4KB in the cache whose total size is 32KB
 
  .. code-block:: none
 
-    Opt1: 0.283500
+    Opt1: 0.285674
 
 
 
@@ -318,7 +318,7 @@ In this tutorial, we chose to vectorize the inner loop row data since it is cach
 
  .. code-block:: none
 
-    Opt2: 0.277010
+    Opt2: 0.265441
 
 
 
@@ -406,7 +406,7 @@ the access pattern for A matrix is more cache friendly.
 
  .. code-block:: none
 
-    Opt3: 0.108667
+    Opt3: 0.110258
 
 
 
@@ -523,7 +523,7 @@ flattening.
 
  .. code-block:: none
 
-    Opt4: 0.102606
+    Opt4: 0.103752
 
 
 
@@ -635,7 +635,7 @@ write to C when all the block results are ready.
 
  .. code-block:: none
 
-    Opt5: 0.100327
+    Opt5: 0.094617
 
 
 
@@ -748,7 +748,7 @@ Furthermore, we can also utilize multi-core processors to do the thread-level pa
 
  .. code-block:: none
 
-    Opt6: 0.114903
+    Opt6: 0.113319
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt b/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
index 85c8ad2f10..72dfbc04bc 100644
--- a/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
@@ -5,12 +5,12 @@
 
 Computation times
 =================
-**00:32.306** total execution time for **how_to_optimize_operators** files:
+**00:31.326** total execution time for **how_to_optimize_operators** files:
 
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)                       | 00:28.983 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)                       | 00:28.211 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``) | 00:02.046 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``) | 00:01.971 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)             | 00:01.277 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)             | 00:01.145 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
index 17edba1c8e..5508cc9929 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
@@ -5,18 +5,18 @@
 
 Computation times
 =================
-**03:38.810** total execution time for **how_to_tune_with_autoscheduler** files:
+**03:38.537** total execution time for **how_to_tune_with_autoscheduler** files:
 
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)             | 01:35.289 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)             | 01:34.594 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)           | 01:11.959 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)           | 01:12.024 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)             | 00:19.853 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)             | 00:20.099 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)           | 00:16.856 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)           | 00:16.937 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``) | 00:14.754 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``) | 00:14.784 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)               | 00:00.098 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)               | 00:00.099 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
index e1c6a50986..acc6045cab 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
@@ -633,7 +633,7 @@ so we can read the log file and load the best schedules.
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       3.1913       3.1918       3.1918       3.1904       0.0007                  
+       3.2000       3.1944       3.2112       3.1943       0.0079                  
 
 
 
@@ -660,7 +660,7 @@ Other Tips
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  11.959 seconds)
+   **Total running time of the script:** ( 1 minutes  12.024 seconds)
 
 
 .. _sphx_glr_download_how_to_tune_with_autoscheduler_tune_network_cuda.py:
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
index f6883d774f..05a46990d4 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
@@ -655,7 +655,7 @@ so we can read the log file and load the best schedules.
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      723.8095     723.3877     727.5756     720.4653      2.9180                  
+      709.2131     708.5296     710.7306     708.3791      1.0748                  
 
 
 
@@ -682,7 +682,7 @@ Other Tips
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  35.289 seconds)
+   **Total running time of the script:** ( 1 minutes  34.594 seconds)
 
 
 .. _sphx_glr_download_how_to_tune_with_autoscheduler_tune_network_x86.py:
diff --git a/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt b/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
index 627b075120..9eeec1e370 100644
--- a/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
@@ -5,16 +5,16 @@
 
 Computation times
 =================
-**00:22.641** total execution time for **how_to_tune_with_autotvm** files:
+**00:22.807** total execution time for **how_to_tune_with_autotvm** files:
 
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)           | 00:22.605 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)           | 00:22.775 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)               | 00:00.019 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)               | 00:00.016 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_mobile_gpu.py` (``tune_relay_mobile_gpu.py``) | 00:00.006 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)               | 00:00.006 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)               | 00:00.005 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)             | 00:00.005 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt b/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
index 0ae09b9f58..1fd3cdc1ec 100644
--- a/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
@@ -326,7 +326,7 @@ and measure running time.
 
     Best config:
     ,None
-    Time cost of this operator: 0.037084
+    Time cost of this operator: 0.037309
 
 
 
diff --git a/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst.txt b/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst.txt
index 1e5a906e49..6a00f549dd 100644
--- a/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst.txt
+++ b/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst.txt
@@ -274,7 +274,7 @@ device and returns the measured cost. Network overhead is excluded.
 
  .. code-block:: none
 
-    1.197e-07 secs/op
+    1.169e-07 secs/op
 
 
 
diff --git a/docs/_sources/how_to/tutorials/optimize_llm.rst.txt b/docs/_sources/how_to/tutorials/optimize_llm.rst.txt
index d988ac8fbf..ee27f6f223 100644
--- a/docs/_sources/how_to/tutorials/optimize_llm.rst.txt
+++ b/docs/_sources/how_to/tutorials/optimize_llm.rst.txt
@@ -858,7 +858,7 @@ IRModule to generate the token.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  5.834 seconds)
+   **Total running time of the script:** ( 1 minutes  4.357 seconds)
 
 
 .. _sphx_glr_download_how_to_tutorials_optimize_llm.py:
diff --git a/docs/_sources/how_to/tutorials/sg_execution_times.rst.txt b/docs/_sources/how_to/tutorials/sg_execution_times.rst.txt
index 51ed1dbf74..9bd25df0c2 100644
--- a/docs/_sources/how_to/tutorials/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/tutorials/sg_execution_times.rst.txt
@@ -5,14 +5,14 @@
 
 Computation times
 =================
-**01:08.184** total execution time for **how_to_tutorials** files:
+**01:06.664** total execution time for **how_to_tutorials** files:
 
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tutorials_optimize_llm.py` (``optimize_llm.py``)                           | 01:05.834 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tutorials_optimize_llm.py` (``optimize_llm.py``)                           | 01:04.357 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tutorials_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``) | 00:00.844 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tutorials_customize_opt.py` (``customize_opt.py``)                         | 00:00.818 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tutorials_customize_opt.py` (``customize_opt.py``)                         | 00:00.829 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tutorials_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``) | 00:00.791 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``e2e_opt_model.py``)                         | 00:00.678 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``e2e_opt_model.py``)                         | 00:00.698 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
index 716dd8974d..9a52c23459 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
@@ -360,10 +360,10 @@ Timing the untuned program
     ########## Build without Autotuning ##########
     Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)  
     ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------  
-    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  292.8     98.742   (1, 2, 10, 10, 3)  2       1        [292.8]           
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.804     0.946    (1, 6, 10, 10)     1       1        [2.804]           
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.927     0.313    (1, 1, 10, 10, 3)  1       1        [0.927]           
-    Total_time                                    -                                             296.531   -        -                  -       -        -                 
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  294.7     98.733   (1, 2, 10, 10, 3)  2       1        [294.7]           
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.849     0.955    (1, 6, 10, 10)     1       1        [2.849]           
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.933     0.312    (1, 1, 10, 10, 3)  1       1        [0.933]           
+    Total_time                                    -                                             298.482   -        -                  -       -        -                 
 
 
 
@@ -428,10 +428,10 @@ Timing the tuned program
     ########## Build with Autotuning ##########
     Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)  
     ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------  
-    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  99.562    97.516   (1, 6, 10, 10, 1)  2       1        [99.562]          
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.717     1.682    (1, 6, 10, 10)     1       1        [1.717]           
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.819     0.802    (1, 3, 10, 10, 1)  1       1        [0.819]           
-    Total_time                                    -                                             102.099   -        -                  -       -        -                 
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  133.2     98.107   (1, 6, 10, 10, 1)  2       1        [133.2]           
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.75      1.289    (1, 6, 10, 10)     1       1        [1.75]            
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.819     0.603    (1, 3, 10, 10, 1)  1       1        [0.819]           
+    Total_time                                    -                                             135.77    -        -                  -       -        -                 
 
 
 
@@ -439,7 +439,7 @@ Timing the tuned program
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  23.538 seconds)
+   **Total running time of the script:** ( 1 minutes  22.402 seconds)
 
 
 .. _sphx_glr_download_how_to_work_with_microtvm_micro_autotune.py:
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt
index f537d70b07..ca991e7d99 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt
@@ -118,7 +118,7 @@ download a cat image and preprocess it to use as the model input.
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torch/ao/quantization/utils.py:310: UserWarning: must run observer before calling calculate_qparams. Returning default values.
       warnings.warn(
     Downloading: "https://download.pytorch.org/models/quantized/mobilenet_v2_qnnpack_37f702c5.pth" to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2_qnnpack_37f702c5.pth
-       0%|          | 0.00/3.42M [00:00<?, ?B/s]     100%|##########| 3.42M/3.42M [00:00<00:00, 53.3MB/s]
+       0%|          | 0.00/3.42M [00:00<?, ?B/s]     100%|##########| 3.42M/3.42M [00:00<00:00, 44.7MB/s]
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torch/_utils.py:314: UserWarning: TypedStorage is deprecated. It will be removed in the future and UntypedStorage will be the only storage class. This should only matter to you if you are using storages directly.  To access UntypedStorage directly, use tensor.untyped_storage() instead of tensor.storage()
       device=storage.device,
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torch/ao/nn/quantized/modules/__init__.py:97: TracerWarning: Converting a tensor to a Python float might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!
@@ -326,7 +326,7 @@ Look up prediction top 1 index in 1000 class synset.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  28.739 seconds)
+   **Total running time of the script:** ( 1 minutes  28.595 seconds)
 
 
 .. _sphx_glr_download_how_to_work_with_microtvm_micro_pytorch.py:
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
index c400f308fa..6c29e6d010 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
@@ -218,7 +218,7 @@ take about **2 minutes** to download the Stanford Cars, while COCO 2017 validati
  .. code-block:: none
 
 
-    '/tmp/tmptploivny/images/random'
+    '/tmp/tmpvsjy2vi0/images/random'
 
 
 
@@ -318,8 +318,8 @@ objects to other stuff? We can display some examples from our datasets using ``m
 
  .. code-block:: none
 
-    /tmp/tmptploivny/images/target contains 8144 images
-    /tmp/tmptploivny/images/random contains 5000 images
+    /tmp/tmpvsjy2vi0/images/target contains 8144 images
+    /tmp/tmpvsjy2vi0/images/random contains 5000 images
 
 
 
@@ -494,13 +494,13 @@ the time on our validation set).
  .. code-block:: none
 
     Epoch 1/3
-    328/328 - 43s - loss: 0.2186 - accuracy: 0.9268 - val_loss: 0.1318 - val_accuracy: 0.9513 - 43s/epoch - 131ms/step
+    328/328 - 43s - loss: 0.2267 - accuracy: 0.9257 - val_loss: 0.1595 - val_accuracy: 0.9434 - 43s/epoch - 131ms/step
     Epoch 2/3
-    328/328 - 40s - loss: 0.0972 - accuracy: 0.9649 - val_loss: 0.1152 - val_accuracy: 0.9615 - 40s/epoch - 121ms/step
+    328/328 - 40s - loss: 0.1070 - accuracy: 0.9619 - val_loss: 0.1462 - val_accuracy: 0.9445 - 40s/epoch - 121ms/step
     Epoch 3/3
-    328/328 - 40s - loss: 0.0689 - accuracy: 0.9735 - val_loss: 0.0954 - val_accuracy: 0.9683 - 40s/epoch - 121ms/step
+    328/328 - 40s - loss: 0.0650 - accuracy: 0.9751 - val_loss: 0.0997 - val_accuracy: 0.9668 - 40s/epoch - 122ms/step
 
-    <keras.callbacks.History object at 0x7f5fd447f280>
+    <keras.callbacks.History object at 0x7fefa2981d00>
 
 
 
@@ -861,7 +861,7 @@ Arduino tutorial for how to do that `on GitHub <https://github.com/guberti/tvm-a
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 4 minutes  41.244 seconds)
+   **Total running time of the script:** ( 5 minutes  17.418 seconds)
 
 
 .. _sphx_glr_download_how_to_work_with_microtvm_micro_train.py:
diff --git a/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
index 5a3df4e9c2..d94b9eb2c8 100644
--- a/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
@@ -5,24 +5,24 @@
 
 Computation times
 =================
-**08:02.796** total execution time for **how_to_work_with_microtvm** files:
+**08:38.277** total execution time for **how_to_work_with_microtvm** files:
 
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_train.py` (``micro_train.py``)           | 04:41.244 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_train.py` (``micro_train.py``)           | 05:17.418 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_pytorch.py` (``micro_pytorch.py``)       | 01:28.739 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_pytorch.py` (``micro_pytorch.py``)       | 01:28.595 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)     | 01:23.538 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)     | 01:22.402 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_aot.py` (``micro_aot.py``)               | 00:11.737 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_aot.py` (``micro_aot.py``)               | 00:11.663 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_custom_ide.py` (``micro_custom_ide.py``) | 00:10.266 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_custom_ide.py` (``micro_custom_ide.py``) | 00:10.208 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)         | 00:07.273 | 0.0 MB |
-+-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_ethosu.py` (``micro_ethosu.py``)         | 00:00.000 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)         | 00:07.991 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_work_with_microtvm_micro_tvmc.py` (``micro_tvmc.py``)             | 00:00.000 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_ethosu.py` (``micro_ethosu.py``)         | 00:00.000 | 0.0 MB |
++-----------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_work_with_microtvm_micro_mlperftiny.py` (``micro_mlperftiny.py``) | 00:00.000 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
index 4217427007..8445bdb80c 100644
--- a/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
@@ -5,14 +5,14 @@
 
 Computation times
 =================
-**00:38.847** total execution time for **how_to_work_with_relay** files:
+**00:38.688** total execution time for **how_to_work_with_relay** files:
 
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_pipeline_executor.py` (``using_pipeline_executor.py``) | 00:33.618 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_pipeline_executor.py` (``using_pipeline_executor.py``) | 00:33.242 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)           | 00:03.371 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)           | 00:03.646 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)                             | 00:01.852 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)                             | 00:01.794 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_work_with_relay_using_relay_viz.py` (``using_relay_viz.py``)                 | 00:00.006 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
index 6e4dcc3024..b063699570 100644
--- a/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
@@ -5,20 +5,20 @@
 
 Computation times
 =================
-**00:02.670** total execution time for **how_to_work_with_schedules** files:
+**00:02.673** total execution time for **how_to_work_with_schedules** files:
 
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)                     | 00:01.011 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)                     | 00:01.042 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)                     | 00:00.691 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)                     | 00:00.674 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)                               | 00:00.679 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)                               | 00:00.672 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)                     | 00:00.124 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``) | 00:00.069 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``) | 00:00.068 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_tedd.py` (``tedd.py``)                               | 00:00.064 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tedd.py` (``tedd.py``)                               | 00:00.062 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_tuple_inputs.py` (``tuple_inputs.py``)               | 00:00.033 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tuple_inputs.py` (``tuple_inputs.py``)               | 00:00.031 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/index.rst.txt b/docs/_sources/index.rst.txt
index 2eec0cb99e..2102bdd33a 100644
--- a/docs/_sources/index.rst.txt
+++ b/docs/_sources/index.rst.txt
@@ -55,6 +55,7 @@ driving its costs down.
    :caption: Deep Dive
 
    deep_dive/tensor_ir/index
+   deep_dive/relax/index
 
 .. toctree::
    :maxdepth: 1
diff --git a/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt b/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
index ae14cb062c..3bb35dc1af 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
@@ -337,7 +337,7 @@ The compilation steps are:
 
     /workspace/python/tvm/relay/build_module.py:345: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
       warnings.warn(
-    yolov3-tiny inference graph built in 27.40s!
+    yolov3-tiny inference graph built in 27.51s!
 
 
 
@@ -447,7 +447,7 @@ Download test image
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  2.785 seconds)
+   **Total running time of the script:** ( 1 minutes  3.700 seconds)
 
 
 .. _sphx_glr_download_topic_vta_tutorials_frontend_deploy_detection.py:
diff --git a/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
index c8b52a07d6..dc46a485cc 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
@@ -5,8 +5,8 @@
 
 Computation times
 =================
-**01:02.785** total execution time for **topic_vta_tutorials_frontend** files:
+**01:03.700** total execution time for **topic_vta_tutorials_frontend** files:
 
 +--------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``) | 01:02.785 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``) | 01:03.700 | 0.0 MB |
 +--------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
index 4dccfcb907..2fadf5bce5 100644
--- a/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:03.241** total execution time for **topic_vta_tutorials_optimize** files:
+**00:03.214** total execution time for **topic_vta_tutorials_optimize** files:
 
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)         | 00:02.738 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)         | 00:02.731 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``) | 00:00.503 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``) | 00:00.482 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
index fcd183792f..5d400bbcb7 100644
--- a/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:00.852** total execution time for **topic_vta_tutorials** files:
+**00:00.815** total execution time for **topic_vta_tutorials** files:
 
 +---------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``) | 00:00.464 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``) | 00:00.444 | 0.0 MB |
 +---------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``) | 00:00.388 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``) | 00:00.372 | 0.0 MB |
 +---------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
index 96d08bff0d..f774d36099 100644
--- a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
+++ b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
@@ -318,7 +318,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 90.910 ms
+    Execution time of this operator: 90.229 ms
 
 
 
@@ -434,7 +434,7 @@ operations.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  26.800 seconds)
+   **Total running time of the script:** ( 1 minutes  25.498 seconds)
 
 
 .. _sphx_glr_download_tutorial_auto_scheduler_matmul_x86.py:
diff --git a/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt b/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
index e451c445a2..ae4b5daeec 100644
--- a/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
+++ b/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
@@ -454,16 +454,16 @@ reduce variance, we take 5 measurements and average them.
     waiting for device...
     device available
     Get devices for measurement successfully!
-    No: 1   GFLOPS: 10.11/10.11     result: MeasureResult(costs=(0.0265536098,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.7865612506866455, timestamp=1726561447.990756)        [('tile_y', [-1, 8]), ('tile_x', [-1, 32])],None,53
-    No: 2   GFLOPS: 14.74/14.74     result: MeasureResult(costs=(0.0182148698,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.8525419235229492, timestamp=1726561448.543889)        [('tile_y', [-1, 64]), ('tile_x', [-1, 64])],None,66
-    No: 3   GFLOPS: 1.32/14.74      result: MeasureResult(costs=(0.2032619628,), error_no=MeasureErrorNo.NO_ERROR, all_cost=4.568768262863159, timestamp=1726561452.0552535)        [('tile_y', [-1, 1]), ('tile_x', [-1, 1])],None,0
-    No: 4   GFLOPS: 11.07/14.74     result: MeasureResult(costs=(0.0242443208,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.7305800914764404, timestamp=1726561452.7096698)       [('tile_y', [-1, 128]), ('tile_x', [-1, 256])],None,87
-    No: 5   GFLOPS: 8.30/14.74      result: MeasureResult(costs=(0.0323535512,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.8083171844482422, timestamp=1726561453.638696)        [('tile_y', [-1, 16]), ('tile_x', [-1, 8])],None,34
-    No: 6   GFLOPS: 11.24/14.74     result: MeasureResult(costs=(0.0238881084,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6621139049530029, timestamp=1726561454.278038)        [('tile_y', [-1, 256]), ('tile_x', [-1, 32])],None,58
-    No: 7   GFLOPS: 9.23/14.74      result: MeasureResult(costs=(0.0290674372,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7306613922119141, timestamp=1726561455.0065732)       [('tile_y', [-1, 1]), ('tile_x', [-1, 256])],None,80
-    No: 8   GFLOPS: 11.85/14.74     result: MeasureResult(costs=(0.0226533452,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6557130813598633, timestamp=1726561455.63249) [('tile_y', [-1, 64]), ('tile_x', [-1, 512])],None,96
-    No: 9   GFLOPS: 3.11/14.74      result: MeasureResult(costs=(0.08638952520000001,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.5997850894927979, timestamp=1726561457.3622537)        [('tile_y', [-1, 2]), ('tile_x', [-1, 2])],None,11
-    No: 10  GFLOPS: 12.98/14.74     result: MeasureResult(costs=(0.020673571,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.5779664516448975, timestamp=1726561457.9552119)        [('tile_y', [-1, 256]), ('tile_x', [-1, 64])],None,68
+    No: 1   GFLOPS: 9.33/9.33       result: MeasureResult(costs=(0.028783678200000003,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.8783602714538574, timestamp=1726590026.1006992)       [('tile_y', [-1, 512]), ('tile_x', [-1, 64])],None,69
+    No: 2   GFLOPS: 13.52/13.52     result: MeasureResult(costs=(0.019857047600000004,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.7121498584747314, timestamp=1726590026.6881735)       [('tile_y', [-1, 128]), ('tile_x', [-1, 128])],None,77
+    No: 3   GFLOPS: 14.88/14.88     result: MeasureResult(costs=(0.0180394326,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.6867554187774658, timestamp=1726590027.2420375)       [('tile_y', [-1, 32]), ('tile_x', [-1, 64])],None,65
+    No: 4   GFLOPS: 11.83/14.88     result: MeasureResult(costs=(0.0226851276,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.6970829963684082, timestamp=1726590027.8740423)       [('tile_y', [-1, 64]), ('tile_x', [-1, 256])],None,86
+    No: 5   GFLOPS: 4.46/14.88      result: MeasureResult(costs=(0.060194439,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.2235159873962402, timestamp=1726590029.2656808)        [('tile_y', [-1, 4]), ('tile_x', [-1, 2])],None,12
+    No: 6   GFLOPS: 7.48/14.88      result: MeasureResult(costs=(0.0358667956,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.8469419479370117, timestamp=1726590030.105352)        [('tile_y', [-1, 1]), ('tile_x', [-1, 32])],None,50
+    No: 7   GFLOPS: 10.11/14.88     result: MeasureResult(costs=(0.0265638426,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7596321105957031, timestamp=1726590030.8012884)       [('tile_y', [-1, 1]), ('tile_x', [-1, 128])],None,70
+    No: 8   GFLOPS: 6.31/14.88      result: MeasureResult(costs=(0.042533591,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.9647047519683838, timestamp=1726590031.746485) [('tile_y', [-1, 16]), ('tile_x', [-1, 4])],None,24
+    No: 9   GFLOPS: 13.66/14.88     result: MeasureResult(costs=(0.019656878,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.5805065631866455, timestamp=1726590032.4386184)        [('tile_y', [-1, 8]), ('tile_x', [-1, 256])],None,83
+    No: 10  GFLOPS: 9.11/14.88      result: MeasureResult(costs=(0.029473681,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7180018424987793, timestamp=1726590033.183007) [('tile_y', [-1, 512]), ('tile_x', [-1, 256])],None,89
 
 
 
diff --git a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
index c51ce07972..915f851250 100644
--- a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
+++ b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
@@ -311,7 +311,7 @@ standard deviation.
 
  .. code-block:: none
 
-    {'mean': 493.8791205299276, 'median': 493.48756700001104, 'std': 2.511440837307451}
+    {'mean': 496.87928669999565, 'median': 496.89137339996705, 'std': 2.572970643947677}
 
 
 
@@ -582,31 +582,30 @@ the tuning data to.
 
  .. code-block:: none
 
-     [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  1/25]  Current/Best:    6.43/  21.18 GFLOPS | Progress: (4/20) | 10.29 s     [Task  1/25]  Current/Best:   20.37/  21.18 GFLOPS | Progress: (8/20) | 12.86 s     [Task  1/25]  Current/Best:   11.69/  22.52 GFLOPS | Progress: (12/20) | 16.14 s     [Task  1/25]  Current/Best:    3.30/  22.52 GFLOPS | Progress: (16/20) | 20.26 s     [Task  1/25]  Current/Best:   11.69/  22.52 GFLOPS | Progress: (20/20) | 23.86 s Done.
-     [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  2/25]  Current/Best:    4.74/  19.20 GFLOPS | Progress: (4/20) | 4.20 s     [Task  2/25]  Current/Best:   15.16/  19.20 GFLOPS | Progress: (8/20) | 5.92 s     [Task  2/25]  Current/Best:   11.28/  20.80 GFLOPS | Progress: (12/20) | 7.28 s     [Task  2/25]  Current/Best:   22.46/  22.46 GFLOPS | Progress: (16/20) | 9.19 s     [Task  2/25]  Current/Best:   21.92/  22.46 GFLOPS | Progress: (20/20) | 10.63 s Done.
-     [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  3/25]  Current/Best:   12.47/  18.50 GFLOPS | Progress: (4/20) | 5.22 s     [Task  3/25]  Current/Best:   17.55/  18.50 GFLOPS | Progress: (8/20) | 8.04 s     [Task  3/25]  Current/Best:   19.52/  20.10 GFLOPS | Progress: (12/20) | 10.65 s     [Task  3/25]  Current/Best:   14.94/  20.10 GFLOPS | Progress: (16/20) | 13.05 s     [Task  3/25]  Current/Best:   12.99/  20.88 GFLOPS | Progress: (20/20) | 15.38 s Done.
-     [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  4/25]  Current/Best:    6.45/  22.10 GFLOPS | Progress: (4/20) | 4.53 s     [Task  4/25]  Current/Best:    9.51/  22.50 GFLOPS | Progress: (8/20) | 6.72 s     [Task  4/25]  Current/Best:   10.36/  22.50 GFLOPS | Progress: (12/20) | 9.69 s     [Task  4/25]  Current/Best:    6.42/  22.50 GFLOPS | Progress: (16/20) | 11.81 s     [Task  4/25]  Current/Best:   13.30/  22.50 GFLOPS | Progress: (20/20) | 16.20 s Done.
-     [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  5/25]  Current/Best:    4.46/  12.58 GFLOPS | Progress: (4/20) | 5.89 s     [Task  5/25]  Current/Best:   15.84/  17.33 GFLOPS | Progress: (8/20) | 8.22 s     [Task  5/25]  Current/Best:   12.88/  17.33 GFLOPS | Progress: (12/20) | 11.25 s     [Task  5/25]  Current/Best:   14.22/  17.33 GFLOPS | Progress: (16/20) | 13.33 s     [Task  5/25]  Current/Best:   11.97/  20.48 GFLOPS | Progress: (20/20) | 15.06 s Done.
-     [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  6/25]  Current/Best:   12.40/  17.11 GFLOPS | Progress: (4/20) | 6.07 s     [Task  6/25]  Current/Best:    8.19/  17.11 GFLOPS | Progress: (8/20) | 8.67 s     [Task  6/25]  Current/Best:    7.10/  20.69 GFLOPS | Progress: (12/20) | 11.25 s     [Task  6/25]  Current/Best:   12.18/  20.69 GFLOPS | Progress: (16/20) | 14.38 s     [Task  6/25]  Current/Best:   20.87/  20.87 GFLOPS | Progress: (20/20) | 17.10 s Done.
-     [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  7/25]  Current/Best:   11.88/  14.44 GFLOPS | Progress: (4/20) | 5.31 s     [Task  7/25]  Current/Best:    7.09/  21.15 GFLOPS | Progress: (8/20) | 8.13 s     [Task  7/25]  Current/Best:    6.09/  21.15 GFLOPS | Progress: (12/20) | 11.16 s     [Task  7/25]  Current/Best:   12.26/  21.72 GFLOPS | Progress: (16/20) | 13.91 s     [Task  7/25]  Current/Best:    3.06/  21.72 GFLOPS | Progress: (20/20) | 16.83 s Done.
-     [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  8/25]  Current/Best:   11.96/  16.34 GFLOPS | Progress: (4/20) | 8.57 s     [Task  8/25]  Current/Best:    9.84/  19.04 GFLOPS | Progress: (8/20) | 14.35 s     [Task  8/25]  Current/Best:    6.69/  19.04 GFLOPS | Progress: (12/20) | 24.17 s     [Task  8/25]  Current/Best:    3.72/  19.04 GFLOPS | Progress: (16/20) | 33.23 s     [Task  8/25]  Current/Best:    8.39/  19.04 GFLOPS | Progress: (20/20) | 44.87 s     [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  9/25]  Current/Best:   17.12/  17.12 GFLOPS | Progress: (4/20) | 6.14 s     [Task  9/25]  Current/Best:   17.01/  17.12 GFLOPS | Progress: (8/20) | 8.05 s     [Task  9/25]  Current/Best:    7.08/  17.12 GFLOPS | Progress: (12/20) | 12.61 s     [Task  9/25]  Current/Best:    3.29/  18.24 GFLOPS | Progress: (16/20) | 18.35 s     [Task  9/25]  Current/Best:   13.97/  18.24 GFLOPS | Progress: (20/2
 0) | 20.41 s Done.
-     [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 10/25]  Current/Best:   17.90/  17.90 GFLOPS | Progress: (4/20) | 6.72 s     [Task 10/25]  Current/Best:   11.17/  17.90 GFLOPS | Progress: (8/20) | 9.09 s     [Task 10/25]  Current/Best:   20.84/  20.84 GFLOPS | Progress: (12/20) | 11.05 s     [Task 10/25]  Current/Best:   16.30/  20.84 GFLOPS | Progress: (16/20) | 13.27 s     [Task 10/25]  Current/Best:    9.03/  20.84 GFLOPS | Progress: (20/20) | 15.31 s Done.
-     [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 11/25]  Current/Best:    8.94/  19.89 GFLOPS | Progress: (4/20) | 5.02 s     [Task 11/25]  Current/Best:   16.61/  19.89 GFLOPS | Progress: (8/20) | 7.26 s     [Task 11/25]  Current/Best:   11.87/  22.87 GFLOPS | Progress: (12/20) | 9.76 s     [Task 11/25]  Current/Best:   23.66/  23.66 GFLOPS | Progress: (16/20) | 12.07 s     [Task 11/25]  Current/Best:   13.26/  23.66 GFLOPS | Progress: (20/20) | 14.57 s Done.
-     [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 12/25]  Current/Best:   11.79/  18.50 GFLOPS | Progress: (4/20) | 5.02 s     [Task 12/25]  Current/Best:   12.88/  18.50 GFLOPS | Progress: (8/20) | 7.54 s     [Task 12/25]  Current/Best:   13.30/  20.75 GFLOPS | Progress: (12/20) | 11.12 s     [Task 12/25]  Current/Best:   12.59/  20.75 GFLOPS | Progress: (16/20) | 14.41 s     [Task 12/25]  Current/Best:   18.02/  20.75 GFLOPS | Progress: (20/20) | 19.21 s Done.
-     [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 13/25]  Current/Best:    6.11/  22.19 GFLOPS | Progress: (4/20) | 5.49 s     [Task 13/25]  Current/Best:   18.38/  22.19 GFLOPS | Progress: (8/20) | 9.04 s     [Task 13/25]  Current/Best:   18.57/  22.19 GFLOPS | Progress: (12/20) | 12.15 s     [Task 13/25]  Current/Best:    6.31/  22.53 GFLOPS | Progress: (16/20) | 15.96 s     [Task 13/25]  Current/Best:   15.61/  22.53 GFLOPS | Progress: (20/20) | 20.14 s Done.
-     [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 14/25]  Current/Best:   18.16/  18.40 GFLOPS | Progress: (4/20) | 7.48 s     [Task 14/25]  Current/Best:   15.23/  18.40 GFLOPS | Progress: (8/20) | 10.96 s     [Task 14/25]  Current/Best:    4.33/  18.40 GFLOPS | Progress: (12/20) | 20.25 s     [Task 14/25]  Current/Best:   13.39/  18.40 GFLOPS | Progress: (16/20) | 31.71 s     [Task 14/25]  Current/Best:   15.79/  18.40 GFLOPS | Progress: (20/20) | 42.99 s     [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 15/25]  Current/Best:   14.46/  15.87 GFLOPS | Progress: (4/20) | 8.86 s Done.
+     [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  1/25]  Current/Best:   20.67/  20.67 GFLOPS | Progress: (4/20) | 10.70 s     [Task  1/25]  Current/Best:   23.69/  23.69 GFLOPS | Progress: (8/20) | 13.18 s     [Task  1/25]  Current/Best:   23.76/  23.76 GFLOPS | Progress: (12/20) | 16.96 s     [Task  1/25]  Current/Best:    9.58/  23.76 GFLOPS | Progress: (16/20) | 20.71 s     [Task  1/25]  Current/Best:    5.72/  23.76 GFLOPS | Progress: (20/20) | 23.25 s Done.
+     [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  2/25]  Current/Best:   17.72/  17.72 GFLOPS | Progress: (4/20) | 4.23 s     [Task  2/25]  Current/Best:    6.42/  19.57 GFLOPS | Progress: (8/20) | 6.00 s     [Task  2/25]  Current/Best:   13.16/  19.57 GFLOPS | Progress: (12/20) | 7.47 s     [Task  2/25]  Current/Best:   15.33/  19.57 GFLOPS | Progress: (16/20) | 8.94 s     [Task  2/25]  Current/Best:    3.75/  19.57 GFLOPS | Progress: (20/20) | 10.66 s Done.
+     [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  3/25]  Current/Best:   11.65/  23.44 GFLOPS | Progress: (4/20) | 4.62 s     [Task  3/25]  Current/Best:   23.91/  23.91 GFLOPS | Progress: (8/20) | 7.65 s     [Task  3/25]  Current/Best:   13.43/  23.91 GFLOPS | Progress: (12/20) | 9.98 s     [Task  3/25]  Current/Best:   11.03/  23.91 GFLOPS | Progress: (16/20) | 12.05 s     [Task  3/25]  Current/Best:   14.89/  23.91 GFLOPS | Progress: (20/20) | 14.35 s Done.
+     [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  4/25]  Current/Best:   10.69/  19.06 GFLOPS | Progress: (4/20) | 5.00 s     [Task  4/25]  Current/Best:   14.38/  19.06 GFLOPS | Progress: (8/20) | 7.15 s     [Task  4/25]  Current/Best:   17.10/  19.06 GFLOPS | Progress: (12/20) | 9.12 s     [Task  4/25]  Current/Best:   14.89/  19.06 GFLOPS | Progress: (16/20) | 17.05 s     [Task  4/25]  Current/Best:    9.11/  19.06 GFLOPS | Progress: (20/20) | 19.95 s Done.
+     [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  5/25]  Current/Best:   21.21/  21.21 GFLOPS | Progress: (4/20) | 4.58 s     [Task  5/25]  Current/Best:    2.96/  21.21 GFLOPS | Progress: (8/20) | 6.74 s     [Task  5/25]  Current/Best:    6.38/  21.21 GFLOPS | Progress: (12/20) | 9.05 s     [Task  5/25]  Current/Best:   17.80/  21.21 GFLOPS | Progress: (16/20) | 10.89 s     [Task  5/25]  Current/Best:   14.22/  21.21 GFLOPS | Progress: (20/20) | 13.26 s Done.
+     [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  6/25]  Current/Best:   13.70/  22.41 GFLOPS | Progress: (4/20) | 7.64 s     [Task  6/25]  Current/Best:   11.05/  22.41 GFLOPS | Progress: (8/20) | 10.28 s     [Task  6/25]  Current/Best:   11.65/  22.41 GFLOPS | Progress: (12/20) | 13.55 s     [Task  6/25]  Current/Best:    7.84/  22.41 GFLOPS | Progress: (16/20) | 18.23 s     [Task  6/25]  Current/Best:    9.91/  22.41 GFLOPS | Progress: (20/20) | 21.88 s Done.
+     [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  7/25]  Current/Best:    6.28/  22.97 GFLOPS | Progress: (4/20) | 5.15 s     [Task  7/25]  Current/Best:   14.52/  22.97 GFLOPS | Progress: (8/20) | 8.19 s     [Task  7/25]  Current/Best:   13.91/  22.97 GFLOPS | Progress: (12/20) | 11.78 s     [Task  7/25]  Current/Best:    9.20/  22.97 GFLOPS | Progress: (16/20) | 14.46 s     [Task  7/25]  Current/Best:    9.59/  22.97 GFLOPS | Progress: (20/20) | 17.54 s Done.
+     [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  8/25]  Current/Best:    3.95/  18.95 GFLOPS | Progress: (4/20) | 6.65 s     [Task  8/25]  Current/Best:    7.81/  18.95 GFLOPS | Progress: (8/20) | 9.03 s     [Task  8/25]  Current/Best:   15.50/  18.95 GFLOPS | Progress: (12/20) | 21.24 s     [Task  8/25]  Current/Best:   11.72/  18.95 GFLOPS | Progress: (16/20) | 24.75 s     [Task  8/25]  Current/Best:   10.63/  18.95 GFLOPS | Progress: (20/20) | 29.84 s Done.
+     [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  9/25]  Current/Best:   19.99/  19.99 GFLOPS | Progress: (4/20) | 4.53 s     [Task  9/25]  Current/Best:   17.70/  19.99 GFLOPS | Progress: (8/20) | 7.42 s     [Task  9/25]  Current/Best:   10.47/  19.99 GFLOPS | Progress: (12/20) | 15.82 s     [Task  9/25]  Current/Best:   12.39/  19.99 GFLOPS | Progress: (16/20) | 23.43 s     [Task  9/25]  Current/Best:   22.96/  22.96 GFLOPS | Progress: (20/20) | 25.02 s Done.
+     [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 10/25]  Current/Best:   12.58/  12.62 GFLOPS | Progress: (4/20) | 5.18 s     [Task 10/25]  Current/Best:   11.05/  15.06 GFLOPS | Progress: (8/20) | 7.63 s     [Task 10/25]  Current/Best:    5.17/  17.26 GFLOPS | Progress: (12/20) | 11.73 s     [Task 10/25]  Current/Best:    3.04/  17.26 GFLOPS | Progress: (16/20) | 14.95 s     [Task 10/25]  Current/Best:   17.25/  17.26 GFLOPS | Progress: (20/20) | 17.57 s Done.
+     [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 11/25]  Current/Best:    7.47/  21.31 GFLOPS | Progress: (4/20) | 4.94 s     [Task 11/25]  Current/Best:   13.40/  21.31 GFLOPS | Progress: (8/20) | 7.79 s     [Task 11/25]  Current/Best:    3.12/  21.61 GFLOPS | Progress: (12/20) | 10.72 s     [Task 11/25]  Current/Best:   18.21/  21.61 GFLOPS | Progress: (16/20) | 12.83 s     [Task 11/25]  Current/Best:   12.74/  21.61 GFLOPS | Progress: (20/20) | 15.31 s Done.
+     [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 12/25]  Current/Best:   12.62/  13.55 GFLOPS | Progress: (4/20) | 5.55 s     [Task 12/25]  Current/Best:   15.41/  18.15 GFLOPS | Progress: (8/20) | 7.69 s     [Task 12/25]  Current/Best:   21.71/  21.71 GFLOPS | Progress: (12/20) | 12.48 s     [Task 12/25]  Current/Best:   13.38/  21.71 GFLOPS | Progress: (16/20) | 16.09 s     [Task 12/25]  Current/Best:   15.49/  21.71 GFLOPS | Progress: (20/20) | 18.16 s Done.
+     [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 13/25]  Current/Best:   22.72/  22.72 GFLOPS | Progress: (4/20) | 5.31 s     [Task 13/25]  Current/Best:   19.74/  22.72 GFLOPS | Progress: (8/20) | 8.71 s     [Task 13/25]  Current/Best:    7.43/  22.72 GFLOPS | Progress: (12/20) | 12.02 s     [Task 13/25]  Current/Best:   20.84/  22.72 GFLOPS | Progress: (16/20) | 15.40 s     [Task 13/25]  Current/Best:   15.71/  22.72 GFLOPS | Progress: (20/20) | 18.20 s Done.
+     [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 14/25]  Current/Best:   15.92/  15.92 GFLOPS | Progress: (4/20) | 8.85 s     [Task 14/25]  Current/Best:   17.48/  20.79 GFLOPS | Progress: (8/20) | 11.36 s     [Task 14/25]  Current/Best:   13.54/  20.79 GFLOPS | Progress: (12/20) | 17.40 s     [Task 14/25]  Current/Best:   13.25/  20.79 GFLOPS | Progress: (16/20) | 20.42 s     [Task 14/25]  Current/Best:   11.75/  20.79 GFLOPS | Progress: (20/20) | 27.62 s Done.
+     [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 15/25]  Current/Best:   18.38/  18.38 GFLOPS | Progress: (4/20) | 4.50 s     [Task 15/25]  Current/Best:   11.32/  18.38 GFLOPS | Progress: (8/20) | 13.43 s     [Task 15/25]  Current/Best:    6.27/  19.18 GFLOPS | Progress: (12/20) | 18.09 s     [Task 15/25]  Current/Best:   11.95/  19.18 GFLOPS | Progress: (16/20) | 20.91 s     [Task 15/25]  Current/Best:   19.62/  19.62 GFLOPS | Progress: (20/20) | 24.10 s Done.
+     [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 16/25]  Current/Best:   13.45/  21.47 GFLOPS | Progress: (4/20) | 5.06 s     [Task 16/25]  Current/Best:   13.63/  21.47 GFLOPS | Progress: (8/20) | 6.75 s     [Task 16/25]  Current/Best:   18.78/  21.47 GFLOPS | Progress: (12/20) | 8.53 s     [Task 16/25]  Current/Best:    7.57/  21.47 GFLOPS | Progress: (16/20) | 11.99 s     [Task 16/25]  Current/Best:    6.34/  21.47 GFLOPS | Progress: (20/20) | 14.04 s Done.
+     [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 17/25]  Current/Best:   20.45/  20.45 GFLOPS | Progress: (4/20) | 4.86 s     [Task 17/25]  Current/Best:   11.02/  20.45 GFLOPS | Progress: (8/20) | 8.96 s     [Task 17/25]  Current/Best:    5.40/  22.57 GFLOPS | Progress: (12/20) | 11.73 s     [Task 17/25]  Current/Best:   20.00/  22.57 GFLOPS | Progress: (16/20) | 15.34 s     [Task 17/25]  Current/Best:   11.01/  22.57 GFLOPS | Progress: (20/20) | 19.32 s Done.
+     [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 18/25]  Current/Best:   17.91/  19.27 GFLOPS | Progress: (4/20) | 4.80 s     [Task 18/25]  Current/Best:   23.17/  23.17 GFLOPS | Progress: (8/20) | 7.71 s     [Task 18/25]  Current/Best:   10.95/  23.17 GFLOPS | Progress: (12/20) | 11.07 s     [Task 18/25]  Current/Best:   18.83/  23.17 GFLOPS | Progress: (16/20) | 14.62 s     [Task 18/25]  Current/Best:    6.34/  23.17 GFLOPS | Progress: (20/20) | 16.75 s Done.
+     [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 19/25]  Current/Best:   15.27/  18.66 GFLOPS | Progress: (4/20) | 7.43 s     [Task 19/25]  Current/Best:   21.57/  21.57 GFLOPS | Progress: (8/20) | 11.25 s     [Task 19/25]  Current/Best:   14.45/  21.57 GFLOPS | Progress: (12/20) | 15.01 s     [Task 19/25]  Current/Best:   17.92/  21.57 GFLOPS | Progress: (16/20) | 21.23 s     [Task 19/25]  Current/Best:   20.49/  21.57 GFLOPS | Progress: (20/20) | 23.49 s Done.
+     [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 20/25]  Current/Best:   19.00/  19.00 GFLOPS | Progress: (4/20) | 6.11 s     [Task 20/25]  Current/Best:    2.75/  19.00 GFLOPS | Progress: (8/20) | 9.62 s     [Task 20/25]  Current/Best:    7.98/  19.00 GFLOPS | Progress: (12/20) | 14.58 s     [Task 20/25]  Current/Best:   14.02/  19.00 GFLOPS | Progress: (16/20) | 17.07 s     [Task 20/25]  Current/Best:   10.92/  19.00 GFLOPS | Progress: (20/20) | 28.61 s     [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 21/25]  Current/Best:   12.63/  22.11 GFLOPS | Progress: (4/20) | 13.79 s     [Task 21/25]  Current/Best:    6.40/  22.11 GFLOPS | Progress: (8/20) | 23.09 s     [Task 21/25]  Current/Best:    4.95/  22.11 GFLOPS | Progress: (12/20) | 32.93 s     [Task 21/25]  Current/Best:   14.20/  22.11 GFLOPS | Progress: (16/20) | 34.65 s     [Task 21/25]  Current/Best:   21.63/  22.11 GFLOPS | Progress: (20/
 20) | 43.38 s     [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 22/25]  Current/Best:    5.11/  12.33 GFLOPS | Progress: (4/20) | 5.58 s Done.
      Done.
-     [Task 15/25]  Current/Best:   15.39/  19.43 GFLOPS | Progress: (8/20) | 10.84 s     [Task 15/25]  Current/Best:   16.55/  19.43 GFLOPS | Progress: (12/20) | 15.00 s     [Task 15/25]  Current/Best:   20.15/  20.15 GFLOPS | Progress: (16/20) | 19.04 s     [Task 15/25]  Current/Best:   12.44/  20.15 GFLOPS | Progress: (20/20) | 21.21 s Done.
-     [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 16/25]  Current/Best:    9.07/  17.52 GFLOPS | Progress: (4/20) | 4.27 s     [Task 16/25]  Current/Best:   14.73/  17.52 GFLOPS | Progress: (8/20) | 6.47 s     [Task 16/25]  Current/Best:    3.11/  19.27 GFLOPS | Progress: (12/20) | 8.43 s     [Task 16/25]  Current/Best:    5.96/  19.27 GFLOPS | Progress: (16/20) | 10.44 s     [Task 16/25]  Current/Best:   18.77/  19.27 GFLOPS | Progress: (20/20) | 12.20 s Done.
-     [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 17/25]  Current/Best:    6.14/  18.78 GFLOPS | Progress: (4/20) | 5.83 s     [Task 17/25]  Current/Best:    4.49/  19.16 GFLOPS | Progress: (8/20) | 9.42 s     [Task 17/25]  Current/Best:   20.95/  22.76 GFLOPS | Progress: (12/20) | 11.35 s     [Task 17/25]  Current/Best:   19.63/  23.35 GFLOPS | Progress: (16/20) | 13.47 s     [Task 17/25]  Current/Best:   20.79/  23.62 GFLOPS | Progress: (20/20) | 17.14 s Done.
-     [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 18/25]  Current/Best:   18.65/  18.65 GFLOPS | Progress: (4/20) | 5.15 s     [Task 18/25]  Current/Best:    7.67/  18.65 GFLOPS | Progress: (8/20) | 8.11 s     [Task 18/25]  Current/Best:   15.79/  18.65 GFLOPS | Progress: (12/20) | 10.51 s     [Task 18/25]  Current/Best:   21.72/  23.01 GFLOPS | Progress: (16/20) | 12.66 s     [Task 18/25]  Current/Best:   13.56/  23.01 GFLOPS | Progress: (20/20) | 17.13 s Done.
-     [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 19/25]  Current/Best:   20.48/  21.22 GFLOPS | Progress: (4/20) | 4.89 s     [Task 19/25]  Current/Best:    6.14/  21.22 GFLOPS | Progress: (8/20) | 9.07 s     [Task 19/25]  Current/Best:    6.15/  21.22 GFLOPS | Progress: (12/20) | 12.52 s     [Task 19/25]  Current/Best:    6.15/  21.22 GFLOPS | Progress: (16/20) | 16.27 s     [Task 19/25]  Current/Best:   18.90/  21.22 GFLOPS | Progress: (20/20) | 20.26 s Done.
-     [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 20/25]  Current/Best:   15.70/  15.70 GFLOPS | Progress: (4/20) | 4.89 s     [Task 20/25]  Current/Best:    5.28/  19.83 GFLOPS | Progress: (8/20) | 7.64 s     [Task 20/25]  Current/Best:   11.12/  19.83 GFLOPS | Progress: (12/20) | 9.81 s     [Task 20/25]  Current/Best:   15.87/  19.83 GFLOPS | Progress: (16/20) | 12.02 s     [Task 20/25]  Current/Best:   15.34/  19.83 GFLOPS | Progress: (20/20) | 23.46 s     [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 21/25]  Current/Best:    8.22/  18.40 GFLOPS | Progress: (4/20) | 11.68 s     [Task 21/25]  Current/Best:   12.24/  20.53 GFLOPS | Progress: (8/20) | 20.82 s     [Task 21/25]  Current/Best:   17.47/  20.53 GFLOPS | Progress: (12/20) | 22.67 s     [Task 21/25]  Current/Best:   20.30/  20.53 GFLOPS | Progress: (16/20) | 28.00 s     [Task 21/25]  Current/Best:    5.60/  20.53 GFLOPS | Progress: (20/2
 0) | 35.62 s Done.
-     [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 22/25]  Current/Best:   10.20/  10.57 GFLOPS | Progress: (4/20) | 5.65 s     [Task 22/25]  Current/Best:    7.27/  16.84 GFLOPS | Progress: (8/20) | 8.65 s     [Task 22/25]  Current/Best:   13.33/  16.84 GFLOPS | Progress: (12/20) | 11.43 s     [Task 22/25]  Current/Best:   15.91/  16.84 GFLOPS | Progress: (16/20) | 14.64 s     [Task 22/25]  Current/Best:    9.15/  18.86 GFLOPS | Progress: (20/20) | 16.98 s Done.
-     [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 23/25]  Current/Best:    4.55/  19.25 GFLOPS | Progress: (4/20) | 8.84 s     [Task 23/25]  Current/Best:   10.49/  19.25 GFLOPS | Progress: (8/20) | 12.19 s     [Task 23/25]  Current/Best:    8.90/  23.08 GFLOPS | Progress: (12/20) | 15.76 s     [Task 23/25]  Current/Best:   22.86/  23.08 GFLOPS | Progress: (16/20) | 18.92 s     [Task 23/25]  Current/Best:   19.95/  23.08 GFLOPS | Progress: (20/20) | 21.49 s Done.
-     [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 24/25]  Current/Best:    1.67/   3.66 GFLOPS | Progress: (4/20) | 13.60 s     [Task 24/25]  Current/Best:    6.21/   6.21 GFLOPS | Progress: (8/20) | 24.60 s     [Task 24/25]  Current/Best:    7.17/   7.17 GFLOPS | Progress: (12/20) | 36.68 s     [Task 24/25]  Current/Best:    2.21/  10.47 GFLOPS | Progress: (16/20) | 47.70 s     [Task 24/25]  Current/Best:    1.18/  10.47 GFLOPS | Progress: (20/20) | 52.50 s     [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s Done.
-     Done.
-     [Task 25/25]  Current/Best:   10.00/  10.00 GFLOPS | Progress: (4/20) | 5.52 s     [Task 25/25]  Current/Best:    1.55/  10.00 GFLOPS | Progress: (8/20) | 6.92 s     [Task 25/25]  Current/Best:    5.36/  10.00 GFLOPS | Progress: (12/20) | 8.36 s     [Task 25/25]  Current/Best:    9.18/  10.00 GFLOPS | Progress: (16/20) | 10.24 s     [Task 25/25]  Current/Best:    1.52/  10.00 GFLOPS | Progress: (20/20) | 21.27 s
+     [Task 22/25]  Current/Best:   11.75/  20.19 GFLOPS | Progress: (8/20) | 8.28 s     [Task 22/25]  Current/Best:   18.51/  21.19 GFLOPS | Progress: (12/20) | 10.53 s     [Task 22/25]  Current/Best:   14.12/  21.19 GFLOPS | Progress: (16/20) | 12.90 s     [Task 22/25]  Current/Best:   10.65/  21.19 GFLOPS | Progress: (20/20) | 15.25 s Done.
+     [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 23/25]  Current/Best:    6.28/  18.72 GFLOPS | Progress: (4/20) | 6.24 s     [Task 23/25]  Current/Best:   14.14/  20.69 GFLOPS | Progress: (8/20) | 8.49 s     [Task 23/25]  Current/Best:    3.08/  20.69 GFLOPS | Progress: (12/20) | 11.95 s     [Task 23/25]  Current/Best:   19.18/  20.69 GFLOPS | Progress: (16/20) | 15.15 s     [Task 23/25]  Current/Best:    3.07/  20.69 GFLOPS | Progress: (20/20) | 18.64 s Done.
+     [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 24/25]  Current/Best:    5.56/   9.29 GFLOPS | Progress: (4/20) | 13.70 s     [Task 24/25]  Current/Best:    1.25/   9.29 GFLOPS | Progress: (8/20) | 25.97 s     [Task 24/25]  Current/Best:    2.99/   9.29 GFLOPS | Progress: (12/20) | 30.55 s     [Task 24/25]  Current/Best:    3.49/   9.33 GFLOPS | Progress: (16/20) | 35.09 s     [Task 24/25]  Current/Best:    3.22/   9.33 GFLOPS | Progress: (20/20) | 39.13 s     [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 25/25]  Current/Best:    5.65/   9.09 GFLOPS | Progress: (4/20) | 4.78 s     [Task 25/25]  Current/Best:    4.11/   9.15 GFLOPS | Progress: (8/20) | 6.49 s     [Task 25/25]  Current/Best:    1.54/   9.15 GFLOPS | Progress: (12/20) | 8.03 s     [Task 25/25]  Current/Best:    1.54/   9.15 GFLOPS | Progress: (16/20) | 18.87 s     [Task 25/25]  Current/Best:    8.15/   9.15 GFLOPS | Progress: (20/2
 0) | 23.28 s
 
 
 
@@ -675,6 +674,7 @@ model using optimized operators to speed up our computations.
  .. code-block:: none
 
      Done.
+     Done.
 
 
 
@@ -708,8 +708,8 @@ Verify that the optimized model runs and produces the same results:
 
  .. code-block:: none
 
-    class='n02123045 tabby, tabby cat' with probability=0.621103
-    class='n02123159 tiger cat' with probability=0.356379
+    class='n02123045 tabby, tabby cat' with probability=0.621104
+    class='n02123159 tiger cat' with probability=0.356378
     class='n02124075 Egyptian cat' with probability=0.019712
     class='n02129604 tiger, Panthera tigris' with probability=0.001215
     class='n04040759 radiator' with probability=0.000262
@@ -766,8 +766,8 @@ improvement in comparing the optimized model to the unoptimized model.
 
  .. code-block:: none
 
-    optimized: {'mean': 411.39707062000525, 'median': 411.7240513001889, 'std': 1.9516045429291287}
-    unoptimized: {'mean': 493.8791205299276, 'median': 493.48756700001104, 'std': 2.511440837307451}
+    optimized: {'mean': 392.8259888499724, 'median': 394.27335049995236, 'std': 3.7999651743427423}
+    unoptimized: {'mean': 496.87928669999565, 'median': 496.89137339996705, 'std': 2.572970643947677}
 
 
 
@@ -790,7 +790,7 @@ profiling/benchmarking.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 13 minutes  33.335 seconds)
+   **Total running time of the script:** ( 13 minutes  25.927 seconds)
 
 
 .. _sphx_glr_download_tutorial_autotvm_relay_x86.py:
diff --git a/docs/_sources/tutorial/intro_topi.rst.txt b/docs/_sources/tutorial/intro_topi.rst.txt
index 753e862ef1..f0992315de 100644
--- a/docs/_sources/tutorial/intro_topi.rst.txt
+++ b/docs/_sources/tutorial/intro_topi.rst.txt
@@ -270,7 +270,7 @@ As you can see, scheduled stages of computation have been accumulated and we can
 
  .. code-block:: none
 
-    [stage(a, placeholder(a, 0x13db0a60)), stage(b, placeholder(b, 0x13843010)), stage(T_add, compute(T_add, body=[a[ax0, ax1, ax2] + b[ax1, ax2]], axis=[T.iter_var(ax0, T.Range(0, 100), "DataPar", ""), T.iter_var(ax1, T.Range(0, 10), "DataPar", ""), T.iter_var(ax2, T.Range(0, 10), "DataPar", "")], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[a[ax0, ax1, ax2] * b[ax1, ax2]], axis=[T.iter_var(ax0, T.Range(0, 100), "DataPar", ""), T.iter_var(ax1, T [...]
+    [stage(a, placeholder(a, 0x141c0b50)), stage(b, placeholder(b, 0x14190960)), stage(T_add, compute(T_add, body=[a[ax0, ax1, ax2] + b[ax1, ax2]], axis=[T.iter_var(ax0, T.Range(0, 100), "DataPar", ""), T.iter_var(ax1, T.Range(0, 10), "DataPar", ""), T.iter_var(ax2, T.Range(0, 10), "DataPar", "")], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[a[ax0, ax1, ax2] * b[ax1, ax2]], axis=[T.iter_var(ax0, T.Range(0, 100), "DataPar", ""), T.iter_var(ax1, T [...]
 
 
 
diff --git a/docs/_sources/tutorial/sg_execution_times.rst.txt b/docs/_sources/tutorial/sg_execution_times.rst.txt
index c93eb3e16c..23d8adb00e 100644
--- a/docs/_sources/tutorial/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorial/sg_execution_times.rst.txt
@@ -5,22 +5,22 @@
 
 Computation times
 =================
-**17:03.841** total execution time for **tutorial** files:
+**16:48.917** total execution time for **tutorial** files:
 
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)                 | 13:33.335 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)                 | 13:25.927 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``) | 01:26.800 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``) | 01:25.498 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)     | 00:58.951 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)     | 00:56.871 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)                 | 00:44.686 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)                 | 00:43.991 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)               | 00:18.220 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)               | 00:14.803 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)       | 00:00.951 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)       | 00:00.958 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)                               | 00:00.897 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)                               | 00:00.869 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_tutorial_uma.py` (``uma.py``)                                             | 00:00.000 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
index 6336e48e0c..f146eb0387 100644
--- a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
+++ b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
@@ -285,8 +285,8 @@ helper function to run a profile of the TVM generated code.
 
  .. code-block:: none
 
-    Numpy running time: 0.000008
-    naive: 0.000007
+    Numpy running time: 0.000007
+    naive: 0.000006
 
 
 
@@ -389,7 +389,7 @@ compile and run this new schedule with the parallel operation applied:
 
  .. code-block:: none
 
-    parallel: 0.000010
+    parallel: 0.000006
 
 
 
@@ -444,7 +444,7 @@ factor to be the number of threads on your CPU.
 
  .. code-block:: none
 
-    vector: 0.000040
+    vector: 0.000039
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -498,10 +498,10 @@ We can now compare the different schedules
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                   numpy    7.965309996507131e-06                    1.0
-                   naive    6.7627000000000005e-06    0.8490190592664332
-                parallel    1.0080999999999999e-05    1.2656130149888227
-                  vector    3.9697700000000004e-05     4.983823607293106
+                   numpy    6.8447099965851525e-06                   1.0
+                   naive              6.4094e-06      0.9364019809747484
+                parallel              5.8955e-06      0.8613221017313054
+                  vector              3.8704e-05         5.6545858070407
 
 
 
@@ -922,7 +922,7 @@ matrix multiplication.
 
  .. code-block:: none
 
-    Numpy running time: 0.017828
+    Numpy running time: 0.017590
 
 
 
@@ -980,7 +980,7 @@ optimizations.
 
  .. code-block:: none
 
-    none: 3.339727
+    none: 3.204677
 
 
 
@@ -1080,7 +1080,7 @@ schedule.
 
  .. code-block:: none
 
-    blocking: 0.288476
+    blocking: 0.294270
 
 
 
@@ -1164,7 +1164,7 @@ already cache friendly from our previous optimizations.
 
  .. code-block:: none
 
-    vectorization: 0.265403
+    vectorization: 0.276776
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1230,7 +1230,7 @@ more cache friendly.
 
  .. code-block:: none
 
-    loop permutation: 0.115534
+    loop permutation: 0.109944
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1321,7 +1321,7 @@ optimized schedule.
 
  .. code-block:: none
 
-    array packing: 0.107374
+    array packing: 0.103733
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1404,7 +1404,7 @@ to `C` when all the block results are ready.
 
  .. code-block:: none
 
-    block caching: 0.111163
+    block caching: 0.097428
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1478,7 +1478,7 @@ of thread-level parallelization.
 
  .. code-block:: none
 
-    parallelization: 0.132925
+    parallelization: 0.116824
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1548,13 +1548,13 @@ working, we can compare the results.
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                    none            3.3397266824                     1.0
-                blocking            0.2884758832     0.08637709328737495
-           vectorization            0.2654028732     0.07946844111485069
-        loop permutation            0.1155340391     0.03459386054219705
-           array packing             0.107373566     0.03215040517113186
-           block caching            0.1111630687      0.0332850796700872
-         parallelization            0.1329252562     0.03980123789785008
+                    none      3.2046769050000004                     1.0
+                blocking     0.29426967260000003     0.09182506733857465
+           vectorization            0.2767755875     0.08636614414019998
+        loop permutation            0.1099439265    0.034307335734364765
+           array packing            0.1037330639    0.032369273713101505
+           block caching     0.09742824990000001    0.030401894727044253
+         parallelization            0.1168239181    0.036454195403514474
 
 
 
diff --git a/docs/arch/benchmark.html b/docs/arch/benchmark.html
index 00f19341fd..07ec2a4f86 100644
--- a/docs/arch/benchmark.html
+++ b/docs/arch/benchmark.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -617,14 +615,14 @@
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/convert_layout.html b/docs/arch/convert_layout.html
index 5a65f4114c..bfe5c9d75a 100644
--- a/docs/arch/convert_layout.html
+++ b/docs/arch/convert_layout.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -657,14 +655,14 @@
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/debugger.html b/docs/arch/debugger.html
index d129b22331..8dc15e2f42 100644
--- a/docs/arch/debugger.html
+++ b/docs/arch/debugger.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -607,14 +605,14 @@ folder specified while creating the runtime.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/device_target_interactions.html b/docs/arch/device_target_interactions.html
index 556703afff..d56a9f194a 100644
--- a/docs/arch/device_target_interactions.html
+++ b/docs/arch/device_target_interactions.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -638,14 +636,14 @@ in the output <code class="docutils literal notranslate"><span class="pre">runti
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/frontend/tensorflow.html b/docs/arch/frontend/tensorflow.html
index b1bce64373..ab7de7667a 100644
--- a/docs/arch/frontend/tensorflow.html
+++ b/docs/arch/frontend/tensorflow.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -660,14 +658,14 @@
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/hybrid_script.html b/docs/arch/hybrid_script.html
index 510341a88a..cd0813d84b 100644
--- a/docs/arch/hybrid_script.html
+++ b/docs/arch/hybrid_script.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -502,14 +500,14 @@ except <code class="docutils literal notranslate"><span class="pre">popcount</sp
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/index.html b/docs/arch/index.html
index 0276062180..2d2e864a8d 100644
--- a/docs/arch/index.html
+++ b/docs/arch/index.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -802,14 +800,14 @@ customize the search and plugin their algorithms from the Python binding.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/inferbound.html b/docs/arch/inferbound.html
index 3598982e9a..6a70a94698 100644
--- a/docs/arch/inferbound.html
+++ b/docs/arch/inferbound.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -1031,14 +1029,14 @@
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/introduction_to_module_serialization.html b/docs/arch/introduction_to_module_serialization.html
index 806bafeb79..21bdd5f7a5 100644
--- a/docs/arch/introduction_to_module_serialization.html
+++ b/docs/arch/introduction_to_module_serialization.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -620,14 +618,14 @@ that allow lookup of symbol from root (so all symbols are visible).</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/microtvm_design.html b/docs/arch/microtvm_design.html
index 185ac1068f..b20e6f76b4 100644
--- a/docs/arch/microtvm_design.html
+++ b/docs/arch/microtvm_design.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -781,14 +779,14 @@ peak memory usage.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/microtvm_project_api.html b/docs/arch/microtvm_project_api.html
index 0a20ab651e..b368a68b7d 100644
--- a/docs/arch/microtvm_project_api.html
+++ b/docs/arch/microtvm_project_api.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -561,14 +559,14 @@ for more information.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/model_library_format.html b/docs/arch/model_library_format.html
index 22d663fc3a..8de028010e 100644
--- a/docs/arch/model_library_format.html
+++ b/docs/arch/model_library_format.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -603,14 +601,14 @@ function and sub-functions.</p></li>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/pass_infra.html b/docs/arch/pass_infra.html
index 0721b42bc5..4e6175ff24 100644
--- a/docs/arch/pass_infra.html
+++ b/docs/arch/pass_infra.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -1075,14 +1073,14 @@ new <code class="docutils literal notranslate"><span class="pre">PassInstrument<
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/relay_intro.html b/docs/arch/relay_intro.html
index e48fcf0afc..44119e9eb5 100644
--- a/docs/arch/relay_intro.html
+++ b/docs/arch/relay_intro.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -596,14 +594,14 @@ that are not covered by this material; you are more than welcome to look at othe
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/relay_op_strategy.html b/docs/arch/relay_op_strategy.html
index 99d26ee320..93505898f3 100644
--- a/docs/arch/relay_op_strategy.html
+++ b/docs/arch/relay_op_strategy.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -659,14 +657,14 @@ model to learn which implementation is used for each operator.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/runtime.html b/docs/arch/runtime.html
index 649a5a0939..33849fbe6b 100644
--- a/docs/arch/runtime.html
+++ b/docs/arch/runtime.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -674,14 +672,14 @@ in C++, see <a class="reference external" href="https://github.com/apache/tvm/tr
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/runtimes/vulkan.html b/docs/arch/runtimes/vulkan.html
index 26f31cfd73..1983b976b4 100644
--- a/docs/arch/runtimes/vulkan.html
+++ b/docs/arch/runtimes/vulkan.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -646,14 +644,14 @@ used for debugging purposes.</p></li>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/arch/virtual_machine.html b/docs/arch/virtual_machine.html
index 5eaed8507e..da33e7a567 100644
--- a/docs/arch/virtual_machine.html
+++ b/docs/arch/virtual_machine.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -769,14 +767,14 @@ In order to do this properly we need to run the device annotation and copying pa
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/commit_hash b/docs/commit_hash
index e90cbefc80..74263b6009 100644
--- a/docs/commit_hash
+++ b/docs/commit_hash
@@ -1 +1 @@
-4692b9591d3d9992473f733d96c1b14eb00cd7a3
+9f281758e8a1a3c1c649b995367b0166da55f2c6
diff --git a/docs/contribute/ci.html b/docs/contribute/ci.html
index f49b923f3f..db173b914a 100644
--- a/docs/contribute/ci.html
+++ b/docs/contribute/ci.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -658,14 +656,14 @@ and re-enable the test.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/contribute/code_guide.html b/docs/contribute/code_guide.html
index 1c695a42d2..923a17d67a 100644
--- a/docs/contribute/code_guide.html
+++ b/docs/contribute/code_guide.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -568,14 +566,14 @@ with the new URL.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/contribute/code_review.html b/docs/contribute/code_review.html
index 64e4750475..a48776e4a7 100644
--- a/docs/contribute/code_review.html
+++ b/docs/contribute/code_review.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -642,14 +640,14 @@ time will get a bot comment pinging the relevant parties.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/contribute/committer_guide.html b/docs/contribute/committer_guide.html
index 0fdf0c0e21..fbd2903a1e 100644
--- a/docs/contribute/committer_guide.html
+++ b/docs/contribute/committer_guide.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -530,14 +528,14 @@ community members who you do not interact physically.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/contribute/community.html b/docs/contribute/community.html
index 9f4e76fd4b..0768db4ab3 100644
--- a/docs/contribute/community.html
+++ b/docs/contribute/community.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -470,14 +468,14 @@ If such a vote fails to gain approval, the existing code base will continue. Thi
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/contribute/document.html b/docs/contribute/document.html
index d2cb77d43b..4173c3b2d7 100644
--- a/docs/contribute/document.html
+++ b/docs/contribute/document.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -665,14 +663,14 @@ This helps ensure that all URL links in TVM’s online documentation are valid.<
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/contribute/error_handling.html b/docs/contribute/error_handling.html
index d09539a292..ebc6b33cbe 100644
--- a/docs/contribute/error_handling.html
+++ b/docs/contribute/error_handling.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -527,14 +525,14 @@ please put wrapper in the same file so other developers can look up the implemen
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/contribute/git_howto.html b/docs/contribute/git_howto.html
index 11b0e25e76..705acd7168 100644
--- a/docs/contribute/git_howto.html
+++ b/docs/contribute/git_howto.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -540,14 +538,14 @@ It is fine to force push to your own fork, as long as the commits changed are on
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/contribute/index.html b/docs/contribute/index.html
index bd50bee77d..001acdb53e 100644
--- a/docs/contribute/index.html
+++ b/docs/contribute/index.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -525,14 +523,14 @@ design choices of the internal.</p></li>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/contribute/pull_request.html b/docs/contribute/pull_request.html
index 83f2d748ff..1e0a7381fd 100644
--- a/docs/contribute/pull_request.html
+++ b/docs/contribute/pull_request.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -687,14 +685,14 @@ rm<span class="w"> </span>-rf<span class="w"> </span>python/tvm/*.pyc<span class
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/contribute/release_process.html b/docs/contribute/release_process.html
index 75f684c721..7a414c8690 100644
--- a/docs/contribute/release_process.html
+++ b/docs/contribute/release_process.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -669,14 +667,14 @@ git<span class="w"> </span>push
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/deep_dive/tensor_ir/abstraction.html b/docs/deep_dive/relax/abstraction.html
similarity index 72%
copy from docs/deep_dive/tensor_ir/abstraction.html
copy to docs/deep_dive/relax/abstraction.html
index 634ab17b77..1e63db0aed 100644
--- a/docs/deep_dive/tensor_ir/abstraction.html
+++ b/docs/deep_dive/relax/abstraction.html
@@ -11,7 +11,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Tensor Program Abstraction &mdash; tvm 0.18.dev0 documentation</title>
+  <title>Graph Abstraction for ML Models &mdash; tvm 0.18.dev0 documentation</title>
   
 
   
@@ -48,8 +48,8 @@
     <script type="text/javascript" src="../../_static/js/tlcpack_theme.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" />
-    <link rel="next" title="Understand TensorIR Abstraction" href="learning.html" />
-    <link rel="prev" title="TensorIR" href="index.html" /> 
+    <link rel="next" title="Understand Relax Abstraction" href="learning.html" />
+    <link rel="prev" title="Relax" href="index.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -273,15 +270,16 @@
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul class="current">
-<li class="toctree-l1 current"><a class="reference internal" href="index.html">TensorIR</a><ul class="current">
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Tensor Program Abstraction</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#key-elements-of-tensor-programs">Key Elements of Tensor Programs</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#extra-structure-in-tensorir">Extra Structure in TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Relax</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Graph Abstraction for ML Models</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#what-is-graph-abstraction">What is Graph Abstraction?</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#key-features-of-relax">Key Features of Relax</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="learning.html">Understand TensorIR Abstraction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/creation.html">TensorIR Creation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html">Transformation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="learning.html">Understand Relax Abstraction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/relax_creation.html">Relax Creation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/relax_transformation.html">Transformation</a></li>
 </ul>
 </li>
 </ul>
@@ -366,9 +364,9 @@
     
       <li><a href="../../index.html">Docs</a> <span class="br-arrow">></span></li>
         
-          <li><a href="index.html">TensorIR</a> <span class="br-arrow">></span></li>
+          <li><a href="index.html">Relax</a> <span class="br-arrow">></span></li>
         
-      <li>Tensor Program Abstraction</li>
+      <li>Graph Abstraction for ML Models</li>
     
     
       
@@ -381,7 +379,7 @@
         
             
             
-              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/tensor_ir/abstraction.rst" class="fa fa-github"> Edit on GitHub</a>
+              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/relax/abstraction.rst" class="fa fa-github"> Edit on GitHub</a>
             
           
         
@@ -395,58 +393,56 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="tensor-program-abstraction">
-<span id="tir-abstraction"></span><h1>Tensor Program Abstraction<a class="headerlink" href="#tensor-program-abstraction" title="Permalink to this headline">¶</a></h1>
-<p>Before we dive into the details of TensorIR, let’s first introduce what is a primitive tensor
-function. Primitive tensor functions are functions that correspond to a single “unit” of
-computational operation. For example, a convolution operation can be a primitive tensor function,
-and a fused convolution + relu operation can also be a primitive tensor function.
-Usually, a typical abstraction for primitive tensor function implementation contains the following
-elements: multi-dimensional buffers, loop nests that drive the tensor computations, and finally,
-the compute statements themselves.</p>
-<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">tvm.script</span> <span class="kn">import</span> <span class="n">tir</span> <span class="k">as</span> <span class="n">T</span>
-
-<span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span>
+  <div class="section" id="graph-abstraction-for-ml-models">
+<span id="relax-abstraction"></span><h1>Graph Abstraction for ML Models<a class="headerlink" href="#graph-abstraction-for-ml-models" title="Permalink to this headline">¶</a></h1>
+<p>Graph abstraction is a key technique used in machine learning (ML) compilers
+to represent and reason about the structure and data flow of ML models. By
+abstracting the model into a graph representation, the compiler can perform
+various optimizations to improve performance and efficiency. This tutorial will
+cover the basics of graph abstraction, its key elements of Relax IR, and how it enables optimization in ML compilers.</p>
+<div class="section" id="what-is-graph-abstraction">
+<h2>What is Graph Abstraction?<a class="headerlink" href="#what-is-graph-abstraction" title="Permalink to this headline">¶</a></h2>
+<p>Graph abstraction is the process of representing an ML model as a directed graph,
+where the nodes represent computational operations (e.g., matrix multiplication,
+convolution) and the edges represent the flow of data between these operations.
+This abstraction allows the compiler to analyze the dependencies and
+relationships between different parts of the model.</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">tvm.script</span> <span class="kn">import</span> <span class="n">relax</span> <span class="k">as</span> <span class="n">R</span>
+
+<span class="nd">@R</span><span class="o">.</span><span class="n">function</span>
 <span class="k">def</span> <span class="nf">main</span><span class="p">(</span>
-    <span class="n">A</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="s2">&quot;float32&quot;</span><span class="p">),</span>
-    <span class="n">B</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="s2">&quot;float32&quot;</span><span class="p">),</span>
-    <span class="n">C</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="s2">&quot;float32&quot;</span><span class="p">),</span>
-<span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
-    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">128</span><span class="p">):</span>
-        <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">block</span><span class="p">(</span><span class="s2">&quot;C&quot;</span><span class="p">):</span>
-            <span class="n">vi</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">spatial</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
-            <span class="n">C</span><span class="p">[</span><span class="n">vi</span><span class="p">]</span> <span class="o">=</span> <span class="n">A</span><span class="p">[</span><span class="n">vi</span><span class="p">]</span> <span class="o">+</span> <span class="n">B</span><span class="p">[</span><span class="n">vi</span><span class="p">]</span>
+    <span class="n">x</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+    <span class="n">weight</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">784</span><span class="p">,</span> <span class="mi">256</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+    <span class="n">bias</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">256</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">256</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">):</span>
+    <span class="k">with</span> <span class="n">R</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
+        <span class="n">lv0</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">weight</span><span class="p">)</span>
+        <span class="n">lv1</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">lv0</span><span class="p">,</span> <span class="n">bias</span><span class="p">)</span>
+        <span class="n">gv</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">lv1</span><span class="p">)</span>
+        <span class="n">R</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">gv</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">gv</span>
 </pre></div>
 </div>
-<div class="section" id="key-elements-of-tensor-programs">
-<h2>Key Elements of Tensor Programs<a class="headerlink" href="#key-elements-of-tensor-programs" title="Permalink to this headline">¶</a></h2>
-<p>The demonstrated primitive tensor function calculates the element-wise sum of two vectors.
-The function:</p>
-<ul class="simple">
-<li><p>Accepts three <strong>multi-dimensional buffers</strong> as parameters, and generates one <strong>multi-dimensional
-buffer</strong> as output.</p></li>
-<li><p>Incorporates a solitary <strong>loop nest</strong> <code class="docutils literal notranslate"><span class="pre">i</span></code> that facilitates the computation.</p></li>
-<li><p>Features a singular <strong>compute statement</strong> that calculates the element-wise sum of the two
-vectors.</p></li>
-</ul>
 </div>
-<div class="section" id="extra-structure-in-tensorir">
-<h2>Extra Structure in TensorIR<a class="headerlink" href="#extra-structure-in-tensorir" title="Permalink to this headline">¶</a></h2>
-<p>Crucially, we are unable to execute arbitrary transformations on the program, as certain
-computations rely on the loop’s sequence. Fortunately, the majority of primitive tensor
-functions we focus on possess favorable properties, such as independence among loop iterations.
-For instance, the aforementioned program includes block and iteration annotations:</p>
+<div class="section" id="key-features-of-relax">
+<h2>Key Features of Relax<a class="headerlink" href="#key-features-of-relax" title="Permalink to this headline">¶</a></h2>
+<p>Relax, the graph representation utilized in Apache TVM’s Unity strategy,
+facilitates end-to-end optimization of ML models through several crucial
+features:</p>
 <ul class="simple">
-<li><p>The <strong>block annotation</strong> <code class="docutils literal notranslate"><span class="pre">with</span> <span class="pre">T.block(&quot;C&quot;)</span></code> signifies that the block is the fundamental
-computation unit designated for scheduling. A block may encompass a single computation
-statement, multiple computation statements with loops, or opaque intrinsics such as Tensor
-Core instructions.</p></li>
-<li><p>The <strong>iteration annotation</strong> <code class="docutils literal notranslate"><span class="pre">T.axis.spatial</span></code>, indicating that variable <code class="docutils literal notranslate"><span class="pre">vi</span></code> is mapped
-to <code class="docutils literal notranslate"><span class="pre">i</span></code>, and all iterations are independent.</p></li>
+<li><p><strong>First-class symbolic shape</strong>: Relax employs symbolic shapes to represent
+tensor dimensions, enabling global tracking of dynamic shape relationships
+across tensor operators and function calls.</p></li>
+<li><p><strong>Multi-level abstractions</strong>: Relax supports cross-level abstractions, from
+high-level neural network layers to low-level tensor operations, enabling
+optimizations that span different hierarchies within the model.</p></li>
+<li><p><strong>Composable transformations</strong>: Relax offers a framework for composable
+transformations that can be selectively applied to different model components.
+This includes capabilities such as partial lowering and partial specialization,
+providing flexible customization and optimization options.</p></li>
 </ul>
-<p>While this information isn’t crucial for <em>executing</em> the specific program, it proves useful when
-transforming the program. Consequently, we can confidently parallelize or reorder loops associated
-with <code class="docutils literal notranslate"><span class="pre">vi</span></code>, provided we traverse all the index elements from 0 to 128.</p>
+<p>These features collectively empower Relax to offer a powerful and adaptable approach
+to ML model optimization within the Apache TVM ecosystem.</p>
 </div>
 </div>
 
@@ -460,10 +456,10 @@ with <code class="docutils literal notranslate"><span class="pre">vi</span></cod
 
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="learning.html" class="btn btn-neutral float-right" title="Understand TensorIR Abstraction" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="learning.html" class="btn btn-neutral float-right" title="Understand Relax Abstraction" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="index.html" class="btn btn-neutral float-left" title="TensorIR" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="index.html" class="btn btn-neutral float-left" title="Relax" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
 
@@ -472,14 +468,14 @@ with <code class="docutils literal notranslate"><span class="pre">vi</span></cod
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/deep_dive/tensor_ir/index.html b/docs/deep_dive/relax/index.html
similarity index 85%
copy from docs/deep_dive/tensor_ir/index.html
copy to docs/deep_dive/relax/index.html
index 7cc8d590a2..4592128117 100644
--- a/docs/deep_dive/tensor_ir/index.html
+++ b/docs/deep_dive/relax/index.html
@@ -11,7 +11,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>TensorIR &mdash; tvm 0.18.dev0 documentation</title>
+  <title>Relax &mdash; tvm 0.18.dev0 documentation</title>
   
 
   
@@ -48,8 +48,8 @@
     <script type="text/javascript" src="../../_static/js/tlcpack_theme.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" />
-    <link rel="next" title="Tensor Program Abstraction" href="abstraction.html" />
-    <link rel="prev" title="Handle TVM Errors" href="../../errors.html" /> 
+    <link rel="next" title="Graph Abstraction for ML Models" href="abstraction.html" />
+    <link rel="prev" title="Transformation" href="../tensor_ir/tutorials/tir_transformation.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -273,11 +270,12 @@
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul class="current">
-<li class="toctree-l1 current"><a class="current reference internal" href="#">TensorIR</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="abstraction.html">Tensor Program Abstraction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="learning.html">Understand TensorIR Abstraction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/creation.html">TensorIR Creation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html">Transformation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Relax</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="abstraction.html">Graph Abstraction for ML Models</a></li>
+<li class="toctree-l2"><a class="reference internal" href="learning.html">Understand Relax Abstraction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/relax_creation.html">Relax Creation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/relax_transformation.html">Transformation</a></li>
 </ul>
 </li>
 </ul>
@@ -362,7 +360,7 @@
     
       <li><a href="../../index.html">Docs</a> <span class="br-arrow">></span></li>
         
-      <li>TensorIR</li>
+      <li>Relax</li>
     
     
       
@@ -375,7 +373,7 @@
         
             
             
-              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/tensor_ir/index.rst" class="fa fa-github"> Edit on GitHub</a>
+              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/relax/index.rst" class="fa fa-github"> Edit on GitHub</a>
             
           
         
@@ -389,37 +387,35 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="tensorir">
-<span id="tensor-ir"></span><h1>TensorIR<a class="headerlink" href="#tensorir" title="Permalink to this headline">¶</a></h1>
-<p>TensorIR is one of the core abstraction in Apache TVM Unity stack, which is used to
-represent and optimize the primitive tensor functions.</p>
+  <div class="section" id="relax">
+<span id="id1"></span><h1>Relax<a class="headerlink" href="#relax" title="Permalink to this headline">¶</a></h1>
+<p>Relax is a high-level abstraction for graph optimization and transformation in Apache TVM stack.
+Additionally, Apache TVM combine Relax and TensorIR together as a unity strategy for cross-level
+optimization. Hence, Relax is usually working closely with TensorIR for representing and optimizing
+the whole IRModule</p>
 <div class="toctree-wrapper compound">
 <ul>
-<li class="toctree-l1"><a class="reference internal" href="abstraction.html">Tensor Program Abstraction</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="abstraction.html#key-elements-of-tensor-programs">Key Elements of Tensor Programs</a></li>
-<li class="toctree-l2"><a class="reference internal" href="abstraction.html#extra-structure-in-tensorir">Extra Structure in TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="abstraction.html">Graph Abstraction for ML Models</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="abstraction.html#what-is-graph-abstraction">What is Graph Abstraction?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="abstraction.html#key-features-of-relax">Key Features of Relax</a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="learning.html">Understand TensorIR Abstraction</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="learning.html#function-parameters-and-buffers">Function Parameters and Buffers</a></li>
-<li class="toctree-l2"><a class="reference internal" href="learning.html#loop-iterations">Loop Iterations</a></li>
-<li class="toctree-l2"><a class="reference internal" href="learning.html#computational-block">Computational Block</a></li>
-<li class="toctree-l2"><a class="reference internal" href="learning.html#block-axis-properties">Block Axis Properties</a></li>
-<li class="toctree-l2"><a class="reference internal" href="learning.html#why-extra-information-in-block">Why Extra Information in Block</a></li>
-<li class="toctree-l2"><a class="reference internal" href="learning.html#sugars-for-block-axes-binding">Sugars for Block Axes Binding</a></li>
+<li class="toctree-l1"><a class="reference internal" href="learning.html">Understand Relax Abstraction</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="learning.html#end-to-end-model-execution">End to End Model Execution</a></li>
+<li class="toctree-l2"><a class="reference internal" href="learning.html#key-elements-of-relax">Key Elements of Relax</a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="tutorials/creation.html">TensorIR Creation</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/creation.html#create-tensorir-using-tvmscript">Create TensorIR using TVMScript</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/creation.html#create-tensorir-using-tensor-expression">Create TensorIR using Tensor Expression</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/relax_creation.html">Relax Creation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/relax_creation.html#create-relax-programs-using-tvmscript">Create Relax programs using TVMScript</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/relax_creation.html#create-relax-programs-using-nnmodule-api">Create Relax programs using NNModule API</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/relax_creation.html#create-relax-programs-using-block-builder-api">Create Relax programs using Block Builder API</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/relax_creation.html#summary">Summary</a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="tutorials/transformation.html">Transformation</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html#initialization-schedule">Initialization Schedule</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html#loop-tiling">Loop Tiling</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html#leverage-localities">Leverage Localities</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html#rewrite-reduction">Rewrite Reduction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html#trace-the-transformation">Trace the Transformation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/relax_transformation.html">Transformation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/relax_transformation.html#apply-transformations">Apply transformations</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/relax_transformation.html#custom-passes">Custom Passes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/relax_transformation.html#summary">Summary</a></li>
 </ul>
 </li>
 </ul>
@@ -436,10 +432,10 @@ represent and optimize the primitive tensor functions.</p>
 
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="abstraction.html" class="btn btn-neutral float-right" title="Tensor Program Abstraction" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="abstraction.html" class="btn btn-neutral float-right" title="Graph Abstraction for ML Models" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="../../errors.html" class="btn btn-neutral float-left" title="Handle TVM Errors" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="../tensor_ir/tutorials/tir_transformation.html" class="btn btn-neutral float-left" title="Transformation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
 
@@ -448,14 +444,14 @@ represent and optimize the primitive tensor functions.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/deep_dive/relax/learning.html b/docs/deep_dive/relax/learning.html
new file mode 100644
index 0000000000..5b852d03be
--- /dev/null
+++ b/docs/deep_dive/relax/learning.html
@@ -0,0 +1,704 @@
+
+
+
+
+
+
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Understand Relax Abstraction &mdash; tvm 0.18.dev0 documentation</title>
+  
+
+  
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
+  <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/sg_gallery.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/sg_gallery-binder.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/sg_gallery-dataframe.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/sg_gallery-rendered-html.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/css/tlcpack_theme.css" type="text/css" />
+
+  
+  
+    <link rel="shortcut icon" href="../../_static/tvm-logo-square.png"/>
+  
+
+  
+  
+  
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/doctools.js"></script>
+    
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+
+    
+    <script type="text/javascript" src="../../_static/js/tlcpack_theme.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" />
+    <link rel="next" title="Relax Creation" href="tutorials/relax_creation.html" />
+    <link rel="prev" title="Graph Abstraction for ML Models" href="abstraction.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    
+<header class="header">
+    <div class="innercontainer">
+      <div class="headerInner d-flex justify-content-between align-items-center">
+          <div class="headerLogo">
+               <a href="https://tvm.apache.org/"><img src=https://tvm.apache.org/assets/images/logo.svg alt="logo"></a>
+          </div>
+
+          <div id="headMenu" class="headerNav">
+            <button type="button" id="closeHeadMenu" class="navCloseBtn"><img src="../../_static/img/close-icon.svg" alt="Close"></button>
+             <ul class="nav">
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/community>Community</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/docs>Docs</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvmconf.org>Conference</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://github.com/apache/tvm/>Github</a>
+                </li>
+             </ul>
+               <div class="responsivetlcdropdown">
+                 <button type="button" class="btn-link">
+                   ASF
+                 </button>
+                 <ul>
+                     <li>
+                       <a href=https://apache.org/>Apache Homepage</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/licenses/>License</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a>
+                     </li>
+                     <li>
+                       <a href=https://tvm.apache.org/docs/reference/security.html>Security</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/thanks.html>Thanks</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/events/current-event>Events</a>
+                     </li>
+                 </ul>
+               </div>
+          </div>
+            <div class="responsiveMenuIcon">
+              <button type="button" id="menuBtn" class="btn-menu"><img src="../../_static/img/menu-icon.svg" alt="Menu Icon"></button>
+            </div>
+
+            <div class="tlcDropdown">
+              <div class="dropdown">
+                <button type="button" class="btn-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                  ASF
+                </button>
+                <div class="dropdown-menu dropdown-menu-right">
+                  <ul>
+                     <li>
+                       <a href=https://apache.org/>Apache Homepage</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/licenses/>License</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a>
+                     </li>
+                     <li>
+                       <a href=https://tvm.apache.org/docs/reference/security.html>Security</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/thanks.html>Thanks</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/events/current-event>Events</a>
+                     </li>
+                  </ul>
+                </div>
+              </div>
+          </div>
+       </div>
+    </div>
+ </header>
+ 
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side fixed">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../index.html">
+          
+
+          
+            
+            <img src="../../_static/tvm-logo-small.png" class="logo" alt="Logo"/>
+          
+          </a>
+
+          
+            
+            
+              <input type="checkbox" class="version-toggle-box" hidden id="version-toggle">
+              <label for="version-toggle" class="version-toggle-label">
+                  <div tabindex="0" class="version version-selector version-selector-show">
+                    0.18.dev0 <span class="chevron versions-hidden"><svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m8 4 8 8-8 8" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg></span><span class="chevron versions-shown"><svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m4 8 8 8 8-8" stroke="#000" stroke-linecap="round" stroke-linejoin="round [...]
+                  </div>
+                </label>
+                <div class="version-details wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+                  <p class="caption" role="heading"><span class="caption-text">Versions</span></p>
+                  <ol style="text-align: left">
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="/">0.18.dev0 (main)</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.8.0/">v0.8.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.9.0/">v0.9.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.10.0/">v0.10.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.11.0/">v0.11.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.12.0/">v0.12.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.13.0/">v0.13.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.14.0/">v0.14.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.15.0/">v0.15.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.16.0/">v0.16.0</a></div></li>
+                    
+                  </ol>
+                </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption" role="heading"><span class="caption-text">Getting Started</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../get_started/overview.html">Overview</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install/index.html">Installing TVM</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../get_started/tutorials/quick_start.html">Quick Start</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../get_started/tutorials/ir_module.html">IRModule</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">How To</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../how_to/tutorials/e2e_opt_model.html">End-to-End Optimize Model</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../how_to/tutorials/customize_opt.html">Customize Optimization</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../how_to/tutorials/optimize_llm.html">Optimize Large Language Model</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../how_to/tutorials/cross_compilation_and_rpc.html">Cross Compilation and RPC</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../how_to/dev/index.html">Development Guides</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
+<ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Relax</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="abstraction.html">Graph Abstraction for ML Models</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Understand Relax Abstraction</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#end-to-end-model-execution">End to End Model Execution</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#high-level-operations-representation">High-Level Operations Representation</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#low-level-integration">Low-Level Integration</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="#key-elements-of-relax">Key Elements of Relax</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#structure-info">Structure Info</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#r-call-tir">R.call_tir</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#dataflow-block">Dataflow Block</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/relax_creation.html">Relax Creation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/relax_transformation.html">Transformation</a></li>
+</ul>
+</li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../reference/api/python/index.html">Python API</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../reference/api/links.html">Other APIs</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Legacy</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../tutorial/index.html">User Tutorial</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../how_to/legacy_index.html">How To Guides</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/tutorial/index.html">Developer Tutorial</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/how_to/how_to.html">Developer How-To Guide</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../reference/langref/index.html">Language Reference</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../arch/index.html">Design and Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../topic/microtvm/index.html">microTVM: TVM on bare-metal</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../topic/vta/index.html">VTA: Versatile Tensor Accelerator</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">About</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../contribute/index.html">Contributor Guide</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../reference/publications.html">Publications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../reference/security.html">Security Guide</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Index</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../genindex.html">Index</a></li>
+</ul>
+
+            
+          
+        </div>
+        
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+      
+      <nav class="wy-nav-top" aria-label="top navigation" data-toggle="wy-nav-top">
+        
+            <div class="togglemenu">
+
+            </div>
+            <div class="nav-content">
+              <!-- tvm -->
+              Table of Contents
+            </div>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> <span class="br-arrow">></span></li>
+        
+          <li><a href="index.html">Relax</a> <span class="br-arrow">></span></li>
+        
+      <li>Understand Relax Abstraction</li>
+    
+    
+      
+      
+        
+      
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            
+              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/relax/learning.rst" class="fa fa-github"> Edit on GitHub</a>
+            
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="understand-relax-abstraction">
+<span id="relax-learning"></span><h1>Understand Relax Abstraction<a class="headerlink" href="#understand-relax-abstraction" title="Permalink to this headline">¶</a></h1>
+<p>Relax is a graph abstraction used in Apache TVM Unity strategy, which
+helps to end-to-end optimize ML models. The principal objective of Relax
+is to depict the structure and data flow of ML models, including the
+dependencies and relationships between different parts of the model, as
+well as how to execute the model on hardware.</p>
+<div class="section" id="end-to-end-model-execution">
+<h2>End to End Model Execution<a class="headerlink" href="#end-to-end-model-execution" title="Permalink to this headline">¶</a></h2>
+<p>In this chapter, we will use the following model as an example. This is
+a two-layer neural network that consists of two linear operations with
+relu activation.</p>
+<a class="reference internal image-reference" href="https://mlc.ai/_images/e2e_fashionmnist_mlp_model.png"><img alt="https://mlc.ai/_images/e2e_fashionmnist_mlp_model.png" class="align-center" src="https://mlc.ai/_images/e2e_fashionmnist_mlp_model.png" style="width: 85%;" /></a>
+<div class="section" id="high-level-operations-representation">
+<h3>High-Level Operations Representation<a class="headerlink" href="#high-level-operations-representation" title="Permalink to this headline">¶</a></h3>
+<p>Let us begin by reviewing a Numpy implementation of the model.</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">numpy_mlp</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">w0</span><span class="p">,</span> <span class="n">b0</span><span class="p">,</span> <span class="n">w1</span><span class="p">,</span> <span class="n">b1</span><span class="p">):</span>
+    <span class="n">lv0</span> <span class="o">=</span> <span class="n">data</span> <span class="o">@</span> <span class="n">w0</span> <span class="o">+</span> <span class="n">b0</span>
+    <span class="n">lv1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">maximum</span><span class="p">(</span><span class="n">lv0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">lv2</span> <span class="o">=</span> <span class="n">lv1</span> <span class="o">@</span> <span class="n">w1</span> <span class="o">+</span> <span class="n">b1</span>
+    <span class="k">return</span> <span class="n">lv2</span>
+</pre></div>
+</div>
+<p>The above example code shows the high-level array operations to perform the end-to-end model
+execution. Of course, we can rewrite the above code using Relax as follows:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">tvm.script</span> <span class="kn">import</span> <span class="n">relax</span> <span class="k">as</span> <span class="n">R</span>
+
+<span class="nd">@R</span><span class="o">.</span><span class="n">function</span>
+<span class="k">def</span> <span class="nf">relax_mlp</span><span class="p">(</span>
+    <span class="n">data</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">&quot;n&quot;</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+    <span class="n">w0</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">784</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+    <span class="n">b0</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+    <span class="n">w1</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+    <span class="n">b1</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">10</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">&quot;n&quot;</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">):</span>
+    <span class="k">with</span> <span class="n">R</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
+        <span class="n">lv0</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">w0</span><span class="p">)</span> <span class="o">+</span> <span class="n">b0</span>
+        <span class="n">lv1</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">lv0</span><span class="p">)</span>
+        <span class="n">lv2</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">lv1</span><span class="p">,</span> <span class="n">w1</span><span class="p">)</span> <span class="o">+</span> <span class="n">b1</span>
+        <span class="n">R</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">lv2</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">lv2</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="low-level-integration">
+<h3>Low-Level Integration<a class="headerlink" href="#low-level-integration" title="Permalink to this headline">¶</a></h3>
+<p>However, again from the pov of machine learning compilation (MLC), we would like to see
+through the details under the hood of these array computations.</p>
+<p>For the purpose of illustrating details under the hood, we will again write examples in low-level numpy:</p>
+<p>We will use a loop instead of array functions when necessary to demonstrate the possible loop computations.
+When possible, we always explicitly allocate arrays via numpy.empty and pass them around.
+The code block below shows a low-level numpy implementation of the same model.</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">lnumpy_linear</span><span class="p">(</span><span class="n">X</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">,</span> <span class="n">W</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">,</span> <span class="n" [...]
+    <span class="n">n</span><span class="p">,</span> <span class="n">m</span><span class="p">,</span> <span class="n">K</span> <span class="o">=</span> <span class="n">X</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">W</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">X</span><span class="o [...]
+    <span class="n">Y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">((</span><span class="n">n</span><span class="p">,</span> <span class="n">m</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
+        <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">m</span><span class="p">):</span>
+            <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">K</span><span class="p">):</span>
+                <span class="k">if</span> <span class="n">k</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+                    <span class="n">Y</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
+                <span class="n">Y</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">Y</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">X</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">k</span><span class=" [...]
+
+    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
+        <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">m</span><span class="p">):</span>
+            <span class="n">Z</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">Y</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">B</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
+
+
+<span class="k">def</span> <span class="nf">lnumpy_relu0</span><span class="p">(</span><span class="n">X</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">,</span> <span class="n">Y</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
+    <span class="n">n</span><span class="p">,</span> <span class="n">m</span> <span class="o">=</span> <span class="n">X</span><span class="o">.</span><span class="n">shape</span>
+    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
+        <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">m</span><span class="p">):</span>
+            <span class="n">Y</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">maximum</span><span class="p">(</span><span class="n">X</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">],</span> <span class="mi">0</span><span class="p">)</span>
+
+<span class="k">def</span> <span class="nf">lnumpy_mlp</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">w0</span><span class="p">,</span> <span class="n">b0</span><span class="p">,</span> <span class="n">w1</span><span class="p">,</span> <span class="n">b1</span><span class="p">):</span>
+    <span class="n">n</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">lv0</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">((</span><span class="n">n</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+    <span class="n">lnumpy_matmul</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">w0</span><span class="p">,</span> <span class="n">b0</span><span class="p">,</span> <span class="n">lv0</span><span class="p">)</span>
+
+    <span class="n">lv1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">((</span><span class="n">n</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+    <span class="n">lnumpy_relu</span><span class="p">(</span><span class="n">lv0</span><span class="p">,</span> <span class="n">lv1</span><span class="p">)</span>
+
+    <span class="n">out</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">((</span><span class="n">n</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+    <span class="n">lnumpy_matmul</span><span class="p">(</span><span class="n">lv1</span><span class="p">,</span> <span class="n">w1</span><span class="p">,</span> <span class="n">b1</span><span class="p">,</span> <span class="n">out</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">out</span>
+</pre></div>
+</div>
+<p>With the low-level NumPy example in mind, now we are ready to introduce an Relax abstraction
+for the end-to-end model execution. The code block below shows a TVMScript implementation of the model.</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nd">@I</span><span class="o">.</span><span class="n">ir_module</span>
+<span class="k">class</span> <span class="nc">Module</span><span class="p">:</span>
+    <span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">private</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+    <span class="k">def</span> <span class="nf">linear</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">w</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">b</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span cl [...]
+        <span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">,</span> <span class="n">K</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
+        <span class="n">X</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">K</span><span class="p">),</span> <span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+        <span class="n">W</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">w</span><span class="p">,</span> <span class="p">(</span><span class="n">K</span><span class="p">,</span> <span class="n">N</span><span class="p">),</span> <span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+        <span class="n">B</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="p">(</span><span class="n">N</span><span class="p">,),</span> <span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+        <span class="n">Z</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">),</span> <span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+        <span class="n">Y</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">alloc_buffer</span><span class="p">((</span><span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">),</span> <span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">,</span> <span class="n">K</span><span class="p">):</span>
+            <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">block</span><span class="p">(</span><span class="s2">&quot;Y&quot;</span><span class="p">):</span>
+                <span class="n">v_i</span><span class="p">,</span> <span class="n">v_j</span><span class="p">,</span> <span class="n">v_k</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">&quot;SSR&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span clas [...]
+                <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">init</span><span class="p">():</span>
+                    <span class="n">Y</span><span class="p">[</span><span class="n">v_i</span><span class="p">,</span> <span class="n">v_j</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">float32</span><span class="p">(</span><span class="mf">0.0</span><span class="p">)</span>
+                <span class="n">Y</span><span class="p">[</span><span class="n">v_i</span><span class="p">,</span> <span class="n">v_j</span><span class="p">]</span> <span class="o">=</span> <span class="n">Y</span><span class="p">[</span><span class="n">v_i</span><span class="p">,</span> <span class="n">v_j</span><span class="p">]</span> <span class="o">+</span> <span class="n">X</span><span class="p">[</span><span class="n">v_i</span><span class="p">,</span> <span class="n">v_k</span>< [...]
+        <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">):</span>
+            <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">block</span><span class="p">(</span><span class="s2">&quot;Z&quot;</span><span class="p">):</span>
+                <span class="n">v_i</span><span class="p">,</span> <span class="n">v_j</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">&quot;SS&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
+                <span class="n">Z</span><span class="p">[</span><span class="n">v_i</span><span class="p">,</span> <span class="n">v_j</span><span class="p">]</span> <span class="o">=</span> <span class="n">Y</span><span class="p">[</span><span class="n">v_i</span><span class="p">,</span> <span class="n">v_j</span><span class="p">]</span> <span class="o">+</span> <span class="n">B</span><span class="p">[</span><span class="n">v_j</span><span class="p">]</span>
+
+    <span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">private</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+    <span class="k">def</span> <span class="nf">relu</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">):</span>
+        <span class="n">M</span><span class="p">,</span> <span class="n">N</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
+        <span class="n">X</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">),</span> <span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+        <span class="n">Y</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">),</span> <span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">):</span>
+            <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">block</span><span class="p">(</span><span class="s2">&quot;Y&quot;</span><span class="p">):</span>
+                <span class="n">v_i</span><span class="p">,</span> <span class="n">v_j</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">&quot;SS&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
+                <span class="n">Y</span><span class="p">[</span><span class="n">v_i</span><span class="p">,</span> <span class="n">v_j</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">X</span><span class="p">[</span><span class="n">v_i</span><span class="p">,</span> <span class="n">v_j</span><span class="p">],</span> <span class="n">T</span><span class="o">.</span><spa [...]
+
+    <span class="nd">@R</span><span class="o">.</span><span class="n">function</span>
+    <span class="k">def</span> <span class="nf">main</span><span class="p">(</span>
+        <span class="n">x</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">&quot;n&quot;</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+        <span class="n">w0</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">784</span><span class="p">,</span> <span class="mi">256</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+        <span class="n">b0</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">256</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+        <span class="n">w1</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">256</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+        <span class="n">b1</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">10</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+    <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">&quot;n&quot;</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">):</span>
+        <span class="bp">cls</span> <span class="o">=</span> <span class="n">Module</span>
+        <span class="n">n</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
+        <span class="k">with</span> <span class="n">R</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
+            <span class="n">lv</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">linear</span><span class="p">,</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">w0</span><span class="p">,</span> <span class="n">b0</span><span class="p">),</span> <span class="n">out_sinfo</span><span class="o" [...]
+            <span class="n">lv1</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">relu</span><span class="p">,</span> <span class="p">(</span><span class="n">lv0</span><span class="p">,),</span> <span class="n">out_sinfo</span><span class="o">=</span><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class= [...]
+            <span class="n">lv2</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">linear</span><span class="p">,</span> <span class="p">(</span><span class="n">lv1</span><span class="p">,</span> <span class="n">w1</span><span class="p">,</span> <span class="n">b1</span><span class="p">),</span> <span class="n">out_sinfo</span><span class= [...]
+            <span class="n">R</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">lv2</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">lv2</span>
+</pre></div>
+</div>
+<p>The above code contains kinds of functions: the primitive tensor functions (<code class="docutils literal notranslate"><span class="pre">T.prim_func</span></code>) and a
+<code class="docutils literal notranslate"><span class="pre">R.function</span></code> (relax function). Relax function is a new type of abstraction representing
+high-level neural network executions.</p>
+<p>Note that the above relax module natively supports symbolic shapes, see the <code class="docutils literal notranslate"><span class="pre">&quot;n&quot;</span></code> in the
+tensor shapes in <code class="docutils literal notranslate"><span class="pre">main</span></code> function and <code class="docutils literal notranslate"><span class="pre">M</span></code>, <code class="docutils literal notranslate"><span class="pre">N</span></code>, <code class="docutils literal notranslate"><span class="pre">K</span></code> in the <code class="docutils literal notranslate"><span class="pre">linear</span></code> function. This is
+a key feature of Relax abstraction, which enables the compiler to track dynamic shape relations
+globally across tensor operators and function calls.</p>
+<p>Again it is helpful to see the TVMScript code and low-level numpy code side-by-side and check the
+corresponding elements, and we are going to walk through each of them in detail. Since we already
+learned about primitive tensor functions, we are going to focus on the high-level execution part.</p>
+</div>
+</div>
+<div class="section" id="key-elements-of-relax">
+<h2>Key Elements of Relax<a class="headerlink" href="#key-elements-of-relax" title="Permalink to this headline">¶</a></h2>
+<p>This section will introduce the key elements of Relax abstraction and how it enables optimization
+in ML compilers.</p>
+<div class="section" id="structure-info">
+<h3>Structure Info<a class="headerlink" href="#structure-info" title="Permalink to this headline">¶</a></h3>
+<p>Structure info is a new concept in Relax that represents the type of relax expressions. It can
+be <code class="docutils literal notranslate"><span class="pre">TensorStructInfo</span></code>, <code class="docutils literal notranslate"><span class="pre">TupleStructInfo</span></code>, etc. In the above example, we use <code class="docutils literal notranslate"><span class="pre">TensorStructInfo</span></code>
+(short in <code class="docutils literal notranslate"><span class="pre">R.Tensor</span></code> in TVMScript) to represent the shape and dtype of the tensor of the inputs,
+outputs, and intermediate results.</p>
+</div>
+<div class="section" id="r-call-tir">
+<h3>R.call_tir<a class="headerlink" href="#r-call-tir" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">R.call_tir</span></code> function is a new abstraction in Relax that allows calling primitive tensor
+functions in the same IRModule. This is a key feature of Relax that enables cross-level
+abstractions, from high-level neural network layers to low-level tensor operations.
+Taking one line from the above code as an example:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">lv</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">linear</span><span class="p">,</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">w0</span><span class="p">,</span> <span class="n">b0</span><s [...]
+</pre></div>
+</div>
+<p>To explain what does <code class="docutils literal notranslate"><span class="pre">R.call_tir</span></code> work, let us review an equivalent low-level numpy
+implementation of the operation, as follows:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">lv0</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">((</span><span class="n">n</span><span class="p">,</span> <span class="mi">256</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+<span class="n">lnumpy_linear</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">w0</span><span class="p">,</span> <span class="n">b0</span><span class="p">,</span> <span class="n">lv0</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Specifically, <code class="docutils literal notranslate"><span class="pre">call_tir</span></code> allocates an output tensor res, then pass the inputs and the output
+to the prim_func. After executing prim_func the result is populated in res, then we can return
+the result.</p>
+<p>This convention is called <strong>destination passing</strong>, The idea is that input and output are explicitly
+allocated outside and passed to the low-level primitive function. This style is commonly used
+in low-level library designs, so higher-level frameworks can handle that memory allocation
+decision. Note that not all tensor operations can be presented in this style (specifically,
+there are operations whose output shape depends on the input). Nevertheless, in common practice,
+it is usually helpful to write the low-level function in this style when possible.</p>
+</div>
+<div class="section" id="dataflow-block">
+<h3>Dataflow Block<a class="headerlink" href="#dataflow-block" title="Permalink to this headline">¶</a></h3>
+<p>Another important element in a relax function is the R.dataflow() scope annotation.</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">with</span> <span class="n">R</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
+    <span class="n">lv</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">linear</span><span class="p">,</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">w0</span><span class="p">,</span> <span class="n">b0</span><span class="p">),</span> <span class="n">out_sinfo</span><span class="o">=</span [...]
+    <span class="n">lv1</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">relu</span><span class="p">,</span> <span class="p">(</span><span class="n">lv0</span><span class="p">,),</span> <span class="n">out_sinfo</span><span class="o">=</span><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</ [...]
+    <span class="n">lv2</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">linear</span><span class="p">,</span> <span class="p">(</span><span class="n">lv1</span><span class="p">,</span> <span class="n">w1</span><span class="p">,</span> <span class="n">b1</span><span class="p">),</span> <span class="n">out_sinfo</span><span class="o">=</s [...]
+    <span class="n">R</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">lv2</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Before we talk about the dataflow block, let us first introduce the concept of <strong>pure</strong> and
+<strong>side-effect</strong>. A function is <strong>pure</strong> or <strong>side-effect free</strong> if:</p>
+<ul class="simple">
+<li><p>it only reads from its inputs and returns the result via its output</p></li>
+<li><p>it will not change other parts of the program (such as incrementing a global counter).</p></li>
+</ul>
+<p>For example, all <code class="docutils literal notranslate"><span class="pre">R.call_tir</span></code> functions are pure functions, as they only read from their inputs
+and write the output to another new allocated tensor. However, the <strong>inplace operations</strong> are not
+pure functions, in other words, they are side-effect functions, because they will change the existing
+intermediate or input tensors.</p>
+<p>A dataflow block is a way for us to mark the computational graph regions of the program.
+Specifically, within a dataflow block, all the operations need to be <strong>side-effect free</strong>.
+Outside a dataflow block, the operations can contain side-effect.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>A common question that arises is why we need to manually mark dataflow blocks instead of
+automatically inferring them. There are two main reasons for this approach:</p>
+<ul class="simple">
+<li><p>Automatic inference of dataflow blocks can be challenging and imprecise, particularly
+when dealing with calls to packed functions (such as cuBLAS integrations). By manually
+marking dataflow blocks, we enable the compiler to accurately understand and optimize
+the program’s dataflow.</p></li>
+<li><p>Many optimizations can only be applied within dataflow blocks. For instance, fusion
+optimization is limited to operations within a single dataflow block. If the compiler
+were to incorrectly infer dataflow boundaries, it might miss crucial optimization
+opportunities, potentially impacting the program’s performance.</p></li>
+</ul>
+</div>
+<p>By allowing manual marking of dataflow blocks, we ensure that the compiler has the most
+accurate information to work with, leading to more effective optimizations.</p>
+</div>
+</div>
+</div>
+
+
+           </div>
+           
+          </div>
+          
+
+<footer>
+
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="tutorials/relax_creation.html" class="btn btn-neutral float-right" title="Relax Creation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="abstraction.html" class="btn btn-neutral float-left" title="Graph Abstraction for ML Models" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+
+<div id="button" class="backtop"><img src="../../_static/img/right.svg" alt="backtop"/> </div>
+<section class="footerSec">
+    <div class="footerHeader">
+      <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
+        <div class="copywrite d-flex align-items-center">
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
+        </div>
+      </div>
+
+    </div>
+
+    <div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+    </div>
+
+</section>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
+
+  </body>
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+    <!-- Theme Analytics -->
+    <script>
+    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+    ga('create', 'UA-75982049-2', 'auto');
+    ga('send', 'pageview');
+    </script>
+
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/deep_dive/tensor_ir/tutorials/index.html b/docs/deep_dive/relax/tutorials/index.html
similarity index 92%
copy from docs/deep_dive/tensor_ir/tutorials/index.html
copy to docs/deep_dive/relax/tutorials/index.html
index 77b542edfb..6b8d073c39 100644
--- a/docs/deep_dive/tensor_ir/tutorials/index.html
+++ b/docs/deep_dive/relax/tutorials/index.html
@@ -11,7 +11,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Deep Dive: TensorIR &mdash; tvm 0.18.dev0 documentation</title>
+  <title>Deep Dive: Relax &mdash; tvm 0.18.dev0 documentation</title>
   
 
   
@@ -72,9 +72,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -271,7 +268,8 @@
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
-<li class="toctree-l1"><a class="reference internal" href="../index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -354,7 +352,7 @@
     
       <li><a href="../../../index.html">Docs</a> <span class="br-arrow">></span></li>
         
-      <li>Deep Dive: TensorIR</li>
+      <li>Deep Dive: Relax</li>
     
     
       
@@ -367,7 +365,7 @@
         
             
             
-              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/tensor_ir/tutorials/index.rst" class="fa fa-github"> Edit on GitHub</a>
+              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/relax/tutorials/index.rst" class="fa fa-github"> Edit on GitHub</a>
             
           
         
@@ -381,13 +379,13 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="deep-dive-tensorir">
-<h1>Deep Dive: TensorIR<a class="headerlink" href="#deep-dive-tensorir" title="Permalink to this headline">¶</a></h1>
-<div class="sphx-glr-thumbnails"><div class="sphx-glr-thumbcontainer" tooltip="    This tutorial concentrates on the construction of **standalone** TensorIR functions. The   ..."><img alt="TensorIR Creation" src="../../../_images/sphx_glr_creation_thumb.png" />
-<p><a class="reference internal" href="creation.html#sphx-glr-deep-dive-tensor-ir-tutorials-creation-py"><span class="std std-ref">TensorIR Creation</span></a></p>
-  <div class="sphx-glr-thumbnail-title">TensorIR Creation</div>
-</div><div class="sphx-glr-thumbcontainer" tooltip="Transformation"><img alt="Transformation" src="../../../_images/sphx_glr_transformation_thumb.png" />
-<p><a class="reference internal" href="transformation.html#sphx-glr-deep-dive-tensor-ir-tutorials-transformation-py"><span class="std std-ref">Transformation</span></a></p>
+  <div class="section" id="deep-dive-relax">
+<h1>Deep Dive: Relax<a class="headerlink" href="#deep-dive-relax" title="Permalink to this headline">¶</a></h1>
+<div class="sphx-glr-thumbnails"><div class="sphx-glr-thumbcontainer" tooltip="Relax Creation"><img alt="Relax Creation" src="../../../_images/sphx_glr_relax_creation_thumb.png" />
+<p><a class="reference internal" href="relax_creation.html#sphx-glr-deep-dive-relax-tutorials-relax-creation-py"><span class="std std-ref">Relax Creation</span></a></p>
+  <div class="sphx-glr-thumbnail-title">Relax Creation</div>
+</div><div class="sphx-glr-thumbcontainer" tooltip="Transformation"><img alt="Transformation" src="../../../_images/sphx_glr_relax_transformation_thumb.png" />
+<p><a class="reference internal" href="relax_transformation.html#sphx-glr-deep-dive-relax-tutorials-relax-transformation-py"><span class="std std-ref">Transformation</span></a></p>
   <div class="sphx-glr-thumbnail-title">Transformation</div>
 </div></div><div class="toctree-wrapper compound">
 </div>
@@ -407,14 +405,14 @@
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/deep_dive/relax/tutorials/relax_creation.html b/docs/deep_dive/relax/tutorials/relax_creation.html
new file mode 100644
index 0000000000..2a2ed7c7ae
--- /dev/null
+++ b/docs/deep_dive/relax/tutorials/relax_creation.html
@@ -0,0 +1,929 @@
+
+
+
+
+
+
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Relax Creation &mdash; tvm 0.18.dev0 documentation</title>
+  
+
+  
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
+  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/sg_gallery.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/sg_gallery-binder.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/sg_gallery-dataframe.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/sg_gallery-rendered-html.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/css/tlcpack_theme.css" type="text/css" />
+
+  
+  
+    <link rel="shortcut icon" href="../../../_static/tvm-logo-square.png"/>
+  
+
+  
+  
+  
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
+        <script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
+        <script src="../../../_static/jquery.js"></script>
+        <script src="../../../_static/underscore.js"></script>
+        <script src="../../../_static/doctools.js"></script>
+    
+    <script type="text/javascript" src="../../../_static/js/theme.js"></script>
+
+    
+    <script type="text/javascript" src="../../../_static/js/tlcpack_theme.js"></script>
+    <link rel="index" title="Index" href="../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../search.html" />
+    <link rel="next" title="Transformation" href="relax_transformation.html" />
+    <link rel="prev" title="Understand Relax Abstraction" href="../learning.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    
+<header class="header">
+    <div class="innercontainer">
+      <div class="headerInner d-flex justify-content-between align-items-center">
+          <div class="headerLogo">
+               <a href="https://tvm.apache.org/"><img src=https://tvm.apache.org/assets/images/logo.svg alt="logo"></a>
+          </div>
+
+          <div id="headMenu" class="headerNav">
+            <button type="button" id="closeHeadMenu" class="navCloseBtn"><img src="../../../_static/img/close-icon.svg" alt="Close"></button>
+             <ul class="nav">
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/community>Community</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/docs>Docs</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvmconf.org>Conference</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://github.com/apache/tvm/>Github</a>
+                </li>
+             </ul>
+               <div class="responsivetlcdropdown">
+                 <button type="button" class="btn-link">
+                   ASF
+                 </button>
+                 <ul>
+                     <li>
+                       <a href=https://apache.org/>Apache Homepage</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/licenses/>License</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a>
+                     </li>
+                     <li>
+                       <a href=https://tvm.apache.org/docs/reference/security.html>Security</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/thanks.html>Thanks</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/events/current-event>Events</a>
+                     </li>
+                 </ul>
+               </div>
+          </div>
+            <div class="responsiveMenuIcon">
+              <button type="button" id="menuBtn" class="btn-menu"><img src="../../../_static/img/menu-icon.svg" alt="Menu Icon"></button>
+            </div>
+
+            <div class="tlcDropdown">
+              <div class="dropdown">
+                <button type="button" class="btn-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                  ASF
+                </button>
+                <div class="dropdown-menu dropdown-menu-right">
+                  <ul>
+                     <li>
+                       <a href=https://apache.org/>Apache Homepage</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/licenses/>License</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a>
+                     </li>
+                     <li>
+                       <a href=https://tvm.apache.org/docs/reference/security.html>Security</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/thanks.html>Thanks</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/events/current-event>Events</a>
+                     </li>
+                  </ul>
+                </div>
+              </div>
+          </div>
+       </div>
+    </div>
+ </header>
+ 
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side fixed">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../index.html">
+          
+
+          
+            
+            <img src="../../../_static/tvm-logo-small.png" class="logo" alt="Logo"/>
+          
+          </a>
+
+          
+            
+            
+              <input type="checkbox" class="version-toggle-box" hidden id="version-toggle">
+              <label for="version-toggle" class="version-toggle-label">
+                  <div tabindex="0" class="version version-selector version-selector-show">
+                    0.18.dev0 <span class="chevron versions-hidden"><svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m8 4 8 8-8 8" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg></span><span class="chevron versions-shown"><svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m4 8 8 8 8-8" stroke="#000" stroke-linecap="round" stroke-linejoin="round [...]
+                  </div>
+                </label>
+                <div class="version-details wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+                  <p class="caption" role="heading"><span class="caption-text">Versions</span></p>
+                  <ol style="text-align: left">
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="/">0.18.dev0 (main)</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.8.0/">v0.8.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.9.0/">v0.9.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.10.0/">v0.10.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.11.0/">v0.11.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.12.0/">v0.12.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.13.0/">v0.13.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.14.0/">v0.14.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.15.0/">v0.15.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.16.0/">v0.16.0</a></div></li>
+                    
+                  </ol>
+                </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption" role="heading"><span class="caption-text">Getting Started</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../get_started/overview.html">Overview</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../install/index.html">Installing TVM</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../get_started/tutorials/quick_start.html">Quick Start</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../get_started/tutorials/ir_module.html">IRModule</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">How To</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../how_to/tutorials/e2e_opt_model.html">End-to-End Optimize Model</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../how_to/tutorials/customize_opt.html">Customize Optimization</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../how_to/tutorials/optimize_llm.html">Optimize Large Language Model</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../how_to/tutorials/cross_compilation_and_rpc.html">Cross Compilation and RPC</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../how_to/dev/index.html">Development Guides</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Relax</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../reference/api/python/index.html">Python API</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../reference/api/links.html">Other APIs</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Legacy</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../tutorial/index.html">User Tutorial</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../how_to/legacy_index.html">How To Guides</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../dev/tutorial/index.html">Developer Tutorial</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../dev/how_to/how_to.html">Developer How-To Guide</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../reference/langref/index.html">Language Reference</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../arch/index.html">Design and Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../topic/microtvm/index.html">microTVM: TVM on bare-metal</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../topic/vta/index.html">VTA: Versatile Tensor Accelerator</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">About</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../contribute/index.html">Contributor Guide</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../reference/publications.html">Publications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../reference/security.html">Security Guide</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Index</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../genindex.html">Index</a></li>
+</ul>
+
+            
+          
+        </div>
+        
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+      
+      <nav class="wy-nav-top" aria-label="top navigation" data-toggle="wy-nav-top">
+        
+            <div class="togglemenu">
+
+            </div>
+            <div class="nav-content">
+              <!-- tvm -->
+              Table of Contents
+            </div>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../index.html">Docs</a> <span class="br-arrow">></span></li>
+        
+          <li><a href="../index.html">Relax</a> <span class="br-arrow">></span></li>
+        
+      <li>Relax Creation</li>
+    
+    
+      
+      
+        
+      
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            
+              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/relax/tutorials/relax_creation.rst" class="fa fa-github"> Edit on GitHub</a>
+            
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="sphx-glr-download-link-note admonition note">
+<p class="admonition-title">Note</p>
+<p>This tutorial can be used interactively with Google Colab! You can also click
+<a class="reference internal" href="#sphx-glr-download-deep-dive-relax-tutorials-relax-creation-py"><span class="std std-ref">here</span></a> to run the Jupyter notebook locally.</p>
+<a class="reference external image-reference" href="https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/315fcda965a8d605f81705edf19ea2c6/relax_creation.ipynb"><img alt="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg" class="align-center" src="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg" width="300px" /></a>
+</div>
+<div class="sphx-glr-example-title section" id="relax-creation">
+<span id="sphx-glr-deep-dive-relax-tutorials-relax-creation-py"></span><span id="id1"></span><h1>Relax Creation<a class="headerlink" href="#relax-creation" title="Permalink to this headline">¶</a></h1>
+<p>This tutorial demonstrates how to create Relax functions and programs.
+We’ll cover various ways to define Relax functions, including using TVMScript,
+and relax NNModule API.</p>
+<div class="section" id="create-relax-programs-using-tvmscript">
+<h2>Create Relax programs using TVMScript<a class="headerlink" href="#create-relax-programs-using-tvmscript" title="Permalink to this headline">¶</a></h2>
+<p>TVMScript is a domain-specific language for representing Apache TVM’s
+intermediate representation (IR). It is a Python dialect that can be used
+to define an IRModule, which contains both TensorIR and Relax functions.</p>
+<p>In this section, we will show how to define a simple MLP model with only
+high-level Relax operators using TVMScript.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">tvm</span> <span class="kn">import</span> <span class="n">relax</span><span class="p">,</span> <span class="n">topi</span>
+<span class="kn">from</span> <span class="nn">tvm.script</span> <span class="kn">import</span> <span class="n">ir</span> <span class="k">as</span> <span class="n">I</span>
+<span class="kn">from</span> <span class="nn">tvm.script</span> <span class="kn">import</span> <span class="n">relax</span> <span class="k">as</span> <span class="n">R</span>
+<span class="kn">from</span> <span class="nn">tvm.script</span> <span class="kn">import</span> <span class="n">tir</span> <span class="k">as</span> <span class="n">T</span>
+
+
+<span class="nd">@I</span><span class="o">.</span><span class="n">ir_module</span>
+<span class="k">class</span> <span class="nc">RelaxModule</span><span class="p">:</span>
+    <span class="nd">@R</span><span class="o">.</span><span class="n">function</span>
+    <span class="k">def</span> <span class="nf">forward</span><span class="p">(</span>
+        <span class="n">data</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">&quot;n&quot;</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+        <span class="n">w0</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+        <span class="n">b0</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+        <span class="n">w1</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">10</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+        <span class="n">b1</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">10</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+    <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">&quot;n&quot;</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">):</span>
+        <span class="k">with</span> <span class="n">R</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
+            <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">R</span><span class="o">.</span><span class="n" [...]
+            <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Da [...]
+            <span class="n">lv2</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a><span class="p">,</span> <span class="n">R</span><span class="o">.</span><span class="n"> [...]
+            <span class="n">R</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">lv2</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">lv2</span>
+
+
+<span class="n">RelaxModule</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</pre></div>
+</div>
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from tvm.script import ir as I
+# from tvm.script import tir as T
+# from tvm.script import relax as R
+
+@I.ir_module
+class Module:
+    @R.function
+    def forward(data: R.Tensor((&quot;n&quot;, 784), dtype=&quot;float32&quot;), w0: R.Tensor((128, 784), dtype=&quot;float32&quot;), b0: R.Tensor((128,), dtype=&quot;float32&quot;), w1: R.Tensor((10, 128), dtype=&quot;float32&quot;), b1: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((&quot;n&quot;, 10), dtype=&quot;float32&quot;):
+        n = T.int64()
+        with R.dataflow():
+            lv: R.Tensor((784, 128), dtype=&quot;float32&quot;) = R.permute_dims(w0, axes=None)
+            lv1: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.matmul(data, lv, out_dtype=&quot;void&quot;)
+            lv0: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.add(lv1, b0)
+            lv1_1: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.nn.relu(lv0)
+            lv4: R.Tensor((128, 10), dtype=&quot;float32&quot;) = R.permute_dims(w1, axes=None)
+            lv5: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.matmul(lv1_1, lv4, out_dtype=&quot;void&quot;)
+            lv2: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.add(lv5, b1)
+            R.output(lv2)
+        return lv2
+</pre></div>
+</div>
+<p>Relax is not only a graph-level IR, but also supports cross-level
+representation and transformation. To be specific, we can directly call
+TensorIR functions in Relax function.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@I</span><span class="o">.</span><span class="n">ir_module</span>
+<span class="k">class</span> <span class="nc">RelaxModuleWithTIR</span><span class="p">:</span>
+    <span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span>
+    <span class="k">def</span> <span class="nf">relu</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class=" [...]
+        <a href="../../../reference/api/python/tir/tir.html#tvm.tir.Var" title="tvm.tir.Var" class="sphx-glr-backref-module-tvm-tir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a><span class="p">,</span> <span class="n">m</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
+        <span class="n">X</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">,</span> <span class="p">(</span><a href="../../../reference/api/python/tir/tir.html#tvm.ti [...]
+        <span class="n">Y</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="p">(</span><a href="../../../reference/api/python/tir/tir.html#tvm.tir.Var" title="tvm.tir.Var" class="sphx-glr-backref-module-tvm-tir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a><span class="p">,</span> <span class="n">m</ [...]
+        <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><a href="../../../reference/api/python/tir/tir.html#tvm.tir.Var" title="tvm.tir.Var" class="sphx-glr-backref-module-tvm-tir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a><span class="p">,</span> <span class="n">m</spa [...]
+            <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">block</span><span class="p">(</span><span class="s2">&quot;relu&quot;</span><span class="p">):</span>
+                <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">&quot;SS&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
+                <span class="n">Y</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">X</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">],</span> <span class="n">T</span><span class="o">.</span><span cl [...]
+
+    <span class="nd">@R</span><span class="o">.</span><span class="n">function</span>
+    <span class="k">def</span> <span class="nf">forward</span><span class="p">(</span>
+        <span class="n">data</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">&quot;n&quot;</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+        <span class="n">w0</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+        <span class="n">b0</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+        <span class="n">w1</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">10</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+        <span class="n">b1</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">10</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">),</span>
+    <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">&quot;n&quot;</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">):</span>
+        <a href="../../../reference/api/python/tir/tir.html#tvm.tir.Var" title="tvm.tir.Var" class="sphx-glr-backref-module-tvm-tir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
+        <span class="bp">cls</span> <span class="o">=</span> <span class="n">RelaxModuleWithTIR</span>
+        <span class="k">with</span> <span class="n">R</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
+            <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">R</span><span class="o">.</span><span class="n" [...]
+            <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">relu</span><span class="p">,</span> <a href=". [...]
+            <span class="n">lv2</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a><span class="p">,</span> <span class="n">R</span><span class="o">.</span><span class="n"> [...]
+            <span class="n">R</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">lv2</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">lv2</span>
+
+
+<span class="n">RelaxModuleWithTIR</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</pre></div>
+</div>
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from tvm.script import ir as I
+# from tvm.script import tir as T
+# from tvm.script import relax as R
+
+@I.ir_module
+class Module:
+    @T.prim_func
+    def relu(x: T.handle, y: T.handle):
+        n, m = T.int64(), T.int64()
+        X = T.match_buffer(x, (n, m))
+        Y = T.match_buffer(y, (n, m))
+        # with T.block(&quot;root&quot;):
+        for i, j in T.grid(n, m):
+            with T.block(&quot;relu&quot;):
+                vi, vj = T.axis.remap(&quot;SS&quot;, [i, j])
+                T.reads(X[vi, vj])
+                T.writes(Y[vi, vj])
+                Y[vi, vj] = T.max(X[vi, vj], T.float32(0.0))
+
+    @R.function
+    def forward(data: R.Tensor((&quot;n&quot;, 784), dtype=&quot;float32&quot;), w0: R.Tensor((128, 784), dtype=&quot;float32&quot;), b0: R.Tensor((128,), dtype=&quot;float32&quot;), w1: R.Tensor((10, 128), dtype=&quot;float32&quot;), b1: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((&quot;n&quot;, 10), dtype=&quot;float32&quot;):
+        n = T.int64()
+        cls = Module
+        with R.dataflow():
+            lv: R.Tensor((784, 128), dtype=&quot;float32&quot;) = R.permute_dims(w0, axes=None)
+            lv1: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.matmul(data, lv, out_dtype=&quot;void&quot;)
+            lv0: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.add(lv1, b0)
+            lv1_1 = R.call_tir(cls.relu, (lv0,), out_sinfo=R.Tensor((n, 128), dtype=&quot;float32&quot;))
+            lv4: R.Tensor((128, 10), dtype=&quot;float32&quot;) = R.permute_dims(w1, axes=None)
+            lv5: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.matmul(lv1_1, lv4, out_dtype=&quot;void&quot;)
+            lv2: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.add(lv5, b1)
+            R.output(lv2)
+        return lv2
+</pre></div>
+</div>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>You may notice that the printed output is different from the written
+TVMScript code. This is because we print the IRModule in a standard
+format, while we support syntax sugar for the input</p>
+<p>For example, we can combine multiple operators into a single line, as</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">data</span><span class="p">, [...]
+</pre></div>
+</div>
+<p>However, the normalized expression requires only one operation in one
+binding. So the printed output is different from the written TVMScript code,
+as</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">lv</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">784</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span><span class="p">)</span> <span class="o">=</span> <span c [...]
+<a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><a href="../../../reference/api/python/tir/tir.html#tvm.tir.Var" title="tvm.tir.Var" class="sphx-glr-backref-module-tvm-tir sph [...]
+<a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><a href="../../../reference/api/python/tir/tir.html#tvm.tir.Var" title="tvm.tir.Var" class="sphx-glr-backref-module-tvm-tir sph [...]
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="create-relax-programs-using-nnmodule-api">
+<h2>Create Relax programs using NNModule API<a class="headerlink" href="#create-relax-programs-using-nnmodule-api" title="Permalink to this headline">¶</a></h2>
+<p>Besides TVMScript, we also provide a PyTorch-like API for defining neural networks.
+It is designed to be more intuitive and easier to use than TVMScript.</p>
+<p>In this section, we will show how to define the same MLP model using
+Relax NNModule API.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">tvm.relax.frontend</span> <span class="kn">import</span> <span class="n">nn</span>
+
+
+<span class="k">class</span> <span class="nc">NNModule</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">fc1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">784</span><span class="p">,</span> <span class="mi">128</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">relu1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">fc2</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">):</span>
+        <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fc1</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sp [...]
+        <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">relu1</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax  [...]
+        <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fc2</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sp [...]
+        <span class="k">return</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a>
+</pre></div>
+</div>
+<p>After we define the NNModule, we can export it to TVM IRModule via
+<code class="docutils literal notranslate"><span class="pre">export_tvm</span></code>.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mod</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#list" title="builtins.list" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">params</span></a> <span class="o">=</span> <span class="n">NNModule</span><span class="p">()</span><span class="o">.</span><span class="n">export_tvm</span><s [...]
+<span class="n">mod</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</pre></div>
+</div>
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from tvm.script import ir as I
+# from tvm.script import tir as T
+# from tvm.script import relax as R
+
+@I.ir_module
+class Module:
+    @R.function
+    def forward(x: R.Tensor((&quot;n&quot;, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((&quot;n&quot;, 10), dtype=&quot;float32&quot;):
+        n = T.int64()
+        R.func_attr({&quot;num_input&quot;: 1})
+        with R.dataflow():
+            permute_dims: R.Tensor((784, 128), dtype=&quot;float32&quot;) = R.permute_dims(fc1_weight, axes=None)
+            matmul: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.matmul(x, permute_dims, out_dtype=&quot;void&quot;)
+            add: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.add(matmul, fc1_bias)
+            relu: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.nn.relu(add)
+            permute_dims1: R.Tensor((128, 10), dtype=&quot;float32&quot;) = R.permute_dims(fc2_weight, axes=None)
+            matmul1: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.matmul(relu, permute_dims1, out_dtype=&quot;void&quot;)
+            add1: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.add(matmul1, fc2_bias)
+            gv: R.Tensor((n, 10), dtype=&quot;float32&quot;) = add1
+            R.output(gv)
+        return gv
+</pre></div>
+</div>
+<p>We can also insert customized function calls into the NNModule, such as
+Tensor Expression(TE), TensorIR functions or other TVM packed functions.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span>
+<span class="k">def</span> <span class="nf">tir_linear</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">w</span><span class="p">:</span> <span class [...]
+    <span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">,</span> <span class="n">K</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
+    <span class="n">X</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">,</span> <span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class=" [...]
+    <span class="n">W</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">w</span><span class="p">,</span> <span class="p">(</span><span class="n">N</span><span class="p">,</span> <span class="n">K</span><span class="p">),</span> <span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+    <span class="n">B</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="p">(</span><span class="n">N</span><span class="p">,),</span> <span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+    <span class="n">Z</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">),</span> <span class="s2">&quot;float32&quot;</span><span class="p">)</span>
+    <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">,</span> <span class="n">K</span><span class="p">):</span>
+        <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">block</span><span class="p">(</span><span class="s2">&quot;linear&quot;</span><span class="p">):</span>
+            <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">&quot;SSR&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">, [...]
+            <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">init</span><span class="p">():</span>
+                <span class="n">Z</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
+            <span class="n">Z</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">Z</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">+</span> <span class="n">X</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vk</span><span class [...]
+    <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">):</span>
+        <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">block</span><span class="p">(</span><span class="s2">&quot;add&quot;</span><span class="p">):</span>
+            <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">&quot;SS&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
+            <span class="n">Z</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">Z</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">+</span> <span class="n">B</span><span class="p">[</span><span class="n">vj</span><span class="p">]</span>
+
+
+<span class="k">class</span> <span class="nc">NNModuleWithTIR</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">fc1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">784</span><span class="p">,</span> <span class="mi">128</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">fc2</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">):</span>
+        <a href="../../../reference/api/python/tir/tir.html#tvm.tir.Var" title="tvm.tir.Var" class="sphx-glr-backref-module-tvm-tir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a> <span class="o">=</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="o">.</span><spa [...]
+        <span class="c1"># We can call external functions using nn.extern</span>
+        <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">extern</span><span class="p">(</span>
+            <span class="s2">&quot;env.linear&quot;</span><span class="p">,</span>
+            <span class="p">[</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fc1</span><span class="o">.</span><span class="n">weight</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><sp [...]
+            <span class="n">out</span><span class="o">=</span><span class="n">nn</span><span class="o">.</span><span class="n">Tensor</span><span class="o">.</span><span class="n">placeholder</span><span class="p">((</span><a href="../../../reference/api/python/tir/tir.html#tvm.tir.Var" title="tvm.tir.Var" class="sphx-glr-backref-module-tvm-tir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a><span class="p">,</span> <span class="mi">128</span><span c [...]
+        <span class="p">)</span>
+        <span class="c1"># We can also call TensorIR via Tensor Expression API in TOPI</span>
+        <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">tensor_expr_op</span><span class="p">(</span><a href="../../../reference/api/python/topi.html#tvm.topi.nn.relu" title="tvm.topi.nn.relu" class="sphx-glr-backref-module-tvm-t [...]
+        <span class="c1"># We can also call other TVM packed functions</span>
+        <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">tensor_ir_op</span><span class="p">(</span>
+            <a href="../../../reference/api/python/tir/tir.html#tvm.tir.PrimFunc" title="tvm.tir.PrimFunc" class="sphx-glr-backref-module-tvm-tir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">tir_linear</span></a><span class="p">,</span>
+            <span class="s2">&quot;tir_linear&quot;</span><span class="p">,</span>
+            <span class="p">[</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fc2</span><span class="o">.</span><span class="n">weight</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><sp [...]
+            <span class="n">out</span><span class="o">=</span><span class="n">nn</span><span class="o">.</span><span class="n">Tensor</span><span class="o">.</span><span class="n">placeholder</span><span class="p">((</span><a href="../../../reference/api/python/tir/tir.html#tvm.tir.Var" title="tvm.tir.Var" class="sphx-glr-backref-module-tvm-tir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a><span class="p">,</span> <span class="mi">10</span><span cl [...]
+        <span class="p">)</span>
+        <span class="k">return</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a>
+
+
+<span class="n">mod</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#list" title="builtins.list" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">params</span></a> <span class="o">=</span> <span class="n">NNModuleWithTIR</span><span class="p">()</span><span class="o">.</span><span class="n">export_tvm</span><span class="p">(</span>
+    <span class="p">{</span><span class="s2">&quot;forward&quot;</span><span class="p">:</span> <span class="p">{</span><span class="s2">&quot;x&quot;</span><span class="p">:</span> <span class="n">nn</span><span class="o">.</span><span class="n">spec</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">&quot;n&quot;</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="s2">&quot;float32&quot;</spa [...]
+<span class="p">)</span>
+<span class="n">mod</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</pre></div>
+</div>
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from tvm.script import ir as I
+# from tvm.script import tir as T
+# from tvm.script import relax as R
+
+@I.ir_module
+class Module:
+    @T.prim_func(private=True)
+    def relu(var_env_linear: T.handle, var_compute: T.handle):
+        T.func_attr({&quot;tir.noalias&quot;: T.bool(True)})
+        n = T.int64()
+        env_linear = T.match_buffer(var_env_linear, (n, T.int64(128)))
+        compute = T.match_buffer(var_compute, (n, T.int64(128)))
+        # with T.block(&quot;root&quot;):
+        for i0, i1 in T.grid(n, T.int64(128)):
+            with T.block(&quot;compute&quot;):
+                v_i0, v_i1 = T.axis.remap(&quot;SS&quot;, [i0, i1])
+                T.reads(env_linear[v_i0, v_i1])
+                T.writes(compute[v_i0, v_i1])
+                compute[v_i0, v_i1] = T.max(env_linear[v_i0, v_i1], T.float32(0.0))
+
+    @T.prim_func
+    def tir_linear(x: T.handle, w: T.handle, b: T.handle, z: T.handle):
+        M, K = T.int64(), T.int64()
+        X = T.match_buffer(x, (M, K))
+        N = T.int64()
+        W = T.match_buffer(w, (N, K))
+        B = T.match_buffer(b, (N,))
+        Z = T.match_buffer(z, (M, N))
+        # with T.block(&quot;root&quot;):
+        for i, j, k in T.grid(M, N, K):
+            with T.block(&quot;linear&quot;):
+                vi, vj, vk = T.axis.remap(&quot;SSR&quot;, [i, j, k])
+                T.reads(X[vi, vk], W[vj, vk])
+                T.writes(Z[vi, vj])
+                with T.init():
+                    Z[vi, vj] = T.float32(0.0)
+                Z[vi, vj] = Z[vi, vj] + X[vi, vk] * W[vj, vk]
+        for i, j in T.grid(M, N):
+            with T.block(&quot;add&quot;):
+                vi, vj = T.axis.remap(&quot;SS&quot;, [i, j])
+                T.reads(Z[vi, vj], B[vj])
+                T.writes(Z[vi, vj])
+                Z[vi, vj] = Z[vi, vj] + B[vj]
+
+    @R.function
+    def forward(x: R.Tensor((&quot;n&quot;, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((&quot;n&quot;, 10), dtype=&quot;float32&quot;):
+        n = T.int64()
+        R.func_attr({&quot;num_input&quot;: 1})
+        cls = Module
+        with R.dataflow():
+            env_linear = R.call_dps_packed(&quot;env.linear&quot;, (x, fc1_weight, fc1_bias), out_sinfo=R.Tensor((n, 128), dtype=&quot;float32&quot;))
+            lv = R.call_tir(cls.relu, (env_linear,), out_sinfo=R.Tensor((n, 128), dtype=&quot;float32&quot;))
+            lv1 = R.call_tir(cls.tir_linear, (lv, fc2_weight, fc2_bias), out_sinfo=R.Tensor((n, 10), dtype=&quot;float32&quot;))
+            gv: R.Tensor((n, 10), dtype=&quot;float32&quot;) = lv1
+            R.output(gv)
+        return gv
+</pre></div>
+</div>
+</div>
+<div class="section" id="create-relax-programs-using-block-builder-api">
+<h2>Create Relax programs using Block Builder API<a class="headerlink" href="#create-relax-programs-using-block-builder-api" title="Permalink to this headline">¶</a></h2>
+<p>In addition to the above APIs, we also provide a Block Builder API for
+creating Relax programs. It is a IR builder API, which is more
+low-level and widely used in TVM’s internal logic, e.g writing a
+customized pass.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">bb</span> <span class="o">=</span> <span class="n">relax</span><span class="o">.</span><span class="n">BlockBuilder</span><span class="p">()</span>
+<a href="../../../reference/api/python/tir/tir.html#tvm.tir.Var" title="tvm.tir.Var" class="sphx-glr-backref-module-tvm-tir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
+<a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a> <span class="o">=</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var</span></ [...]
+<a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">fc1_weight</span></a> <span class="o">=</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var [...]
+<a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">fc1_bias</span></a> <span class="o">=</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var</ [...]
+<a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">fc2_weight</span></a> <span class="o">=</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var [...]
+<a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">fc2_bias</span></a> <span class="o">=</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var</ [...]
+<span class="k">with</span> <span class="n">bb</span><span class="o">.</span><span class="n">function</span><span class="p">(</span><span class="s2">&quot;forward&quot;</span><span class="p">,</span> <span class="p">[</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">,</span> <a href="../../../refer [...]
+    <span class="k">with</span> <span class="n">bb</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
+        <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a> <span class="o">=</span> <span class="n">bb</span><span class="o">.</span><span class="n">emit</span><span class="p">(</span><a href="../../../reference/api/python/relax/op.html#tvm.relax.op.matmul" title="tvm.relax.op.matmul" class="sphx-glr-ba [...]
+        <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a> <span class="o">=</span> <span class="n">bb</span><span class="o">.</span><span class="n">emit</span><span class="p">(</span><a href="../../../reference/api/python/relax/op.html#tvm.relax.op.nn.relu" title="tvm.relax.op.nn.relu" class="sphx-glr- [...]
+        <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">gv</span></a> <span class="o">=</span> <span class="n">bb</span><span class="o">.</span><span class="n">emit</span><span class="p">(</span><a href="../../../reference/api/python/relax/op.html#tvm.relax.op.matmul" title="tvm.relax.op.matmul" class="sphx-glr-bac [...]
+        <span class="n">bb</span><span class="o">.</span><span class="n">emit_output</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">gv</span></a><span class="p">)</span>
+    <span class="n">bb</span><span class="o">.</span><span class="n">emit_func_output</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">gv</span></a><span class="p">)</span>
+
+<span class="n">mod</span> <span class="o">=</span> <span class="n">bb</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
+<span class="n">mod</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</pre></div>
+</div>
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from tvm.script import ir as I
+# from tvm.script import tir as T
+# from tvm.script import relax as R
+
+@I.ir_module
+class Module:
+    @R.function
+    def forward(x: R.Tensor((&quot;v&quot;, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((&quot;v&quot;, 10), dtype=&quot;float32&quot;):
+        v = T.int64()
+        with R.dataflow():
+            lv: R.Tensor((784, 128), dtype=&quot;float32&quot;) = R.permute_dims(fc1_weight, axes=None)
+            lv1: R.Tensor((v, 128), dtype=&quot;float32&quot;) = R.matmul(x, lv, out_dtype=&quot;void&quot;)
+            lv2: R.Tensor((v, 128), dtype=&quot;float32&quot;) = R.add(lv1, fc1_bias)
+            lv3: R.Tensor((v, 128), dtype=&quot;float32&quot;) = R.nn.relu(lv2)
+            lv4: R.Tensor((128, 10), dtype=&quot;float32&quot;) = R.permute_dims(fc2_weight, axes=None)
+            lv5: R.Tensor((v, 10), dtype=&quot;float32&quot;) = R.matmul(lv3, lv4, out_dtype=&quot;void&quot;)
+            lv6: R.Tensor((v, 10), dtype=&quot;float32&quot;) = R.add(lv5, fc2_bias)
+            gv: R.Tensor((v, 10), dtype=&quot;float32&quot;) = lv6
+            R.output(gv)
+        return lv6
+</pre></div>
+</div>
+<p>Also, Block Builder API supports building cross-level IRModule with both
+Relax functions, TensorIR functions and other TVM packed functions.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">bb</span> <span class="o">=</span> <span class="n">relax</span><span class="o">.</span><span class="n">BlockBuilder</span><span class="p">()</span>
+<span class="k">with</span> <span class="n">bb</span><span class="o">.</span><span class="n">function</span><span class="p">(</span><span class="s2">&quot;forward&quot;</span><span class="p">,</span> <span class="p">[</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">,</span> <a href="../../../refer [...]
+    <span class="k">with</span> <span class="n">bb</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
+        <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a> <span class="o">=</span> <span class="n">bb</span><span class="o">.</span><span class="n">emit</span><span class="p">(</span>
+            <a href="../../../reference/api/python/relax/relax.html#tvm.relax.call_dps_packed" title="tvm.relax.call_dps_packed" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-function"><span class="n">relax</span><span class="o">.</span><span class="n">call_dps_packed</span></a><span class="p">(</span>
+                <span class="s2">&quot;env.linear&quot;</span><span class="p">,</span>
+                <span class="p">[</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">,</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n" [...]
+                <span class="n">out_sinfo</span><span class="o">=</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.TensorStructInfo" title="tvm.relax.TensorStructInfo" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">TensorStructInfo</span></a><span class="p">((</span><a href="../../../reference/api/python/tir/tir.html#tvm.tir.Var" title="tvm.tir.Var" class="sphx-glr-backref [...]
+            <span class="p">)</span>
+        <span class="p">)</span>
+        <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a> <span class="o">=</span> <span class="n">bb</span><span class="o">.</span><span class="n">emit_te</span><span class="p">(</span><a href="../../../reference/api/python/topi.html#tvm.topi.nn.relu" title="tvm.topi.nn.relu" class="sphx-glr-backref-m [...]
+        <a href="../../../reference/api/python/ir.html#tvm.ir.GlobalVar" title="tvm.ir.GlobalVar" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">tir_gv</span></a> <span class="o">=</span> <span class="n">bb</span><span class="o">.</span><span class="n">add_func</span><span class="p">(</span><a href="../../../reference/api/python/tir/tir.html#tvm.tir.PrimFunc" title="tvm.tir.PrimFunc" class="sphx-glr-backref-module-tvm-tir s [...]
+        <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">gv</span></a> <span class="o">=</span> <span class="n">bb</span><span class="o">.</span><span class="n">emit</span><span class="p">(</span>
+            <a href="../../../reference/api/python/relax/relax.html#tvm.relax.call_tir" title="tvm.relax.call_tir" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-function"><span class="n">relax</span><span class="o">.</span><span class="n">call_tir</span></a><span class="p">(</span>
+                <a href="../../../reference/api/python/ir.html#tvm.ir.GlobalVar" title="tvm.ir.GlobalVar" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">tir_gv</span></a><span class="p">,</span>
+                <span class="p">[</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a><span class="p">,</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Var" title="tvm.relax.Var" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instanc [...]
+                <span class="n">out_sinfo</span><span class="o">=</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.TensorStructInfo" title="tvm.relax.TensorStructInfo" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">TensorStructInfo</span></a><span class="p">((</span><a href="../../../reference/api/python/tir/tir.html#tvm.tir.Var" title="tvm.tir.Var" class="sphx-glr-backref [...]
+            <span class="p">)</span>
+        <span class="p">)</span>
+        <span class="n">bb</span><span class="o">.</span><span class="n">emit_output</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">gv</span></a><span class="p">)</span>
+    <span class="n">bb</span><span class="o">.</span><span class="n">emit_func_output</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">gv</span></a><span class="p">)</span>
+<span class="n">mod</span> <span class="o">=</span> <span class="n">bb</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
+<span class="n">mod</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</pre></div>
+</div>
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from tvm.script import ir as I
+# from tvm.script import tir as T
+# from tvm.script import relax as R
+
+@I.ir_module
+class Module:
+    @T.prim_func(private=True)
+    def relu(var_lv: T.handle, var_compute: T.handle):
+        T.func_attr({&quot;tir.noalias&quot;: T.bool(True)})
+        v = T.int64()
+        lv = T.match_buffer(var_lv, (v, T.int64(128)))
+        compute = T.match_buffer(var_compute, (v, T.int64(128)))
+        # with T.block(&quot;root&quot;):
+        for i0, i1 in T.grid(v, T.int64(128)):
+            with T.block(&quot;compute&quot;):
+                v_i0, v_i1 = T.axis.remap(&quot;SS&quot;, [i0, i1])
+                T.reads(lv[v_i0, v_i1])
+                T.writes(compute[v_i0, v_i1])
+                compute[v_i0, v_i1] = T.max(lv[v_i0, v_i1], T.float32(0.0))
+
+    @T.prim_func
+    def tir_linear(x: T.handle, w: T.handle, b: T.handle, z: T.handle):
+        M, K = T.int64(), T.int64()
+        X = T.match_buffer(x, (M, K))
+        N = T.int64()
+        W = T.match_buffer(w, (N, K))
+        B = T.match_buffer(b, (N,))
+        Z = T.match_buffer(z, (M, N))
+        # with T.block(&quot;root&quot;):
+        for i, j, k in T.grid(M, N, K):
+            with T.block(&quot;linear&quot;):
+                vi, vj, vk = T.axis.remap(&quot;SSR&quot;, [i, j, k])
+                T.reads(X[vi, vk], W[vj, vk])
+                T.writes(Z[vi, vj])
+                with T.init():
+                    Z[vi, vj] = T.float32(0.0)
+                Z[vi, vj] = Z[vi, vj] + X[vi, vk] * W[vj, vk]
+        for i, j in T.grid(M, N):
+            with T.block(&quot;add&quot;):
+                vi, vj = T.axis.remap(&quot;SS&quot;, [i, j])
+                T.reads(Z[vi, vj], B[vj])
+                T.writes(Z[vi, vj])
+                Z[vi, vj] = Z[vi, vj] + B[vj]
+
+    @R.function
+    def forward(x: R.Tensor((&quot;v&quot;, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((&quot;v&quot;, 10), dtype=&quot;float32&quot;):
+        v = T.int64()
+        cls = Module
+        with R.dataflow():
+            lv = R.call_dps_packed(&quot;env.linear&quot;, (x, fc1_weight, fc1_bias), out_sinfo=R.Tensor((v, 128), dtype=&quot;float32&quot;))
+            lv1 = R.call_tir(cls.relu, (lv,), out_sinfo=R.Tensor((v, 128), dtype=&quot;float32&quot;))
+            lv2 = R.call_tir(cls.tir_linear, (lv1, fc2_weight, fc2_bias), out_sinfo=R.Tensor((v, 10), dtype=&quot;float32&quot;))
+            gv: R.Tensor((v, 10), dtype=&quot;float32&quot;) = lv2
+            R.output(gv)
+        return lv2
+</pre></div>
+</div>
+<p>Note that the Block Builder API is not as user-friendly as the above APIs,
+but it is lowest-level API and works closely with the IR definition. We
+recommend using the above APIs for users who only want to define and
+transform a ML model. But for those who want to build more complex
+transformations, the Block Builder API is a more flexible choice.</p>
+</div>
+<div class="section" id="summary">
+<h2>Summary<a class="headerlink" href="#summary" title="Permalink to this headline">¶</a></h2>
+<p>This tutorial demonstrates how to create Relax programs using TVMScript,
+NNModule API, Block Builder API and PackedFunc API for different use cases.</p>
+<div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-deep-dive-relax-tutorials-relax-creation-py">
+<div class="sphx-glr-download sphx-glr-download-python docutils container">
+<p><a class="reference download internal" download="" href="../../../_downloads/a67d9d8c1ea48d5e0c95591f8c9bfd6f/relax_creation.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">relax_creation.py</span></code></a></p>
+</div>
+<div class="sphx-glr-download sphx-glr-download-jupyter docutils container">
+<p><a class="reference download internal" download="" href="../../../_downloads/315fcda965a8d605f81705edf19ea2c6/relax_creation.ipynb"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Jupyter</span> <span class="pre">notebook:</span> <span class="pre">relax_creation.ipynb</span></code></a></p>
+</div>
+</div>
+<p class="sphx-glr-signature"><a class="reference external" href="https://sphinx-gallery.github.io">Gallery generated by Sphinx-Gallery</a></p>
+</div>
+</div>
+
+
+           </div>
+           
+          </div>
+          
+
+<footer>
+
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="relax_transformation.html" class="btn btn-neutral float-right" title="Transformation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="../learning.html" class="btn btn-neutral float-left" title="Understand Relax Abstraction" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+
+<div id="button" class="backtop"><img src="../../../_static/img/right.svg" alt="backtop"/> </div>
+<section class="footerSec">
+    <div class="footerHeader">
+      <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
+        <div class="copywrite d-flex align-items-center">
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
+        </div>
+      </div>
+
+    </div>
+
+    <div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+    </div>
+
+</section>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
+
+  </body>
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+    <!-- Theme Analytics -->
+    <script>
+    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+    ga('create', 'UA-75982049-2', 'auto');
+    ga('send', 'pageview');
+    </script>
+
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/deep_dive/relax/tutorials/relax_transformation.html b/docs/deep_dive/relax/tutorials/relax_transformation.html
new file mode 100644
index 0000000000..6bed1e2bfc
--- /dev/null
+++ b/docs/deep_dive/relax/tutorials/relax_transformation.html
@@ -0,0 +1,842 @@
+
+
+
+
+
+
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Transformation &mdash; tvm 0.18.dev0 documentation</title>
+  
+
+  
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
+  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/sg_gallery.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/sg_gallery-binder.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/sg_gallery-dataframe.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/sg_gallery-rendered-html.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/css/tlcpack_theme.css" type="text/css" />
+
+  
+  
+    <link rel="shortcut icon" href="../../../_static/tvm-logo-square.png"/>
+  
+
+  
+  
+  
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
+        <script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
+        <script src="../../../_static/jquery.js"></script>
+        <script src="../../../_static/underscore.js"></script>
+        <script src="../../../_static/doctools.js"></script>
+    
+    <script type="text/javascript" src="../../../_static/js/theme.js"></script>
+
+    
+    <script type="text/javascript" src="../../../_static/js/tlcpack_theme.js"></script>
+    <link rel="index" title="Index" href="../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../search.html" />
+    <link rel="next" title="Python API" href="../../../reference/api/python/index.html" />
+    <link rel="prev" title="Relax Creation" href="relax_creation.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    
+<header class="header">
+    <div class="innercontainer">
+      <div class="headerInner d-flex justify-content-between align-items-center">
+          <div class="headerLogo">
+               <a href="https://tvm.apache.org/"><img src=https://tvm.apache.org/assets/images/logo.svg alt="logo"></a>
+          </div>
+
+          <div id="headMenu" class="headerNav">
+            <button type="button" id="closeHeadMenu" class="navCloseBtn"><img src="../../../_static/img/close-icon.svg" alt="Close"></button>
+             <ul class="nav">
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/community>Community</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/docs>Docs</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvmconf.org>Conference</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://github.com/apache/tvm/>Github</a>
+                </li>
+             </ul>
+               <div class="responsivetlcdropdown">
+                 <button type="button" class="btn-link">
+                   ASF
+                 </button>
+                 <ul>
+                     <li>
+                       <a href=https://apache.org/>Apache Homepage</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/licenses/>License</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a>
+                     </li>
+                     <li>
+                       <a href=https://tvm.apache.org/docs/reference/security.html>Security</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/thanks.html>Thanks</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/events/current-event>Events</a>
+                     </li>
+                 </ul>
+               </div>
+          </div>
+            <div class="responsiveMenuIcon">
+              <button type="button" id="menuBtn" class="btn-menu"><img src="../../../_static/img/menu-icon.svg" alt="Menu Icon"></button>
+            </div>
+
+            <div class="tlcDropdown">
+              <div class="dropdown">
+                <button type="button" class="btn-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                  ASF
+                </button>
+                <div class="dropdown-menu dropdown-menu-right">
+                  <ul>
+                     <li>
+                       <a href=https://apache.org/>Apache Homepage</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/licenses/>License</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a>
+                     </li>
+                     <li>
+                       <a href=https://tvm.apache.org/docs/reference/security.html>Security</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/thanks.html>Thanks</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/events/current-event>Events</a>
+                     </li>
+                  </ul>
+                </div>
+              </div>
+          </div>
+       </div>
+    </div>
+ </header>
+ 
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side fixed">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../index.html">
+          
+
+          
+            
+            <img src="../../../_static/tvm-logo-small.png" class="logo" alt="Logo"/>
+          
+          </a>
+
+          
+            
+            
+              <input type="checkbox" class="version-toggle-box" hidden id="version-toggle">
+              <label for="version-toggle" class="version-toggle-label">
+                  <div tabindex="0" class="version version-selector version-selector-show">
+                    0.18.dev0 <span class="chevron versions-hidden"><svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m8 4 8 8-8 8" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg></span><span class="chevron versions-shown"><svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m4 8 8 8 8-8" stroke="#000" stroke-linecap="round" stroke-linejoin="round [...]
+                  </div>
+                </label>
+                <div class="version-details wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+                  <p class="caption" role="heading"><span class="caption-text">Versions</span></p>
+                  <ol style="text-align: left">
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="/">0.18.dev0 (main)</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.8.0/">v0.8.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.9.0/">v0.9.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.10.0/">v0.10.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.11.0/">v0.11.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.12.0/">v0.12.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.13.0/">v0.13.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.14.0/">v0.14.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.15.0/">v0.15.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.16.0/">v0.16.0</a></div></li>
+                    
+                  </ol>
+                </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption" role="heading"><span class="caption-text">Getting Started</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../get_started/overview.html">Overview</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../install/index.html">Installing TVM</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../get_started/tutorials/quick_start.html">Quick Start</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../get_started/tutorials/ir_module.html">IRModule</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">How To</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../how_to/tutorials/e2e_opt_model.html">End-to-End Optimize Model</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../how_to/tutorials/customize_opt.html">Customize Optimization</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../how_to/tutorials/optimize_llm.html">Optimize Large Language Model</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../how_to/tutorials/cross_compilation_and_rpc.html">Cross Compilation and RPC</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../how_to/dev/index.html">Development Guides</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Relax</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../reference/api/python/index.html">Python API</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../reference/api/links.html">Other APIs</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Legacy</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../tutorial/index.html">User Tutorial</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../how_to/legacy_index.html">How To Guides</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../dev/tutorial/index.html">Developer Tutorial</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../dev/how_to/how_to.html">Developer How-To Guide</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../reference/langref/index.html">Language Reference</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../arch/index.html">Design and Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../topic/microtvm/index.html">microTVM: TVM on bare-metal</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../topic/vta/index.html">VTA: Versatile Tensor Accelerator</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">About</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../contribute/index.html">Contributor Guide</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../reference/publications.html">Publications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../reference/security.html">Security Guide</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Index</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../genindex.html">Index</a></li>
+</ul>
+
+            
+          
+        </div>
+        
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+      
+      <nav class="wy-nav-top" aria-label="top navigation" data-toggle="wy-nav-top">
+        
+            <div class="togglemenu">
+
+            </div>
+            <div class="nav-content">
+              <!-- tvm -->
+              Table of Contents
+            </div>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../index.html">Docs</a> <span class="br-arrow">></span></li>
+        
+          <li><a href="../index.html">Relax</a> <span class="br-arrow">></span></li>
+        
+      <li>Transformation</li>
+    
+    
+      
+      
+        
+      
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            
+              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/relax/tutorials/relax_transformation.rst" class="fa fa-github"> Edit on GitHub</a>
+            
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="sphx-glr-download-link-note admonition note">
+<p class="admonition-title">Note</p>
+<p>This tutorial can be used interactively with Google Colab! You can also click
+<a class="reference internal" href="#sphx-glr-download-deep-dive-relax-tutorials-relax-transformation-py"><span class="std std-ref">here</span></a> to run the Jupyter notebook locally.</p>
+<a class="reference external image-reference" href="https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/31d077cfa7c55c0edcd16ad5d4faf483/relax_transformation.ipynb"><img alt="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg" class="align-center" src="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg" width="300px" /></a>
+</div>
+<div class="sphx-glr-example-title section" id="transformation">
+<span id="relax-transform"></span><span id="sphx-glr-deep-dive-relax-tutorials-relax-transformation-py"></span><h1>Transformation<a class="headerlink" href="#transformation" title="Permalink to this headline">¶</a></h1>
+<p>In this section, we will dive into the transformation of Relax programs.
+Transformations is one of the key ingredients of the compilation flows
+for optimizing and integrating with hardware backends.</p>
+<p>Let’s first create a simple Relax program as what we have done in
+the <a class="reference internal" href="relax_creation.html#relax-creation"><span class="std std-ref">previous section</span></a>.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">tvm</span>
+<span class="kn">from</span> <span class="nn">tvm</span> <span class="kn">import</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Node" title="tvm.ir.Node" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class"><span class="n">IRModule</span></a><span class="p">,</span> <span class="n">relax</span>
+<span class="kn">from</span> <span class="nn">tvm.relax.frontend</span> <span class="kn">import</span> <span class="n">nn</span>
+
+
+<span class="k">class</span> <span class="nc">NNModule</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">fc1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">784</span><span class="p">,</span> <span class="mi">128</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">relu1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">fc2</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
+        <span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fc1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
+        <span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">relu1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
+        <span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fc2</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">x</span>
+
+
+<span class="n">origin_mod</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#list" title="builtins.list" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">params</span></a> <span class="o">=</span> <span class="n">NNModule</span><span class="p">()</span><span class="o">.</span><span class="n">export_tvm</span><span class="p">(</span>
+    <span class="p">{</span><span class="s2">&quot;forward&quot;</span><span class="p">:</span> <span class="p">{</span><span class="s2">&quot;x&quot;</span><span class="p">:</span> <span class="n">nn</span><span class="o">.</span><span class="n">spec</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">&quot;n&quot;</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="s2">&quot;float32&quot;</spa [...]
+<span class="p">)</span>
+<span class="n">origin_mod</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</pre></div>
+</div>
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from tvm.script import ir as I
+# from tvm.script import tir as T
+# from tvm.script import relax as R
+
+@I.ir_module
+class Module:
+    @R.function
+    def forward(x: R.Tensor((&quot;n&quot;, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((&quot;n&quot;, 10), dtype=&quot;float32&quot;):
+        n = T.int64()
+        R.func_attr({&quot;num_input&quot;: 1})
+        with R.dataflow():
+            permute_dims: R.Tensor((784, 128), dtype=&quot;float32&quot;) = R.permute_dims(fc1_weight, axes=None)
+            matmul: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.matmul(x, permute_dims, out_dtype=&quot;void&quot;)
+            add: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.add(matmul, fc1_bias)
+            relu: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.nn.relu(add)
+            permute_dims1: R.Tensor((128, 10), dtype=&quot;float32&quot;) = R.permute_dims(fc2_weight, axes=None)
+            matmul1: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.matmul(relu, permute_dims1, out_dtype=&quot;void&quot;)
+            add1: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.add(matmul1, fc2_bias)
+            gv: R.Tensor((n, 10), dtype=&quot;float32&quot;) = add1
+            R.output(gv)
+        return gv
+</pre></div>
+</div>
+<div class="section" id="apply-transformations">
+<h2>Apply transformations<a class="headerlink" href="#apply-transformations" title="Permalink to this headline">¶</a></h2>
+<p>Passes are the main way to apply transformations to the program.
+We can apply passes to the program. As first step, let’s apply
+a built-in pass <code class="docutils literal notranslate"><span class="pre">LegalizeOps</span></code> to lower the high-level operators
+into low-level operators.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mod</span> <span class="o">=</span> <a href="../../../reference/api/python/relax/transform.html#tvm.relax.transform.LegalizeOps" title="tvm.relax.transform.LegalizeOps" class="sphx-glr-backref-module-tvm-relax-transform sphx-glr-backref-type-py-function"><span class="n">tvm</span><span class="o">.</span><span class="n">relax</span><span class="o">.</span><span class="n">transform</span><sp [...]
+<span class="n">mod</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</pre></div>
+</div>
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from tvm.script import ir as I
+# from tvm.script import tir as T
+# from tvm.script import relax as R
+
+@I.ir_module
+class Module:
+    @T.prim_func(private=True)
+    def add(var_matmul: T.handle, fc1_bias: T.Buffer((T.int64(128),), &quot;float32&quot;), var_T_add: T.handle):
+        T.func_attr({&quot;tir.noalias&quot;: T.bool(True)})
+        n = T.int64()
+        matmul = T.match_buffer(var_matmul, (n, T.int64(128)))
+        T_add = T.match_buffer(var_T_add, (n, T.int64(128)))
+        # with T.block(&quot;root&quot;):
+        for ax0, ax1 in T.grid(n, T.int64(128)):
+            with T.block(&quot;T_add&quot;):
+                v_ax0, v_ax1 = T.axis.remap(&quot;SS&quot;, [ax0, ax1])
+                T.reads(matmul[v_ax0, v_ax1], fc1_bias[v_ax1])
+                T.writes(T_add[v_ax0, v_ax1])
+                T_add[v_ax0, v_ax1] = matmul[v_ax0, v_ax1] + fc1_bias[v_ax1]
+
+    @T.prim_func(private=True)
+    def add1(var_matmul1: T.handle, fc2_bias: T.Buffer((T.int64(10),), &quot;float32&quot;), var_T_add: T.handle):
+        T.func_attr({&quot;tir.noalias&quot;: T.bool(True)})
+        n = T.int64()
+        matmul1 = T.match_buffer(var_matmul1, (n, T.int64(10)))
+        T_add = T.match_buffer(var_T_add, (n, T.int64(10)))
+        # with T.block(&quot;root&quot;):
+        for ax0, ax1 in T.grid(n, T.int64(10)):
+            with T.block(&quot;T_add&quot;):
+                v_ax0, v_ax1 = T.axis.remap(&quot;SS&quot;, [ax0, ax1])
+                T.reads(matmul1[v_ax0, v_ax1], fc2_bias[v_ax1])
+                T.writes(T_add[v_ax0, v_ax1])
+                T_add[v_ax0, v_ax1] = matmul1[v_ax0, v_ax1] + fc2_bias[v_ax1]
+
+    @T.prim_func(private=True)
+    def matmul(var_x: T.handle, permute_dims: T.Buffer((T.int64(784), T.int64(128)), &quot;float32&quot;), var_matmul: T.handle):
+        T.func_attr({&quot;tir.noalias&quot;: T.bool(True)})
+        n = T.int64()
+        x = T.match_buffer(var_x, (n, T.int64(784)))
+        matmul = T.match_buffer(var_matmul, (n, T.int64(128)))
+        # with T.block(&quot;root&quot;):
+        for i0, i1, k in T.grid(n, T.int64(128), T.int64(784)):
+            with T.block(&quot;matmul&quot;):
+                v_i0, v_i1, v_k = T.axis.remap(&quot;SSR&quot;, [i0, i1, k])
+                T.reads(x[v_i0, v_k], permute_dims[v_k, v_i1])
+                T.writes(matmul[v_i0, v_i1])
+                with T.init():
+                    matmul[v_i0, v_i1] = T.float32(0.0)
+                matmul[v_i0, v_i1] = matmul[v_i0, v_i1] + x[v_i0, v_k] * permute_dims[v_k, v_i1]
+
+    @T.prim_func(private=True)
+    def matmul1(var_relu: T.handle, permute_dims1: T.Buffer((T.int64(128), T.int64(10)), &quot;float32&quot;), var_matmul: T.handle):
+        T.func_attr({&quot;tir.noalias&quot;: T.bool(True)})
+        n = T.int64()
+        relu = T.match_buffer(var_relu, (n, T.int64(128)))
+        matmul = T.match_buffer(var_matmul, (n, T.int64(10)))
+        # with T.block(&quot;root&quot;):
+        for i0, i1, k in T.grid(n, T.int64(10), T.int64(128)):
+            with T.block(&quot;matmul&quot;):
+                v_i0, v_i1, v_k = T.axis.remap(&quot;SSR&quot;, [i0, i1, k])
+                T.reads(relu[v_i0, v_k], permute_dims1[v_k, v_i1])
+                T.writes(matmul[v_i0, v_i1])
+                with T.init():
+                    matmul[v_i0, v_i1] = T.float32(0.0)
+                matmul[v_i0, v_i1] = matmul[v_i0, v_i1] + relu[v_i0, v_k] * permute_dims1[v_k, v_i1]
+
+    @T.prim_func(private=True)
+    def relu(var_add: T.handle, var_compute: T.handle):
+        T.func_attr({&quot;tir.noalias&quot;: T.bool(True)})
+        n = T.int64()
+        add = T.match_buffer(var_add, (n, T.int64(128)))
+        compute = T.match_buffer(var_compute, (n, T.int64(128)))
+        # with T.block(&quot;root&quot;):
+        for i0, i1 in T.grid(n, T.int64(128)):
+            with T.block(&quot;compute&quot;):
+                v_i0, v_i1 = T.axis.remap(&quot;SS&quot;, [i0, i1])
+                T.reads(add[v_i0, v_i1])
+                T.writes(compute[v_i0, v_i1])
+                compute[v_i0, v_i1] = T.max(add[v_i0, v_i1], T.float32(0.0))
+
+    @T.prim_func(private=True)
+    def transpose(fc1_weight: T.Buffer((T.int64(128), T.int64(784)), &quot;float32&quot;), T_transpose: T.Buffer((T.int64(784), T.int64(128)), &quot;float32&quot;)):
+        T.func_attr({&quot;tir.noalias&quot;: T.bool(True)})
+        # with T.block(&quot;root&quot;):
+        for ax0, ax1 in T.grid(T.int64(784), T.int64(128)):
+            with T.block(&quot;T_transpose&quot;):
+                v_ax0, v_ax1 = T.axis.remap(&quot;SS&quot;, [ax0, ax1])
+                T.reads(fc1_weight[v_ax1, v_ax0])
+                T.writes(T_transpose[v_ax0, v_ax1])
+                T_transpose[v_ax0, v_ax1] = fc1_weight[v_ax1, v_ax0]
+
+    @T.prim_func(private=True)
+    def transpose1(fc2_weight: T.Buffer((T.int64(10), T.int64(128)), &quot;float32&quot;), T_transpose: T.Buffer((T.int64(128), T.int64(10)), &quot;float32&quot;)):
+        T.func_attr({&quot;tir.noalias&quot;: T.bool(True)})
+        # with T.block(&quot;root&quot;):
+        for ax0, ax1 in T.grid(T.int64(128), T.int64(10)):
+            with T.block(&quot;T_transpose&quot;):
+                v_ax0, v_ax1 = T.axis.remap(&quot;SS&quot;, [ax0, ax1])
+                T.reads(fc2_weight[v_ax1, v_ax0])
+                T.writes(T_transpose[v_ax0, v_ax1])
+                T_transpose[v_ax0, v_ax1] = fc2_weight[v_ax1, v_ax0]
+
+    @R.function
+    def forward(x: R.Tensor((&quot;n&quot;, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((&quot;n&quot;, 10), dtype=&quot;float32&quot;):
+        n = T.int64()
+        R.func_attr({&quot;num_input&quot;: 1})
+        cls = Module
+        with R.dataflow():
+            permute_dims = R.call_tir(cls.transpose, (fc1_weight,), out_sinfo=R.Tensor((784, 128), dtype=&quot;float32&quot;))
+            matmul = R.call_tir(cls.matmul, (x, permute_dims), out_sinfo=R.Tensor((n, 128), dtype=&quot;float32&quot;))
+            add = R.call_tir(cls.add, (matmul, fc1_bias), out_sinfo=R.Tensor((n, 128), dtype=&quot;float32&quot;))
+            relu = R.call_tir(cls.relu, (add,), out_sinfo=R.Tensor((n, 128), dtype=&quot;float32&quot;))
+            permute_dims1 = R.call_tir(cls.transpose1, (fc2_weight,), out_sinfo=R.Tensor((128, 10), dtype=&quot;float32&quot;))
+            matmul1 = R.call_tir(cls.matmul1, (relu, permute_dims1), out_sinfo=R.Tensor((n, 10), dtype=&quot;float32&quot;))
+            add1 = R.call_tir(cls.add1, (matmul1, fc2_bias), out_sinfo=R.Tensor((n, 10), dtype=&quot;float32&quot;))
+            gv: R.Tensor((n, 10), dtype=&quot;float32&quot;) = add1
+            R.output(gv)
+        return gv
+</pre></div>
+</div>
+<p>As we can see from the output, the high-level operators (aka <code class="docutils literal notranslate"><span class="pre">relax.op</span></code>) in the program
+are replaced by their corresponding low-level operators (aka <code class="docutils literal notranslate"><span class="pre">relax.call_tir</span></code>).</p>
+<p>Then let’s trying to apply the operator fusion, which is a wide-used optimization technique
+in ML compilers. Note that in relax, fusion optimizations are done with the collaboration of
+a set of passes. We can apply them in a sequence.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mod</span> <span class="o">=</span> <span class="n">tvm</span><span class="o">.</span><span class="n">ir</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span>
+    <span class="p">[</span>
+        <a href="../../../reference/api/python/relax/transform.html#tvm.relax.transform.AnnotateTIROpPattern" title="tvm.relax.transform.AnnotateTIROpPattern" class="sphx-glr-backref-module-tvm-relax-transform sphx-glr-backref-type-py-function"><span class="n">tvm</span><span class="o">.</span><span class="n">relax</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">AnnotateTIROpPattern</span></a><span class="p">(),</span>
+        <a href="../../../reference/api/python/relax/transform.html#tvm.relax.transform.FuseOps" title="tvm.relax.transform.FuseOps" class="sphx-glr-backref-module-tvm-relax-transform sphx-glr-backref-type-py-function"><span class="n">tvm</span><span class="o">.</span><span class="n">relax</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">FuseOps</span></a><span class="p">(),</span>
+        <a href="../../../reference/api/python/relax/transform.html#tvm.relax.transform.FuseTIR" title="tvm.relax.transform.FuseTIR" class="sphx-glr-backref-module-tvm-relax-transform sphx-glr-backref-type-py-function"><span class="n">tvm</span><span class="o">.</span><span class="n">relax</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">FuseTIR</span></a><span class="p">(),</span>
+    <span class="p">]</span>
+<span class="p">)(</span><span class="n">mod</span><span class="p">)</span>
+<span class="n">mod</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</pre></div>
+</div>
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from tvm.script import ir as I
+# from tvm.script import tir as T
+# from tvm.script import relax as R
+
+@I.ir_module
+class Module:
+    @T.prim_func(private=True)
+    def fused_matmul1_add1(p_relu: T.handle, permute_dims1: T.Buffer((T.int64(128), T.int64(10)), &quot;float32&quot;), fc2_bias: T.Buffer((T.int64(10),), &quot;float32&quot;), p_output0: T.handle):
+        T.func_attr({&quot;tir.noalias&quot;: T.bool(True)})
+        n = T.int64()
+        relu = T.match_buffer(p_relu, (n, T.int64(128)))
+        T_add_intermediate = T.match_buffer(p_output0, (n, T.int64(10)))
+        # with T.block(&quot;root&quot;):
+        matmul_intermediate = T.alloc_buffer((n, T.int64(10)))
+        for i0, i1, k in T.grid(n, T.int64(10), T.int64(128)):
+            with T.block(&quot;matmul&quot;):
+                v_i0, v_i1, v_k = T.axis.remap(&quot;SSR&quot;, [i0, i1, k])
+                T.reads(relu[v_i0, v_k], permute_dims1[v_k, v_i1])
+                T.writes(matmul_intermediate[v_i0, v_i1])
+                with T.init():
+                    matmul_intermediate[v_i0, v_i1] = T.float32(0.0)
+                matmul_intermediate[v_i0, v_i1] = matmul_intermediate[v_i0, v_i1] + relu[v_i0, v_k] * permute_dims1[v_k, v_i1]
+        for ax0, ax1 in T.grid(n, T.int64(10)):
+            with T.block(&quot;T_add&quot;):
+                v_ax0, v_ax1 = T.axis.remap(&quot;SS&quot;, [ax0, ax1])
+                T.reads(matmul_intermediate[v_ax0, v_ax1], fc2_bias[v_ax1])
+                T.writes(T_add_intermediate[v_ax0, v_ax1])
+                T_add_intermediate[v_ax0, v_ax1] = matmul_intermediate[v_ax0, v_ax1] + fc2_bias[v_ax1]
+
+    @T.prim_func(private=True)
+    def fused_matmul_add_relu(p_x: T.handle, permute_dims: T.Buffer((T.int64(784), T.int64(128)), &quot;float32&quot;), fc1_bias: T.Buffer((T.int64(128),), &quot;float32&quot;), p_output0: T.handle):
+        T.func_attr({&quot;tir.noalias&quot;: T.bool(True)})
+        n = T.int64()
+        x = T.match_buffer(p_x, (n, T.int64(784)))
+        compute_intermediate = T.match_buffer(p_output0, (n, T.int64(128)))
+        # with T.block(&quot;root&quot;):
+        matmul_intermediate = T.alloc_buffer((n, T.int64(128)))
+        T_add_intermediate = T.alloc_buffer((n, T.int64(128)))
+        for i0, i1, k in T.grid(n, T.int64(128), T.int64(784)):
+            with T.block(&quot;matmul&quot;):
+                v_i0, v_i1, v_k = T.axis.remap(&quot;SSR&quot;, [i0, i1, k])
+                T.reads(x[v_i0, v_k], permute_dims[v_k, v_i1])
+                T.writes(matmul_intermediate[v_i0, v_i1])
+                with T.init():
+                    matmul_intermediate[v_i0, v_i1] = T.float32(0.0)
+                matmul_intermediate[v_i0, v_i1] = matmul_intermediate[v_i0, v_i1] + x[v_i0, v_k] * permute_dims[v_k, v_i1]
+        for ax0, ax1 in T.grid(n, T.int64(128)):
+            with T.block(&quot;T_add&quot;):
+                v_ax0, v_ax1 = T.axis.remap(&quot;SS&quot;, [ax0, ax1])
+                T.reads(matmul_intermediate[v_ax0, v_ax1], fc1_bias[v_ax1])
+                T.writes(T_add_intermediate[v_ax0, v_ax1])
+                T_add_intermediate[v_ax0, v_ax1] = matmul_intermediate[v_ax0, v_ax1] + fc1_bias[v_ax1]
+        for i0, i1 in T.grid(n, T.int64(128)):
+            with T.block(&quot;compute&quot;):
+                v_i0, v_i1 = T.axis.remap(&quot;SS&quot;, [i0, i1])
+                T.reads(T_add_intermediate[v_i0, v_i1])
+                T.writes(compute_intermediate[v_i0, v_i1])
+                compute_intermediate[v_i0, v_i1] = T.max(T_add_intermediate[v_i0, v_i1], T.float32(0.0))
+
+    @T.prim_func(private=True)
+    def transpose(fc1_weight: T.Buffer((T.int64(128), T.int64(784)), &quot;float32&quot;), T_transpose: T.Buffer((T.int64(784), T.int64(128)), &quot;float32&quot;)):
+        T.func_attr({&quot;op_pattern&quot;: 2, &quot;tir.noalias&quot;: T.bool(True)})
+        # with T.block(&quot;root&quot;):
+        for ax0, ax1 in T.grid(T.int64(784), T.int64(128)):
+            with T.block(&quot;T_transpose&quot;):
+                v_ax0, v_ax1 = T.axis.remap(&quot;SS&quot;, [ax0, ax1])
+                T.reads(fc1_weight[v_ax1, v_ax0])
+                T.writes(T_transpose[v_ax0, v_ax1])
+                T_transpose[v_ax0, v_ax1] = fc1_weight[v_ax1, v_ax0]
+
+    @T.prim_func(private=True)
+    def transpose1(fc2_weight: T.Buffer((T.int64(10), T.int64(128)), &quot;float32&quot;), T_transpose: T.Buffer((T.int64(128), T.int64(10)), &quot;float32&quot;)):
+        T.func_attr({&quot;op_pattern&quot;: 2, &quot;tir.noalias&quot;: T.bool(True)})
+        # with T.block(&quot;root&quot;):
+        for ax0, ax1 in T.grid(T.int64(128), T.int64(10)):
+            with T.block(&quot;T_transpose&quot;):
+                v_ax0, v_ax1 = T.axis.remap(&quot;SS&quot;, [ax0, ax1])
+                T.reads(fc2_weight[v_ax1, v_ax0])
+                T.writes(T_transpose[v_ax0, v_ax1])
+                T_transpose[v_ax0, v_ax1] = fc2_weight[v_ax1, v_ax0]
+
+    @R.function
+    def forward(x: R.Tensor((&quot;n&quot;, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((&quot;n&quot;, 10), dtype=&quot;float32&quot;):
+        n = T.int64()
+        R.func_attr({&quot;num_input&quot;: 1})
+        cls = Module
+        with R.dataflow():
+            permute_dims = R.call_tir(cls.transpose, (fc1_weight,), out_sinfo=R.Tensor((784, 128), dtype=&quot;float32&quot;))
+            lv = R.call_tir(cls.fused_matmul_add_relu, (x, permute_dims, fc1_bias), out_sinfo=R.Tensor((n, 128), dtype=&quot;float32&quot;))
+            permute_dims1 = R.call_tir(cls.transpose1, (fc2_weight,), out_sinfo=R.Tensor((128, 10), dtype=&quot;float32&quot;))
+            gv = R.call_tir(cls.fused_matmul1_add1, (lv, permute_dims1, fc2_bias), out_sinfo=R.Tensor((n, 10), dtype=&quot;float32&quot;))
+            R.output(gv)
+        return gv
+</pre></div>
+</div>
+<p>As result, we can see that the <code class="docutils literal notranslate"><span class="pre">matmul</span></code>, <code class="docutils literal notranslate"><span class="pre">add</span></code> and <code class="docutils literal notranslate"><span class="pre">relu</span></code> operators are fused
+into one kernel (aka one <code class="docutils literal notranslate"><span class="pre">call_tir</span></code>).</p>
+<p>For all built-in passes, please refer to <code class="xref py py-class docutils literal notranslate"><span class="pre">relax.transform</span></code>.</p>
+</div>
+<div class="section" id="custom-passes">
+<h2>Custom Passes<a class="headerlink" href="#custom-passes" title="Permalink to this headline">¶</a></h2>
+<p>We can also define our own passes. Let’s taking an example of rewrite the <code class="docutils literal notranslate"><span class="pre">relu</span></code>
+operator to <code class="docutils literal notranslate"><span class="pre">gelu</span></code> operator.</p>
+<p>First, we need to write a Relax IR Mutator to do the rewriting.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">tvm.relax.expr_functor</span> <span class="kn">import</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.PyExprMutator" title="tvm.relax.PyExprMutator" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">PyExprMutator</span></a><span class="p">,</span> <span class="n">mutator</span>
+
+
+<span class="nd">@mutator</span>
+<span class="k">class</span> <span class="nc">ReluRewriter</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.PyExprMutator" title="tvm.relax.PyExprMutator" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">PyExprMutator</span></a><span class="p">):</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mod</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">visit_call_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">call</span><span class="p">:</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Call" title="tvm.relax.Call" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Call</span></a><span class="p">)</span> <span class="o">-&gt; [...]
+        <span class="c1"># visit the relax.Call expr, and only handle the case when op is relax.nn.relu</span>
+        <span class="k">if</span> <span class="n">call</span><span class="o">.</span><span class="n">op</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;relax.nn.relu&quot;</span><span class="p">:</span>
+            <span class="k">return</span> <a href="../../../reference/api/python/relax/op.html#tvm.relax.op.nn.gelu" title="tvm.relax.op.nn.gelu" class="sphx-glr-backref-module-tvm-relax-op-nn sphx-glr-backref-type-py-function"><span class="n">relax</span><span class="o">.</span><span class="n">op</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">gelu</span></a><span class="p">(</span><span class="n">call</span><span class="o">.</span><span cl [...]
+
+        <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">visit_call_</span><span class="p">(</span><span class="n">call</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Then we can write a pass to apply the mutator to the whole module.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@tvm</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">module_pass</span><span class="p">(</span><span class="n">opt_level</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;ReluToGelu&quot;</span><span class="p">)</span>
+<span class="k">class</span> <span class="nc">ReluToGelu</span><span class="p">:</span>  <span class="c1"># pylint: disable=too-few-public-methods</span>
+    <span class="k">def</span> <span class="nf">transform_module</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mod</span><span class="p">:</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Node" title="tvm.ir.Node" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class"><span class="n">IRModule</span></a><span class="p">,</span> <span class="n">_ctx</span><span class="p">:</span> <a href="../../../reference/api [...]
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;IRModule-level transformation&quot;&quot;&quot;</span>
+        <span class="n">rewriter</span> <span class="o">=</span> <span class="n">ReluRewriter</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">g_var</span><span class="p">,</span> <span class="n">func</span> <span class="ow">in</span> <span class="n">mod</span><span class="o">.</span><span class="n">functions_items</span><span class="p">():</span>
+            <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <a href="../../../reference/api/python/relax/relax.html#tvm.relax.Function" title="tvm.relax.Function" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Function</span></a><span class="p">):</span>
+                <span class="n">func</span> <span class="o">=</span> <span class="n">rewriter</span><span class="o">.</span><span class="n">visit_expr</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
+                <span class="n">rewriter</span><span class="o">.</span><span class="n">builder_</span><span class="o">.</span><span class="n">update_func</span><span class="p">(</span><span class="n">g_var</span><span class="p">,</span> <span class="n">func</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">rewriter</span><span class="o">.</span><span class="n">builder_</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
+
+
+<span class="n">mod</span> <span class="o">=</span> <span class="n">ReluToGelu</span><span class="p">()(</span><span class="n">origin_mod</span><span class="p">)</span>
+<span class="n">mod</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</pre></div>
+</div>
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from tvm.script import ir as I
+# from tvm.script import tir as T
+# from tvm.script import relax as R
+
+@I.ir_module
+class Module:
+    @R.function
+    def forward(x: R.Tensor((&quot;n&quot;, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((&quot;n&quot;, 10), dtype=&quot;float32&quot;):
+        n = T.int64()
+        R.func_attr({&quot;num_input&quot;: 1})
+        with R.dataflow():
+            permute_dims: R.Tensor((784, 128), dtype=&quot;float32&quot;) = R.permute_dims(fc1_weight, axes=None)
+            matmul: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.matmul(x, permute_dims, out_dtype=&quot;void&quot;)
+            add: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.add(matmul, fc1_bias)
+            relu: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.nn.gelu(add)
+            permute_dims1: R.Tensor((128, 10), dtype=&quot;float32&quot;) = R.permute_dims(fc2_weight, axes=None)
+            matmul1: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.matmul(relu, permute_dims1, out_dtype=&quot;void&quot;)
+            add1: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.add(matmul1, fc2_bias)
+            gv: R.Tensor((n, 10), dtype=&quot;float32&quot;) = add1
+            R.output(gv)
+        return gv
+</pre></div>
+</div>
+<p>The printed output shows that the <code class="docutils literal notranslate"><span class="pre">relax.nn.relu</span></code> operator is
+rewritten to <code class="docutils literal notranslate"><span class="pre">relax.nn.gelu</span></code> operator.</p>
+<p>For the details of the mutator, please refer to <code class="xref py py-class docutils literal notranslate"><span class="pre">relax.expr_functor.PyExprMutator</span></code>.</p>
+</div>
+<div class="section" id="summary">
+<h2>Summary<a class="headerlink" href="#summary" title="Permalink to this headline">¶</a></h2>
+<p>In this section, we have shown how to apply transformations to the Relax program.
+We have also shown how to define and apply custom transformations.</p>
+<div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-deep-dive-relax-tutorials-relax-transformation-py">
+<div class="sphx-glr-download sphx-glr-download-python docutils container">
+<p><a class="reference download internal" download="" href="../../../_downloads/4e684410fb30ce02332f55fde123c42e/relax_transformation.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">relax_transformation.py</span></code></a></p>
+</div>
+<div class="sphx-glr-download sphx-glr-download-jupyter docutils container">
+<p><a class="reference download internal" download="" href="../../../_downloads/31d077cfa7c55c0edcd16ad5d4faf483/relax_transformation.ipynb"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Jupyter</span> <span class="pre">notebook:</span> <span class="pre">relax_transformation.ipynb</span></code></a></p>
+</div>
+</div>
+<p class="sphx-glr-signature"><a class="reference external" href="https://sphinx-gallery.github.io">Gallery generated by Sphinx-Gallery</a></p>
+</div>
+</div>
+
+
+           </div>
+           
+          </div>
+          
+
+<footer>
+
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../../../reference/api/python/index.html" class="btn btn-neutral float-right" title="Python API" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="relax_creation.html" class="btn btn-neutral float-left" title="Relax Creation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+
+<div id="button" class="backtop"><img src="../../../_static/img/right.svg" alt="backtop"/> </div>
+<section class="footerSec">
+    <div class="footerHeader">
+      <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
+        <div class="copywrite d-flex align-items-center">
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
+        </div>
+      </div>
+
+    </div>
+
+    <div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+    </div>
+
+</section>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
+
+  </body>
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+    <!-- Theme Analytics -->
+    <script>
+    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+    ga('create', 'UA-75982049-2', 'auto');
+    ga('send', 'pageview');
+    </script>
+
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html b/docs/deep_dive/relax/tutorials/sg_execution_times.html
similarity index 92%
copy from docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
copy to docs/deep_dive/relax/tutorials/sg_execution_times.html
index 04c18469fc..9578e6ac69 100644
--- a/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
+++ b/docs/deep_dive/relax/tutorials/sg_execution_times.html
@@ -72,9 +72,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -271,7 +268,8 @@
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
-<li class="toctree-l1"><a class="reference internal" href="../index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -367,7 +365,7 @@
         
             
             
-              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.rst" class="fa fa-github"> Edit on GitHub</a>
+              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/relax/tutorials/sg_execution_times.rst" class="fa fa-github"> Edit on GitHub</a>
             
           
         
@@ -382,21 +380,21 @@
            <div itemprop="articleBody">
             
   <div class="section" id="computation-times">
-<span id="sphx-glr-deep-dive-tensor-ir-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:00.537</strong> total execution time for <strong>deep_dive_tensor_ir_tutorials</strong> files:</p>
+<span id="sphx-glr-deep-dive-relax-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
+<p><strong>00:00.234</strong> total execution time for <strong>deep_dive_relax_tutorials</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
-<col style="width: 82%" />
-<col style="width: 10%" />
+<col style="width: 84%" />
+<col style="width: 9%" />
 <col style="width: 7%" />
 </colgroup>
 <tbody>
-<tr class="row-odd"><td><p><a class="reference internal" href="transformation.html#sphx-glr-deep-dive-tensor-ir-tutorials-transformation-py"><span class="std std-ref">Transformation</span></a> (<code class="docutils literal notranslate"><span class="pre">transformation.py</span></code>)</p></td>
-<td><p>00:00.318</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="relax_creation.html#sphx-glr-deep-dive-relax-tutorials-relax-creation-py"><span class="std std-ref">Relax Creation</span></a> (<code class="docutils literal notranslate"><span class="pre">relax_creation.py</span></code>)</p></td>
+<td><p>00:00.151</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="creation.html#sphx-glr-deep-dive-tensor-ir-tutorials-creation-py"><span class="std std-ref">TensorIR Creation</span></a> (<code class="docutils literal notranslate"><span class="pre">creation.py</span></code>)</p></td>
-<td><p>00:00.219</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="relax_transformation.html#sphx-glr-deep-dive-relax-tutorials-relax-transformation-py"><span class="std std-ref">Transformation</span></a> (<code class="docutils literal notranslate"><span class="pre">relax_transformation.py</span></code>)</p></td>
+<td><p>00:00.083</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
@@ -416,14 +414,14 @@
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/deep_dive/tensor_ir/abstraction.html b/docs/deep_dive/tensor_ir/abstraction.html
index 634ab17b77..47d72ba2e2 100644
--- a/docs/deep_dive/tensor_ir/abstraction.html
+++ b/docs/deep_dive/tensor_ir/abstraction.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -280,10 +277,11 @@
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="learning.html">Understand TensorIR Abstraction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/creation.html">TensorIR Creation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html">Transformation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/tir_creation.html">TensorIR Creation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/tir_transformation.html">Transformation</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -472,14 +470,14 @@ with <code class="docutils literal notranslate"><span class="pre">vi</span></cod
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/deep_dive/tensor_ir/index.html b/docs/deep_dive/tensor_ir/index.html
index 7cc8d590a2..4c45698a82 100644
--- a/docs/deep_dive/tensor_ir/index.html
+++ b/docs/deep_dive/tensor_ir/index.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -276,10 +273,11 @@
 <li class="toctree-l1 current"><a class="current reference internal" href="#">TensorIR</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="abstraction.html">Tensor Program Abstraction</a></li>
 <li class="toctree-l2"><a class="reference internal" href="learning.html">Understand TensorIR Abstraction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/creation.html">TensorIR Creation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html">Transformation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/tir_creation.html">TensorIR Creation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/tir_transformation.html">Transformation</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -391,7 +389,7 @@
             
   <div class="section" id="tensorir">
 <span id="tensor-ir"></span><h1>TensorIR<a class="headerlink" href="#tensorir" title="Permalink to this headline">¶</a></h1>
-<p>TensorIR is one of the core abstraction in Apache TVM Unity stack, which is used to
+<p>TensorIR is one of the core abstraction in Apache TVM stack, which is used to
 represent and optimize the primitive tensor functions.</p>
 <div class="toctree-wrapper compound">
 <ul>
@@ -409,17 +407,17 @@ represent and optimize the primitive tensor functions.</p>
 <li class="toctree-l2"><a class="reference internal" href="learning.html#sugars-for-block-axes-binding">Sugars for Block Axes Binding</a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="tutorials/creation.html">TensorIR Creation</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/creation.html#create-tensorir-using-tvmscript">Create TensorIR using TVMScript</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/creation.html#create-tensorir-using-tensor-expression">Create TensorIR using Tensor Expression</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/tir_creation.html">TensorIR Creation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/tir_creation.html#create-tensorir-using-tvmscript">Create TensorIR using TVMScript</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/tir_creation.html#create-tensorir-using-tensor-expression">Create TensorIR using Tensor Expression</a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="tutorials/transformation.html">Transformation</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html#initialization-schedule">Initialization Schedule</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html#loop-tiling">Loop Tiling</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html#leverage-localities">Leverage Localities</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html#rewrite-reduction">Rewrite Reduction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html#trace-the-transformation">Trace the Transformation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/tir_transformation.html">Transformation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/tir_transformation.html#initialization-schedule">Initialization Schedule</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/tir_transformation.html#loop-tiling">Loop Tiling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/tir_transformation.html#leverage-localities">Leverage Localities</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/tir_transformation.html#rewrite-reduction">Rewrite Reduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/tir_transformation.html#trace-the-transformation">Trace the Transformation</a></li>
 </ul>
 </li>
 </ul>
@@ -448,14 +446,14 @@ represent and optimize the primitive tensor functions.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/deep_dive/tensor_ir/learning.html b/docs/deep_dive/tensor_ir/learning.html
index ed8844f4b6..1ecedf607e 100644
--- a/docs/deep_dive/tensor_ir/learning.html
+++ b/docs/deep_dive/tensor_ir/learning.html
@@ -49,7 +49,7 @@
     <script type="text/javascript" src="../../_static/js/tlcpack_theme.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" />
-    <link rel="next" title="TensorIR Creation" href="tutorials/creation.html" />
+    <link rel="next" title="TensorIR Creation" href="tutorials/tir_creation.html" />
     <link rel="prev" title="Tensor Program Abstraction" href="abstraction.html" /> 
 </head>
 
@@ -75,9 +75,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -285,10 +282,11 @@
 <li class="toctree-l3"><a class="reference internal" href="#sugars-for-block-axes-binding">Sugars for Block Axes Binding</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/creation.html">TensorIR Creation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="tutorials/transformation.html">Transformation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/tir_creation.html">TensorIR Creation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/tir_transformation.html">Transformation</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -616,7 +614,7 @@ we can use <code class="docutils literal notranslate"><span class="pre">T.axis.r
 
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="tutorials/creation.html" class="btn btn-neutral float-right" title="TensorIR Creation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="tutorials/tir_creation.html" class="btn btn-neutral float-right" title="TensorIR Creation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
         <a href="abstraction.html" class="btn btn-neutral float-left" title="Tensor Program Abstraction" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
@@ -628,14 +626,14 @@ we can use <code class="docutils literal notranslate"><span class="pre">T.axis.r
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/deep_dive/tensor_ir/tutorials/index.html b/docs/deep_dive/tensor_ir/tutorials/index.html
index 77b542edfb..507fd86361 100644
--- a/docs/deep_dive/tensor_ir/tutorials/index.html
+++ b/docs/deep_dive/tensor_ir/tutorials/index.html
@@ -72,9 +72,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -272,6 +269,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -383,11 +381,11 @@
             
   <div class="section" id="deep-dive-tensorir">
 <h1>Deep Dive: TensorIR<a class="headerlink" href="#deep-dive-tensorir" title="Permalink to this headline">¶</a></h1>
-<div class="sphx-glr-thumbnails"><div class="sphx-glr-thumbcontainer" tooltip="    This tutorial concentrates on the construction of **standalone** TensorIR functions. The   ..."><img alt="TensorIR Creation" src="../../../_images/sphx_glr_creation_thumb.png" />
-<p><a class="reference internal" href="creation.html#sphx-glr-deep-dive-tensor-ir-tutorials-creation-py"><span class="std std-ref">TensorIR Creation</span></a></p>
+<div class="sphx-glr-thumbnails"><div class="sphx-glr-thumbcontainer" tooltip="    This tutorial concentrates on the construction of **standalone** TensorIR functions. The   ..."><img alt="TensorIR Creation" src="../../../_images/sphx_glr_tir_creation_thumb.png" />
+<p><a class="reference internal" href="tir_creation.html#sphx-glr-deep-dive-tensor-ir-tutorials-tir-creation-py"><span class="std std-ref">TensorIR Creation</span></a></p>
   <div class="sphx-glr-thumbnail-title">TensorIR Creation</div>
-</div><div class="sphx-glr-thumbcontainer" tooltip="Transformation"><img alt="Transformation" src="../../../_images/sphx_glr_transformation_thumb.png" />
-<p><a class="reference internal" href="transformation.html#sphx-glr-deep-dive-tensor-ir-tutorials-transformation-py"><span class="std std-ref">Transformation</span></a></p>
+</div><div class="sphx-glr-thumbcontainer" tooltip="Transformation"><img alt="Transformation" src="../../../_images/sphx_glr_tir_transformation_thumb.png" />
+<p><a class="reference internal" href="tir_transformation.html#sphx-glr-deep-dive-tensor-ir-tutorials-tir-transformation-py"><span class="std std-ref">Transformation</span></a></p>
   <div class="sphx-glr-thumbnail-title">Transformation</div>
 </div></div><div class="toctree-wrapper compound">
 </div>
@@ -407,14 +405,14 @@
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html b/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
index 04c18469fc..d4a8d92925 100644
--- a/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
+++ b/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
@@ -72,9 +72,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -272,6 +269,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -383,20 +381,20 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-deep-dive-tensor-ir-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:00.537</strong> total execution time for <strong>deep_dive_tensor_ir_tutorials</strong> files:</p>
+<p><strong>00:00.517</strong> total execution time for <strong>deep_dive_tensor_ir_tutorials</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
-<col style="width: 82%" />
-<col style="width: 10%" />
+<col style="width: 84%" />
+<col style="width: 9%" />
 <col style="width: 7%" />
 </colgroup>
 <tbody>
-<tr class="row-odd"><td><p><a class="reference internal" href="transformation.html#sphx-glr-deep-dive-tensor-ir-tutorials-transformation-py"><span class="std std-ref">Transformation</span></a> (<code class="docutils literal notranslate"><span class="pre">transformation.py</span></code>)</p></td>
-<td><p>00:00.318</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="tir_transformation.html#sphx-glr-deep-dive-tensor-ir-tutorials-tir-transformation-py"><span class="std std-ref">Transformation</span></a> (<code class="docutils literal notranslate"><span class="pre">tir_transformation.py</span></code>)</p></td>
+<td><p>00:00.309</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="creation.html#sphx-glr-deep-dive-tensor-ir-tutorials-creation-py"><span class="std std-ref">TensorIR Creation</span></a> (<code class="docutils literal notranslate"><span class="pre">creation.py</span></code>)</p></td>
-<td><p>00:00.219</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="tir_creation.html#sphx-glr-deep-dive-tensor-ir-tutorials-tir-creation-py"><span class="std std-ref">TensorIR Creation</span></a> (<code class="docutils literal notranslate"><span class="pre">tir_creation.py</span></code>)</p></td>
+<td><p>00:00.208</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
@@ -416,14 +414,14 @@
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/deep_dive/tensor_ir/tutorials/creation.html b/docs/deep_dive/tensor_ir/tutorials/tir_creation.html
similarity index 98%
rename from docs/deep_dive/tensor_ir/tutorials/creation.html
rename to docs/deep_dive/tensor_ir/tutorials/tir_creation.html
index 520146d545..71dd5eeb01 100644
--- a/docs/deep_dive/tensor_ir/tutorials/creation.html
+++ b/docs/deep_dive/tensor_ir/tutorials/tir_creation.html
@@ -49,7 +49,7 @@
     <script type="text/javascript" src="../../../_static/js/tlcpack_theme.js"></script>
     <link rel="index" title="Index" href="../../../genindex.html" />
     <link rel="search" title="Search" href="../../../search.html" />
-    <link rel="next" title="Transformation" href="transformation.html" />
+    <link rel="next" title="Transformation" href="tir_transformation.html" />
     <link rel="prev" title="Understand TensorIR Abstraction" href="../learning.html" /> 
 </head>
 
@@ -75,9 +75,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -292,9 +289,10 @@
 </li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="transformation.html">Transformation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tir_transformation.html">Transformation</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../../relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -392,7 +390,7 @@
         
             
             
-              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/tensor_ir/tutorials/creation.rst" class="fa fa-github"> Edit on GitHub</a>
+              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/tensor_ir/tutorials/tir_creation.rst" class="fa fa-github"> Edit on GitHub</a>
             
           
         
@@ -409,11 +407,11 @@
   <div class="sphx-glr-download-link-note admonition note">
 <p class="admonition-title">Note</p>
 <p>This tutorial can be used interactively with Google Colab! You can also click
-<a class="reference internal" href="#sphx-glr-download-deep-dive-tensor-ir-tutorials-creation-py"><span class="std std-ref">here</span></a> to run the Jupyter notebook locally.</p>
-<a class="reference external image-reference" href="https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/904ea2b1aa828d1e33fe24c7159ed30b/creation.ipynb"><img alt="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg" class="align-center" src="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg" width="300px" /></a>
+<a class="reference internal" href="#sphx-glr-download-deep-dive-tensor-ir-tutorials-tir-creation-py"><span class="std std-ref">here</span></a> to run the Jupyter notebook locally.</p>
+<a class="reference external image-reference" href="https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/c43b2ae5210f95ce8dae6102e9b060fd/tir_creation.ipynb"><img alt="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg" class="align-center" src="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg" width="300px" /></a>
 </div>
 <div class="sphx-glr-example-title section" id="tensorir-creation">
-<span id="tir-creation"></span><span id="sphx-glr-deep-dive-tensor-ir-tutorials-creation-py"></span><h1>TensorIR Creation<a class="headerlink" href="#tensorir-creation" title="Permalink to this headline">¶</a></h1>
+<span id="tir-creation"></span><span id="sphx-glr-deep-dive-tensor-ir-tutorials-tir-creation-py"></span><h1>TensorIR Creation<a class="headerlink" href="#tensorir-creation" title="Permalink to this headline">¶</a></h1>
 <p>In this section, we will introduce the methods to write a TensorIR function
 in Apache TVM Unity. This tutorial presumes familiarity with the fundamental concepts of TensorIR.
 If not already acquainted, please refer to <a class="reference internal" href="../learning.html#tir-learning"><span class="std std-ref">Understand TensorIR Abstraction</span></a> initially.</p>
@@ -733,12 +731,12 @@ class Module:
                 C[v_i, v_j] = T.max(Y[v_i, v_j], T.float32(0.0))
 </pre></div>
 </div>
-<div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-deep-dive-tensor-ir-tutorials-creation-py">
+<div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-deep-dive-tensor-ir-tutorials-tir-creation-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
-<p><a class="reference download internal" download="" href="../../../_downloads/5fde583f102218c7d123f522a7aef688/creation.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">creation.py</span></code></a></p>
+<p><a class="reference download internal" download="" href="../../../_downloads/69cc67b95e2c6b258f6dc9c7367fe71e/tir_creation.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">tir_creation.py</span></code></a></p>
 </div>
 <div class="sphx-glr-download sphx-glr-download-jupyter docutils container">
-<p><a class="reference download internal" download="" href="../../../_downloads/904ea2b1aa828d1e33fe24c7159ed30b/creation.ipynb"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Jupyter</span> <span class="pre">notebook:</span> <span class="pre">creation.ipynb</span></code></a></p>
+<p><a class="reference download internal" download="" href="../../../_downloads/c43b2ae5210f95ce8dae6102e9b060fd/tir_creation.ipynb"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Jupyter</span> <span class="pre">notebook:</span> <span class="pre">tir_creation.ipynb</span></code></a></p>
 </div>
 </div>
 <p class="sphx-glr-signature"><a class="reference external" href="https://sphinx-gallery.github.io">Gallery generated by Sphinx-Gallery</a></p>
@@ -756,7 +754,7 @@ class Module:
 
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="transformation.html" class="btn btn-neutral float-right" title="Transformation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="tir_transformation.html" class="btn btn-neutral float-right" title="Transformation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
         <a href="../learning.html" class="btn btn-neutral float-left" title="Understand TensorIR Abstraction" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
@@ -768,14 +766,14 @@ class Module:
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/deep_dive/tensor_ir/tutorials/transformation.html b/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
similarity index 95%
rename from docs/deep_dive/tensor_ir/tutorials/transformation.html
rename to docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
index 8ec3d4206c..086d060dec 100644
--- a/docs/deep_dive/tensor_ir/tutorials/transformation.html
+++ b/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
@@ -48,8 +48,8 @@
     <script type="text/javascript" src="../../../_static/js/tlcpack_theme.js"></script>
     <link rel="index" title="Index" href="../../../genindex.html" />
     <link rel="search" title="Search" href="../../../search.html" />
-    <link rel="next" title="Python API" href="../../../reference/api/python/index.html" />
-    <link rel="prev" title="TensorIR Creation" href="creation.html" /> 
+    <link rel="next" title="Relax" href="../../relax/index.html" />
+    <link rel="prev" title="TensorIR Creation" href="tir_creation.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -276,7 +273,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../index.html">TensorIR</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../abstraction.html">Tensor Program Abstraction</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../learning.html">Understand TensorIR Abstraction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="creation.html">TensorIR Creation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tir_creation.html">TensorIR Creation</a></li>
 <li class="toctree-l2 current"><a class="current reference internal" href="#">Transformation</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="#initialization-schedule">Initialization Schedule</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#loop-tiling">Loop Tiling</a></li>
@@ -287,6 +284,7 @@
 </li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../../relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -384,7 +382,7 @@
         
             
             
-              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/tensor_ir/tutorials/transformation.rst" class="fa fa-github"> Edit on GitHub</a>
+              <a href="https://github.com/apache/tvm/edit/main/docs/deep_dive/tensor_ir/tutorials/tir_transformation.rst" class="fa fa-github"> Edit on GitHub</a>
             
           
         
@@ -401,11 +399,11 @@
   <div class="sphx-glr-download-link-note admonition note">
 <p class="admonition-title">Note</p>
 <p>This tutorial can be used interactively with Google Colab! You can also click
-<a class="reference internal" href="#sphx-glr-download-deep-dive-tensor-ir-tutorials-transformation-py"><span class="std std-ref">here</span></a> to run the Jupyter notebook locally.</p>
-<a class="reference external image-reference" href="https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/7f7965d8006d56cdc5a7bb4ecf47205c/transformation.ipynb"><img alt="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg" class="align-center" src="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg" width="300px" /></a>
+<a class="reference internal" href="#sphx-glr-download-deep-dive-tensor-ir-tutorials-tir-transformation-py"><span class="std std-ref">here</span></a> to run the Jupyter notebook locally.</p>
+<a class="reference external image-reference" href="https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/e2a9c4bfdec7a9365ef67c5335b1aaa4/tir_transformation.ipynb"><img alt="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg" class="align-center" src="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg" width="300px" /></a>
 </div>
 <div class="sphx-glr-example-title section" id="transformation">
-<span id="tir-transform"></span><span id="sphx-glr-deep-dive-tensor-ir-tutorials-transformation-py"></span><h1>Transformation<a class="headerlink" href="#transformation" title="Permalink to this headline">¶</a></h1>
+<span id="tir-transform"></span><span id="sphx-glr-deep-dive-tensor-ir-tutorials-tir-transformation-py"></span><h1>Transformation<a class="headerlink" href="#transformation" title="Permalink to this headline">¶</a></h1>
 <p>In this section, we will get to the main ingredients of the compilation flows -
 transformations of primitive tensor functions.</p>
 <p>In the <a class="reference internal" href="../learning.html#tir-learning"><span class="std std-ref">previous section</span></a>, we have given an example of how to write
@@ -472,7 +470,7 @@ original implementation.</p>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   2.2466       2.2466       2.2466       2.2466       0.0000
+   2.2441       2.2441       2.2441       2.2441       0.0000
 </pre></div>
 </div>
 <div class="section" id="initialization-schedule">
@@ -568,7 +566,7 @@ class Module:
 
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   0.8808       0.8808       0.8808       0.8808       0.0000
+   0.8906       0.8906       0.8906       0.8906       0.0000
 </pre></div>
 </div>
 </div>
@@ -662,7 +660,7 @@ class Module:
 
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   0.3269       0.3269       0.3269       0.3269       0.0000
+   0.3211       0.3211       0.3211       0.3211       0.0000
 </pre></div>
 </div>
 </div>
@@ -736,12 +734,12 @@ def apply_trace(sch: tir.Schedule) -&gt; None:
   b7 = sch.decompose_reduction(block=b0, loop=l3)
 </pre></div>
 </div>
-<div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-deep-dive-tensor-ir-tutorials-transformation-py">
+<div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-deep-dive-tensor-ir-tutorials-tir-transformation-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
-<p><a class="reference download internal" download="" href="../../../_downloads/bc1bac7f794da78c8dd6d92437be7ef5/transformation.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">transformation.py</span></code></a></p>
+<p><a class="reference download internal" download="" href="../../../_downloads/335201bfd37b29f9d9fd7765217e7ba9/tir_transformation.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">tir_transformation.py</span></code></a></p>
 </div>
 <div class="sphx-glr-download sphx-glr-download-jupyter docutils container">
-<p><a class="reference download internal" download="" href="../../../_downloads/7f7965d8006d56cdc5a7bb4ecf47205c/transformation.ipynb"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Jupyter</span> <span class="pre">notebook:</span> <span class="pre">transformation.ipynb</span></code></a></p>
+<p><a class="reference download internal" download="" href="../../../_downloads/e2a9c4bfdec7a9365ef67c5335b1aaa4/tir_transformation.ipynb"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Jupyter</span> <span class="pre">notebook:</span> <span class="pre">tir_transformation.ipynb</span></code></a></p>
 </div>
 </div>
 <p class="sphx-glr-signature"><a class="reference external" href="https://sphinx-gallery.github.io">Gallery generated by Sphinx-Gallery</a></p>
@@ -758,10 +756,10 @@ def apply_trace(sch: tir.Schedule) -&gt; None:
 
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="../../../reference/api/python/index.html" class="btn btn-neutral float-right" title="Python API" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="../../relax/index.html" class="btn btn-neutral float-right" title="Relax" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="creation.html" class="btn btn-neutral float-left" title="TensorIR Creation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="tir_creation.html" class="btn btn-neutral float-left" title="TensorIR Creation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
 
@@ -770,14 +768,14 @@ def apply_trace(sch: tir.Schedule) -&gt; None:
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/dev/how_to/debugging_tvm.html b/docs/dev/how_to/debugging_tvm.html
index 7227d6a85f..f534bbce30 100644
--- a/docs/dev/how_to/debugging_tvm.html
+++ b/docs/dev/how_to/debugging_tvm.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -469,14 +467,14 @@ $<span class="w"> </span><span class="nv">TVM_LOG_DEBUG</span><span class="o">=<
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/dev/how_to/how_to.html b/docs/dev/how_to/how_to.html
index db0ad423a3..cd4422870e 100644
--- a/docs/dev/how_to/how_to.html
+++ b/docs/dev/how_to/how_to.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -425,14 +423,14 @@ various areas of the TVM stack.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/dev/how_to/relay_add_op.html b/docs/dev/how_to/relay_add_op.html
index 6e7fa39a22..4a1d6b47ae 100644
--- a/docs/dev/how_to/relay_add_op.html
+++ b/docs/dev/how_to/relay_add_op.html
@@ -75,9 +75,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -275,6 +272,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -854,14 +852,14 @@ order to register the gradient.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/dev/how_to/relay_add_pass.html b/docs/dev/how_to/relay_add_pass.html
index ce856c5279..596ff2c068 100644
--- a/docs/dev/how_to/relay_add_pass.html
+++ b/docs/dev/how_to/relay_add_pass.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -758,14 +756,14 @@ in <a class="reference external" href="https://github.com/apache/tvm/tree/main/s
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/dev/how_to/relay_bring_your_own_codegen.html b/docs/dev/how_to/relay_bring_your_own_codegen.html
index b315ed5566..37aca120b4 100644
--- a/docs/dev/how_to/relay_bring_your_own_codegen.html
+++ b/docs/dev/how_to/relay_bring_your_own_codegen.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -1244,14 +1242,14 @@
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/dev/tutorial/codebase_walkthrough.html b/docs/dev/tutorial/codebase_walkthrough.html
index 56ad05acb8..70d653e2d2 100644
--- a/docs/dev/tutorial/codebase_walkthrough.html
+++ b/docs/dev/tutorial/codebase_walkthrough.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -576,14 +574,14 @@ You can also checkout <a class="reference external" href="https://github.com/tqc
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/dev/tutorial/index.html b/docs/dev/tutorial/index.html
index cd7b2fa66c..ddb8409d45 100644
--- a/docs/dev/tutorial/index.html
+++ b/docs/dev/tutorial/index.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -419,14 +417,14 @@ contribute to different parts of the platform.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/errors.html b/docs/errors.html
index d50778f1e9..87952ab79e 100644
--- a/docs/errors.html
+++ b/docs/errors.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -283,6 +280,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -463,14 +461,14 @@ much to help you.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/faq.html b/docs/faq.html
index b2db0922e4..5352256677 100644
--- a/docs/faq.html
+++ b/docs/faq.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -274,6 +271,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -475,14 +473,14 @@ See also top for recipes of operators in TVM.</p>
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/genindex.html b/docs/genindex.html
index fc265b65db..927a52d544 100644
--- a/docs/genindex.html
+++ b/docs/genindex.html
@@ -72,9 +72,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -272,6 +269,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -6904,14 +6902,14 @@
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/get_started/overview.html b/docs/get_started/overview.html
index 7a02060588..15bcff724b 100644
--- a/docs/get_started/overview.html
+++ b/docs/get_started/overview.html
@@ -74,9 +74,6 @@
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                 </li>
-                <li class="nav-item">
-                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
-                </li>
                 <li class="nav-item">
                    <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                 </li>
@@ -279,6 +276,7 @@
 <p class="caption" role="heading"><span class="caption-text">Deep Dive</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../deep_dive/tensor_ir/index.html">TensorIR</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../deep_dive/relax/index.html">Relax</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
 <ul>
@@ -467,14 +465,14 @@ please refer to <a class="reference internal" href="tutorials/quick_start.html#q
     <div class="footerHeader">
       <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
         <div class="copywrite d-flex align-items-center">
-          <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5>
+          <h5 id="copy-right-info">© 2024 Apache Software Foundation | All rights reserved</h5>
         </div>
       </div>
 
     </div>
 
     <div>
-      <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+      <div class="footernote">Copyright © 2024 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
     </div>
 
 </section>
diff --git a/docs/get_started/tutorials/index.html b/docs/get_started/tutorials/index.html
index 8fb6b4aace..dec6a72c87 100644
--- a/docs/get_started/tutorials/index.html
+++ b/docs/get_started/tutorials/index.html
... 12045 lines suppressed ...