Skip to content

Commit 65d4b94

Browse files
authored
Fix circular dep in flat tensor import (#15902)
Seeing error when important flat tensor deserializer ``` (executorch) [[email protected] /data/users/lfq/executorch (aff5086)]$ python debug-lora.py Traceback (most recent call last): File "/data/users/lfq/executorch/debug-lora.py", line 1, in <module> from executorch.extension.flat_tensor.serialize.serialize import _deserialize_to_flat_tensor File "/data/users/lfq/executorch/src/executorch/extension/flat_tensor/serialize/serialize.py", line 20, in <module> from executorch.exir._serialize._cord import Cord File "/data/users/lfq/executorch/src/executorch/exir/__init__.py", line 9, in <module> from executorch.exir.capture import ( File "/data/users/lfq/executorch/src/executorch/exir/capture/__init__.py", line 9, in <module> from executorch.exir.capture._capture import ( File "/data/users/lfq/executorch/src/executorch/exir/capture/_capture.py", line 17, in <module> from executorch.exir.program import ExirExportedProgram File "/data/users/lfq/executorch/src/executorch/exir/program/__init__.py", line 10, in <module> from executorch.exir.program._program import ( File "/data/users/lfq/executorch/src/executorch/exir/program/_program.py", line 82, in <module> from executorch.extension.flat_tensor.serialize.serialize import FlatTensorSerializer ImportError: cannot import name 'FlatTensorSerializer' from partially initialized module 'executorch.extension.flat_tensor.serialize.serialize' (most likely due to a circular import) (/data/users/lfq/executorch/src/executorch/extension/flat_tensor/serialize/serialize.py) ``` Previously, the import happened at module load time, causing the circular dependency. Now, the import happens at runtime, and we do not hit the circular dep.
1 parent 870cb1a commit 65d4b94

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

exir/program/_program.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@
7979
EXIREdgeDialectVerifier,
8080
get_aten_verifier,
8181
)
82-
from executorch.extension.flat_tensor.serialize.serialize import FlatTensorSerializer
8382
from torch._export.passes import ReplaceViewOpsWithViewCopyOpsPass
8483
from torch._export.verifier import Verifier
8584
from torch.export import ExportedProgram
@@ -590,6 +589,10 @@ def __init__(
590589
self._segment_alignment: int = segment_alignment
591590
self._constant_tensor_alignment: Optional[int] = constant_tensor_alignment
592591
self._delegate_alignment: Optional[int] = delegate_alignment
592+
from executorch.extension.flat_tensor.serialize.serialize import (
593+
FlatTensorSerializer,
594+
)
595+
593596
self._data_serializer: DataSerializer = FlatTensorSerializer()
594597

595598
def _get_emitter_output(self) -> EmitterOutput:
@@ -1839,6 +1842,10 @@ def __init__(
18391842
)
18401843

18411844
# Serialize emitter output, ready to be written to a file.
1845+
from executorch.extension.flat_tensor.serialize.serialize import (
1846+
FlatTensorSerializer,
1847+
)
1848+
18421849
self._data_serializer = FlatTensorSerializer()
18431850
self._pte_data, self._tensor_data = serialize_for_executorch(
18441851
self._emitter_output,

0 commit comments

Comments
 (0)