diff --git a/docs/conf.py b/docs/conf.py index 1166d73e9264..0d8b9e34dbbe 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -194,10 +194,8 @@ def run_doxygen(folder): '../tutorials/optimize', '../tutorials/autotvm', '../tutorials/dev', - '../tutorials/vta', '../tutorials/topi', - '../tutorials/deployment', - '../tutorials/nnvm']) + '../tutorials/deployment']) def generate_doxygen_xml(app): """Run the doxygen make commands if we're on the ReadTheDocs server""" diff --git a/tutorials/nnvm/.gitignore b/nnvm/tutorials/.gitignore similarity index 100% rename from tutorials/nnvm/.gitignore rename to nnvm/tutorials/.gitignore diff --git a/tutorials/nnvm/README.txt b/nnvm/tutorials/README.txt similarity index 100% rename from tutorials/nnvm/README.txt rename to nnvm/tutorials/README.txt diff --git a/tutorials/nnvm/deploy_model_on_mali_gpu.py b/nnvm/tutorials/deploy_model_on_mali_gpu.py similarity index 100% rename from tutorials/nnvm/deploy_model_on_mali_gpu.py rename to nnvm/tutorials/deploy_model_on_mali_gpu.py diff --git a/tutorials/nnvm/deploy_model_on_rasp.py b/nnvm/tutorials/deploy_model_on_rasp.py similarity index 100% rename from tutorials/nnvm/deploy_model_on_rasp.py rename to nnvm/tutorials/deploy_model_on_rasp.py diff --git a/tutorials/nnvm/deploy_ssd_mxnet.py b/nnvm/tutorials/deploy_ssd_mxnet.py similarity index 100% rename from tutorials/nnvm/deploy_ssd_mxnet.py rename to nnvm/tutorials/deploy_ssd_mxnet.py diff --git a/tutorials/nnvm/from_coreml.py b/nnvm/tutorials/from_coreml.py similarity index 100% rename from tutorials/nnvm/from_coreml.py rename to nnvm/tutorials/from_coreml.py diff --git a/tutorials/nnvm/from_darknet.py b/nnvm/tutorials/from_darknet.py similarity index 100% rename from tutorials/nnvm/from_darknet.py rename to nnvm/tutorials/from_darknet.py diff --git a/tutorials/nnvm/from_mxnet.py b/nnvm/tutorials/from_mxnet.py similarity index 100% rename from tutorials/nnvm/from_mxnet.py rename to nnvm/tutorials/from_mxnet.py diff --git a/tutorials/nnvm/from_mxnet_to_webgl.py b/nnvm/tutorials/from_mxnet_to_webgl.py similarity index 100% rename from tutorials/nnvm/from_mxnet_to_webgl.py rename to nnvm/tutorials/from_mxnet_to_webgl.py diff --git a/tutorials/nnvm/from_onnx.py b/nnvm/tutorials/from_onnx.py similarity index 100% rename from tutorials/nnvm/from_onnx.py rename to nnvm/tutorials/from_onnx.py diff --git a/tutorials/nnvm/from_tensorflow.py b/nnvm/tutorials/from_tensorflow.py similarity index 100% rename from tutorials/nnvm/from_tensorflow.py rename to nnvm/tutorials/from_tensorflow.py diff --git a/tutorials/nnvm/get_started.py b/nnvm/tutorials/get_started.py similarity index 100% rename from tutorials/nnvm/get_started.py rename to nnvm/tutorials/get_started.py diff --git a/tutorials/nnvm/nlp/from_darknet_rnn.py b/nnvm/tutorials/nlp/from_darknet_rnn.py similarity index 100% rename from tutorials/nnvm/nlp/from_darknet_rnn.py rename to nnvm/tutorials/nlp/from_darknet_rnn.py diff --git a/tutorials/nnvm/nlp/keras_s2s_translate.py b/nnvm/tutorials/nlp/keras_s2s_translate.py similarity index 100% rename from tutorials/nnvm/nlp/keras_s2s_translate.py rename to nnvm/tutorials/nlp/keras_s2s_translate.py diff --git a/tutorials/nnvm/tune_nnvm_arm.py b/nnvm/tutorials/tune_nnvm_arm.py similarity index 100% rename from tutorials/nnvm/tune_nnvm_arm.py rename to nnvm/tutorials/tune_nnvm_arm.py diff --git a/tutorials/nnvm/tune_nnvm_cuda.py b/nnvm/tutorials/tune_nnvm_cuda.py similarity index 100% rename from tutorials/nnvm/tune_nnvm_cuda.py rename to nnvm/tutorials/tune_nnvm_cuda.py diff --git a/tutorials/nnvm/tune_nnvm_mobile_gpu.py b/nnvm/tutorials/tune_nnvm_mobile_gpu.py similarity index 100% rename from tutorials/nnvm/tune_nnvm_mobile_gpu.py rename to nnvm/tutorials/tune_nnvm_mobile_gpu.py diff --git a/tutorials/nnvm/tune_nnvm_x86.py b/nnvm/tutorials/tune_nnvm_x86.py similarity index 100% rename from tutorials/nnvm/tune_nnvm_x86.py rename to nnvm/tutorials/tune_nnvm_x86.py diff --git a/tutorials/nnvm/using_external_lib.py b/nnvm/tutorials/using_external_lib.py similarity index 100% rename from tutorials/nnvm/using_external_lib.py rename to nnvm/tutorials/using_external_lib.py diff --git a/tutorials/nnvm/web/resnet.html b/nnvm/tutorials/web/resnet.html similarity index 100% rename from tutorials/nnvm/web/resnet.html rename to nnvm/tutorials/web/resnet.html diff --git a/tutorials/frontend/deploy_ssd_gluoncv.py b/tutorials/frontend/deploy_ssd_gluoncv.py index 6a5d63b9f8cf..bcd5459e1cf7 100644 --- a/tutorials/frontend/deploy_ssd_gluoncv.py +++ b/tutorials/frontend/deploy_ssd_gluoncv.py @@ -9,9 +9,7 @@ import tvm from matplotlib import pyplot as plt -from nnvm import compiler -from nnvm.frontend import from_mxnet -from nnvm.testing.config import ctx_list +from tvm.relay.testing.config import ctx_list from tvm import relay from tvm.contrib import graph_runtime from gluoncv import model_zoo, data, utils diff --git a/tutorials/nnvm_quick_start.py b/tutorials/nnvm_quick_start.py deleted file mode 100644 index 7ff7f89cfe39..000000000000 --- a/tutorials/nnvm_quick_start.py +++ /dev/null @@ -1,139 +0,0 @@ -""" -.. _tutorial-nnvm-quick-start: - -Quick Start Tutorial for Compiling Deep Learning Models -======================================================= -**Author**: `Yao Wang `_ - -This example shows how to build a neural network with NNVM python frontend and -generate runtime library for Nvidia GPU with TVM. -Notice that you need to build TVM with cuda and llvm enabled. -""" - -###################################################################### -# Overview for Supported Hardware Backend of TVM -# ---------------------------------------------- -# The image below shows hardware backend currently supported by TVM: -# -# .. image:: https://github.com/dmlc/web-data/raw/master/tvm/tutorial/tvm_support_list.png -# :align: center -# :scale: 100% -# -# In this tutorial, we'll choose cuda and llvm as target backends. -# To begin with, let's import NNVM and TVM. - -import numpy as np - -import nnvm.compiler -import nnvm.testing -import tvm -from tvm.contrib import graph_runtime - -###################################################################### -# Define Neural Network in NNVM -# ----------------------------- -# First, let's define a neural network with nnvm python frontend. -# For simplicity, we'll use pre-defined resnet-18 network in NNVM. -# Parameters are initialized with Xavier initializer. -# NNVM also supports other model formats such as MXNet, CoreML, ONNX and -# Tensorflow. -# -# In this tutorial, we assume we will do inference on our device -# and the batch size is set to be 1. Input images are RGB color -# images of size 224 * 224. We can call the :any:`nnvm.symbol.debug_str` -# to show the network structure. - -batch_size = 1 -num_class = 1000 -image_shape = (3, 224, 224) -data_shape = (batch_size,) + image_shape -out_shape = (batch_size, num_class) - -net, params = nnvm.testing.resnet.get_workload( - num_layers=18, batch_size=batch_size, image_shape=image_shape) -print(net.debug_str()) - -###################################################################### -# Compilation -# ----------- -# Next step is to compile the model using the NNVM/TVM pipeline. -# Users can specify the optimization level of the compilation. -# Currently this value can be 0 to 3. The optimization passes include -# operator fusion, pre-computation, layout transformation and so on. -# -# :any:`nnvm.compiler.build` returns three components: the execution graph in -# json format, the TVM module library of compiled functions specifically -# for this graph on the target hardware, and the parameter blobs of -# the model. During the compilation, NNVM does the graph-level -# optimization while TVM does the tensor-level optimization, resulting -# in an optimized runtime module for model serving. -# -# We'll first compile for Nvidia GPU. Behind the scene, `nnvm.compiler.build` -# first does a number of graph-level optimizations, e.g. pruning, fusing, etc., -# then registers the operators (i.e. the nodes of the optimized graphs) to -# TVM implementations to generate a `tvm.module`. -# To generate the module library, TVM will first transfer the High level IR -# into the lower intrinsic IR of the specified target backend, which is CUDA -# in this example. Then the machine code will be generated as the module library. - -opt_level = 3 -target = tvm.target.cuda() -with nnvm.compiler.build_config(opt_level=opt_level): - graph, lib, params = nnvm.compiler.build( - net, target, shape={"data": data_shape}, params=params) - -##################################################################### -# Run the generate library -# ------------------------ -# Now we can create graph runtime and run the module on Nvidia GPU. - -# create random input -ctx = tvm.gpu() -data = np.random.uniform(-1, 1, size=data_shape).astype("float32") -# create module -module = graph_runtime.create(graph, lib, ctx) -# set input and parameters -module.set_input("data", data) -module.set_input(**params) -# run -module.run() -# get output -out = module.get_output(0, tvm.nd.empty(out_shape)) -# convert to numpy -out.asnumpy() - -# Print first 10 elements of output -print(out.asnumpy().flatten()[0:10]) - -###################################################################### -# Save and Load Compiled Module -# ----------------------------- -# We can also save the graph, lib and parameters into files and load them -# back in deploy environment. - -#################################################### - -# save the graph, lib and params into separate files -from tvm.contrib import util - -temp = util.tempdir() -path_lib = temp.relpath("deploy_lib.tar") -lib.export_library(path_lib) -with open(temp.relpath("deploy_graph.json"), "w") as fo: - fo.write(graph.json()) -with open(temp.relpath("deploy_param.params"), "wb") as fo: - fo.write(nnvm.compiler.save_param_dict(params)) -print(temp.listdir()) - -#################################################### - -# load the module back. -loaded_json = open(temp.relpath("deploy_graph.json")).read() -loaded_lib = tvm.module.load(path_lib) -loaded_params = bytearray(open(temp.relpath("deploy_param.params"), "rb").read()) -input_data = tvm.nd.array(np.random.uniform(size=data_shape).astype("float32")) - -module = graph_runtime.create(loaded_json, loaded_lib, ctx) -module.load_params(loaded_params) -module.run(data=input_data) -out = module.get_output(0).asnumpy() diff --git a/tutorials/get_started.py b/tutorials/tensor_expr_get_started.py similarity index 97% rename from tutorials/get_started.py rename to tutorials/tensor_expr_get_started.py index dec601b937da..cb08b6bb5ee2 100644 --- a/tutorials/get_started.py +++ b/tutorials/tensor_expr_get_started.py @@ -1,12 +1,13 @@ """ -Get Started with TVM -==================== +Get Started with Tensor Expression +================================== **Author**: `Tianqi Chen `_ -This is an introduction tutorial to TVM. -TVM is a domain specific language for efficient kernel construction. +This is an introduction tutorial to Tensor expression language in TVM. +TVM uses a domain specific tensor expression for efficient kernel construction. -In this tutorial, we will demonstrate the basic workflow in TVM. +In this tutorial, we will demonstrate the basic workflow to use +the tensor expression language. """ from __future__ import absolute_import, print_function