MCPcopy Create free account
hub / github.com/pytorch/executorch / serialize_lowered_module

Method serialize_lowered_module

exir/serde/serialize.py:263–308  ·  view source on GitHub ↗
(self, lowered_module_arg: torch.fx.Node)

Source from the content-addressed store, hash-verified

261 return serialized_args
262
263 def serialize_lowered_module(self, lowered_module_arg: torch.fx.Node) -> str:
264 assert lowered_module_arg.op == "get_attr"
265 assert isinstance(lowered_module_arg.target, str)
266
267 def serialize_bytes(b: bytes) -> str:
268 # We want to serialize the bytes to string because JSON cannot
269 # serialize bytes.
270 # Since the given bytes may be serialized with any encoding, so we
271 # want to first encode with base64, and then decode it with
272 # ascii. During deserialization we can just directly decode with b64
273 # to get the original encoded bytes.
274 return base64.b64encode(b).decode("ascii")
275
276 lowered_module = getattr(
277 lowered_module_arg.graph.owning_module, lowered_module_arg.target
278 )
279 assert isinstance(lowered_module, ExirLoweredBackendModule)
280
281 serialized_compile_spec = [
282 CompileSpec(cs.key, serialize_bytes(cs.value))
283 for cs in lowered_module.compile_specs
284 ]
285
286 serialized_artifact = ExportedProgramSerializer().serialize(
287 lowered_module.original_module
288 )
289 assert isinstance(serialized_artifact.exported_program, schema.ExportedProgram)
290
291 serialized_processed_bytes = serialize_bytes(lowered_module.processed_bytes)
292 named_data_store = json.dumps(export_serialize._dataclass_to_dict(lowered_module.named_data_store_output),cls=export_serialize.EnumEncoder) if lowered_module.named_data_store_output else None
293
294 serialized_lowered_module = SerdeLoweredBackendModule(
295 original_module=serialized_artifact.exported_program,
296 original_state_dict=serialize_bytes(serialized_artifact.state_dict),
297 original_constants=serialize_bytes(serialized_artifact.constants),
298 processed_bytes=serialized_processed_bytes,
299 compile_specs=serialized_compile_spec,
300 backend_id=lowered_module.backend_id,
301 named_data_store=named_data_store,
302 )
303
304 json_lowered_module = json.dumps(
305 export_serialize._dataclass_to_dict(serialized_lowered_module),
306 cls=export_serialize.EnumEncoder,
307 )
308 return json_lowered_module
309
310
311class ExportedProgramSerializer(export_serialize.ExportedProgramSerializer):

Callers 1

Calls 3

CompileSpecClass · 0.90
serializeMethod · 0.45

Tested by

no test coverage detected