Skip to content

Commit

Permalink
Update docs to reference optimizer.get_available_passes() (#1262)
Browse files Browse the repository at this point in the history
* Update docs to reference optimizer.get_available_passes()

* typo

* Switch order of optimer methods to be in a more logical order
  • Loading branch information
pliniosilveira authored and houseroad committed Aug 9, 2018
1 parent 970c839 commit 4b51596
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 13 deletions.
13 changes: 8 additions & 5 deletions docs/Optimizer.md
Expand Up @@ -22,18 +22,21 @@ The optimizer may be invoked either via C++ or Python. The Python API
is described, with example,
[here](PythonAPIOverview.md#optimizing-an-onnx-model).

The C++ API consists of a single function
The C++ API consists of two functions

```
const std::vector<std::string> GetAvailablePasses();
ModelProto Optimize(
const ModelProto& mp_in,
const std::vector<std::string>& names);
```

which accepts an input `ModelProto` and a list of optimization passes to
apply, and which returns a new `ModelProto` which is the result of
applying each of the named passes in sequence to the model. For a list
of available passes, see [optimize.h](/onnx/optimizer/optimize.h).
`GetAvailablePasses()` returns a list of available passes.

`Optimize()` accepts an input `ModelProto` and a list of optimization passes to
apply, and returns a new `ModelProto` which is the result of
applying each of the named passes in sequence to the model.

## Implementing Optimization Passes

Expand Down
12 changes: 9 additions & 3 deletions docs/PythonAPIOverview.md
Expand Up @@ -127,8 +127,14 @@ original_model = onnx.load(model_path)

print('The model before optimization:\n{}'.format(original_model))

# A full list of supported optimization passes can be found here:
# https://github.com/onnx/onnx/blob/master/onnx/optimizer.py#L27
# A full list of supported optimization passes can be found using get_available_passes()
all_passes = optimizer.get_available_passes()
print("Available optimization passes:")
for p in all_passes:
print(p)
print()

# Pick one pass as example
passes = ['fuse_consecutive_transposes']

# Apply the optimization on the original model
Expand All @@ -137,7 +143,7 @@ optimized_model = optimizer.optimize(original_model, passes)
print('The model after optimization:\n{}'.format(optimized_model))

# One can also apply the default passes on the (serialized) model
# Check the default passes here: https://github.com/onnx/onnx/blob/master/onnx/optimizer.py#L41
# Check the default passes here: https://github.com/onnx/onnx/blob/master/onnx/optimizer.py#L43
optimized_model = optimizer.optimize(original_model)
```
Runnable IPython notebooks:
Expand Down
27 changes: 24 additions & 3 deletions onnx/examples/optimize_onnx.ipynb
Expand Up @@ -110,6 +110,21 @@
"name": "stdout",
"output_type": "stream",
"text": [
"Available optimization passes:\n",
"eliminate_identity\n",
"eliminate_nop_transpose\n",
"eliminate_unused_initializer\n",
"extract_constant_to_initializer\n",
"fuse_add_bias_into_conv\n",
"fuse_bn_into_conv\n",
"fuse_consecutive_squeezes\n",
"fuse_consecutive_transposes\n",
"fuse_transpose_into_gemm\n",
"lift_lexical_references\n",
"nop\n",
"split_init\n",
"split_predict\n",
"\n",
"The model after optimization:\n",
"ir_version: 3\n",
"producer_name: \"onnx-examples\"\n",
Expand Down Expand Up @@ -175,8 +190,14 @@
}
],
"source": [
"# A full list of supported optimization passes can be found here:\n",
"# https://github.com/onnx/onnx/blob/master/onnx/optimizer.py#L21\n",
"# A full list of supported optimization passes can be found using get_available_passes()\n",
"all_passes = optimizer.get_available_passes()\n",
"print(\"Available optimization passes:\")\n",
"for p in all_passes:\n",
" print(p)\n",
"print()\n",
"\n",
"# Pick one pass as example\n",
"passes = ['fuse_consecutive_transposes']\n",
"\n",
"# Apply the optimization on the original serialized model\n",
Expand Down Expand Up @@ -209,7 +230,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.10"
"version": "2.7.12"
}
},
"nbformat": 4,
Expand Down
4 changes: 2 additions & 2 deletions onnx/optimizer/optimize.h
Expand Up @@ -86,11 +86,11 @@ struct Optimizer {
}
};

const std::vector<std::string> GetAvailablePasses();

ModelProto Optimize(
const ModelProto& mp_in,
const std::vector<std::string>& names);

const std::vector<std::string> GetAvailablePasses();

} // namespace optimization
} // namespace ONNX_NAMESPACE

0 comments on commit 4b51596

Please sign in to comment.