From fdda67376069f0d3ea84b13e2780b98ee9f0257f Mon Sep 17 00:00:00 2001 From: Bryce Bortree Date: Fri, 14 Jun 2024 11:58:02 -0700 Subject: [PATCH 1/9] [DO NOT MERGE] 2.4 RC Test Install the 2.4 binaries to test tutorials against the 2.4-RC-TEST branch only --- .jenkins/build.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.jenkins/build.sh b/.jenkins/build.sh index db0438eb91b..d1435d6915f 100755 --- a/.jenkins/build.sh +++ b/.jenkins/build.sh @@ -21,9 +21,9 @@ sudo apt-get install -y pandoc #Install PyTorch Nightly for test. # Nightly - pip install --pre torch torchvision torchaudio -f https://download.pytorch.org/whl/nightly/cu102/torch_nightly.html -# Install 2.2 for testing - uncomment to install nightly binaries (update the version as needed). -# pip uninstall -y torch torchvision torchaudio torchtext torchdata -# pip3 install torch==2.3.0 torchvision torchaudio --no-cache-dir --index-url https://download.pytorch.org/whl/test/cu121 +# Install 2.4 for testing - uncomment to install nightly binaries (update the version as needed). +pip uninstall -y torch torchvision torchaudio torchtext torchdata +pip3 install torch==2.4.0 torchvision torchaudio --no-cache-dir --index-url https://download.pytorch.org/whl/test/cu121 # Install two language tokenizers for Translation with TorchText tutorial python -m spacy download en_core_web_sm From 7a8bb6ae0c259c3b4c718bbc4cf226dfeeb3a885 Mon Sep 17 00:00:00 2001 From: Bryce Bortree Date: Fri, 14 Jun 2024 12:24:51 -0700 Subject: [PATCH 2/9] Update build.sh --- .jenkins/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.jenkins/build.sh b/.jenkins/build.sh index d1435d6915f..9970a777ecb 100755 --- a/.jenkins/build.sh +++ b/.jenkins/build.sh @@ -23,7 +23,7 @@ sudo apt-get install -y pandoc # Nightly - pip install --pre torch torchvision torchaudio -f https://download.pytorch.org/whl/nightly/cu102/torch_nightly.html # Install 2.4 for testing - uncomment to install nightly binaries (update the version as needed). pip uninstall -y torch torchvision torchaudio torchtext torchdata -pip3 install torch==2.4.0 torchvision torchaudio --no-cache-dir --index-url https://download.pytorch.org/whl/test/cu121 +pip3 install torch==2.4.0 torchvision torchaudio --no-cache-dir --index-url https://download.pytorch.org/whl/test/cu124 # Install two language tokenizers for Translation with TorchText tutorial python -m spacy download en_core_web_sm From c08b193f22de283dce6b7f7ede2ff9c12292a17d Mon Sep 17 00:00:00 2001 From: Bryce Bortree Date: Tue, 18 Jun 2024 12:27:30 -0700 Subject: [PATCH 3/9] Update to skip failing tutorials --- .jenkins/validate_tutorials_built.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.jenkins/validate_tutorials_built.py b/.jenkins/validate_tutorials_built.py index 464267271cf..ae9767aac31 100644 --- a/.jenkins/validate_tutorials_built.py +++ b/.jenkins/validate_tutorials_built.py @@ -53,7 +53,10 @@ "recipes_source/recipes/Captum_Recipe", "intermediate_source/flask_rest_api_tutorial", "intermediate_source/text_to_speech_with_torchaudio", - "intermediate_source/tensorboard_profiler_tutorial" # reenable after 2.0 release. + "intermediate_source/tensorboard_profiler_tutorial", # reenable after 2.0 release. + "intermediate/inductor_debug_cpu.py", + "beginner/onnx/onnx_registry_tutorial.py", + "intermediate_source/torch_export_tutorial.py" ] def tutorial_source_dirs() -> List[Path]: From 10cc5aff8db4b70e015cde637ff5215f1b3f3b66 Mon Sep 17 00:00:00 2001 From: Bryce Bortree Date: Thu, 20 Jun 2024 09:43:36 -0700 Subject: [PATCH 4/9] Update validate_tutorials_built.py Correct formatting --- .jenkins/validate_tutorials_built.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.jenkins/validate_tutorials_built.py b/.jenkins/validate_tutorials_built.py index 06fc4a33fb1..f5b6dd2ef6c 100644 --- a/.jenkins/validate_tutorials_built.py +++ b/.jenkins/validate_tutorials_built.py @@ -55,9 +55,9 @@ "intermediate_source/flask_rest_api_tutorial", "intermediate_source/text_to_speech_with_torchaudio", "intermediate_source/tensorboard_profiler_tutorial", # reenable after 2.0 release. - "intermediate/inductor_debug_cpu.py", - "beginner/onnx/onnx_registry_tutorial.py", - "intermediate_source/torch_export_tutorial.py" + "intermediate_source/inductor_debug_cpu", + "beginner_source/onnx/onnx_registry_tutorial", + "intermediate_source/torch_export_tutorial" ] def tutorial_source_dirs() -> List[Path]: From 449eea1e0655206dbee2c9fafb39f478b8593b4e Mon Sep 17 00:00:00 2001 From: titaiwangms Date: Thu, 20 Jun 2024 00:50:40 +0000 Subject: [PATCH 5/9] fix build error --- _static/img/onnx/custom_aten_add_function.png | Bin 12731 -> 16332 bytes .../img/onnx/custom_aten_gelu_function.png | Bin 22646 -> 0 bytes _static/img/onnx/custom_aten_gelu_model.png | Bin 6960 -> 26439 bytes .../onnx/onnx_registry_tutorial.py | 30 ++++++------------ 4 files changed, 10 insertions(+), 20 deletions(-) delete mode 100644 _static/img/onnx/custom_aten_gelu_function.png diff --git a/_static/img/onnx/custom_aten_add_function.png b/_static/img/onnx/custom_aten_add_function.png index d9f927ce7078db96e2ed8b6b42b21a1554d9f788..8ef05a747a051f286c05eac051553d629169ec7f 100644 GIT binary patch literal 16332 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 literal 12731 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 z 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 diff --git a/_static/img/onnx/custom_aten_gelu_function.png b/_static/img/onnx/custom_aten_gelu_function.png deleted file mode 100644 index 5cb573e7dcb559480e00fb24e4878733d1aca9d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22646 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 diff --git a/_static/img/onnx/custom_aten_gelu_model.png b/_static/img/onnx/custom_aten_gelu_model.png index 6bc46337b48b07ed2e617770c10046c2b1404f35..5b326690eb75f6297501cc760f9f590da2ca20ad 100644 GIT binary patch literal 26439 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≷qC?qsQ|gdx7YU6w0<%*jLPscnV@?dgo42u3 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 WT|~IV3D8HOYsNP&=Y4nU-roWIfwd?A literal 6960 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 HM`8Z~tPeaL diff --git a/beginner_source/onnx/onnx_registry_tutorial.py b/beginner_source/onnx/onnx_registry_tutorial.py index dfb54d60974..6063b8ac356 100644 --- a/beginner_source/onnx/onnx_registry_tutorial.py +++ b/beginner_source/onnx/onnx_registry_tutorial.py @@ -99,7 +99,6 @@ def forward(self, input_x, input_y): # NOTE: All attributes must be annotated with type hints. @onnxscript.script(custom_aten) def custom_aten_add(input_x, input_y, alpha: float = 1.0): - alpha = opset18.CastLike(alpha, input_y) input_y = opset18.Mul(input_y, alpha) return opset18.Add(input_x, input_y) @@ -130,9 +129,9 @@ def custom_aten_add(input_x, input_y, alpha: float = 1.0): # graph node name is the function name assert onnx_program.model_proto.graph.node[0].op_type == "custom_aten_add" # function node domain is empty because we use standard ONNX operators -assert onnx_program.model_proto.functions[0].node[3].domain == "" +assert onnx_program.model_proto.functions[0].node[2].domain == "" # function node name is the standard ONNX operator name -assert onnx_program.model_proto.functions[0].node[3].op_type == "Add" +assert onnx_program.model_proto.functions[0].node[2].op_type == "Add" ###################################################################### @@ -231,33 +230,24 @@ def custom_aten_gelu(input_x, approximate: str = "none"): ###################################################################### -# Let's inspect the model and verify the model uses :func:`custom_aten_gelu` instead of -# :class:`aten::gelu`. Note the graph has one graph nodes for -# ``custom_aten_gelu``, and inside ``custom_aten_gelu``, there is a function -# node for ``Gelu`` with namespace ``com.microsoft``. +# Let's inspect the model and verify the model uses op_type ``Gelu`` +# from namespace ``com.microsoft``. +# +# Note that :func:`custom_aten_gelu` does not exist in the graph, because +# the funtions with less than 3 operators are inlined automatically. # # graph node domain is the custom domain we registered assert onnx_program.model_proto.graph.node[0].domain == "com.microsoft" # graph node name is the function name -assert onnx_program.model_proto.graph.node[0].op_type == "custom_aten_gelu" -# function node domain is the custom domain we registered -assert onnx_program.model_proto.functions[0].node[0].domain == "com.microsoft" -# function node name is the node name used in the function -assert onnx_program.model_proto.functions[0].node[0].op_type == "Gelu" +assert onnx_program.model_proto.graph.node[0].op_type == "Gelu" ###################################################################### -# The following diagram shows ``custom_aten_gelu_model`` ONNX graph using Netron: +# The following diagram shows ``custom_aten_gelu_model`` ONNX graph using Netron, +# we can see the ``Gelu`` node from module ``com.microsoft`` used in the function: # # .. image:: /_static/img/onnx/custom_aten_gelu_model.png -# :width: 70% -# :align: center -# -# Inside the ``custom_aten_gelu`` function, we can see the ``Gelu`` node from module -# ``com.microsoft`` used in the function: -# -# .. image:: /_static/img/onnx/custom_aten_gelu_function.png # # That is all we need to do. As an additional step, we can use ONNX Runtime to run the model, # and compare the results with PyTorch. From a111ab4c78a3bd0169f5edd685de61225ab6a551 Mon Sep 17 00:00:00 2001 From: titaiwangms Date: Thu, 20 Jun 2024 06:02:16 +0000 Subject: [PATCH 6/9] add length assertion --- beginner_source/onnx/onnx_registry_tutorial.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/beginner_source/onnx/onnx_registry_tutorial.py b/beginner_source/onnx/onnx_registry_tutorial.py index 6063b8ac356..9aa64581838 100644 --- a/beginner_source/onnx/onnx_registry_tutorial.py +++ b/beginner_source/onnx/onnx_registry_tutorial.py @@ -128,6 +128,8 @@ def custom_aten_add(input_x, input_y, alpha: float = 1.0): assert len(onnx_program.model_proto.graph.node) == 1 # graph node name is the function name assert onnx_program.model_proto.graph.node[0].op_type == "custom_aten_add" +# the function has three nodes +assert len(onnx_program.model_proto.functions[0].node) == 3 # function node domain is empty because we use standard ONNX operators assert onnx_program.model_proto.functions[0].node[2].domain == "" # function node name is the standard ONNX operator name From b1a13cce2e8bf9ef4adb653995b20d2be38f8d08 Mon Sep 17 00:00:00 2001 From: titaiwangms Date: Fri, 21 Jun 2024 17:45:12 +0000 Subject: [PATCH 7/9] change assertion to set --- beginner_source/onnx/onnx_registry_tutorial.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/beginner_source/onnx/onnx_registry_tutorial.py b/beginner_source/onnx/onnx_registry_tutorial.py index 9aa64581838..2bccaa1ecfa 100644 --- a/beginner_source/onnx/onnx_registry_tutorial.py +++ b/beginner_source/onnx/onnx_registry_tutorial.py @@ -128,12 +128,10 @@ def custom_aten_add(input_x, input_y, alpha: float = 1.0): assert len(onnx_program.model_proto.graph.node) == 1 # graph node name is the function name assert onnx_program.model_proto.graph.node[0].op_type == "custom_aten_add" -# the function has three nodes -assert len(onnx_program.model_proto.functions[0].node) == 3 # function node domain is empty because we use standard ONNX operators -assert onnx_program.model_proto.functions[0].node[2].domain == "" +assert {node.domain for node in onnx_program.model_proto.functions[0].node} == {""} # function node name is the standard ONNX operator name -assert onnx_program.model_proto.functions[0].node[2].op_type == "Add" +assert {node.op_type for node in onnx_program.model_proto.functions[0].node} == {"Add", "Mul", "Constant"} ###################################################################### From c05e8ec2257518f3099bbfc173955191462cdf40 Mon Sep 17 00:00:00 2001 From: titaiwangms Date: Tue, 25 Jun 2024 22:46:45 +0000 Subject: [PATCH 8/9] enable tutorial build --- .jenkins/validate_tutorials_built.py | 1 - 1 file changed, 1 deletion(-) diff --git a/.jenkins/validate_tutorials_built.py b/.jenkins/validate_tutorials_built.py index 3b4ae5622ab..2bc63e6325a 100644 --- a/.jenkins/validate_tutorials_built.py +++ b/.jenkins/validate_tutorials_built.py @@ -56,7 +56,6 @@ "intermediate_source/text_to_speech_with_torchaudio", "intermediate_source/tensorboard_profiler_tutorial", # reenable after 2.0 release. "intermediate_source/inductor_debug_cpu", # reenable after 2942 - "beginner_source/onnx/onnx_registry_tutorial", # reenable after 2941 is fixed. "intermediate_source/torch_export_tutorial" # reenable after 2940 is fixed. ] From b14120ea685e97d21aad8f51ed36746958ddbab9 Mon Sep 17 00:00:00 2001 From: Svetlana Karslioglu Date: Mon, 22 Jul 2024 09:55:17 -0700 Subject: [PATCH 9/9] Small editorial fix. --- beginner_source/onnx/onnx_registry_tutorial.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/beginner_source/onnx/onnx_registry_tutorial.py b/beginner_source/onnx/onnx_registry_tutorial.py index 2bccaa1ecfa..0f64ba9c4d4 100644 --- a/beginner_source/onnx/onnx_registry_tutorial.py +++ b/beginner_source/onnx/onnx_registry_tutorial.py @@ -233,8 +233,9 @@ def custom_aten_gelu(input_x, approximate: str = "none"): # Let's inspect the model and verify the model uses op_type ``Gelu`` # from namespace ``com.microsoft``. # -# Note that :func:`custom_aten_gelu` does not exist in the graph, because -# the funtions with less than 3 operators are inlined automatically. +# .. note:: +# :func:`custom_aten_gelu` does not exist in the graph because +# functions with fewer than three operators are inlined automatically. # # graph node domain is the custom domain we registered