From fc0fc80db2182ea68e97855e55929e73681837e7 Mon Sep 17 00:00:00 2001 From: Tianlei Wu Date: Fri, 9 Oct 2020 11:55:51 -0700 Subject: [PATCH] Revert "Add flatbuffers verifier for ORT format buffer (#5378)" This reverts commit e8bf3ba2bb383055b5974e8904324c33e0f4cbb1. --- onnxruntime/core/session/inference_session.cc | 17 +++--- .../test/framework/ort_model_only_test.cc | 49 ++---------------- .../testdata/ort_github_issue_4031.onnx.ort | Bin 4624 -> 6216 bytes .../sklearn_bin_voting_classifier_soft.ort | Bin 5768 -> 7392 bytes 4 files changed, 10 insertions(+), 56 deletions(-) diff --git a/onnxruntime/core/session/inference_session.cc b/onnxruntime/core/session/inference_session.cc index 7369925e9d..ae902322e5 100644 --- a/onnxruntime/core/session/inference_session.cc +++ b/onnxruntime/core/session/inference_session.cc @@ -38,7 +38,7 @@ #include "core/platform/threadpool.h" #include "core/providers/cpu/controlflow/utils.h" #include "core/providers/cpu/cpu_execution_provider.h" -#include "core/flatbuffers/flatbuffers_utils.h" +#include "core/flatbuffers/ort.fbs.h" #ifdef USE_DML // TODO: This is necessary for the workaround in TransformGraph #include "core/providers/dml/DmlExecutionProvider/src/GraphTransformer.h" #endif @@ -486,7 +486,7 @@ common::Status InferenceSession::SaveToOrtFormat(const std::basic_string load_ort_format_mo } ORT_RETURN_IF_ERROR(load_ort_format_model_bytes()); - - // Verify the ort_format_model_bytes_ is a valid InferenceSessionBuffer before we access the data - flatbuffers::Verifier verifier(ort_format_model_bytes_.data(), ort_format_model_bytes_.size()); - ORT_RETURN_IF_NOT(fbs::VerifyInferenceSessionBuffer(verifier)); - const auto* fbs_session = fbs::GetInferenceSession(ort_format_model_bytes_.data()); ORT_RETURN_IF(nullptr == fbs_session, "InferenceSession is null. Invalid ORT format model."); @@ -1151,7 +1146,7 @@ common::Status InferenceSession::Initialize() { if ((has_explicit_type && model_type == "ORT") || (!has_explicit_type && - experimental::utils::IsOrtFormatModel(session_options_.optimized_model_filepath))) { + inference_session_utils::IsOrtFormatModel(session_options_.optimized_model_filepath))) { ORT_RETURN_IF_ERROR_SESSIONID_(SaveToOrtFormat(session_options_.optimized_model_filepath)); } else { ORT_RETURN_IF_ERROR_SESSIONID_(Model::Save(*model_, session_options_.optimized_model_filepath)); diff --git a/onnxruntime/test/framework/ort_model_only_test.cc b/onnxruntime/test/framework/ort_model_only_test.cc index be81f8e9a7..c7000cd046 100644 --- a/onnxruntime/test/framework/ort_model_only_test.cc +++ b/onnxruntime/test/framework/ort_model_only_test.cc @@ -50,7 +50,6 @@ struct OrtModelTestInfo { std::vector output_names; std::function&)> output_verifier; std::vector> configs; - bool run_use_buffer{false}; }; static void RunOrtModel(const OrtModelTestInfo& test_info) { @@ -59,21 +58,8 @@ static void RunOrtModel(const OrtModelTestInfo& test_info) { for (const auto& config : test_info.configs) so.AddConfigEntry(config.first.c_str(), config.second.c_str()); - std::vector model_data; InferenceSessionGetGraphWrapper session_object{so, GetEnvironment()}; - if (test_info.run_use_buffer) { - // Load the file into a buffer and use the buffer to create inference session - size_t num_bytes = 0; - ASSERT_STATUS_OK(Env::Default().GetFileLength(test_info.model_filename.c_str(), num_bytes)); - model_data.resize(num_bytes); - std::ifstream bytes_stream(test_info.model_filename, std::ifstream::in | std::ifstream::binary); - bytes_stream.read(model_data.data(), num_bytes); - bytes_stream.close(); - ASSERT_STATUS_OK(session_object.Load(model_data.data(), static_cast(num_bytes))); - } else { - ASSERT_STATUS_OK(session_object.Load(test_info.model_filename)); // infer type from filename - } - + ASSERT_STATUS_OK(session_object.Load(test_info.model_filename)); // infer type from filename ASSERT_STATUS_OK(session_object.Initialize()); std::vector fetches; @@ -318,7 +304,8 @@ TEST(OrtModelOnlyTests, SerializeToOrtFormatMLOps) { #endif // #if !defined(DISABLE_ML_OPS) #endif // #if !defined(ORT_MINIMAL_BUILD) -OrtModelTestInfo GetTestInfoForLoadOrtFormatModel() { +// test that we can deserialize and run a previously saved ORT format model +TEST(OrtModelOnlyTests, LoadOrtFormatModel) { OrtModelTestInfo test_info; test_info.model_filename = ORT_TSTR("testdata/ort_github_issue_4031.onnx.ort"); test_info.logid = "LoadOrtFormatModel"; @@ -336,26 +323,13 @@ OrtModelTestInfo GetTestInfoForLoadOrtFormatModel() { ASSERT_TRUE(output.Data()[0] == 125.f); }; - return test_info; -} - -// test that we can deserialize and run a previously saved ORT format model -TEST(OrtModelOnlyTests, LoadOrtFormatModel) { - OrtModelTestInfo test_info = GetTestInfoForLoadOrtFormatModel(); - RunOrtModel(test_info); -} - -// Load the model from a buffer instead of a file path -TEST(OrtModelOnlyTests, LoadOrtFormatModelFromBuffer) { - OrtModelTestInfo test_info = GetTestInfoForLoadOrtFormatModel(); - test_info.run_use_buffer = true; RunOrtModel(test_info); } #if !defined(DISABLE_ML_OPS) // test that we can deserialize and run a previously saved ORT format model // for a model with sequence and map outputs -OrtModelTestInfo GetTestInfoForLoadOrtFormatModelMLOps() { +TEST(OrtModelOnlyTests, LoadOrtFormatModelMLOps) { OrtModelTestInfo test_info; test_info.model_filename = ORT_TSTR("testdata/sklearn_bin_voting_classifier_soft.ort"); test_info.logid = "LoadOrtFormatModelMLOps"; @@ -389,23 +363,8 @@ OrtModelTestInfo GetTestInfoForLoadOrtFormatModelMLOps() { } }; - return test_info; -} - -// test that we can deserialize and run a previously saved ORT format model -// for a model with sequence and map outputs -TEST(OrtModelOnlyTests, LoadOrtFormatModelMLOps) { - OrtModelTestInfo test_info = GetTestInfoForLoadOrtFormatModelMLOps(); RunOrtModel(test_info); } - -// Load the model from a buffer instead of a file path -TEST(OrtModelOnlyTests, LoadOrtFormatModelMLOpsFromBuffer) { - OrtModelTestInfo test_info = GetTestInfoForLoadOrtFormatModelMLOps(); - test_info.run_use_buffer = true; - RunOrtModel(test_info); -} - #endif // !defined(DISABLE_ML_OPS) } // namespace test diff --git a/onnxruntime/test/testdata/ort_github_issue_4031.onnx.ort b/onnxruntime/test/testdata/ort_github_issue_4031.onnx.ort index 6d1092918097daf94819f563be7b26368e437451..0fe711ee71500ef061530c6d1a04b240fc611236 100644 GIT binary patch literal 6216 zcmbW5e~4676vwZ%>1LZPHI>vNgUlaG$THeu{t^AOSVdwH3xi-BcV^wO-I-x_cHLqL z3IDM053`W|i0BW4MI?|R{-4VT~i;pA(Z*3%TUYdw`4p=_=`QY`0o*7D^c ztx-kCMr!Gpj_E&u+!OUB=~r8`?&9cpaY6TIvH6B;X6g6i_q_kr&;I1092oLxZ`dw{x?%gtGLh9hbS`xzLAZZ<^d=w0(9H7@3nn?othnKzpGZXj{p; z;`c$)rTK4MZZr_xbm$R1j^2PIY7C7*#bPyAU({#e00=@nKV z+eP-*Pn)P0+5ing!g~xOXpU?##r{XBtB@7*g~k|WAh^*=rJ5VB=j+8>WuhM9u$WLh zdHtm_GE2Eqxl}LZM@!EZYq{}>Fm;25YaIVk+NQ5}?j1 zo7T6Ywt6L$q{oP@Ih`jQR+Z1xt~U8TUnqo*g!jusjqV_?9=#CCh)V`|)RARtjXeyn+H7_ZS$3Cg_QR`7eTx;}{-4Iy zzblf_5v>0^dTqVi==0a_Mz-}k;Wek7^%W;^du{!#*$!{Va7-f`j@RLR9Iql9j)U;+ z;%Md5A7gkPie$4(7qa2$gZJ_DA{(AGe7ku3*kjJTpM8I+-HLLK|He!arAc`v!#L&k zBY>O{P^LE0o|*|74f_yYVkYUh@-W(PXD;6lu; z@{n_@IG?j~(=exxY%?8}WOok8lVMP_t~1dj`q7`{Aukn3bnYmrjhI zr-WHP5jHDo`@cC#W_&n5UN>C}_3|hWcLw%omA7Pz1xtjsHT?34Y>|}LUS%Uw^eJ8j z*rY&6wxWH>PDaA&$CmmtklI_F0of{kPI(RKJ;^gHi{-bwE;gU*7yoF^Z`+V9zfHmm zlW?o9BFks8;RrlcTlvL5FGpkRFOOvD8sPCIdTqUnvGp%_>z})d^^@$j?$2gB9E#z1 z3fXWx2k+Zq3fb&Xg>Tmmt$ceb!m|Tq^5*JDmhO!_W<5MB==1S(A`6es+xJ2XDAGklXjT`X2}yDFvfuHf!rxTG&> zjNb0TvT2w{RCFdb4X+LEHJ{VD5ju{d40Mn_t+_6`Qx@PyphMC99X5!=r;u&!=iq&N zPa)6yA6|1bcCnIl-~Awl z$~QXi_d=GBlH#dV%qQ8|Fl#U2KMi4?vHi8mZ%O%37|kA5OSjfuc&7*EbsDRChV3Uw zpYC=GsZuvBeGg6L>a|ieH&mG@*F&E?Joxw{Q^lbPh0tKFGFd7VYYYv1w1w|=@m6#v zRohx>@dHub>;bUl&E5Pr;h%#~|833>uOMrG+S>_u)g~WDwsSB8uP*g1R+9GrTMWn6 zNJdwXr+Sd>Jl+TI~II{4X(+-X#8$a7?&2;~7NmW{l#lldp(nJcW<4D6T8x zcsbuN3z&3gR1Cc$ZNWE67yr?81b1@f4$2Z??j(}+^`do!GqmMWk~EoJvi>R$Hwy)Qfxf` zQ|}pS8pn`%>`l69pNZ*{Kl7!&O1V7MSFIH%OT|5X^%{RNaT%4KGqLfCIUDbf)7c3l iGkj-guJ$Lt+4!+h#f-kQ6~PwgFcgh#x5$3V*Z%?J@dhLS literal 4624 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 F@4pNpiQxbM literal 5768 zcma)=e`uB08OP7Hw>Gsdq&5p74IxO7QY0j6C?e4&YCGMMn#K%55wF*qH_dDBFYdjm z=?IcP_JT7ALxxz8ZnO##_D3nLNGT~4ks?KyEeia!hZnvV^VczK0rpkNr?cTtgHo^g&HZYX82ubv z98TxBWOm6YNZimN;b|#0C^(nnxb~x8^8-S9;kxi$;e@bXNFH8*g>ofTDW&t}$tbfkOVz4OMnK-!A;#Qvwi2c?*>t&Vc38XgO_LBg!5n{x zFU(hhQYI)?%Esh9S(o?K_rvXfpL+H~(JP|csBxwcOiqTGFvz2&-m-dX33cSM50;kq z7#{yoRN3^QAX`q!ccjl6d4R+>E+>5oF3Rm`O;~^(3iCm_w3FPz$&j7WzNrp;Q!Zv# z6RQ^4QQOA$M0ZGjwSK!Lp@Uk-7B*x35y{pBSgjcD7-;c($tcXg>f~02S*s$U1^V;~<4=)|~ z^%c==qT7kRzE4|Mv4%ZtAW#3o+iyf%t!Ey!cgJMtwhB+(cj===ufAuo>)^kwZ&WRb zhq&lF0Gobn>m+kpb0GTYn6_1`fwwlT;+OvE6ylROi39x| zmJW*QXj}13mn)?(|3>^-BkM3}zkx9Y#lF2B7KhVCF&6x}4xQvN}f9juj1p9Ubg zL$?UqB?Ltu-wn#0alg=kiwXKOIf1rIfqeH&=u`_UZ#!9N{rnaACYDyAs|o%bV9)It zbC>F3b@3D>G@x~Cf%{b>;v5hIGQIF%K1hjlg+iyte# z9AKMo9DqL{dB3hM)&&U-Xx-&Y-G($C5jv=k^{*0UZeBrdmQ$WEgQZgX?N@?yWx5o+ zJfq7jQz?|30nz^@^Wt~aDzW;x5D(yLgg*z*Oa80|AUy*8t#C;~P;7Bu-qxS9qRgSc zTi7h**5zI1I*~gVKLB$0rZ?UUg5pG&Q`0vpHZB=7Y-vIx0K z8b*LV>rmc-@Cyp2RY)xRrgQomLv74EJ}H~)m)}VKp1N4E39?5u=uiwjX0vv*%kToG zAL7?DZ{QA%{ana{9Fj8BF2o++%spMEJ)+1uaCsmDj@f)>Mf=ph4yg6;bXHG~b@q&E zi1Ju12XwH--CctYF9XG;h58(b4eS!Snh%H{7ZQJu4362cNCfrq_uKfV6nnq0SyDSk ze)956keRN8h5SgV@K!hxM4umfqnu(x`s>D=@0>O0b4blA`5xhC5@5gkgtz6G-wX$Z zJ;Db{cuu%m*ev{5sOP;L`%hP{p&bZWMe8{B&cgm$oL0Kcy(=fd4~Z9%TcRCzc_zl6V%V;ctiTG&RtrB$3C=4_W<&)&f?7)>9Y1f zGW^zjxYowp_hNm=@)AvKw|@DSkDwUk)@wG&kE_KsPd;zusYm1|)oVtrEc^JaCwp5w za>RB{Jk;fQ*^Vz-nYgaK=8WfetL0JqT5{;J2emkj`NYcf%Q$x`F$>nTh{xa2+T3Fm z%QJtfHlN_P7`EGVFQLzG#LM3L1y7IPV(7a(u+Ml#^mVJhOXK@i2hqEhNACAl-sxYl z;}M|9O0DI8u{{GIOo}& z7w`7%K%L#Z#_J{Dpqt_e{k8Q@IQy(cuO9oAYiLT=&xrU&%Zp7U#k=_bROjdOWk1cU z`oV6LhYn+YyATK8ZQirrX6@H{m6Myh0qOXERdDp}IZtn1{Br){{kmeG@syQ``!=@Q z=-K5=|1v5{d>1`s{WWP`kl>Exrp3Rj!AI6Md0`PhH#Ha6d&7!4xIW=E!u`toBhD%r z>7jd9I4_(K5>HcfAMQHOqLx)&29f7a+a9`ElfaK4c&i79*tmZ%R-4o~8X=OMw3)7Y2bS32- zo$>3^&bw=7d9S#8!n{;OiN8z1E{QG(PYNf5audg(Z2YNJ+WrzZXS9nWmt{|R2gY*#n-ST1pq5sbXN~FYezBW6 S;-ma#_6HP0Y_tz*A@d&sM6ta9