{"id":94473,"date":"2023-05-31T08:00:00","date_gmt":"2023-05-31T15:00:00","guid":{"rendered":""},"modified":"2023-08-01T17:37:27","modified_gmt":"2023-08-02T00:37:27","slug":"on-device-training-efficient-training-on-the-edge-with-onnx-runtime","status":"publish","type":"post","link":"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/","title":{"rendered":"On-Device Training: Efficient training on the edge with ONNX Runtime"},"content":{"rendered":"\n<p>We are introducing <a href=\"https:\/\/onnxruntime.ai\/docs\/get-started\/training-on-device.html\" target=\"_blank\" rel=\"noreferrer noopener\">On-Device Training<\/a>, a new capability in ONNX Runtime (ORT)&nbsp;which enables training models on edge devices without the data ever leaving the device. The edge devices can be any compute-enabled&nbsp;devices like laptops, smartphones, gaming consoles, or other embedded devices. This capability opens new opportunities for application developers, as they can now personalize experiences for users without compromising privacy. This blog post provides a quick overview of On-Device Training with ORT and resources to help you get started.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ONNX Runtime at a glance<\/h2>\n\n\n\n<p><a href=\"https:\/\/onnxruntime.ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">ORT<\/a> is a high-performance cross-platform inference and training engine that can run a variety of machine learning models. ORT provides an easy-to-use experience for the AI developers to run models on multiple hardware and software platforms. Beyond accelerating server-side inference and training, ORT is also available for inferencing on mobile devices and on web browsers.<\/p>\n\n\n\n<p>The&nbsp;new On-Device Training capability extends the ORT-Mobile inference offering to enable training on the edge devices. The goal is to make it easy for developers to take an inference model and train it locally on-device\u2014with data present on-device\u2014to provide an improved user experience for end customers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">On-Device Training with ONNX Runtime<\/h2>\n\n\n\n<p>As opposed to traditional deep learning (DL) model training, On-Device Training requires efficient use of compute and memory resources. Additionally, edge devices vary greatly in compute and memory configurations. To support these unique needs of edge device training, we created On-Device Training capability that is framework agnostic and builds on top of the existing C++ ORT core functionality.<\/p>\n\n\n\n<p>With On-Device Training, application developers can now infer and train using the same binaries. At the end of a training session, the runtime produces optimized inference ready models which can then be used for a more personalized experience on the device. For scenarios like federated learning, the runtime provides model differences since the aggregation happens on the server side.<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/05\/on-device-train1024_1.webp\" alt=\"High-Level workflow for personalization with ONNX Runtime. Starts from model converted to ONNX, to generating training artifacts to using the locally trained model for inference.\" class=\"wp-image-94501 webp-format\" srcset=\"\" data-orig-src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/05\/on-device-train1024_1.webp\"><figcaption class=\"wp-element-caption\">Figure 1: High-Level workflow for personalization with ONNX Runtime<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Key benefits<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Memory and performance efficient local trainer&nbsp;for lower resource consumption on device (battery life, power usage, and multiple app training).<\/li>\n\n\n\n<li>Optimized binary size which fits strict constraints on edge devices.<\/li>\n\n\n\n<li>Simple APIs and multiple language bindings make it easy to scale across multiple platform targets (Now available \u2013 C, C++, Python, C#, Java. Upcoming \u2013 JS, Objective-C, and Swift).<\/li>\n\n\n\n<li>Developers can&nbsp;extend their existing ORT Inference solutions to enable training on the edge.<\/li>\n\n\n\n<li>Same ONNX model and runtime optimizations can run across desktop, edge, and mobile devices, without having to re-design training solution across platforms.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Applications of On-Device Training<\/h2>\n\n\n\n<p>The applications of On-Device Training fall into two broad categories:<\/p>\n\n\n\n<p><strong>Federated learning:<\/strong> This technique can be used to train global models based on decentralized data without sacrificing user privacy. <a href=\"https:\/\/www.microsoft.com\/research\/blog\/flute-a-scalable-federated-learning-simulation-platform\/\" target=\"_blank\" rel=\"noreferrer noopener\">Federated learning<\/a> involves updating a global model based on training that happens on edge devices. The edge devices train their version of the global model based on data local to the devices and return the model difference to the server. The server then aggregates these model differences from various devices to update the global model. This process is repeated until the desired outcome from the model is achieved.&nbsp;On-Device Training provides the local trainer which will run on individual devices. Federated learning infrastructure will provide the orchestration of managing the output of the local trainers, across a large number of devices, to update the global model.<\/p>\n\n\n\n<p>For instance, healthcare industries can use federated learning to train models based on data from different hospitals with the data always staying on location, to provide better predictions for health conditions. Privacy for the patients is maintained because user data never leaves the devices or hospitals. The model improves the quality because it is updated based on model changes suggested from individual hospitals. This should lead to a comprehensive global model with an overall better performance for the end customer.<\/p>\n\n\n\n<p><strong>Personalized learning:<\/strong> This technique involves fine-tuning models on-device to create new personalized models. The training is based on data on-device, which produces a model personalized for the end user locally. On-Device Training again acts as a local trainer, which will update the model present on-device. This personalized model will then be used for inference to provide an improved experience for the end customer.<\/p>\n\n\n\n<p>Personalization has a variety of applications. For instance, personalization can be used to train text prediction, image detection, or image&nbsp;classification models locally on the device. In the case of prediction or detection it is tuned to the individual user behavior or data, so that results are more customized for the end customer. For an <a href=\"https:\/\/github.com\/microsoft\/onnxruntime-training-examples\/tree\/master\/on_device_training#what-tutorials-does-this-repo-include\" target=\"_blank\" rel=\"noreferrer noopener\">image classification scenario<\/a> like photo-tagging, the customer can leverage device data to customize their photo-tagging experience\u2014for their family and friends\u2014without the data leaving their device.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Looking forward<\/h2>\n\n\n\n<p>We are continuously working on improving the feature set and platform support. In the next release, we will add support for iOS and web browser. We will also enable more optimizations to make On-Device Training more efficient. Additionally, we will publish deep dives and tutorials in the coming months. We would love to hear your feedback and feature requests. Please use our <a href=\"https:\/\/github.com\/microsoft\/onnxruntime\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub repository<\/a> to leave comments and feedback.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Getting started<\/h2>\n\n\n\n<p>Curious to learn more, or want to see how your app can include On-Device Training? Check out these links to get started:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/microsoft\/onnxruntime-training-examples\/tree\/master\/on_device_training\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorials for On-Device Training<\/a>.<\/li>\n\n\n\n<li><a href=\"https:\/\/onnxruntime.ai\/docs\/get-started\/training-on-device.html\" target=\"_blank\" rel=\"noreferrer noopener\">A detailed introduction<\/a> to On-Device Training.<\/li>\n\n\n\n<li><a href=\"https:\/\/onnxruntime.ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">Available packages<\/a> for On-Device Training. <\/li>\n\n\n\n<li><a href=\"https:\/\/onnxruntime.ai\/docs\/build\/training.html#build-for-on-device-training\" target=\"_blank\" rel=\"noreferrer noopener\">Build from source<\/a>. <\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>ONNX Runtime is a high-performance cross-platform inference and training engine that can run a variety of machine learning models. ORT provides an easy-to-use experience for the AI developers to run models on multiple hardware and software platforms.<\/p>\n","protected":false},"author":6194,"featured_media":95473,"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":[2033,2031,1824,2030,2032],"content-type":[346],"topic":[2238],"programming-languages":[],"coauthors":[1662,2028,2029],"class_list":["post-94473","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-federated-learning","tag-on-device-training","tag-onnx-runtime","tag-onnx-runtime-training","tag-personalization","content-type-news","topic-ai-machine-learning","review-flag-1593580419-521","review-flag-1-1593580432-963","review-flag-alway-1593580310-39","review-flag-fall-1593580732-697","review-flag-lever-1593580265-989","review-flag-machi-1680214156-53","review-flag-never-1593580314-283","review-flag-new-1593580248-669"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>On-Device Training: Efficient training on the edge with ONNX Runtime | Microsoft Open Source Blog<\/title>\n<meta name=\"description\" content=\"Introducing On-Device Training, a new capability in ONNX Runtime\u00a0which enables training models on edge devices without the data ever leaving the device.\" \/>\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\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"On-Device Training: Efficient training on the edge with ONNX Runtime | Microsoft Open Source Blog\" \/>\n<meta property=\"og:description\" content=\"Introducing On-Device Training, a new capability in ONNX Runtime\u00a0which enables training models on edge devices without the data ever leaving the device.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Open Source Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-31T15:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-02T00:37:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Fintech-006.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1170\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kshama Pawar, Ashwini Khade, Baiju Meswani\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\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=\"Kshama Pawar, Ashwini Khade, Baiju Meswani\" \/>\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\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/\"},\"author\":[{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/kshama-pawar\/\",\"@type\":\"Person\",\"@name\":\"Kshama Pawar\"},{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/ashwini-khade\/\",\"@type\":\"Person\",\"@name\":\"Ashwini Khade\"},{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/baiju-meswani\/\",\"@type\":\"Person\",\"@name\":\"Baiju Meswani\"}],\"headline\":\"On-Device Training: Efficient training on the edge with ONNX Runtime\",\"datePublished\":\"2023-05-31T15:00:00+00:00\",\"dateModified\":\"2023-08-02T00:37:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/\"},\"wordCount\":909,\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Fintech-006.webp\",\"keywords\":[\"Federated Learning\",\"On-Device Training\",\"ONNX Runtime\",\"ONNX Runtime Training\",\"Personalization\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/\",\"name\":\"On-Device Training: Efficient training on the edge with ONNX Runtime | Microsoft Open Source Blog\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Fintech-006.webp\",\"datePublished\":\"2023-05-31T15:00:00+00:00\",\"dateModified\":\"2023-08-02T00:37:27+00:00\",\"description\":\"Introducing On-Device Training, a new capability in ONNX Runtime\u00a0which enables training models on edge devices without the data ever leaving the device.\",\"breadcrumb\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#primaryimage\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Fintech-006.webp\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Fintech-006.webp\",\"width\":1170,\"height\":640},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/opensource.microsoft.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"On-Device Training: Efficient training on the edge 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":"On-Device Training: Efficient training on the edge with ONNX Runtime | Microsoft Open Source Blog","description":"Introducing On-Device Training, a new capability in ONNX Runtime\u00a0which enables training models on edge devices without the data ever leaving the device.","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\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/","og_locale":"en_US","og_type":"article","og_title":"On-Device Training: Efficient training on the edge with ONNX Runtime | Microsoft Open Source Blog","og_description":"Introducing On-Device Training, a new capability in ONNX Runtime\u00a0which enables training models on edge devices without the data ever leaving the device.","og_url":"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/","og_site_name":"Microsoft Open Source Blog","article_published_time":"2023-05-31T15:00:00+00:00","article_modified_time":"2023-08-02T00:37:27+00:00","og_image":[{"width":1170,"height":640,"url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Fintech-006.png","type":"image\/png"}],"author":"Kshama Pawar, Ashwini Khade, Baiju Meswani","twitter_card":"summary_large_image","twitter_creator":"@OpenAtMicrosoft","twitter_site":"@OpenAtMicrosoft","twitter_misc":{"Written by":"Kshama Pawar, Ashwini Khade, Baiju Meswani","Est. reading time":"4 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#article","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/"},"author":[{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/kshama-pawar\/","@type":"Person","@name":"Kshama Pawar"},{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/ashwini-khade\/","@type":"Person","@name":"Ashwini Khade"},{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/baiju-meswani\/","@type":"Person","@name":"Baiju Meswani"}],"headline":"On-Device Training: Efficient training on the edge with ONNX Runtime","datePublished":"2023-05-31T15:00:00+00:00","dateModified":"2023-08-02T00:37:27+00:00","mainEntityOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/"},"wordCount":909,"publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Fintech-006.webp","keywords":["Federated Learning","On-Device Training","ONNX Runtime","ONNX Runtime Training","Personalization"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/","url":"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/","name":"On-Device Training: Efficient training on the edge with ONNX Runtime | Microsoft Open Source Blog","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#primaryimage"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Fintech-006.webp","datePublished":"2023-05-31T15:00:00+00:00","dateModified":"2023-08-02T00:37:27+00:00","description":"Introducing On-Device Training, a new capability in ONNX Runtime\u00a0which enables training models on edge devices without the data ever leaving the device.","breadcrumb":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#primaryimage","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Fintech-006.webp","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO24-Azure-Fintech-006.webp","width":1170,"height":640},{"@type":"BreadcrumbList","@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/05\/31\/on-device-training-efficient-training-on-the-edge-with-onnx-runtime\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/opensource.microsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"On-Device Training: Efficient training on the edge 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\/94473","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\/6194"}],"replies":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=94473"}],"version-history":[{"count":0,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/94473\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media\/95473"}],"wp:attachment":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=94473"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/post_tag?post=94473"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/content-type?post=94473"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/topic?post=94473"},{"taxonomy":"programming-languages","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/programming-languages?post=94473"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/coauthors?post=94473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}