-
Notifications
You must be signed in to change notification settings - Fork 478
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
Fix collection inputs to postproc modules #2733
base: main
Are you sure you want to change the base?
Conversation
This pull request was exported from Phabricator. Differential Revision: D69292525 |
f9b4c11
to
a4200a6
Compare
Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
This pull request was exported from Phabricator. Differential Revision: D69292525 |
…postproc modules (pytorch#2733) Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
a4200a6
to
17b0810
Compare
This pull request was exported from Phabricator. Differential Revision: D69292525 |
17b0810
to
9066e6b
Compare
…stproc modules (pytorch#2733) Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
This pull request was exported from Phabricator. Differential Revision: D69292525 |
…stproc modules (pytorch#2733) Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
…stproc modules (pytorch#2733) Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
…stproc modules (pytorch#2733) Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
…stproc modules (pytorch#2733) Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
9066e6b
to
5bcc494
Compare
This pull request was exported from Phabricator. Differential Revision: D69292525 |
…stproc modules (pytorch#2733) Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
…stproc modules (pytorch#2733) Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
…stproc modules (pytorch#2733) Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
…stproc modules (pytorch#2733) Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
…stproc modules (pytorch#2733) Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
Summary: `_shard_modules` function is used in fx_traceability tests for SDD and SemiSync pipeline. It uses a default ShardingPlanner and topology that use hardcoded batch size (512) and HBM memory limit (32Gb), respectively. This change allows specifying the ShardingPlanner and Topology to more accurately reflect the machine capabilities. The change is intentionally limited to `_shard_modules` only and not public `shard_modules` to avoid changing the contract for the latter. Reviewed By: sarckk Differential Revision: D69163227
…stproc modules (pytorch#2733) Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
5bcc494
to
0aedf8b
Compare
This pull request was exported from Phabricator. Differential Revision: D69292525 |
…stproc modules (pytorch#2733) Summary: Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution) To illustrate: ``` def forward(model_input: ...) -> ...: modified_input = model_input.float_features + 1 sharded_module_input = self.postproc(model_input, modified_input) # works sharded_module_input = self.postproc(model_input, [123]) # works sharded_module_input = self.postproc(model_input, [torch.ones_like(modified_input)]) # fails sharded_module_input = self.postproc(model_input, [modified_input]) # fails sharded_module_input = self.postproc(model_input, { 'a': 123 }) # works sharded_module_input = self.postproc(model_input, { 'a': torch.ones_like(modified_input) }) # fails sharded_module_input = self.postproc(model_input, { 'a': modified_input }) # fails return self.ebc(sharded_module_input) ``` Differential Revision: D69292525
Summary:
Postproc modules with collection inputs (list or dict) with non-static (derived from input or other postproc) elements were not properly rewritten - input elements remained fx.Nodes even during the actual model forward (i.e. outside rewrite, during pipeline execution)
To illustrate: