Available Patterns#
Default Patterns#
<<<
from yobx.xoptim import get_pattern_list
names = sorted(
[(pat.__class__.__name__, pat.__module__) for pat in get_pattern_list("default")]
)
for i, (name, module) in enumerate(names):
print(f"* {i+1}: :class:`{name} <{module}.{name}>`")
>>>
8:
CastPattern16:
DropoutPattern18:
ExpandPattern28:
GeluPattern30:
IdentityPattern33:
LeakyReluPattern34:
MatMulAddPattern36:
MaxReluPattern40:
NotNotPattern41:
NotWherePattern49:
ReshapePattern78:
Sub1MulPattern82:
SwapUnaryPattern96:
WhereAddPattern
Patterns specific to onnxruntime#
<<<
from yobx.xoptim import get_pattern_list
names = sorted(
[
(pat.__class__.__name__, pat.__module__)
for pat in get_pattern_list("onnxruntime")
]
)
for i, (name, module) in enumerate(names):
print(f"* {i+1}: :class:`{name} <{module}.{name}>`")
>>>
12:
GeluErfPattern13:
GeluOrtPattern20:
QuickGeluPattern
Patterns specific to ai.onnx.ml#
<<<
from yobx.xoptim import get_pattern_list
names = sorted(
[(pat.__class__.__name__, pat.__module__) for pat in get_pattern_list("ml")]
)
for i, (name, module) in enumerate(names):
print(f"* {i+1}: :class:`{name} <{module}.{name}>`")
>>>
Experimental Patterns#
This works on CUDA with onnx-extended.
<<<
from yobx.xoptim import get_pattern_list
names = sorted(
[
(pat.__class__.__name__, pat.__module__)
for pat in get_pattern_list("experimental")
]
)
for i, (name, module) in enumerate(names):
print(f"* {i+1}: :class:`{name} <{module}.{name}>`")
>>>
11:
NegXplus1Pattern15:
SubMulPattern17:
TriMatrixPattern
Pattern Optimization Environment Variables#
When the ONNX graph is optimized with the pattern optimizer, additional environment variables can help trace which patterns are applied and narrow down optimization problems (see Debugging Environment Variables for the full documentation).