-
Notifications
You must be signed in to change notification settings - Fork 21.3k
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
[ONNX] Update documentation #58712
[ONNX] Update documentation #58712
Conversation
💊 CI failures summary and remediationsAs of commit d1666c6 (more details on the Dr. CI page and at hud.pytorch.org/pr/58712):
🕵️ 3 new failures recognized by patternsThe following CI failures do not appear to be due to upstream breakages: pytorch_xla_linux_bionic_py3_6_clang9_build (1/3)Step: "Build" (full log | diagnosis details | 🔁 rerun)
|
Job | Step | Action |
---|---|---|
pytorch_linux_backward_compatibility_check_test | Run tests | 🔁 rerun |
pytorch_linux_xenial_py3_6_gcc5_4_test | Run tests | 🔁 rerun |
pytorch_linux_xenial_py3_6_gcc5_4_jit_legacy_test | Run tests | 🔁 rerun |
ci.pytorch.org: 1 failed
This comment was automatically generated by Dr. CI (expand for details).
Follow this link to opt-out of these comments for your Pull Requests.Please report bugs/suggestions to the (internal) Dr. CI Users group.
I'm hosting a copy of the site with these changes here: https://garymm.github.io/onnx.html Probably best to review that. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @garymm for the updates! I'm still reading through the changes and leaving comments along the way
torch/onnx/utils.py
Outdated
@@ -476,6 +486,7 @@ def _model_to_graph(model, args, verbose=False, | |||
# NB: ONNX requires complete information about output types, which might be | |||
# erased by some optimizations, so we need to set it explicitly again. | |||
if torch_out is not None: | |||
# TODO: can we simplify this to always return a tuple of Tensor or None? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think wrapping sequence types in a list is needed so that the list or tuple won't be unrolled when wrapping them in another tuple tuple(output_wrapped)
in line 495.
We want to keep Tuple[Tuple[X]] or Tuple[List[X]] instead of Tuple[X].
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This comment refers to the return type of _model_to_graph, not the internals here. I moved the comment to try to make that clearer.
Thanks for the reviews! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com>
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> [ghstack-poisoned]
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> ghstack-source-id: 09beaf93a01fb441aaea09565284541ba2f6e723 Pull Request resolved: #60249
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> [ghstack-poisoned]
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> ghstack-source-id: 75bdfa13b013409e6613dc0804090b68d2335319 Pull Request resolved: #60249
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> [ghstack-poisoned]
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> ghstack-source-id: d57c84ab8e6ef77dcfac262508cee54c3e0946ad Pull Request resolved: #60249
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> [ghstack-poisoned]
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> ghstack-source-id: 8c40e0d57fedec2ac544093be4934db3d35a73b1 Pull Request resolved: #60249
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> ghstack-source-id: 85e906e288046d71fecfc4159f62981a0885cede Pull Request resolved: #60249
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> [ghstack-poisoned]
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> ghstack-source-id: 6fcb63f06c545f3c0b26350a18719e989843e1a9 Pull Request resolved: #60249
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> [ghstack-poisoned]
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> [ghstack-poisoned]
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> ghstack-source-id: 13223efb59e88e505b2d5fbb534b1e234d547d95 Pull Request resolved: #60249
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> ghstack-source-id: 3617d3f7ce7c630601c55bef96163ff22ae66a3d Pull Request resolved: #60249
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> [ghstack-poisoned]
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> ghstack-source-id: e4ed7996ce7537ebf4587952b4cb9c9be079ecf2 Pull Request resolved: #60249
* Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Co-authored-by: Gary Miguel <garymiguel@microsoft.com> Differential Revision: [D29494912](https://our.internmc.facebook.com/intern/diff/D29494912) [ghstack-poisoned]
Summary: Pull Request resolved: #60249 * Add introductory paragraph explaining what ONNX is and what the torch.onnx module does. * In "Tracing vs Scripting" and doc-string for torch.onnx.export(), clarify that exporting always happens on ScriptModules and that tracing and scripting are the two ways to produce a ScriptModule. * Remove examples of using Caffe2 to run exported models. Caffe2's website says it's deprecated, so it's probably best not to encourage people to use it by including it in examples. * Remove a lot of content that's redundant: * The example of how to mix tracing and scripting, and instead link to Introduction to TorchScript, which includes very similar content. * "Type annotations" section. Link to TorchScript docs which explain that in more detail. * "Using dictionaries to handle Named Arguments as model inputs" section. It's redundant with the description of the `args` argument to `export()`, which appears on the same page once the HTML is generated. * Remove the list of supported Tensor indexing patterns. If it's not in the list of unsupported patterns, users can assume it's supported, so having both is redundant. * Remove the list of supported operators and models. I think the list of supported operators is not very useful. A list of supported model architectures may be useful, but in reality it's already very out of date. We should add it back if / when we have a system for keeping it up to date. * "Operator Export Type" section. It's redundant with the description of the `operator_export_type` arg to to `export()`, which appears on the same page once the HTML is generated. * "Use external data format" section. It's redundant with the description of the `use_external_data_format` arg to `export()`. * "Training" section. It's redundant with the description of the `training` arg to `export()`. * Move the content about different operator implementations producing different results from the "Limitations" section into the doc for the `operator_export_type` arg. * Document "quantized" -> "caffe2" behavior of OperatorExportTypes.ONNX_ATEN_FALLBACK. * Combing the text about using torch.Tensor.item() and the text about using NumPy types into a section titled "Avoid NumPy and built-in Python types", since they're both fundamentally about the same issue. * Rename "Write PyTorch model in Torch way" to "Avoiding Pitfalls". * Lots of minor fixes: spelling, grammar, brevity, fixing links, adding links. * Clarify limitation on input and output types. Phrasing it in terms of PyTorch types is much more accessible than in terms of TorchScript types. Also clarify what actually happens when dict and str are used as inputs and outputs. * In Supported operators, use torch function and class names and link to them. This is more user friendly than using the internal aten op names. * Remove references to VariableType.h, which doesn't appear to contain the information that it once did. Instead refer to the generated .pyi files. * Remove the text in the FAQ about appending to lists within loops. I think this limitation is no longer present (perhaps since #51577). * Minor fixes to some code I read along the way. * Explain the current rationale for the weird ::prim_PythonOp op name. Test Plan: Imported from OSS Reviewed By: zou3519, ZolotukhinM Differential Revision: D29494912 Pulled By: SplitInfinity fbshipit-source-id: 7756c010b2320de0692369289604403d28877719 Co-authored-by: Gary Miguel <garymiguel@microsoft.com>
[ONNX] Update documentation
torch.onnx module does.
is a common extension for binary-format protocol buffer files.
clarify that exporting always happens on ScriptModules and that
tracing and scripting are the two ways to produce a ScriptModule.
Caffe2's website says it's deprecated, so it's probably best not to
encourage people to use it by including it in examples.
link to Introduction to TorchScript, which includes very similar
content.
that in more detail.
section. It's redundant with the description of the
args
argumentto
export()
, which appears on the same page once the HTMLis generated.
in the list of unsupported patterns, users can assume it's
supported, so having both is redundant.
of the
operator_export_type
arg to toexport()
, which appears onthe same page once the HTML is generated.
different results from the "Limitations" section into the doc for the
operator_export_type
arg.OperatorExportTypes.ONNX_ATEN_FALLBACK.
using NumPy types into a section titled
"Avoid NumPy and built-in Python types", since they're both
fundamentally about the same issue.
links.
PyTorch types is much more accessible than in terms of TorchScript
types. Also clarify what actually happens when dict and str are used
as inputs and outputs.
to them. This is more user friendly than using the internal aten
op names.
the information that it once did. Instead refer to the generated
.pyi files.
I think this limitation is no longer present
(perhaps since [ONNX] Fix for sequence of mutations in blocks #51577).