@ -1,13 +1,18 @@
""" Model / Layer Config Singleton
""" Model / Layer Config singleton state
"""
from typing import Any
from typing import Any , Optional
__all__ = [ ' is_exportable ' , ' is_scriptable ' , ' set_exportable ' , ' set_scriptable ' , ' is_no_jit ' , ' set_no_jit ' ]
__all__ = [
' is_exportable ' , ' is_scriptable ' , ' is_no_jit ' ,
' set_exportable ' , ' set_scriptable ' , ' set_no_jit ' , ' set_layer_config '
]
# Set to True if prefer to have layers with no jit optimization (includes activations)
_NO_JIT = False
# Set to True if prefer to have activation layers with no jit optimization
# NOTE not currently used as no difference between no_jit and no_activation jit as only layers obeying
# the jit flags so far are activations. This will change as more layers are updated and/or added.
_NO_ACTIVATION_JIT = False
# Set to True if exporting a model with Same padding via ONNX
@ -72,3 +77,39 @@ class set_scriptable:
global _SCRIPTABLE
_SCRIPTABLE = self . prev
return False
class set_layer_config :
""" Layer config context manager that allows setting all layer config flags at once.
If a flag arg is None , it will not change the current value .
"""
def __init__ (
self ,
scriptable : Optional [ bool ] = None ,
exportable : Optional [ bool ] = None ,
no_jit : Optional [ bool ] = None ,
no_activation_jit : Optional [ bool ] = None ) :
global _SCRIPTABLE
global _EXPORTABLE
global _NO_JIT
global _NO_ACTIVATION_JIT
self . prev = _SCRIPTABLE , _EXPORTABLE , _NO_JIT , _NO_ACTIVATION_JIT
if scriptable is not None :
_SCRIPTABLE = scriptable
if exportable is not None :
_EXPORTABLE = exportable
if no_jit is not None :
_NO_JIT = no_jit
if no_activation_jit is not None :
_NO_ACTIVATION_JIT = no_activation_jit
def __enter__ ( self ) - > None :
pass
def __exit__ ( self , * args : Any ) - > bool :
global _SCRIPTABLE
global _EXPORTABLE
global _NO_JIT
global _NO_ACTIVATION_JIT
_SCRIPTABLE , _EXPORTABLE , _NO_JIT , _NO_ACTIVATION_JIT = self . prev
return False