Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

An alternative implementation of torchrec serializer #2166

Closed
wants to merge 1 commit into from

Conversation

TroyGarden
Copy link
Contributor

Summary:

context

  • after discussion with dstaay-fb, a rule of thumb: serializer APIs better to be symmetric
  • SerializerInterface.serialize takes a target module (nn.Module, usually sparse), returns a tensor (serialized binary, will be put to a buffer), and a list of child_fqns, which require further serialization
  • SerializerInterface.deserialize takes the binary data (tensor from buffer), a device flag, and the unflattened module (for its child modules), returns the deserialized module
  • the main APIs for external usage are the serialize_embedding_modules and _deserialize_embedding_modules
  • the former walks through the input module, finds the sparse (sub)modules, stores sparse modules metadata in buffer
  • the later walks through the input module (unflattened from ep), finds the stored metadata from the buffer, and restore the sparse modules.

Differential Revision: D58933792

@facebook-github-bot facebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jun 24, 2024
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D58933792

Summary:
Pull Request resolved: #2166

# context
* after discussion with dstaay-fb, a rule of thumb: serializer APIs better to be symmetric
* `SerializerInterface.serialize` takes a target module (nn.Module, usually sparse), returns a tensor (serialized binary, will be put to a buffer), and a list of child_fqns, which require further serialization
* `SerializerInterface.deserialize` takes the binary data (tensor from buffer), a device flag, and the unflattened module (for its child modules), returns the deserialized module
* the main APIs for external usage are the `serialize_embedding_modules` and `_deserialize_embedding_modules`
* the former walks through the input module, finds the sparse (sub)modules, stores sparse modules metadata in buffer
* the later walks through the input module (unflattened from ep), finds the stored metadata from the buffer, and restore the sparse modules.

Differential Revision: D58933792
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D58933792

@TroyGarden TroyGarden deleted the export-D58933792 branch July 15, 2024 22:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants