diff --git a/docs/api/python/index.rst b/docs/api/python/index.rst index 59bd1795b7ec..ddad9d10f8f9 100644 --- a/docs/api/python/index.rst +++ b/docs/api/python/index.rst @@ -24,3 +24,4 @@ Python API vta/index nnvm/index hybrid + relay/index diff --git a/docs/api/python/relay/backend.rst b/docs/api/python/relay/backend.rst new file mode 100644 index 000000000000..5cbc250b55ba --- /dev/null +++ b/docs/api/python/relay/backend.rst @@ -0,0 +1,16 @@ +tvm.relay.backend +----------------- + +.. automodule:: tvm.relay.backend + +Interpreter +----------- + +.. automodule:: tvm.relay.backend.interpreter + :members: + +.. automodule:: tvm.relay.backend.compile_engine + :members: + +.. automodule:: tvm.relay.backend.graph_runtime_codegen + :members: diff --git a/docs/api/python/relay/base.rst b/docs/api/python/relay/base.rst new file mode 100644 index 000000000000..72315dca0193 --- /dev/null +++ b/docs/api/python/relay/base.rst @@ -0,0 +1,16 @@ +tvm.relay.base +-------------- +.. automodule:: tvm.relay.base + +.. autofunction:: tvm.relay.base.register_relay_node + +.. autofunction:: tvm.relay.base.register_relay_attr_node + +.. autoclass:: tvm.relay.base.RelayNode + :members: + +.. autoclass:: tvm.relay.base.Span + :members: + +.. autoclass:: tvm.relay.base.Id + :members: diff --git a/docs/api/python/relay/build_module.rst b/docs/api/python/relay/build_module.rst new file mode 100644 index 000000000000..a278940f0fd5 --- /dev/null +++ b/docs/api/python/relay/build_module.rst @@ -0,0 +1,19 @@ +tvm.relay.build_module +---------------------- + +.. automodule:: tvm.relay.build_module + +.. autofunction:: tvm.relay.build_module.build + +.. autofunction:: tvm.relay.build_module.optimize + +.. autofunction:: tvm.relay.build_module.create_executor + +.. autoclass:: tvm.relay.build_module.BuildConfig + :members: + +.. autofunction:: tvm.relay.build_module.build_config + :members: + +.. autoclass:: tvm.relay.build_module.GraphExecutor + :members: diff --git a/docs/api/python/relay/expr.rst b/docs/api/python/relay/expr.rst new file mode 100644 index 000000000000..540d6bfbab65 --- /dev/null +++ b/docs/api/python/relay/expr.rst @@ -0,0 +1,53 @@ +tvm.relay.expr +-------------- + +.. automodule:: tvm.relay.expr + +.. autofunction:: tvm.relay.expr.var + +.. autofunction:: tvm.relay.expr.const + +.. autofunction:: tvm.relay.expr.bind + +.. autoclass:: tvm.relay.expr.Expr + :members: + +.. autoclass:: tvm.relay.expr.Constant + :members: + +.. autoclass:: tvm.relay.expr.Tuple + :members: + +.. autoclass:: tvm.relay.expr.Var + :members: + +.. autoclass:: tvm.relay.expr.GlobalVar + :members: + +.. autoclass:: tvm.relay.expr.Function + :members: + +.. autoclass:: tvm.relay.expr.Call + :members: + +.. autoclass:: tvm.relay.expr.Let + :members: + +.. autoclass:: tvm.relay.expr.If + :members: + +.. autoclass:: tvm.relay.expr.TupleGetItem + :members: + +.. autoclass:: tvm.relay.expr.TempExpr + :members: + +.. autoclass:: tvm.relay.expr.ExprFunctor + :members: + +.. autoclass:: tvm.relay.expr.ExprMutator + :members: + +.. autoclass:: tvm.relay.expr.TupleWrapper + :members + diff --git a/docs/api/python/relay/frontend.rst b/docs/api/python/relay/frontend.rst new file mode 100644 index 000000000000..a418e042bf3d --- /dev/null +++ b/docs/api/python/relay/frontend.rst @@ -0,0 +1,7 @@ + +tvm.relay.frontend +------------------ + +.. automodule:: tvm.relay.frontend + +.. autofunction:: tvm.relay.frontend.from_mxnet diff --git a/docs/api/python/relay/image.rst b/docs/api/python/relay/image.rst new file mode 100644 index 000000000000..223213eca8e3 --- /dev/null +++ b/docs/api/python/relay/image.rst @@ -0,0 +1,9 @@ + +tvm.relay.image +--------------- + +.. automodule:: tvm.relay.image + :members: + +.. automodule:: tvm.relay.op.image.image + :members: diff --git a/docs/api/python/relay/index.rst b/docs/api/python/relay/index.rst new file mode 100644 index 000000000000..da3d3a912dd0 --- /dev/null +++ b/docs/api/python/relay/index.rst @@ -0,0 +1,25 @@ +Relay API +========= + +This document contains the Python API for the Relay frontend, optimizer, and +compiler toolchain. + +Relay is the second-generation, high-level intermediate representation (IR) for the TVM +compiler stack. + +.. toctree:: + :maxdepth: 2 + + backend + base + build_module + expr + frontend + image + ir_pass + module + nn + op + scope_builder + ty + vision diff --git a/docs/api/python/relay/ir_pass.rst b/docs/api/python/relay/ir_pass.rst new file mode 100644 index 000000000000..d02ef4d94b0a --- /dev/null +++ b/docs/api/python/relay/ir_pass.rst @@ -0,0 +1,4 @@ +tvm.relay.ir_pass +----------------- +.. automodule:: tvm.relay.ir_pass + :members: \ No newline at end of file diff --git a/docs/api/python/relay/module.rst b/docs/api/python/relay/module.rst new file mode 100644 index 000000000000..ec9642b484ba --- /dev/null +++ b/docs/api/python/relay/module.rst @@ -0,0 +1,7 @@ +tvm.relay.module +---------------- + +.. automodule:: tvm.relay.module + +.. autoclass:: tvm.relay.module.Module + :members: diff --git a/docs/api/python/relay/nn.rst b/docs/api/python/relay/nn.rst new file mode 100644 index 000000000000..8e3f47f7bead --- /dev/null +++ b/docs/api/python/relay/nn.rst @@ -0,0 +1,7 @@ +tvm.relay.nn +------------ +.. automodule:: tvm.relay.nn + :members: + +.. automodule:: tvm.relay.op.nn.nn + :members: diff --git a/docs/api/python/relay/op.rst b/docs/api/python/relay/op.rst new file mode 100644 index 000000000000..7413a818f73f --- /dev/null +++ b/docs/api/python/relay/op.rst @@ -0,0 +1,25 @@ +tvm.relay.op +------------ +.. automodule:: tvm.relay.op + :members: + +.. automodule:: tvm.relay.op.op + :members: + +.. automodule:: tvm.relay.op.reduce + :members: + +.. automodule:: tvm.relay.op.tensor + :members: + +.. automodule:: tvm.relay.op.transform + :members: + +.. automodule:: tvm.relay.op.nn.nn + :members: + +.. automodule:: tvm.relay.op.vision.multibox + :members: + +.. automodule:: tvm.relay.op.vision.nms + :members: diff --git a/docs/api/python/relay/scope_builder.rst b/docs/api/python/relay/scope_builder.rst new file mode 100644 index 000000000000..19fca89bf2d2 --- /dev/null +++ b/docs/api/python/relay/scope_builder.rst @@ -0,0 +1,7 @@ +tvm.relay.scope_builder +----------------------- + +.. automodule:: tvm.relay.scope_builder + +.. autoclass:: tvm.relay.scope_builder.ScopeBuilder + :members: diff --git a/docs/api/python/relay/ty.rst b/docs/api/python/relay/ty.rst new file mode 100644 index 000000000000..edf15275db03 --- /dev/null +++ b/docs/api/python/relay/ty.rst @@ -0,0 +1,32 @@ +tvm.relay.ty +------------ + +.. automodule:: tvm.relay.ty + :members: + +.. autoclass:: tvm.relay.ty.Type + :members: + +.. autoclass:: tvm.relay.ty.TensorType + :members: + +.. autoclass:: tvm.relay.ty.Kind + :members: + +.. autoclass:: tvm.relay.ty.TypeVar + :members: + +.. autoclass:: tvm.relay.ty.TypeConstraint + :members: + +.. autoclass:: tvm.relay.ty.TupleType + :members: + +.. autoclass:: tvm.relay.ty.FuncType + :members: + +.. autoclass:: tvm.relay.ty.IncompleteType + :members: + +.. autoclass:: tvm.relay.ty.TypeRelation + :members: diff --git a/docs/api/python/relay/vision.rst b/docs/api/python/relay/vision.rst new file mode 100644 index 000000000000..7751dd688b15 --- /dev/null +++ b/docs/api/python/relay/vision.rst @@ -0,0 +1,12 @@ + +tvm.relay.vision +---------------- + +.. automodule:: tvm.relay.vision + :members: + +.. automodule:: tvm.relay.op.vision.multibox + :members: + +.. automodule:: tvm.relay.op.vision.nms + :members: diff --git a/python/tvm/relay/backend/interpreter.py b/python/tvm/relay/backend/interpreter.py index 5c7401c8c146..ff6cf6aa1d5c 100644 --- a/python/tvm/relay/backend/interpreter.py +++ b/python/tvm/relay/backend/interpreter.py @@ -1,5 +1,5 @@ #pylint: disable=no-else-return -"""An interface to the Realy interpreter.""" +"""The Python interface to the Relay reference interpreter.""" from __future__ import absolute_import import numpy as np @@ -23,6 +23,7 @@ def from_scalar(value, dtype=None): @register_relay_node class TupleValue(Value): + """A tuple value produced by the interpreter.""" def __init__(self, *fields): self.__init_handle_by_constructor__( _make.TupleValue, fields) @@ -33,12 +34,13 @@ def __getitem__(self, field_no): @register_relay_node class Closure(Value): + """A closure produced by the interpreter.""" pass @register_relay_node class TensorValue(Value): - """A Tensor value produced by the evaluator.""" + """A Tensor value produced by the interpreter.""" def __init__(self, data): """Allocate a new TensorValue and copy the data from `array` into diff --git a/python/tvm/relay/base.py b/python/tvm/relay/base.py index f1105fe4f0d9..c50013b199ac 100644 --- a/python/tvm/relay/base.py +++ b/python/tvm/relay/base.py @@ -8,12 +8,12 @@ NodeBase = NodeBase def register_relay_node(type_key=None): - """register relay node type + """Register a Relay node type. Parameters ---------- type_key : str or cls - The type key of the node + The type key of the node. """ if not isinstance(type_key, str): return _register_tvm_node( @@ -22,12 +22,12 @@ def register_relay_node(type_key=None): def register_relay_attr_node(type_key=None): - """register relay attribute node + """Register a Relay attribute node. Parameters ---------- type_key : str or cls - The type key of the node + The type key of the node. """ if not isinstance(type_key, str): return _register_tvm_node( @@ -36,7 +36,7 @@ def register_relay_attr_node(type_key=None): class RelayNode(NodeBase): - """Base class of all relay node.""" + """Base class of all Relay nodes.""" def astext(self, show_meta_data=True, annotate=None): """Get the text format of the expression. @@ -52,8 +52,8 @@ def astext(self, show_meta_data=True, annotate=None): Note ---- - meta data section is necessary to fully parse the text format. - However, it can contain dumps that are big(constat weights), + The metadata section is necessary to fully parse the text format. + However, it can contain dumps that are big (e.g constant weights)a, so it can be helpful to skip printing the meta data section. Returns @@ -66,12 +66,16 @@ def astext(self, show_meta_data=True, annotate=None): @register_relay_node class Span(RelayNode): + """Specifies a location in a source program.""" + def __init__(self, source, lineno, col_offset): self.__init_handle_by_constructor__(_make.Span, source, lineno, col_offset) @register_relay_node class Id(NodeBase): - """Unique identifier(name) for Var across type checking.""" + """Unique identifier(name) used in Var. + Guaranteed to be stable across all passes. + """ def __init__(self): raise RuntimeError("Cannot directly construct Id") diff --git a/python/tvm/relay/build_module.py b/python/tvm/relay/build_module.py index 2a2cd9f82ecb..7af22431aa81 100644 --- a/python/tvm/relay/build_module.py +++ b/python/tvm/relay/build_module.py @@ -240,13 +240,13 @@ class GraphExecutor(_interpreter.Executor): Parameters ---------- - mod : tvm.relay.Module + mod : :py:class:`~tvm.relay.module.Module` The module to support the execution. - ctx : tvm.TVMContext + ctx : :py:class:`TVMContext` The runtime context to run the code on. - target : tvm.Target + target : :py:class:`Target` The target option to build the function. """ def __init__(self, mod, ctx, target): @@ -282,13 +282,13 @@ def create_executor(kind="debug", kind : str The type of executor - mod : tvm.relay.Module + mod : :py:class:`~tvm.relay.module.Module` The Relay module containing collection of functions - ctx : tvm.TVMContext + ctx : :py:class:`tvm.TVMContext` The context to execute the code. - target : tvm.Target + target : :py:class:`tvm.Target` The corresponding context """ if ctx is not None: diff --git a/python/tvm/relay/frontend/__init__.py b/python/tvm/relay/frontend/__init__.py index 28766b9ae3be..2d01174a0d96 100644 --- a/python/tvm/relay/frontend/__init__.py +++ b/python/tvm/relay/frontend/__init__.py @@ -1,4 +1,10 @@ -"""Relay frontends.""" +""" +Frontends for constructing Relay programs. + +Contains the model importers currently defined +for Relay. +""" + from __future__ import absolute_import from .mxnet import from_mxnet diff --git a/python/tvm/relay/image.py b/python/tvm/relay/image.py index 43cee89b3483..90bb87d71c2e 100644 --- a/python/tvm/relay/image.py +++ b/python/tvm/relay/image.py @@ -1,4 +1,4 @@ # pylint: disable=wildcard-import, unused-import, unused-wildcard-import -"""Image nets related operators.""" +"""Image network related operators.""" # Re-export in a specific file name so that autodoc can pick it up from .op.image import * diff --git a/python/tvm/relay/scope_builder.py b/python/tvm/relay/scope_builder.py index 641566946f58..074a4aa66c81 100644 --- a/python/tvm/relay/scope_builder.py +++ b/python/tvm/relay/scope_builder.py @@ -61,7 +61,7 @@ class ScopeBuilder(object): Examples -------- - ..code-block: python + .. code-block: python sb = relay.ScopeBuilder() cond = relay.var("cond", 'bool') @@ -115,7 +115,7 @@ def if_scope(self, cond): Parameters ---------- - cond: tvm.relay.Expr + cond: tvm.relay.expr.Expr The condition Returns @@ -165,7 +165,7 @@ def ret(self, value): Parameters ---------- - value: tvm.relay.Expr + value: tvm.relay.expr.Expr The return value. """ if self._ret_values[-1] is not None: @@ -177,7 +177,7 @@ def get(self): Returns ------- - value: tvm.relay.Expr + value: tvm.relay.expr.Expr The final result of the expression. """ if len(self._bindings) != 1: