Skip to content

Commit 75101d6

Browse files
authored
Integration with ONNX rel-1.18.0 (#24449)
### Description <!-- Describe your changes. --> The PR adds CPU support by following release logics in https://github.com/onnx/onnx/wiki/Logistics-for-ONNX-Release-1.18.0. The goal is to do the minimal changes needed to ensure ONNXRUNTIME works fine with ONNX 1.18.0 ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> Essentially, incoming ONNX 1.18.0 provides the following (1) Introduce opset 23 (included in this PR) (2) Support Attention, RMSNormalization, and RotaryEmbedding (**NOT** included in this PR) (3) Support float4e2m1 (**NOT** included in this PR) ### Remaining Issues 1. onnx.patch * ONNXRUNTIME is using static functions (shape inference) from ONNX (#24558) * GroupNormalization-18 is deprecated because its spec was wrong (#24560) * Contrib op registration api from ONNX: OpSchemaRegisterOnce is changed to explicit, and ONNXRUNTIME was leveraging it to do fluent-chaining style. (#24561) 2. Support float4e2m1 (#24553) 3. Support Attention(#24554), RMSNormalization(#24555), and RotaryEmbedding(#24556) 4. Disable QNN tests
1 parent 4513476 commit 75101d6

40 files changed

+1070
-517
lines changed

cmake/deps.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ microsoft_gsl;https://github.com/microsoft/GSL/archive/refs/tags/v4.0.0.zip;cf36
3535
microsoft_wil;https://github.com/microsoft/wil/archive/refs/tags/v1.0.230629.1.zip;e4a542a323c070376f7c2d1973d0f7ddbc1d2fa5
3636
mimalloc;https://github.com/microsoft/mimalloc/archive/refs/tags/v2.1.1.zip;d5ee7d34223d0567892db5179849939c8769dc41
3737
mp11;https://github.com/boostorg/mp11/archive/refs/tags/boost-1.82.0.zip;9bc9e01dffb64d9e0773b2e44d2f22c51aace063
38-
onnx;https://github.com/onnx/onnx/archive/refs/tags/v1.17.0.zip;13a60ac5217c104139ce0fd024f48628e7bcf5bc
38+
onnx;https://github.com/onnx/onnx/archive/7fc2b81a275223f5b02a522d9d2649837542a7be.zip;555338a12903941bb45f57540476244f9ffee17b
3939
# Use the latest commit of 10.9-GA
4040
onnx_tensorrt;https://github.com/onnx/onnx-tensorrt/archive/d5dce67db7c2e64b07e055571f5ec06f7f254de2.zip;01114d3b67650857281fa50faa2e412130a63b69
4141
protobuf;https://github.com/protocolbuffers/protobuf/archive/refs/tags/v21.12.zip;7cf2733949036c7d52fda017badcab093fe73bfa

cmake/external/onnx

Submodule onnx updated 1504 files

cmake/patches/onnx/onnx.patch

+87-34
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
diff --git a/CMakeLists.txt b/CMakeLists.txt
2-
index d15d97ed..bdacac99 100644
2+
index 6fe5c96e..087a7780 100644
33
--- a/CMakeLists.txt
44
+++ b/CMakeLists.txt
5-
@@ -27,6 +27,7 @@ option(ONNX_USE_LITE_PROTO "Use lite protobuf instead of full." OFF)
5+
@@ -40,6 +40,7 @@ option(ONNX_USE_LITE_PROTO "Use lite protobuf instead of full." OFF)
66
option(ONNX_DISABLE_EXCEPTIONS "Disable exception handling." OFF)
7-
option(ONNX_DISABLE_STATIC_REGISTRATION "Disable static registration for onnx operator schemas." OFF)
7+
option(ONNX_DISABLE_STATIC_REGISTRATION "Disable static registration for ONNX operator schemas." OFF)
88
option(ONNX_USE_UNITY_BUILD "Enable Unity (Jumbo) build for" OFF)
99
+option(ONNX_MINIMAL_BUILD "Build only essential ONNX components" OFF)
10-
11-
if(NOT DEFINED ONNX_ML)
12-
if(DEFINED ENV{ONNX_ML})
13-
@@ -457,14 +458,28 @@ relative_protobuf_generate_cpp(gen_onnx_data_proto
10+
if(WIN32)
11+
option(ONNX_USE_MSVC_STATIC_RUNTIME "Build with MSVC static runtime" OFF)
12+
endif()
13+
@@ -461,14 +462,28 @@ relative_protobuf_generate_cpp(gen_onnx_data_proto
1414
list(APPEND ONNX_PROTO_SRCS ${__tmp_srcs})
1515
list(APPEND ONNX_PROTO_HDRS ${__tmp_hdrs})
1616

@@ -47,18 +47,18 @@ index d15d97ed..bdacac99 100644
4747

4848
add_library(onnx_proto ${ONNX_PROTO_SRCS} ${ONNX_PROTO_HDRS})
4949
add_dependencies(onnx_proto gen_onnx_operators_proto gen_onnx_data_proto)
50-
@@ -496,6 +511,7 @@ if (MSVC)
50+
@@ -492,6 +507,7 @@ if(MSVC)
5151
endif()
5252
else()
5353
# On non-Windows, hide all symbols we don't need
5454
+ set(EXTRA_FLAGS "-Wno-unused-parameter")
5555
set(ONNX_API_DEFINE "-DONNX_API=__attribute__\(\(__visibility__\(\"default\"\)\)\)")
5656
set_target_properties(onnx_proto PROPERTIES CXX_VISIBILITY_PRESET hidden)
5757
set_target_properties(onnx_proto PROPERTIES VISIBILITY_INLINES_HIDDEN 1)
58-
@@ -631,20 +647,9 @@ endif()
59-
if(MSVC)
60-
target_compile_options(onnx_proto
58+
@@ -620,21 +636,11 @@ if(MSVC)
6159
PRIVATE /MP
60+
/wd4146 # unary minus operator applied to unsigned type,
61+
# result still unsigned
6262
- /wd4244 #'argument': conversion from 'google::
6363
- #protobuf::uint64' to 'int', possible
6464
- # loss of data
@@ -67,42 +67,93 @@ index d15d97ed..bdacac99 100644
6767
${EXTRA_FLAGS})
6868
target_compile_options(onnx
6969
PRIVATE /MP
70+
/wd4146 # unary minus operator applied to unsigned type,
71+
# result still unsigned
7072
- /wd4244 # 'argument': conversion from 'google::
7173
- # protobuf::uint64' to 'int', possible
7274
- # loss of data
7375
- /wd4267 # Conversion from 'size_t' to 'int',
7476
- # possible loss of data
75-
- /wd4996 # The second parameter is ignored.
7677
${EXTRA_FLAGS})
77-
if(ONNX_USE_PROTOBUF_SHARED_LIBS)
78-
target_compile_options(onnx_proto
79-
diff --git a/onnx/common/file_utils.h b/onnx/common/file_utils.h
80-
index b847798e..a6c31904 100644
81-
--- a/onnx/common/file_utils.h
82-
+++ b/onnx/common/file_utils.h
83-
@@ -6,7 +6,6 @@
78+
add_msvc_runtime_flag(onnx_proto)
79+
add_msvc_runtime_flag(onnx)
80+
diff --git a/onnx/defs/nn/defs.cc b/onnx/defs/nn/defs.cc
81+
index 64366270..4aed9027 100644
82+
--- a/onnx/defs/nn/defs.cc
83+
+++ b/onnx/defs/nn/defs.cc
84+
@@ -36,7 +36,7 @@ static const char* conv_transpose_auto_pad_doc =
85+
"on whether it is even or odd). In case the padding is an odd number, the extra "
86+
"padding is added at the end for SAME_UPPER and at the beginning for SAME_LOWER.";
87+
88+
-static void convPoolShapeInference(
89+
+void convPoolShapeInference(
90+
InferenceContext& ctx,
91+
bool use_dilation,
92+
bool require_kernel_shape,
93+
@@ -1102,7 +1102,7 @@ ONNX_OPERATOR_SET_SCHEMA(
94+
convPoolShapeInference(ctx, true, false, 0, 1);
95+
}));
96+
97+
-static void convTransposeShapeInference(InferenceContext& ctx) {
98+
+void convTransposeShapeInference(InferenceContext& ctx) {
99+
propagateElemTypeFromInputToOutput(ctx, 0, 0);
84100

85-
#pragma once
101+
// we need at least two inputs to have a shape for this inference.
102+
@@ -1462,7 +1462,7 @@ ONNX_OPERATOR_SET_SCHEMA(
103+
}));
86104

87-
-#include <filesystem>
88-
#include <fstream>
89-
#include <string>
105+
// For GlobalPool operations.
106+
-static void globalPoolTypeShapeInference(InferenceContext& ctx) {
107+
+void globalPoolTypeShapeInference(InferenceContext& ctx) {
108+
propagateElemTypeFromInputToOutput(ctx, 0, 0);
90109

91-
@@ -17,8 +16,7 @@ namespace ONNX_NAMESPACE {
110+
// needs at least one input with shape.
111+
diff --git a/onnx/defs/nn/old.cc b/onnx/defs/nn/old.cc
112+
index d8ca9a46..1eda4c70 100644
113+
--- a/onnx/defs/nn/old.cc
114+
+++ b/onnx/defs/nn/old.cc
115+
@@ -4023,7 +4023,6 @@ ONNX_OPERATOR_SET_SCHEMA(
116+
GroupNormalization,
117+
18,
118+
OpSchema()
119+
- .Deprecate()
120+
.SetDoc(GroupNormalization_ver18_doc)
121+
.Attr("epsilon", "The epsilon value to use to avoid division by zero.", AttributeProto::FLOAT, 1e-5f)
122+
.Attr(
123+
diff --git a/onnx/defs/rnn/defs.cc b/onnx/defs/rnn/defs.cc
124+
index c0ed3a39..6c8e2909 100644
125+
--- a/onnx/defs/rnn/defs.cc
126+
+++ b/onnx/defs/rnn/defs.cc
127+
@@ -5,7 +5,7 @@
128+
#include "onnx/defs/schema.h"
92129

93-
template <typename T>
94-
void LoadProtoFromPath(const std::string proto_path, T& proto) {
95-
- std::filesystem::path proto_u8_path = std::filesystem::u8path(proto_path);
96-
- std::fstream proto_stream(proto_u8_path, std::ios::in | std::ios::binary);
97-
+ std::fstream proto_stream(proto_path, std::ios::in | std::ios::binary);
98-
if (!proto_stream.good()) {
99-
fail_check("Unable to open proto file: ", proto_path, ". Please check if it is a valid proto. ");
100-
}
130+
namespace ONNX_NAMESPACE {
131+
-static void RNNShapeInference(InferenceContext& ctx) {
132+
+void RNNShapeInference(InferenceContext& ctx) {
133+
TensorShapeProto::Dimension num_directions, seq_length, batch_size, hidden_size;
134+
135+
auto direction = getAttribute(ctx, "direction", "forward");
136+
diff --git a/onnx/defs/schema.h b/onnx/defs/schema.h
137+
index 42318d82..a33cf342 100644
138+
--- a/onnx/defs/schema.h
139+
+++ b/onnx/defs/schema.h
140+
@@ -980,10 +980,7 @@ class OpSchemaRegistry final : public ISchemaRegistry {
141+
class OpSchemaRegisterOnce final {
142+
public:
143+
// Export to cpp custom register macro
144+
- explicit OpSchemaRegisterOnce(
145+
- OpSchema op_schema,
146+
- int opset_version_to_load = 0,
147+
- bool fail_duplicate_schema = true) {
148+
+ OpSchemaRegisterOnce(OpSchema op_schema, int opset_version_to_load = 0, bool fail_duplicate_schema = true) {
149+
OpSchemaRegisterNoExcept(std::move(op_schema), opset_version_to_load, fail_duplicate_schema);
150+
}
151+
static void
101152
diff --git a/onnx/onnx_pb.h b/onnx/onnx_pb.h
102-
index 0aab3e26..398ac2d6 100644
153+
index 0aab3e26..27f32195 100644
103154
--- a/onnx/onnx_pb.h
104155
+++ b/onnx/onnx_pb.h
105-
@@ -47,10 +47,28 @@
156+
@@ -47,10 +47,30 @@
106157
#define ONNX_API ONNX_IMPORT
107158
#endif
108159

@@ -119,6 +170,7 @@ index 0aab3e26..398ac2d6 100644
119170
+#endif // defined(__has_warning)
120171
+
121172
+#endif // defined(__GNUC__)
173+
+
122174
+
123175
#ifdef ONNX_ML
124176
#include "onnx/onnx-ml.pb.h"
@@ -129,5 +181,6 @@ index 0aab3e26..398ac2d6 100644
129181
+#if defined(__GNUC__)
130182
+#pragma GCC diagnostic pop
131183
+#endif
184+
+
132185
+
133186
#endif // ! ONNX_ONNX_PB_H

cmake/vcpkg-ports/onnx/binskim.patch

+87-34
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
diff --git a/CMakeLists.txt b/CMakeLists.txt
2-
index d15d97ed..bdacac99 100644
2+
index 6fe5c96e..087a7780 100644
33
--- a/CMakeLists.txt
44
+++ b/CMakeLists.txt
5-
@@ -27,6 +27,7 @@ option(ONNX_USE_LITE_PROTO "Use lite protobuf instead of full." OFF)
5+
@@ -40,6 +40,7 @@ option(ONNX_USE_LITE_PROTO "Use lite protobuf instead of full." OFF)
66
option(ONNX_DISABLE_EXCEPTIONS "Disable exception handling." OFF)
7-
option(ONNX_DISABLE_STATIC_REGISTRATION "Disable static registration for onnx operator schemas." OFF)
7+
option(ONNX_DISABLE_STATIC_REGISTRATION "Disable static registration for ONNX operator schemas." OFF)
88
option(ONNX_USE_UNITY_BUILD "Enable Unity (Jumbo) build for" OFF)
99
+option(ONNX_MINIMAL_BUILD "Build only essential ONNX components" OFF)
10-
11-
if(NOT DEFINED ONNX_ML)
12-
if(DEFINED ENV{ONNX_ML})
13-
@@ -457,14 +458,28 @@ relative_protobuf_generate_cpp(gen_onnx_data_proto
10+
if(WIN32)
11+
option(ONNX_USE_MSVC_STATIC_RUNTIME "Build with MSVC static runtime" OFF)
12+
endif()
13+
@@ -461,14 +462,28 @@ relative_protobuf_generate_cpp(gen_onnx_data_proto
1414
list(APPEND ONNX_PROTO_SRCS ${__tmp_srcs})
1515
list(APPEND ONNX_PROTO_HDRS ${__tmp_hdrs})
1616

@@ -47,18 +47,18 @@ index d15d97ed..bdacac99 100644
4747

4848
add_library(onnx_proto ${ONNX_PROTO_SRCS} ${ONNX_PROTO_HDRS})
4949
add_dependencies(onnx_proto gen_onnx_operators_proto gen_onnx_data_proto)
50-
@@ -496,6 +511,7 @@ if (MSVC)
50+
@@ -492,6 +507,7 @@ if(MSVC)
5151
endif()
5252
else()
5353
# On non-Windows, hide all symbols we don't need
5454
+ set(EXTRA_FLAGS "-Wno-unused-parameter")
5555
set(ONNX_API_DEFINE "-DONNX_API=__attribute__\(\(__visibility__\(\"default\"\)\)\)")
5656
set_target_properties(onnx_proto PROPERTIES CXX_VISIBILITY_PRESET hidden)
5757
set_target_properties(onnx_proto PROPERTIES VISIBILITY_INLINES_HIDDEN 1)
58-
@@ -631,20 +647,9 @@ endif()
59-
if(MSVC)
60-
target_compile_options(onnx_proto
58+
@@ -620,21 +636,11 @@ if(MSVC)
6159
PRIVATE /MP
60+
/wd4146 # unary minus operator applied to unsigned type,
61+
# result still unsigned
6262
- /wd4244 #'argument': conversion from 'google::
6363
- #protobuf::uint64' to 'int', possible
6464
- # loss of data
@@ -67,42 +67,93 @@ index d15d97ed..bdacac99 100644
6767
${EXTRA_FLAGS})
6868
target_compile_options(onnx
6969
PRIVATE /MP
70+
/wd4146 # unary minus operator applied to unsigned type,
71+
# result still unsigned
7072
- /wd4244 # 'argument': conversion from 'google::
7173
- # protobuf::uint64' to 'int', possible
7274
- # loss of data
7375
- /wd4267 # Conversion from 'size_t' to 'int',
7476
- # possible loss of data
75-
- /wd4996 # The second parameter is ignored.
7677
${EXTRA_FLAGS})
77-
if(ONNX_USE_PROTOBUF_SHARED_LIBS)
78-
target_compile_options(onnx_proto
79-
diff --git a/onnx/common/file_utils.h b/onnx/common/file_utils.h
80-
index b847798e..a6c31904 100644
81-
--- a/onnx/common/file_utils.h
82-
+++ b/onnx/common/file_utils.h
83-
@@ -6,7 +6,6 @@
78+
add_msvc_runtime_flag(onnx_proto)
79+
add_msvc_runtime_flag(onnx)
80+
diff --git a/onnx/defs/nn/defs.cc b/onnx/defs/nn/defs.cc
81+
index 64366270..4aed9027 100644
82+
--- a/onnx/defs/nn/defs.cc
83+
+++ b/onnx/defs/nn/defs.cc
84+
@@ -36,7 +36,7 @@ static const char* conv_transpose_auto_pad_doc =
85+
"on whether it is even or odd). In case the padding is an odd number, the extra "
86+
"padding is added at the end for SAME_UPPER and at the beginning for SAME_LOWER.";
87+
88+
-static void convPoolShapeInference(
89+
+void convPoolShapeInference(
90+
InferenceContext& ctx,
91+
bool use_dilation,
92+
bool require_kernel_shape,
93+
@@ -1102,7 +1102,7 @@ ONNX_OPERATOR_SET_SCHEMA(
94+
convPoolShapeInference(ctx, true, false, 0, 1);
95+
}));
96+
97+
-static void convTransposeShapeInference(InferenceContext& ctx) {
98+
+void convTransposeShapeInference(InferenceContext& ctx) {
99+
propagateElemTypeFromInputToOutput(ctx, 0, 0);
84100

85-
#pragma once
101+
// we need at least two inputs to have a shape for this inference.
102+
@@ -1462,7 +1462,7 @@ ONNX_OPERATOR_SET_SCHEMA(
103+
}));
86104

87-
-#include <filesystem>
88-
#include <fstream>
89-
#include <string>
105+
// For GlobalPool operations.
106+
-static void globalPoolTypeShapeInference(InferenceContext& ctx) {
107+
+void globalPoolTypeShapeInference(InferenceContext& ctx) {
108+
propagateElemTypeFromInputToOutput(ctx, 0, 0);
90109

91-
@@ -17,8 +16,7 @@ namespace ONNX_NAMESPACE {
110+
// needs at least one input with shape.
111+
diff --git a/onnx/defs/nn/old.cc b/onnx/defs/nn/old.cc
112+
index d8ca9a46..1eda4c70 100644
113+
--- a/onnx/defs/nn/old.cc
114+
+++ b/onnx/defs/nn/old.cc
115+
@@ -4023,7 +4023,6 @@ ONNX_OPERATOR_SET_SCHEMA(
116+
GroupNormalization,
117+
18,
118+
OpSchema()
119+
- .Deprecate()
120+
.SetDoc(GroupNormalization_ver18_doc)
121+
.Attr("epsilon", "The epsilon value to use to avoid division by zero.", AttributeProto::FLOAT, 1e-5f)
122+
.Attr(
123+
diff --git a/onnx/defs/rnn/defs.cc b/onnx/defs/rnn/defs.cc
124+
index c0ed3a39..6c8e2909 100644
125+
--- a/onnx/defs/rnn/defs.cc
126+
+++ b/onnx/defs/rnn/defs.cc
127+
@@ -5,7 +5,7 @@
128+
#include "onnx/defs/schema.h"
92129

93-
template <typename T>
94-
void LoadProtoFromPath(const std::string proto_path, T& proto) {
95-
- std::filesystem::path proto_u8_path = std::filesystem::u8path(proto_path);
96-
- std::fstream proto_stream(proto_u8_path, std::ios::in | std::ios::binary);
97-
+ std::fstream proto_stream(proto_path, std::ios::in | std::ios::binary);
98-
if (!proto_stream.good()) {
99-
fail_check("Unable to open proto file: ", proto_path, ". Please check if it is a valid proto. ");
100-
}
130+
namespace ONNX_NAMESPACE {
131+
-static void RNNShapeInference(InferenceContext& ctx) {
132+
+void RNNShapeInference(InferenceContext& ctx) {
133+
TensorShapeProto::Dimension num_directions, seq_length, batch_size, hidden_size;
134+
135+
auto direction = getAttribute(ctx, "direction", "forward");
136+
diff --git a/onnx/defs/schema.h b/onnx/defs/schema.h
137+
index 42318d82..a33cf342 100644
138+
--- a/onnx/defs/schema.h
139+
+++ b/onnx/defs/schema.h
140+
@@ -980,10 +980,7 @@ class OpSchemaRegistry final : public ISchemaRegistry {
141+
class OpSchemaRegisterOnce final {
142+
public:
143+
// Export to cpp custom register macro
144+
- explicit OpSchemaRegisterOnce(
145+
- OpSchema op_schema,
146+
- int opset_version_to_load = 0,
147+
- bool fail_duplicate_schema = true) {
148+
+ OpSchemaRegisterOnce(OpSchema op_schema, int opset_version_to_load = 0, bool fail_duplicate_schema = true) {
149+
OpSchemaRegisterNoExcept(std::move(op_schema), opset_version_to_load, fail_duplicate_schema);
150+
}
151+
static void
101152
diff --git a/onnx/onnx_pb.h b/onnx/onnx_pb.h
102-
index 0aab3e26..398ac2d6 100644
153+
index 0aab3e26..27f32195 100644
103154
--- a/onnx/onnx_pb.h
104155
+++ b/onnx/onnx_pb.h
105-
@@ -47,10 +47,28 @@
156+
@@ -47,10 +47,30 @@
106157
#define ONNX_API ONNX_IMPORT
107158
#endif
108159

@@ -119,6 +170,7 @@ index 0aab3e26..398ac2d6 100644
119170
+#endif // defined(__has_warning)
120171
+
121172
+#endif // defined(__GNUC__)
173+
+
122174
+
123175
#ifdef ONNX_ML
124176
#include "onnx/onnx-ml.pb.h"
@@ -129,5 +181,6 @@ index 0aab3e26..398ac2d6 100644
129181
+#if defined(__GNUC__)
130182
+#pragma GCC diagnostic pop
131183
+#endif
184+
+
132185
+
133186
#endif // ! ONNX_ONNX_PB_H
+3-13
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
diff --git a/CMakeLists.txt b/CMakeLists.txt
2-
index b666eec..66c234d 100644
2+
index 6fe5c96e..633debb6 100644
33
--- a/CMakeLists.txt
44
+++ b/CMakeLists.txt
5-
@@ -63,6 +63,16 @@ endif()
5+
@@ -70,6 +70,16 @@ endif()
66

77
include(GNUInstallDirs)
88

@@ -16,16 +16,6 @@ index b666eec..66c234d 100644
1616
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/onnx
1717
+)
1818
+
19-
set(ONNX_ROOT ${PROJECT_SOURCE_DIR})
19+
set(ONNX_ROOT ${onnx_SOURCE_DIR})
2020

2121
# Read ONNX version
22-
@@ -104,7 +114,8 @@ endif()
23-
# find_package Python has replaced PythonInterp and PythonLibs since cmake 3.12
24-
# Use the following command in the future; now this is only compatible with the latest pybind11
25-
# find_package(Python ${PY_VERSION} COMPONENTS Interpreter Development REQUIRED)
26-
-find_package(PythonInterp ${PY_VERSION} REQUIRED)
27-
+find_package(Python3 ${PY_VERSION} COMPONENTS Interpreter REQUIRED)
28-
+set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
29-
if(BUILD_ONNX_PYTHON)
30-
find_package(PythonLibs ${PY_VERSION})
31-
endif()

0 commit comments

Comments
 (0)