Add onnx single node test data to tests (#12822)

1. add node test data to current model tests
2. support opset version to filter tests.
3. remove old filter based on onnx version. To avoid confusion, ONLY
support opset version filter in onnxruntime_test_all
4. support read onnx test data from absolute path on Windows.
This commit is contained in:
Yi Zhang 2022-09-22 01:02:57 +08:00 committed by GitHub
parent a5d70d8609
commit 8356e3b9b0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 95 additions and 96 deletions

View file

@ -343,7 +343,7 @@ class OnnxTestCase : public ITestCase {
const std::string& GetNodeName() const override { return model_info_->GetNodeName(); }
const PATH_CHAR_TYPE* GetModelUrl() const override { return model_info_->GetModelUrl(); }
const std::string& GetTestCaseName() const override { return test_case_name_; }
std::string GetTestCaseVersion() const override { return model_info_->GetModelVersion(); }
std::string GetTestCaseVersion() const override { return model_info_->GetNominalOpsetVersion(); }
void LoadTestData(size_t id, onnxruntime::test::HeapBuffer& b, std::unordered_map<std::string, Ort::Value>&,
bool is_input) const override;

View file

@ -66,7 +66,7 @@ class TestModelInfo {
virtual int GetOutputCount() const = 0;
virtual const std::string& GetInputName(size_t i) const = 0;
virtual const std::string& GetOutputName(size_t i) const = 0;
virtual std::string GetModelVersion() const { return ""; }
virtual std::string GetNominalOpsetVersion() const { return ""; }
virtual ~TestModelInfo() = default;
#if !defined(ORT_MINIMAL_BUILD)

View file

@ -58,15 +58,13 @@ void OnnxModelInfo::InitOnnxModelInfo(_In_ const PATH_CHAR_TYPE* model_url) { /
const std::string model_url_string = ToUTF8String(model_url);
re2::StringPiece text(model_url_string);
re2::StringPiece submatch;
re2::RE2 regex("onnx[0-9a-z]{3}", re2::RE2::Options()); //e.g. onnx141, onnx150, onnxtip
if (!regex.ok()) {
ORT_THROW("Failed to parse regex: onnx[0-9a-z]{3}");
}
bool match = regex.Match(text, 0, text.length(), re2_anchor, &submatch, 1);
re2::RE2 regex_op("opset[0-9a-z]{1,2}", re2::RE2::Options()); // e.g. opset14, opset15
bool match = regex_op.Match(text, 0, text.length(), re2_anchor, &submatch, 1);
if (match) {
onnx_commit_tag_.assign(submatch.data(), submatch.length());
onnx_nominal_opset_vesion_.assign(submatch.data(), submatch.length());
} else {
onnx_commit_tag_ = TestModelInfo::unknown_version;
onnx_nominal_opset_vesion_ = TestModelInfo::unknown_version;
}
}
for (const auto& opset : model_pb.opset_import()) {
@ -102,9 +100,6 @@ void OnnxModelInfo::InitOrtModelInfo(_In_ const PATH_CHAR_TYPE* model_url) {
std::ifstream bytes_stream(model_location, std::ifstream::in | std::ifstream::binary);
bytes_stream.read(reinterpret_cast<char*>(bytes.data()), num_bytes);
// TODO use ort format version here?
onnx_commit_tag_ = TestModelInfo::unknown_version;
// TODO, verify it is a valid ort format
// TODO, version matches the ORT version
const auto* fbs_session = fbs::GetInferenceSession(bytes.data());

View file

@ -8,7 +8,8 @@
class OnnxModelInfo : public TestModelInfo {
private:
std::string node_name_;
std::string onnx_commit_tag_;
// Due to performance, the opset version is get from directory name, so it's nominal
std::string onnx_nominal_opset_vesion_;
std::vector<ONNX_NAMESPACE::ValueInfoProto> input_value_info_;
std::vector<ONNX_NAMESPACE::ValueInfoProto> output_value_info_;
std::unordered_map<std::string, int64_t> domain_to_version_;
@ -32,7 +33,7 @@ class OnnxModelInfo : public TestModelInfo {
}
const PATH_CHAR_TYPE* GetModelUrl() const override { return model_url_.c_str(); }
std::string GetModelVersion() const override { return onnx_commit_tag_; }
std::string GetNominalOpsetVersion() const override { return onnx_nominal_opset_vesion_; }
const std::string& GetNodeName() const override { return node_name_; }

View file

@ -65,12 +65,12 @@ namespace {
struct BrokenTest {
std::string test_name_;
std::string reason_;
std::set<std::string> broken_versions_ = {}; // apply to all versions if empty
std::set<std::string> broken_opset_versions_ = {}; // apply to all versions if empty
BrokenTest(std::string name, std::string reason) : test_name_(std::move(name)), reason_(std::move(reason)) {
}
BrokenTest(std::string name, std::string reason, const std::initializer_list<std::string>& versions)
: test_name_(std::move(name)), reason_(std::move(reason)), broken_versions_(versions) {
BrokenTest(std::string name, std::string reason, const std::initializer_list<std::string>& opversions)
: test_name_(std::move(name)), reason_(std::move(reason)), broken_opset_versions_(opversions) {
}
bool operator<(const struct BrokenTest& test) const {
@ -123,7 +123,6 @@ TEST_P(ModelTest, Run) {
return;
}
#endif
// TODO: filter model based on opset
std::set<BrokenTest> broken_tests = {
{"slice_neg_steps",
"Type parameter (Tind) bound to different types (tensor(int64) and tensor(int32) in node ()."},
@ -133,9 +132,9 @@ TEST_P(ModelTest, Run) {
{"cast_FLOAT_to_BFLOAT16", "expect uint16 got bfloat16"},
{"mnist", "Input data isn't in valid range"},
{"BERT_Squad", "test data bug"},
{"constantofshape_float_ones", "test data bug", {"onnx141", "onnx150"}},
{"constantofshape_int_zeros", "test data bug", {"onnx141", "onnx150"}},
{"cast_STRING_to_FLOAT", "Linux CI has old ONNX python package with bad test data", {"onnx141"}},
{"constantofshape_float_ones", "test data bug", {"opset9", "opset10"}},
{"constantofshape_int_zeros", "test data bug", {"opset9", "opset10"}},
{"cast_STRING_to_FLOAT", "Linux CI has old ONNX python package with bad test data", {"opset9", "opset10"}},
// Numpy float to string has unexpected rounding for some results given numpy default precision is meant to be 8.
// "e.g. 0.296140194 -> '0.2961402' not '0.29614019'. ORT produces the latter with precision set to 8,
// which doesn't match the expected output that was generated with numpy.
@ -143,7 +142,7 @@ TEST_P(ModelTest, Run) {
{"tf_nasnet_large", "disable temporarily"},
{"tf_nasnet_mobile", "disable temporarily"},
{"tf_pnasnet_large", "disable temporarily"},
{"shrink", "test case is wrong", {"onnx141"}},
{"shrink", "test case is wrong", {"opset9"}},
{"maxpool_with_argmax_2d_precomputed_strides", "ShapeInferenceError"},
{"tf_inception_v2", "result mismatch"},
{"tf_resnet_v1_50", "result mismatch when Conv BN Fusion is applied"},
@ -181,7 +180,7 @@ TEST_P(ModelTest, Run) {
{"castlike_FLOAT_to_BFLOAT16_expanded", "type error", {}},
{"castlike_FLOAT_to_STRING", "type error", {}},
{"castlike_FLOAT_to_STRING_expanded", "type error", {}},
{"convtranspose_autopad_same", "Test data has been corrected in ONNX 1.10.", {"onnx180", "onnx181", "onnx190"}},
{"convtranspose_autopad_same", "Test data has been corrected in ONNX 1.10.", {"opset13", "opset14"}},
{"gru_batchwise", "type error", {}},
{"lstm_batchwise", "type error", {}},
{"optional_get_element", "type error", {}},
@ -195,6 +194,7 @@ TEST_P(ModelTest, Run) {
{"shape_start_1_end_negative_1", "type error", {}},
{"shape_start_negative_1", "type error", {}},
{"simple_rnn_batchwise", "type error", {}},
{"mod_float_mixed_sign_example", "fmod attribute must be true for floating point types", {}},
#ifdef ENABLE_TRAINING
{"adagrad", "not a registered function/op", {}}, // Op not registered.
{"adagrad_multiple", "not a registered function/op", {}}, // Op not registered.
@ -205,46 +205,46 @@ TEST_P(ModelTest, Run) {
{"momentum", "not a registered function/op", {}}, // Op not registered.
{"momentum_multiple", "not a registered function/op", {}}, // Op not registered.
{"nesterov_momentum", "not a registered function/op", {}}, // Op not registered.
{"softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_none_no_weight", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_weight_ignore_index_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_none_no_weight", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_weight_ignore_index_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_input_shape_is_NCd1_mean_weight_negative_ignore_index_log_prob",
"type error",
{"onnx170"}},
{"softmax_cross_entropy_mean_weight_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_mean_weight_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_weight_ignore_index_3d", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_weight_ignore_index_4d_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_none_no_weight_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_weight_ignore_index_4d", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_no_weight_ignore_index", "type error", {"onnx170"}},
{"opset12"}},
{"softmax_cross_entropy_mean_weight_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_mean_weight_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_weight_ignore_index_3d", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_weight_ignore_index_4d_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_none_no_weight_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_weight_ignore_index_4d", "type error", {"opset12"}},
{"softmax_cross_entropy_mean", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_no_weight_ignore_index", "type error", {"opset12"}},
{"softmax_cross_entropy_input_shape_is_NCd1d2d3_sum_weight_high_ignore_index_log_prob",
"type error",
{"onnx170"}},
{"softmax_cross_entropy_mean_3d_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_none_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_3d", "type error", {"onnx170"}},
{"softmax_cross_entropy_input_shape_is_NCd1d2d3_none_no_weight_negative_ignore_index", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_weight_ignore_index_3d_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_no_weight_ignore_index_3d_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_none_weights_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_sum_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_weight_ignore_index", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_no_weight_ignore_index_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_no_weight_ignore_index_3d", "type error", {"onnx170"}},
{"softmax_cross_entropy_input_shape_is_NCd1d2d3_sum_weight_high_ignore_index", "type error", {"onnx170"}},
{"softmax_cross_entropy_sum", "type error", {"onnx170"}},
{"opset12"}},
{"softmax_cross_entropy_mean_3d_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_none_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_3d", "type error", {"opset12"}},
{"softmax_cross_entropy_input_shape_is_NCd1d2d3_none_no_weight_negative_ignore_index", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_weight_ignore_index_3d_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_no_weight_ignore_index_3d_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_none_weights_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_sum_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_weight_ignore_index", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_no_weight_ignore_index_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_no_weight_ignore_index_3d", "type error", {"opset12"}},
{"softmax_cross_entropy_input_shape_is_NCd1d2d3_sum_weight_high_ignore_index", "type error", {"opset12"}},
{"softmax_cross_entropy_sum", "type error", {"opset12"}},
{"softmax_cross_entropy_input_shape_is_NCd1d2d3_none_no_weight_negative_ignore_index_log_prob",
"type error",
{"onnx170"}},
{"softmax_cross_entropy_none_weights", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_no_weight_ignore_index_4d_log_prob", "type error", {"onnx170"}},
{"softmax_cross_entropy_none", "type error", {"onnx170"}},
{"softmax_cross_entropy_input_shape_is_NCd1_mean_weight_negative_ignore_index", "type error", {"onnx170"}},
{"softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_mean_weight", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_weight", "type error", {"onnx170"}},
{"softmax_cross_entropy_mean_no_weight_ignore_index_4d", "type error", {"onnx170"}},
{"opset12"}},
{"softmax_cross_entropy_none_weights", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_no_weight_ignore_index_4d_log_prob", "type error", {"opset12"}},
{"softmax_cross_entropy_none", "type error", {"opset12"}},
{"softmax_cross_entropy_input_shape_is_NCd1_mean_weight_negative_ignore_index", "type error", {"opset12"}},
{"softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_mean_weight", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_weight", "type error", {"opset12"}},
{"softmax_cross_entropy_mean_no_weight_ignore_index_4d", "type error", {"opset12"}},
#endif
{"mask_rcnn_keras", "this model currently has an invalid contrib op version set to 10", {}}};
@ -593,10 +593,10 @@ TEST_P(ModelTest, Run) {
{
BrokenTest t = {ToUTF8String(test_case_name), ""};
auto iter = broken_tests.find(t);
auto model_version = model_info->GetModelVersion();
if (iter != broken_tests.end() &&
(model_version == TestModelInfo::unknown_version || iter->broken_versions_.empty() ||
iter->broken_versions_.find(model_version) != iter->broken_versions_.end())) {
auto opset_version = model_info->GetNominalOpsetVersion();
if (iter != broken_tests.end() &&
(opset_version == TestModelInfo::unknown_version || iter->broken_opset_versions_.empty() ||
iter->broken_opset_versions_.find(opset_version) != iter->broken_opset_versions_.end() )) {
SkipTest();
return;
}
@ -1055,9 +1055,14 @@ TEST_P(ModelTest, Run) {
#endif
// TENSORRT/OpenVino has too many test failures in the single node tests
#if !defined(_WIN32) && !defined(USE_OPENVINO)
paths.push_back("/data/onnx");
#if !defined(USE_OPENVINO)
#if !defined(_WIN32)
paths.push_back(ORT_TSTR("/data/onnx"));
#else
paths.push_back(ORT_TSTR("c:\\local\\data\\onnx"));
#endif
#endif
while (!paths.empty()) {
std::basic_string<ORTCHAR_T> node_data_root_path = paths.back();
paths.pop_back();
@ -1074,7 +1079,6 @@ TEST_P(ModelTest, Run) {
std::basic_string<PATH_CHAR_TYPE> filename_str = filename;
if (!HasExtensionOf(filename_str, ORT_TSTR("onnx")))
return true;
std::basic_string<PATH_CHAR_TYPE> test_case_name = my_dir_name;
if (test_case_name.compare(0, 5, ORT_TSTR("test_")) == 0)
test_case_name = test_case_name.substr(5);
@ -1125,8 +1129,8 @@ auto ExpandModelName = [](const ::testing::TestParamInfo<ModelTest::ParamType>&
std::replace(name.begin(), name.end(), '\\', '_');
// Note: test name only accepts '_' and alphanumeric
// remove '.' and '-'
char chars[] = ".-";
// remove '.', '-', ':'
char chars[] = ".-:";
for (unsigned int i = 0; i < strlen(chars); ++i) {
name.erase(std::remove(name.begin(), name.end(), chars[i]), name.end());
}

View file

@ -2694,8 +2694,7 @@ def main():
if args.test:
if args.enable_onnx_tests:
source_onnx_model_dir = "C:\\local\\models" if is_windows() else "/data/models"
dest_model_dir_name = "models"
setup_test_data(source_onnx_model_dir, dest_model_dir_name, build_dir, configs)
setup_test_data(source_onnx_model_dir, "models", build_dir, configs)
run_onnxruntime_tests(args, source_dir, ctest_path, build_dir, configs)

View file

@ -23,7 +23,7 @@ resources:
repositories:
- repository: onnxruntime-inference-examples # The name used to reference this repository in the checkout step
type: github
endpoint: ort-examples
endpoint: ort-examples
name: microsoft/onnxruntime-inference-examples
- repository: manylinux
type: Github
@ -287,7 +287,7 @@ jobs:
set -e -x
cd $(Build.SourcesDirectory)
mv manylinux onnxruntime
ls
ls
- template: templates/with-container-registry-steps.yml
parameters:
@ -352,7 +352,7 @@ jobs:
script: |
docker run --gpus all -e CC=/opt/rh/devtoolset-10/root/usr/bin/cc -e CXX=/opt/rh/devtoolset-10/root/usr/bin/c++ -e CFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fstack-clash-protection -fcf-protection -O3 -Wl,--strip-all" -e CXXFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fstack-clash-protection -fcf-protection -O3 -Wl,--strip-all" -e NVIDIA_VISIBLE_DEVICES=all --rm --volume $(Build.SourcesDirectory):/src_dir \
--volume $(Build.ArtifactStagingDirectory):/artifact_src -e NIGHTLY_BUILD onnxruntimecuda116xtrt84build \
/src_dir/onnxruntime-inference-examples/c_cxx/squeezenet/run_capi_application.sh -o /src_dir/onnxruntime -p /artifact_src/onnxruntime-linux-x64-gpu-$(OnnxRuntimeVersion).tgz -w /src_dir/onnxruntime-inference-examples/c_cxx/squeezenet
/src_dir/onnxruntime-inference-examples/c_cxx/squeezenet/run_capi_application.sh -o /src_dir/onnxruntime -p /artifact_src/onnxruntime-linux-x64-gpu-$(OnnxRuntimeVersion).tgz -w /src_dir/onnxruntime-inference-examples/c_cxx/squeezenet
workingDirectory: '$(Build.ArtifactStagingDirectory)'
- task: PublishPipelineArtifact@1
@ -433,8 +433,8 @@ jobs:
displayName: 'Test C API application for GPU package'
inputs:
filename: $(Build.SourcesDirectory)\onnxruntime-inference-examples\c_cxx\squeezenet\run_capi_application.bat
arguments: $(Build.SourcesDirectory)\onnxruntime $(Build.ArtifactStagingDirectory)\onnxruntime-win-x64-gpu-$(OnnxRuntimeVersion).zip $(Build.SourcesDirectory)\onnxruntime-inference-examples\c_cxx\squeezenet
workingFolder: '$(Build.ArtifactStagingDirectory)'
arguments: $(Build.SourcesDirectory)\onnxruntime $(Build.ArtifactStagingDirectory)\onnxruntime-win-x64-gpu-$(OnnxRuntimeVersion).zip $(Build.SourcesDirectory)\onnxruntime-inference-examples\c_cxx\squeezenet
workingFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishPipelineArtifact@0
displayName: 'Publish Pipeline Combined GPU Package Artifact'
@ -518,17 +518,17 @@ jobs:
script: |
dotnet workload install android ios macos
workingDirectory: '$(Build.SourcesDirectory)\csharp'
- task: PowerShell@2
displayName: Build .NET 6 targets using dotnet
inputs:
targetType: 'inline'
# we don't specify 'Any CPU' as the platform here because if we do it gets added to the output path
# e.g. csharp\src\Microsoft.ML.OnnxRuntime\bin\Any CPU\RelWithDebInfo\net6.0-ios\
# which is inconsistent with the msbuild output path for the pre-.net6 targets
# e.g. csharp\src\Microsoft.ML.OnnxRuntime\bin\Any CPU\RelWithDebInfo\net6.0-ios\
# which is inconsistent with the msbuild output path for the pre-.net6 targets
# e.g. csharp\src\Microsoft.ML.OnnxRuntime\bin\RelWithDebInfo\monoandroid11.0
# and makes it harder to do the packing
#
#
# 'Any CPU' is the default (first 'mixed' platform specified in the csproj) so this should be fine.
script: |
dotnet build .\src\Microsoft.ML.OnnxRuntime\Microsoft.ML.OnnxRuntime.csproj -p:SelectedTargets=Net6 -p:Configuration=RelWithDebInfo -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId="Microsoft.ML.OnnxRuntime.Gpu" -p:IsReleaseBuild=${{ parameters.IsReleaseBuild }}
@ -855,4 +855,4 @@ jobs:
artifactName: 'drop-signed-nuget-dml'
targetPath: '$(Build.ArtifactStagingDirectory)'
- template: templates/publish-nuget.yml
- template: templates/publish-nuget.yml

View file

@ -22,9 +22,9 @@ jobs:
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.7'
addToPath: true
inputs:
versionSpec: '3.7'
addToPath: true
architecture: x64
- task: NuGetToolInstaller@0
@ -45,7 +45,7 @@ jobs:
filename: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat'
arguments: 'amd64'
modifyEnvironment: true
- task: DownloadPipelineArtifact@0
displayName: 'Download Pipeline Artifact'
inputs:

View file

@ -71,9 +71,9 @@ jobs:
versionSpec: '16.x'
- task: UsePythonVersion@0
inputs:
versionSpec: '3.7'
addToPath: true
inputs:
versionSpec: '3.7'
addToPath: true
architecture: ${{ parameters.BuildArch }}
- task: BatchScript@1
@ -94,10 +94,10 @@ jobs:
$Env:CMAKE_ARGS="-DONNX_USE_PROTOBUF_SHARED_LIBS=OFF -DProtobuf_USE_STATIC_LIBS=ON -DONNX_USE_LITE_PROTO=ON -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=${{ parameters.BuildArch }}-windows-static"
python setup.py bdist_wheel
python -m pip uninstall -y onnx -qq
Get-ChildItem -Path dist/*.whl | foreach {pip --disable-pip-version-check install --upgrade $_.fullname}
Get-ChildItem -Path dist/*.whl | foreach {pip --disable-pip-version-check install --upgrade $_.fullname}
workingDirectory: '$(Build.SourcesDirectory)\cmake\external\onnx'
displayName: 'Install ONNX'
- task: PythonScript@0
displayName: 'Generate cmake config'
inputs:
@ -160,7 +160,7 @@ jobs:
workingDirectory: '$(Build.BinariesDirectory)'
displayName: 'Create models link'
- ${{ if in(parameters['sln_platform'], 'Win32', 'x64') }}:
- ${{ if in(parameters['sln_platform'], 'Win32', 'x64') }}:
- ${{ if eq(parameters.BuildCSharp, true) }}:
- task: DotNetCoreCLI@2
displayName: 'Test C#'

View file

@ -40,7 +40,7 @@ parameters:
jobs:
- template: c-api-linux-cpu.yml
parameters:
parameters:
AdditionalBuildFlags: ${{ parameters.AdditionalBuildFlags }}
BaseImage: 'centos:7'
OnnxruntimeArch: 'x64'
@ -50,7 +50,7 @@ jobs:
PoolName: 'Linux-CPU'
- template: c-api-linux-cpu.yml
parameters:
parameters:
AdditionalBuildFlags: ${{ parameters.AdditionalBuildFlags }}
BaseImage: 'arm64v8/centos:7'
OnnxruntimeArch: 'aarch64'
@ -431,17 +431,17 @@ jobs:
script: |
dotnet workload install android ios macos
workingDirectory: '$(Build.SourcesDirectory)\csharp'
- task: PowerShell@2
- task: PowerShell@2
displayName: Build Microsoft.ML.OnnxRuntime .NET 6 targets using dotnet
inputs:
targetType: 'inline'
# we don't specify 'Any CPU' as the platform here because if we do it gets added to the output path
# e.g. csharp\src\Microsoft.ML.OnnxRuntime\bin\Any CPU\RelWithDebInfo\net6.0-ios\
# which is inconsistent with the msbuild output path for the pre-.net6 targets
# e.g. csharp\src\Microsoft.ML.OnnxRuntime\bin\Any CPU\RelWithDebInfo\net6.0-ios\
# which is inconsistent with the msbuild output path for the pre-.net6 targets
# e.g. csharp\src\Microsoft.ML.OnnxRuntime\bin\RelWithDebInfo\monoandroid11.0
# and makes it harder to do the packing
#
#
# 'Any CPU' is the default (first 'mixed' platform specified in the csproj) so this should be fine.
script: |
dotnet build .\src\Microsoft.ML.OnnxRuntime\Microsoft.ML.OnnxRuntime.csproj -p:SelectedTargets=Net6 -p:Configuration=RelWithDebInfo -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=$(OrtPackageId) -p:IsReleaseBuild=${{ parameters.IsReleaseBuild }}
@ -583,7 +583,7 @@ jobs:
git checkout -- js/**
git checkout -- .gitattributes
workingDirectory: '$(Build.SourcesDirectory)'
displayName: 'Testing: force EOL to lf on windows for /js/**'
displayName: 'Testing: force EOL to lf on windows for /js/**'
- task: DownloadPipelineArtifact@0
displayName: 'Download Pipeline Artifact - NuGet (Win x64)'