# Optimizing a Model using the Optimizer ## Introduction The ONNX Script `Optimizer` tool provides the user with the functionality to optimize an ONNX model by performing optimizations and clean-ups such as constant folding, dead code elimination, etc. ## Usage In order to utilize the optimizer tool, ```python import onnxscript onnxscript.optimizer.optimize(model) ``` ### optimize API The `onnxscript.optimizer.optimize` call takes in several optional parameters that allows the caller to further fine-tune the process of optimization. ```{eval-rst} .. autofunction:: onnxscript.optimizer.optimize :noindex: ``` ## Description of optimizations applied by `onnxscript.optimizer.optimize` :::{table} :widths: auto :align: center | Optimization 'onnxscript.optimizer.` + .. | Description | | - | - | | **Constant folding**
`constant_folding.fold_constants` | Applies constant folding optimization to the model. | | **Constant propagation**
`constant_folding.fold_constants` | Applies constant propagation optimization to the model. Applied as part of the constant folding optimization. | | **Sequence simplification**
`constant_folding.fold_constants` | Simplifies Sequence based ops (SequenceConstruct, ConcatFromSequence) present in the model. Applied as part of the constant folding optimization. | | **Remove unused nodes**
`remove_unused.remove_unused_nodes` | Removes unused nodes from the model. | | **Remove unused functions**
`remove_unused_function.remove_unused_functions` | Removes unused function protos from the model. | | **Inline functions with unused outputs**
`simple_function_folding.inline_functions_with_unused_outputs` | Inlines function nodes that have unused outputs. | | **Inline simple functions**
`simple_function_folding.inline_simple_functions` | Inlines simple functions based on a node count threshold. | ::: ## List of pattern rewrite rules applied by `onnxscript.optimizer.optimize` ```{eval-rst} .. autosummary:: :nosignatures: onnxscript.rewriter.broadcast_to_matmul onnxscript.rewriter.cast_constant_of_shape onnxscript.rewriter.gemm_to_matmul_add onnxscript.rewriter.no_op ```