{"id":94357,"date":"2023-03-15T09:00:00","date_gmt":"2023-03-15T16:00:00","guid":{"rendered":"https:\/\/cloudblogs.microsoft.com\/opensource\/?p=94357"},"modified":"2023-05-31T10:33:05","modified_gmt":"2023-05-31T17:33:05","slug":"high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime","status":"publish","type":"post","link":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/","title":{"rendered":"High-performance deep learning in Oracle Cloud with ONNX Runtime"},"content":{"rendered":"\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-thumbnail\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/03\/fuhengwu-roundedb-150x150.jpg\" alt=\"a man holding a sign posing for the camera\" class=\"wp-image-94396\" \/><\/figure>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<p><em>This blog is co-authored by Fuheng Wu, Principal Machine Learning Tech Lead, Oracle Cloud AI Services, Oracle Inc.<\/em><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><figure class=\"wp-block-image aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/03\/oracle-ort.webp\" alt=\"Logos for Oracle and ONNX Runtime.\" class=\"wp-image-94370 webp-format\" width=\"500\" srcset=\"\" data-orig-src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/03\/oracle-ort.webp\"><\/figure>\n<\/div>\n\n\n\n<p>Enabling scenarios through the usage of Deep Neural Network (DNN) models is critical to our AI strategy at Oracle, and our <a href=\"https:\/\/www.oracle.com\/artificial-intelligence\/ai-services\/\" target=\"_blank\" rel=\"noreferrer noopener\">Cloud AI Services<\/a> team has built a solution to serve DNN models for customers in the healthcare sector. In this blog post, we\u2019ll share challenges our team faced, and how <a href=\"https:\/\/onnxruntime.ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">ONNX Runtime<\/a> solves these as the backbone of success for high-performance inferencing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Challenge 1: Models from different training frameworks<\/h3>\n\n\n\n<p>To provide the best solutions for specific AI tasks, Oracle Cloud AI supports a variety of machine learning models trained from different frameworks, including PyTorch, TensorFlow, PaddlePaddle, and Scikit-learn. While each of these frameworks has its own built-in serving solutions, maintaining so many different serving frameworks would be a nightmare in practice. Therefore, one of our biggest priorities was to find a versatile unified serving solution to streamline maintenance.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Challenge 2: High performance across diverse hardware ecosystem<\/h3>\n\n\n\n<p>For Oracle Cloud AI services, low latency and high accuracy are crucial for meeting customers\u2019 requirements. The DNN model servers are hosted in Oracle Cloud Compute clusters, and most of them are equipped with different CPUs (Intel, AMD, and ARM) and operating systems. We needed a solution that would run well on all the different Oracle compute shapes while remaining easy to maintain.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><\/li>\n<\/ol>\n\n\n\n<ol class=\"wp-block-list\">\n<li><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Solution: ONNX Runtime<\/h3>\n\n\n\n<p>In our search for the best DNN inference engine to support our diverse models and perform well across our hardware portfolio, ONNX Runtime caught our eye and stood out from alternatives.<\/p>\n\n\n\n<p>ONNX Runtime is a high-performance, cross-platform accelerator for machine learning models. Because ONNX Runtime supports the <a href=\"https:\/\/onnx.ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">Open Neural Network Exchange<\/a> (ONNX), models trained from different frameworks can be converted to the ONNX format and run on all platforms supported by ONNX Runtime. This makes it easy to deploy machine learning models across different environments, including cloud, edge, and mobile devices. ONNX Runtime supports all the <a href=\"https:\/\/docs.oracle.com\/iaas\/Content\/Compute\/References\/computeshapes.htm\" target=\"_blank\" rel=\"noreferrer noopener\">Oracle Cloud compute shapes<\/a> including VM.Standard.A1.Flex (ARM CPU), VM.Standard.3\/E3\/4.Flex (AMD and Intel CPU), and VM.Optimized3.Flex (Intel CPU). Not only does ONNX Runtime run on a variety of hardware, but its <a href=\"https:\/\/onnxruntime.ai\/docs\/execution-providers\/\" target=\"_blank\" rel=\"noreferrer noopener\">execution provider interface<\/a> also allows it to efficiently utilize accelerators specific to each hardware.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Validating ONNX Runtime<\/h2>\n\n\n\n<p>Based on our evaluation, we were optimistic about using ONNX Runtime as our model inferencing solution, and the next step was to verify its compatibility and performance to ensure it could meet our targets.<\/p>\n\n\n\n<p>It was relatively easy to verify hardware, operating system, and model compatibility&nbsp;by just launching the model servers with ONNX Runtime in the cloud. To systematically measure and compare ONNX Runtime\u2019s performance and accuracy to alternative solutions, we developed a pipeline system. ONNX Runtime\u2019s extensibility simplified the benchmarking process, as it allowed us to seamlessly integrate other inference engines by compiling them as different execution providers (EP) for ONNX Runtime. Thus, ONNX Runtime served not only as a runtime engine but as a platform where we could support many inference engines and choose the best one to suit our needs at runtime.<\/p>\n\n\n\n<p>We compiled TVM, OneDNN, and OpenVINO into ONNX Runtime, and it was very convenient to switch between these different inference engines with a unified programming interface. For example, in Oracle\u2019s VM.Optimized3.Flex and BM.Optimized 3.36 compute instances, where the Intel(R) Xeon(R) Gold 6354 CPU is available, OpenVINO could run faster than other inference engines by a large margin due to the AVX VNNI instruction set support. We didn\u2019t want to change our model serving code to fit different serving engines, and ONNX Runtime\u2019s EP feature conveniently allowed us to write the code once and run it with different inference engines.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Benchmarking ONNX Runtime with alternative inference engines<\/h2>\n\n\n\n<p>With our pipeline configured to test all relevant inference engines, we began the benchmarking process for different models and environments.&nbsp;In our tests, ONNX Runtime was the clear winner against alternatives by a big margin, measuring 30 to 300 percent faster than the original PyTorch inference engine regardless of whether just-in-time (JIT) was enabled.<\/p>\n\n\n\n<p>ONNX Runtime on CPU was also the best solution compared to DNN compilers like TVM, OneDNN (formerly known as Intel MKL-DNN), and MLIR. OneDNN was the closest to ONNX Runtime, but still 20 to 80 percent slower in most cases. MLIR was not as mature as ONNX Runtime two years ago, and the conclusion still holds at the time of this writing. It doesn\u2019t support dynamic input shape models and only supports limited ONNX operators. TVM also performed well in static shapes model inference, but for accuracy consideration, most of our models use dynamic shape input and TVM raised exceptions for our models. Even with static shape models, we found TVM to be slower than ONNX Runtime.<\/p>\n\n\n\n<p>We investigated the reason for ONNX Runtime\u2019s strong performance and found ONNX Runtime to be extremely optimized for CPU servers. All the core algorithms, such as the crucial 2D convolution, transpose convolution, and pooling algorithm, are delicately written with assembly code by hand and statically compiled into the binary. It even won against TVM\u2019s autotuning without any extra preprocessing or tuning. OneDNN\u2019s JIT is designed to be flexible and extensible and can dynamically generate machine code for DNN primitives on the fly. However, it still lost to ONNX Runtime in our benchmark tests because ONNX Runtime statically compiled the primitives beforehand. Theoretically, there are several tunable parameters in the DNN primitives algorithms, so in some cases like edge devices with different register files and CPU cache sizes, there might be better algorithms or implementations with different choices of parameters. However, for the DNN models in Oracle Cloud Compute CPU clusters, ONNX Runtime is a match in heaven and is the fastest inference engine we have ever used.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>We really appreciate the ONNX Runtime team for <a href=\"https:\/\/github.com\/microsoft\/onnxruntime\" target=\"_blank\" rel=\"noreferrer noopener\">open-sourcing<\/a> this amazing software and continuously improving it. This enables Oracle Cloud AI Services to provide a performant DNN model serving solution to our customers and we hope that others will also find our experience helpful.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Learn more about ONNX Runtime<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/onnxruntime.ai\/docs\/tutorials\/\" target=\"_blank\" rel=\"noreferrer noopener\">ONNX Runtime Tutorials<\/a>.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/@ONNXRuntime\/videos\" target=\"_blank\" rel=\"noreferrer noopener\">Video tutorials for ONNX Runtime<\/a>.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In this blog post, we\u2019ll share challenges our team faced, and how ONNX Runtime solves these as the backbone of success for high-performance inferencing.<\/p>\n","protected":false},"author":6191,"featured_media":95490,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"msxcm_post_with_no_image":false,"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[1824,190],"content-type":[],"topic":[],"programming-languages":[],"coauthors":[657],"class_list":["post-94357","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-onnx-runtime","tag-oracle","review-flag-1593580428-734","review-flag-1-1593580432-963","review-flag-2-1593580437-411","review-flag-3-1593580442-169","review-flag-4-1593580448-609","review-flag-integ-1593580288-449","review-flag-machi-1680214156-53","review-flag-vm-1593580807-312"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>High-performance deep learning in Oracle Cloud with ONNX Runtime | Microsoft Open Source Blog<\/title>\n<meta name=\"description\" content=\"In this blog post, we\u2019ll share challenges our team faced, and how ONNX Runtime solves these as the backbone of success for high-performance inferencing.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"High-performance deep learning in Oracle Cloud with ONNX Runtime | Microsoft Open Source Blog\" \/>\n<meta property=\"og:description\" content=\"In this blog post, we\u2019ll share challenges our team faced, and how ONNX Runtime solves these as the backbone of success for high-performance inferencing.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Open Source Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-15T16:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-31T17:33:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/03\/oracle-ort-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1202\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Faith Xu\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/03\/oracle-ort-1.png\" \/>\n<meta name=\"twitter:creator\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:site\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Faith Xu\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/\"},\"author\":[{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/faith-xu\/\",\"@type\":\"Person\",\"@name\":\"Faith Xu\"}],\"headline\":\"High-performance deep learning in Oracle Cloud with ONNX Runtime\",\"datePublished\":\"2023-03-15T16:00:00+00:00\",\"dateModified\":\"2023-05-31T17:33:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/\"},\"wordCount\":1038,\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Rick_03.webp\",\"keywords\":[\"ONNX Runtime\",\"Oracle\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/\",\"name\":\"High-performance deep learning in Oracle Cloud with ONNX Runtime | Microsoft Open Source Blog\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Rick_03.webp\",\"datePublished\":\"2023-03-15T16:00:00+00:00\",\"dateModified\":\"2023-05-31T17:33:05+00:00\",\"description\":\"In this blog post, we\u2019ll share challenges our team faced, and how ONNX Runtime solves these as the backbone of success for high-performance inferencing.\",\"breadcrumb\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#primaryimage\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Rick_03.webp\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Rick_03.webp\",\"width\":1170,\"height\":640},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/opensource.microsoft.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"High-performance deep learning in Oracle Cloud with ONNX Runtime\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"name\":\"Microsoft Open Source Blog\",\"description\":\"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability\",\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\",\"name\":\"Microsoft Open Source Blog\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft Open Source Blog\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/OpenAtMicrosoft\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"High-performance deep learning in Oracle Cloud with ONNX Runtime | Microsoft Open Source Blog","description":"In this blog post, we\u2019ll share challenges our team faced, and how ONNX Runtime solves these as the backbone of success for high-performance inferencing.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/","og_locale":"en_US","og_type":"article","og_title":"High-performance deep learning in Oracle Cloud with ONNX Runtime | Microsoft Open Source Blog","og_description":"In this blog post, we\u2019ll share challenges our team faced, and how ONNX Runtime solves these as the backbone of success for high-performance inferencing.","og_url":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/","og_site_name":"Microsoft Open Source Blog","article_published_time":"2023-03-15T16:00:00+00:00","article_modified_time":"2023-05-31T17:33:05+00:00","og_image":[{"width":1202,"height":628,"url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/03\/oracle-ort-1.png","type":"image\/png"}],"author":"Faith Xu","twitter_card":"summary_large_image","twitter_image":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/03\/oracle-ort-1.png","twitter_creator":"@OpenAtMicrosoft","twitter_site":"@OpenAtMicrosoft","twitter_misc":{"Written by":"Faith Xu","Est. reading time":"4 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#article","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/"},"author":[{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/faith-xu\/","@type":"Person","@name":"Faith Xu"}],"headline":"High-performance deep learning in Oracle Cloud with ONNX Runtime","datePublished":"2023-03-15T16:00:00+00:00","dateModified":"2023-05-31T17:33:05+00:00","mainEntityOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/"},"wordCount":1038,"publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Rick_03.webp","keywords":["ONNX Runtime","Oracle"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/","url":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/","name":"High-performance deep learning in Oracle Cloud with ONNX Runtime | Microsoft Open Source Blog","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#primaryimage"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Rick_03.webp","datePublished":"2023-03-15T16:00:00+00:00","dateModified":"2023-05-31T17:33:05+00:00","description":"In this blog post, we\u2019ll share challenges our team faced, and how ONNX Runtime solves these as the backbone of success for high-performance inferencing.","breadcrumb":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#primaryimage","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Rick_03.webp","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/STB13_Rick_03.webp","width":1170,"height":640},{"@type":"BreadcrumbList","@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/03\/15\/high-performance-deep-learning-in-oracle-cloud-with-onnx-runtime\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/opensource.microsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"High-performance deep learning in Oracle Cloud with ONNX Runtime"}]},{"@type":"WebSite","@id":"https:\/\/opensource.microsoft.com\/blog\/#website","url":"https:\/\/opensource.microsoft.com\/blog\/","name":"Microsoft Open Source Blog","description":"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability","publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/opensource.microsoft.com\/blog\/#organization","name":"Microsoft Open Source Blog","url":"https:\/\/opensource.microsoft.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft Open Source Blog"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/OpenAtMicrosoft"]}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Open Source Blog","distributor_original_site_url":"https:\/\/opensource.microsoft.com\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/94357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/users\/6191"}],"replies":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=94357"}],"version-history":[{"count":0,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/94357\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media\/95490"}],"wp:attachment":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=94357"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/post_tag?post=94357"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/content-type?post=94357"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/topic?post=94357"},{"taxonomy":"programming-languages","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/programming-languages?post=94357"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/coauthors?post=94357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}