CINXE.COM

Performance measurement  |  Google AI Edge  |  Google AI for Developers

<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="157101835696-ooapojlodmuabs2do2vuhhnf90bccmoi.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Google AI for Developers"> <meta property="og:type" content="website"><meta name="theme-color" content="#1967d2"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/googledevai/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/images/favicon-new.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/images/touchicon-180-new.png"><link rel="canonical" href="https://ai.google.dev/edge/litert/models/measurement"><link rel="search" type="application/opensearchdescription+xml" title="Google AI for Developers" href="https://ai.google.dev/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://ai.google.dev/edge/litert/models/measurement" /><link rel="alternate" hreflang="x-default" href="https://ai.google.dev/edge/litert/models/measurement" /><link rel="alternate" hreflang="ar" href="https://ai.google.dev/edge/litert/models/measurement?hl=ar" /><link rel="alternate" hreflang="bn" href="https://ai.google.dev/edge/litert/models/measurement?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://ai.google.dev/edge/litert/models/measurement?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://ai.google.dev/edge/litert/models/measurement?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://ai.google.dev/edge/litert/models/measurement?hl=fa" /><link rel="alternate" hreflang="fr" href="https://ai.google.dev/edge/litert/models/measurement?hl=fr" /><link rel="alternate" hreflang="de" href="https://ai.google.dev/edge/litert/models/measurement?hl=de" /><link rel="alternate" hreflang="he" href="https://ai.google.dev/edge/litert/models/measurement?hl=he" /><link rel="alternate" hreflang="hi" href="https://ai.google.dev/edge/litert/models/measurement?hl=hi" /><link rel="alternate" hreflang="id" href="https://ai.google.dev/edge/litert/models/measurement?hl=id" /><link rel="alternate" hreflang="it" href="https://ai.google.dev/edge/litert/models/measurement?hl=it" /><link rel="alternate" hreflang="ja" href="https://ai.google.dev/edge/litert/models/measurement?hl=ja" /><link rel="alternate" hreflang="ko" href="https://ai.google.dev/edge/litert/models/measurement?hl=ko" /><link rel="alternate" hreflang="pl" href="https://ai.google.dev/edge/litert/models/measurement?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://ai.google.dev/edge/litert/models/measurement?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://ai.google.dev/edge/litert/models/measurement?hl=ru" /><link rel="alternate" hreflang="es-419" href="https://ai.google.dev/edge/litert/models/measurement?hl=es-419" /><link rel="alternate" hreflang="th" href="https://ai.google.dev/edge/litert/models/measurement?hl=th" /><link rel="alternate" hreflang="tr" href="https://ai.google.dev/edge/litert/models/measurement?hl=tr" /><link rel="alternate" hreflang="vi" href="https://ai.google.dev/edge/litert/models/measurement?hl=vi" /><title>Performance measurement &nbsp;|&nbsp; Google AI Edge &nbsp;|&nbsp; Google AI for Developers</title> <meta property="og:title" content="Performance measurement &nbsp;|&nbsp; Google AI Edge &nbsp;|&nbsp; Google AI for Developers"><meta property="og:url" content="https://ai.google.dev/edge/litert/models/measurement"><meta property="og:image" content="https://ai.google.dev/static/site-assets/images/share.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "Performance measurement" } </script><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Google AI Edge", "item": "https://ai.google.dev/edge" },{ "@type": "ListItem", "position": 2, "name": "Performance measurement", "item": "https://ai.google.dev/edge/litert/models/measurement" }] } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="googledevai-theme" type="article" layout="docs" display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner" keep-tabs-visible> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="googleAIEdge" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://ai.google.dev/_static/googledevai/images/lockup-new.svg" class="devsite-site-logo" alt="Google AI Edge"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab > <a href="https://ai.google.dev/gemini-api" track-metadata-eventdetail="https://ai.google.dev/gemini-api" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - gemini api" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Gemini API" track-name="gemini api" > Gemini API </a> </tab> <tab > <a href="https://ai.google.dev/gemma" track-metadata-eventdetail="https://ai.google.dev/gemma" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - gemma" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Gemma" track-name="gemma" > Gemma </a> </tab> <tab class="devsite-active"> <a href="https://ai.google.dev/edge" track-metadata-eventdetail="https://ai.google.dev/edge" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - google ai edge" track-metadata-module="primary nav" aria-label="Google AI Edge, selected" data-category="Site-Wide Custom Events" data-label="Tab: Google AI Edge" track-name="google ai edge" > Google AI Edge </a> </tab> <tab class="devsite-dropdown "> <span class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - tools" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Tools" track-name="tools" > Tools </span> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Tools" track-type="nav" track-metadata-eventdetail="" track-metadata-position="nav - tools" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Tools" track-name="tools" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://ai.google.dev/responsible" track-type="nav" track-metadata-eventdetail="https://ai.google.dev/responsible" track-metadata-position="nav - tools" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Responsible GenAI Toolkit </div> </a> </li> <li class="devsite-nav-item"> <a href="https://colab.google/" track-type="nav" track-metadata-eventdetail="https://colab.google/" track-metadata-position="nav - tools" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Colab </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/genkit" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/genkit" track-metadata-position="nav - tools" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Firebase Genkit </div> </a> </li> <li class="devsite-nav-item"> <a href="https://jax.readthedocs.io/" track-type="nav" track-metadata-eventdetail="https://jax.readthedocs.io/" track-metadata-position="nav - tools" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> JAX </div> </a> </li> <li class="devsite-nav-item"> <a href="https://keras.io/" track-type="nav" track-metadata-eventdetail="https://keras.io/" track-metadata-position="nav - tools" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Keras </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/" track-metadata-position="nav - tools" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> TensorFlow </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://discuss.ai.google.dev/" track-metadata-eventdetail="https://discuss.ai.google.dev/" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" > Community </a> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="Google AI Edge" tenant-name="Google AI for Developers" > <form class="devsite-search-form" action="https://ai.google.dev/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <devsite-user enable-profiles id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab > <a href="https://ai.google.dev/edge" track-metadata-eventdetail="https://ai.google.dev/edge" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - overview" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" > Overview </a> </tab> <tab class="devsite-dropdown "> <span class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - mediapipe" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: MediaPipe" track-name="mediapipe" > MediaPipe </span> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for MediaPipe" track-type="nav" track-metadata-eventdetail="" track-metadata-position="nav - mediapipe" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: MediaPipe" track-name="mediapipe" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://ai.google.dev/edge/mediapipe/solutions/guide" track-type="nav" track-metadata-eventdetail="https://ai.google.dev/edge/mediapipe/solutions/guide" track-metadata-position="nav - mediapipe" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> MediaPipe Solutions </div> </a> </li> <li class="devsite-nav-item"> <a href="https://ai.google.dev/edge/mediapipe/framework" track-type="nav" track-metadata-eventdetail="https://ai.google.dev/edge/mediapipe/framework" track-metadata-position="nav - mediapipe" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> MediaPipe Framework </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-active"> <a href="https://ai.google.dev/edge/litert" track-metadata-eventdetail="https://ai.google.dev/edge/litert" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - litert" track-metadata-module="primary nav" aria-label="LiteRT, selected" data-category="Site-Wide Custom Events" data-label="Tab: LiteRT" track-name="litert" > LiteRT </a> </tab> <tab > <a href="https://ai.google.dev/edge/mediapipe/solutions/guide" track-metadata-eventdetail="https://ai.google.dev/edge/mediapipe/solutions/guide" class="devsite-tabs-content gc-analytics-event gemini-hidden-tab" track-type="nav" track-metadata-position="nav - solutions" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Solutions" track-name="solutions" > Solutions </a> </tab> <tab > <a href="https://ai.google.dev/edge/mediapipe/framework" track-metadata-eventdetail="https://ai.google.dev/edge/mediapipe/framework" class="devsite-tabs-content gc-analytics-event gemini-hidden-tab" track-type="nav" track-metadata-position="nav - framework" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Framework" track-name="framework" > Framework </a> </tab> <tab > <a href="https://ai.google.dev/edge/model-explorer" track-metadata-eventdetail="https://ai.google.dev/edge/model-explorer" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - model explorer" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Model Explorer" track-name="model explorer" > Model Explorer </a> </tab> <tab > <a href="https://ai.google.dev/edge/api" track-metadata-eventdetail="https://ai.google.dev/edge/api" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - api reference" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: API Reference" track-name="api reference" > API Reference </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars > <div class="devsite-book-nav-filter" > <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="googleAIEdge" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://ai.google.dev/_static/googledevai/images/lockup-new.svg" class="devsite-site-logo" alt="Google AI Edge"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/gemini-api" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Gemini API" track-name="gemini api" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Gemini API" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Gemini API </span> </a> </li> <li class="devsite-nav-item"> <a href="/gemma" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Gemma" track-name="gemma" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Gemma" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Gemma </span> </a> </li> <li class="devsite-nav-item"> <a href="/edge" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Google AI Edge" track-name="google ai edge" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google AI Edge" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google AI Edge </span> </a> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/edge" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: MediaPipe" track-name="mediapipe" > <span class="devsite-nav-text" tooltip > MediaPipe </span> </span> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: MediaPipe" track-name="mediapipe" > <span class="devsite-nav-text" tooltip menu="MediaPipe"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="MediaPipe"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/edge/litert" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: LiteRT" track-name="litert" data-category="Site-Wide Custom Events" data-label="Responsive Tab: LiteRT" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip menu="_book"> LiteRT </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/edge/mediapipe/solutions/guide" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Solutions" track-name="solutions" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Solutions" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Solutions </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/edge/mediapipe/framework" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Framework" track-name="framework" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Framework" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Framework </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/edge/model-explorer" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Model Explorer" track-name="model explorer" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Model Explorer" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Model Explorer </span> </a> </li> <li class="devsite-nav-item"> <a href="/edge/api" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: API Reference" track-name="api reference" data-category="Site-Wide Custom Events" data-label="Responsive Tab: API Reference" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > API Reference </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Tools" track-name="tools" > <span class="devsite-nav-text" tooltip > Tools </span> </span> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Tools" track-name="tools" > <span class="devsite-nav-text" tooltip menu="Tools"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Tools"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="https://discuss.ai.google.dev/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Community </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/edge/litert" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item"><a href="/edge/litert/inference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/inference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/inference" ><span class="devsite-nav-text" tooltip>Get started</span></a></li> <li class="devsite-nav-item"><a href="/edge/litert/migration" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/migration" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/migration" ><span class="devsite-nav-text" tooltip>Migrating from TensorFlow Lite</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Models</span> </div></li> <li class="devsite-nav-item"><a href="/edge/litert/models/convert_to_flatbuffer" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/convert_to_flatbuffer" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/convert_to_flatbuffer" ><span class="devsite-nav-text" tooltip>Support multiple frameworks</span></a></li> <li class="devsite-nav-item"><a href="/edge/litert/models/trained" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/trained" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/trained" ><span class="devsite-nav-text" tooltip>Use trained models</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Convert TensorFlow models</span> </div></li> <li class="devsite-nav-item"><a href="/edge/litert/models/convert" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/convert" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/convert" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item"><a href="/edge/litert/models/convert_tf" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/convert_tf" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/convert_tf" ><span class="devsite-nav-text" tooltip>Convert TensorFlow models</span></a></li> <li class="devsite-nav-item devsite-nav-experimental"><a href="/edge/litert/models/signatures" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/signatures" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/signatures" ><span class="devsite-nav-text" tooltip>Add Signatures</span><span class="devsite-nav-icon material-icons" data-icon="experimental" data-title="Experimental!" aria-hidden="true"></span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Conversion tools</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-experimental"><a href="/edge/litert/models/model_analyzer" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/model_analyzer" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/model_analyzer" ><span class="devsite-nav-text" tooltip>Model Analyzer</span><span class="devsite-nav-icon material-icons" data-icon="experimental" data-title="Experimental!" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-experimental"><a href="/edge/litert/models/authoring" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/authoring" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/authoring" ><span class="devsite-nav-text" tooltip>Authoring tool</span><span class="devsite-nav-icon material-icons" data-icon="experimental" data-title="Experimental!" aria-hidden="true"></span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Model compatibility</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/edge/litert/models/ops_compatibility" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/ops_compatibility" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/ops_compatibility" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/models/ops_select" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/ops_select" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/ops_select" ><span class="devsite-nav-text" tooltip>Select operators</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/models/op_select_allowlist" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/op_select_allowlist" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/op_select_allowlist" ><span class="devsite-nav-text" tooltip>Select operators Allowlist</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Advanced</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/edge/litert/models/ops_custom" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/ops_custom" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/ops_custom" ><span class="devsite-nav-text" tooltip>Custom operators</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/models/operation_fusion" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/operation_fusion" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/operation_fusion" ><span class="devsite-nav-text" tooltip>Fused operators</span></a></li><li class="devsite-nav-item devsite-nav-experimental"><a href="/edge/litert/models/ops_version" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/ops_version" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/ops_version" ><span class="devsite-nav-text" tooltip>Operator versions</span><span class="devsite-nav-icon material-icons" data-icon="experimental" data-title="Experimental!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/edge/litert/models/rnn" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/rnn" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/rnn" ><span class="devsite-nav-text" tooltip>RNN models</span></a></li></ul></div></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Optimize models</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/edge/litert/models/model_optimization" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/model_optimization" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/model_optimization" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/models/post_training_quantization" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/post_training_quantization" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/post_training_quantization" ><span class="devsite-nav-text" tooltip>Post-training quantization</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/models/post_training_quant" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/post_training_quant" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/post_training_quant" ><span class="devsite-nav-text" tooltip>Post-training dynamic range quantization</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/models/post_training_integer_quant" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/post_training_integer_quant" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/post_training_integer_quant" ><span class="devsite-nav-text" tooltip>Post-training integer quantization</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/models/post_training_float16_quant" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/post_training_float16_quant" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/post_training_float16_quant" ><span class="devsite-nav-text" tooltip>Post-training float16 quantization</span></a></li><li class="devsite-nav-item devsite-nav-experimental"><a href="/edge/litert/models/post_training_integer_quant_16x8" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/post_training_integer_quant_16x8" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/post_training_integer_quant_16x8" ><span class="devsite-nav-text" tooltip>Post-training integer quantization with int16 activations</span><span class="devsite-nav-icon material-icons" data-icon="experimental" data-title="Experimental!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/edge/litert/models/quantization_spec" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/quantization_spec" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/quantization_spec" ><span class="devsite-nav-text" tooltip>Quantization specification</span></a></li><li class="devsite-nav-item devsite-nav-nightly"><a href="/edge/litert/models/quantization_debugger" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/quantization_debugger" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/quantization_debugger" ><span class="devsite-nav-text" tooltip>Inspecting quantization errors</span><span class="devsite-nav-icon material-icons" data-icon="nightly" data-title="Nightly build only" aria-hidden="true"></span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Add model metadata</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/edge/litert/models/metadata" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/metadata" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/metadata" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/models/metadata_writer_tutorial" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/metadata_writer_tutorial" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/metadata_writer_tutorial" ><span class="devsite-nav-text" tooltip>Metadata Writer API</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Design and build models</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/edge/litert/models/build" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/build" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/build" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/models/best_practices" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/best_practices" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/best_practices" ><span class="devsite-nav-text" tooltip>Performance best practices</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/models/measurement" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/measurement" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/measurement" ><span class="devsite-nav-text" tooltip>Performance measurement</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/models/ondevice_training" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/ondevice_training" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/ondevice_training" ><span class="devsite-nav-text" tooltip>On-device training</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Convert PyTorch models</span> </div></li> <li class="devsite-nav-item"><a href="/edge/litert/models/convert_pytorch" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/convert_pytorch" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/convert_pytorch" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item"><a href="/edge/litert/models/pytorch_to_tflite" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/pytorch_to_tflite" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/pytorch_to_tflite" ><span class="devsite-nav-text" tooltip>PyTorch to LiteRT quickstart</span></a></li> <li class="devsite-nav-item"><a href="/edge/litert/models/edge_generative" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/edge_generative" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/edge_generative" ><span class="devsite-nav-text" tooltip>Convert generative PyTorch models</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Convert JAX models</span> </div></li> <li class="devsite-nav-item devsite-nav-nightly"><a href="/edge/litert/models/convert_jax" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/convert_jax" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/convert_jax" ><span class="devsite-nav-text" tooltip>Overview</span><span class="devsite-nav-icon material-icons" data-icon="nightly" data-title="Nightly build only" aria-hidden="true"></span></a></li> <li class="devsite-nav-item devsite-nav-nightly"><a href="/edge/litert/models/jax_to_tflite" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/models/jax_to_tflite" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/models/jax_to_tflite" ><span class="devsite-nav-text" tooltip>JAX to LiteRT quickstart</span><span class="devsite-nav-icon material-icons" data-icon="nightly" data-title="Nightly build only" aria-hidden="true"></span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Hardware acceleration</span> </div></li> <li class="devsite-nav-item"><a href="/edge/litert/performance/delegates" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/performance/delegates" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/performance/delegates" ><span class="devsite-nav-text" tooltip>Delegates</span></a></li> <li class="devsite-nav-item"><a href="/edge/litert/performance/gpu" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/performance/gpu" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/performance/gpu" ><span class="devsite-nav-text" tooltip>GPU delegates</span></a></li> <li class="devsite-nav-item devsite-nav-experimental"><a href="/edge/litert/performance/implementing_delegate" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/performance/implementing_delegate" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/performance/implementing_delegate" ><span class="devsite-nav-text" tooltip>Implementing a delegate</span><span class="devsite-nav-icon material-icons" data-icon="experimental" data-title="Experimental!" aria-hidden="true"></span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Run on Android</span> </div></li> <li class="devsite-nav-item"><a href="/edge/litert/android" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/android" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/android" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Google Play services runtime</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/edge/litert/android/play_services" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/android/play_services" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/android/play_services" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/android/java" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/android/java" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/android/java" ><span class="devsite-nav-text" tooltip>Java API</span></a></li><li class="devsite-nav-item devsite-nav-experimental"><a href="/edge/litert/android/native" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/android/native" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/android/native" ><span class="devsite-nav-text" tooltip>C API</span><span class="devsite-nav-icon material-icons" data-icon="experimental" data-title="Experimental!" aria-hidden="true"></span></a></li></ul></div></li> <li class="devsite-nav-item"><a href="/edge/litert/android/development" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/android/development" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/android/development" ><span class="devsite-nav-text" tooltip>Development tools</span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Hardware acceleration</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-experimental"><a href="/edge/litert/android/acceleration_service" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/android/acceleration_service" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/android/acceleration_service" ><span class="devsite-nav-text" tooltip>Acceleration service</span><span class="devsite-nav-icon material-icons" data-icon="experimental" data-title="Experimental!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/edge/litert/android/gpu" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/android/gpu" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/android/gpu" ><span class="devsite-nav-text" tooltip>GPU with Interpreter API</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/android/gpu_native" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/android/gpu_native" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/android/gpu_native" ><span class="devsite-nav-text" tooltip>GPU with C/C++ API</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/android/npu" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/android/npu" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/android/npu" ><span class="devsite-nav-text" tooltip>NPU delegates</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Models with metadata</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/edge/litert/android/metadata/overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/android/metadata/overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/android/metadata/overview" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/android/metadata/codegen" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/android/metadata/codegen" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/android/metadata/codegen" ><span class="devsite-nav-text" tooltip>Generate model interfaces</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/android/metadata/lite_support" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/android/metadata/lite_support" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/android/metadata/lite_support" ><span class="devsite-nav-text" tooltip>Customize data input and output</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Run on iOS</span> </div></li> <li class="devsite-nav-item"><a href="/edge/litert/ios/quickstart" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/ios/quickstart" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/ios/quickstart" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item"><a href="/edge/litert/ios/coreml" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/ios/coreml" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/ios/coreml" ><span class="devsite-nav-text" tooltip>Core ML delegate</span></a></li> <li class="devsite-nav-item"><a href="/edge/litert/ios/gpu" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/ios/gpu" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/ios/gpu" ><span class="devsite-nav-text" tooltip>GPU delegate</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Run on Micro</span> </div></li> <li class="devsite-nav-item"><a href="/edge/litert/microcontrollers/overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/microcontrollers/overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/microcontrollers/overview" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item"><a href="/edge/litert/microcontrollers/get_started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/microcontrollers/get_started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/microcontrollers/get_started" ><span class="devsite-nav-text" tooltip>Get started</span></a></li> <li class="devsite-nav-item"><a href="/edge/litert/microcontrollers/python" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/microcontrollers/python" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/microcontrollers/python" ><span class="devsite-nav-text" tooltip>Linux-based devices with Python</span></a></li> <li class="devsite-nav-item"><a href="/edge/litert/microcontrollers/library" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/microcontrollers/library" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/microcontrollers/library" ><span class="devsite-nav-text" tooltip>Understand the C++ library</span></a></li> <li class="devsite-nav-item"><a href="/edge/litert/microcontrollers/build_convert" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/microcontrollers/build_convert" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/microcontrollers/build_convert" ><span class="devsite-nav-text" tooltip>Build and convert models</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Libraries and tools</span> </div></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Task Library</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/edge/litert/libraries/task_library/overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/task_library/overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/task_library/overview" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/task_library/image_classifier" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/task_library/image_classifier" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/task_library/image_classifier" ><span class="devsite-nav-text" tooltip>ImageClassifier</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/task_library/object_detector" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/task_library/object_detector" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/task_library/object_detector" ><span class="devsite-nav-text" tooltip>ObjectDetector</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/task_library/image_segmenter" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/task_library/image_segmenter" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/task_library/image_segmenter" ><span class="devsite-nav-text" tooltip>ImageSegmenter</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/task_library/image_embedder" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/task_library/image_embedder" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/task_library/image_embedder" ><span class="devsite-nav-text" tooltip>ImageEmbedder</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/task_library/image_searcher" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/task_library/image_searcher" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/task_library/image_searcher" ><span class="devsite-nav-text" tooltip>ImageSearcher</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/task_library/nl_classifier" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/task_library/nl_classifier" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/task_library/nl_classifier" ><span class="devsite-nav-text" tooltip>NLClassifier</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/task_library/bert_nl_classifier" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/task_library/bert_nl_classifier" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/task_library/bert_nl_classifier" ><span class="devsite-nav-text" tooltip>BertNLClassifier</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/task_library/bert_question_answerer" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/task_library/bert_question_answerer" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/task_library/bert_question_answerer" ><span class="devsite-nav-text" tooltip>BertQuestionAnswerer</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/task_library/text_embedder" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/task_library/text_embedder" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/task_library/text_embedder" ><span class="devsite-nav-text" tooltip>TextEmbedder</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/task_library/text_searcher" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/task_library/text_searcher" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/task_library/text_searcher" ><span class="devsite-nav-text" tooltip>TextSearcher</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/task_library/audio_classifier" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/task_library/audio_classifier" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/task_library/audio_classifier" ><span class="devsite-nav-text" tooltip>AudioClassifier</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/task_library/customized_task_api" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/task_library/customized_task_api" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/task_library/customized_task_api" ><span class="devsite-nav-text" tooltip>Customized API</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-experimental"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Model Maker</span><span class="devsite-nav-icon material-icons" data-icon="experimental" data-title="Experimental!" aria-hidden="true"></span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/edge/litert/libraries/modify" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/modify" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/modify" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Images &amp; video</span> </div></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/modify/image_classification" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/modify/image_classification" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/modify/image_classification" ><span class="devsite-nav-text" tooltip>Image classification</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/modify/object_detection" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/modify/object_detection" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/modify/object_detection" ><span class="devsite-nav-text" tooltip>Object detection</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Text</span> </div></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/modify/text_classification" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/modify/text_classification" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/modify/text_classification" ><span class="devsite-nav-text" tooltip>Text classification</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/modify/question_answer" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/modify/question_answer" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/modify/question_answer" ><span class="devsite-nav-text" tooltip>BERT question &amp; answer</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/modify/text_searcher" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/modify/text_searcher" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/modify/text_searcher" ><span class="devsite-nav-text" tooltip>Text search</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Audio</span> </div></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/modify/audio_classification" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/modify/audio_classification" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/modify/audio_classification" ><span class="devsite-nav-text" tooltip>Audio classification</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/libraries/modify/speech_recognition" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/libraries/modify/speech_recognition" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/libraries/modify/speech_recognition" ><span class="devsite-nav-text" tooltip>Speech recognition</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Advanced</span> </div></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Build LiteRT</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/edge/litert/build/android" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/build/android" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/build/android" ><span class="devsite-nav-text" tooltip>Build for Android</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/build/ios" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/build/ios" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/build/ios" ><span class="devsite-nav-text" tooltip>Build for iOS</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/build/arm" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/build/arm" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/build/arm" ><span class="devsite-nav-text" tooltip>Build for ARM</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Build with CMake</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/edge/litert/build/cmake" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/build/cmake" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/build/cmake" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/edge/litert/build/cmake_arm" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/build/cmake_arm" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/build/cmake_arm" ><span class="devsite-nav-text" tooltip>Cross compilation for ARM</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/edge/litert/build/cmake_pip" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/build/cmake_pip" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/build/cmake_pip" ><span class="devsite-nav-text" tooltip>Build Python Wheel</span></a></li><li class="devsite-nav-item devsite-nav-experimental"><a href="/edge/litert/build/reduce_binary_size" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /edge/litert/build/reduce_binary_size" track-type="bookNav" track-name="click" track-metadata-eventdetail="/edge/litert/build/reduce_binary_size" ><span class="devsite-nav-text" tooltip>Reduce binary size</span><span class="devsite-nav-icon material-icons" data-icon="experimental" data-title="Experimental!" aria-hidden="true"></span></a></li></ul></div></li> </ul> <ul class="devsite-nav-list" menu="Tools" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/responsible" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Responsible GenAI Toolkit" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Responsible GenAI Toolkit </span> </a> </li> <li class="devsite-nav-item"> <a href="https://colab.google/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Colab" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Colab </span> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/genkit" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Firebase Genkit" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Firebase Genkit </span> </a> </li> <li class="devsite-nav-item"> <a href="https://jax.readthedocs.io/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: JAX" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > JAX </span> </a> </li> <li class="devsite-nav-item"> <a href="https://keras.io/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Keras" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Keras </span> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: TensorFlow" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > TensorFlow </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="MediaPipe" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/edge/mediapipe/solutions/guide" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: MediaPipe Solutions" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > MediaPipe Solutions </span> </a> </li> <li class="devsite-nav-item"> <a href="/edge/mediapipe/framework" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: MediaPipe Framework" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > MediaPipe Framework </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav has-sidebar > <div class="devsite-sidebar"> <div class="devsite-sidebar-content"> <devsite-toc class="devsite-nav" role="navigation" aria-label="On this page" depth="2" scrollbars ></devsite-toc> <devsite-recommendations-sidebar class="nocontent devsite-nav"> </devsite-recommendations-sidebar> </div> </div> <devsite-content> <article class="devsite-article"> <div class="devsite-banner devsite-banner-announcement nocontent" background="google-blue" > <div class="devsite-banner-message"> <div class="devsite-banner-message-text"> <b>Introducing LiteRT</b>: Google's high-performance runtime for on-device AI, formerly known as TensorFlow Lite. <a class="button button-primary" href="https://developers.googleblog.com/en/tensorflow-lite-is-now-litert">Learn more</a> </div> </div> </div> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://ai.google.dev/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="" > Home </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://ai.google.dev/edge" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="Google AI Edge" > Google AI Edge </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://ai.google.dev/edge/litert" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="" > LiteRT </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <devsite-feedback position="header" project-name="Google AI Edge" product-id="5336252" bucket="documentation" context="" version="t-devsite-webserver-20241114-r00-rc02.464921008191574316" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" class="nocontent" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/images/touchicon-180-new.png" > <button> Send feedback </button> </devsite-feedback> <h1 class="devsite-page-title" tabindex="-1"> Performance measurement </h1> <div class="devsite-page-title-meta"><devsite-view-release-notes></devsite-view-release-notes></div> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <div class="devsite-article-body clearfix "> <p><devsite-mathjax config="TeX-AMS-MML_SVG"></devsite-mathjax></p> <h2 id="benchmark_tools" data-text="Benchmark tools" tabindex="-1">Benchmark tools</h2> <p>LiteRT benchmark tools currently measure and calculate statistics for the following important performance metrics:</p> <ul> <li>Initialization time</li> <li>Inference time of warmup state</li> <li>Inference time of steady state</li> <li>Memory usage during initialization time</li> <li>Overall memory usage</li> </ul> <p>The benchmark tools are available as benchmark apps for Android and iOS and as native command-line binaries, and they all share the same core performance measurement logic. Note that the available options and output formats are slightly different due to the differences in runtime environment.</p> <h3 id="android_benchmark_app" data-text="Android benchmark app" tabindex="-1">Android benchmark app</h3> <p>There are two options of using the benchmark tool with Android. One is a <a href="#native_benchmark_binary">native benchmark binary</a> and another is an Android benchmark app, a better gauge of how the model would perform in the app. Either way, the numbers from the benchmark tool will still differ slightly from when running inference with the model in the actual app.</p> <p>This Android benchmark app has no UI. Install and run it by using the <code translate="no" dir="ltr">adb</code> command and retrieve results by using the <code translate="no" dir="ltr">adb logcat</code> command.</p> <h4 id="download_or_build_the_app" data-text="Download or build the app" tabindex="-1">Download or build the app</h4> <p>Download the nightly pre-built Android benchmark apps using the links below:</p> <ul> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/android_aarch64_benchmark_model.apk">android_aarch64</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/android_arm_benchmark_model.apk">android_arm</a></li> </ul> <p>As for Android benchmark apps that support <a href="https://ai.google.dev/edge/litert/models/ops_select">TF ops</a> via <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/delegates/flex">Flex delegate</a>, use the links below:</p> <ul> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/android_aarch64_benchmark_model_plus_flex.apk">android_aarch64</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/android_arm_benchmark_model_plus_flex.apk">android_arm</a></li> </ul> <p>You can also build the app from source by following these <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark/android">instructions</a>.</p> <aside class="note"><strong>Note:</strong><span> It is required to build the app from the source if you want to run the Android benchmark apk on x86 CPU, or if your model contains <a href="https://ai.google.dev/edge/litert/models/ops_select">select TF operators</a> or <a href="https://ai.google.dev/edge/litert/models/ops_custom">custom operators</a>.</span></aside> <h4 id="prepare_benchmark" data-text="Prepare benchmark" tabindex="-1">Prepare benchmark</h4> <p>Before running the benchmark app, install the app and push the model file to the device as follows:</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Bash"><code translate="no" dir="ltr">adb<span class="devsite-syntax-w"> </span>install<span class="devsite-syntax-w"> </span>-r<span class="devsite-syntax-w"> </span>-d<span class="devsite-syntax-w"> </span>-g<span class="devsite-syntax-w"> </span>android_aarch64_benchmark_model.apk adb<span class="devsite-syntax-w"> </span>push<span class="devsite-syntax-w"> </span>your_model.tflite<span class="devsite-syntax-w"> </span>/data/local/tmp </code></pre></devsite-code> <h4 id="run_benchmark" data-text="Run benchmark" tabindex="-1">Run benchmark</h4> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Bash"><code translate="no" dir="ltr">adb<span class="devsite-syntax-w"> </span>shell<span class="devsite-syntax-w"> </span>am<span class="devsite-syntax-w"> </span>start<span class="devsite-syntax-w"> </span>-S<span class="devsite-syntax-w"> </span><span class="devsite-syntax-se">\</span> <span class="devsite-syntax-w"> </span>-n<span class="devsite-syntax-w"> </span>org.tensorflow.lite.benchmark/.BenchmarkModelActivity<span class="devsite-syntax-w"> </span><span class="devsite-syntax-se">\</span> <span class="devsite-syntax-w"> </span>--es<span class="devsite-syntax-w"> </span>args<span class="devsite-syntax-w"> </span><span class="devsite-syntax-s1">'"--graph=/data/local/tmp/your_model.tflite \</span> <span class="devsite-syntax-s1"> --num_threads=4"'</span> </code></pre></devsite-code> <p><code translate="no" dir="ltr">graph</code> is a required parameter.</p> <ul> <li><code translate="no" dir="ltr">graph</code>: <code translate="no" dir="ltr">string</code> <br> The path to the TFLite model file.</li> </ul> <p>You can specify more optional parameters for running the benchmark.</p> <ul> <li><code translate="no" dir="ltr">num_threads</code>: <code translate="no" dir="ltr">int</code> (default=1) <br> The number of threads to use for running TFLite interpreter.</li> <li><code translate="no" dir="ltr">use_gpu</code>: <code translate="no" dir="ltr">bool</code> (default=false) <br> Use <a href="https://ai.google.dev/edge/litert/performance/gpu">GPU delegate</a>.</li> <li><code translate="no" dir="ltr">use_xnnpack</code>: <code translate="no" dir="ltr">bool</code> (default=<code translate="no" dir="ltr">false</code>) <br> Use <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/delegates/xnnpack">XNNPACK delegate</a>.</li> </ul> <p>Depending on the device you are using, some of these options may not be available or have no effect. Refer to <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark#parameters">parameters</a> for more performance parameters that you could run with the benchmark app.</p> <p>View the results using the <code translate="no" dir="ltr">logcat</code> command:</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Bash"><code translate="no" dir="ltr">adb<span class="devsite-syntax-w"> </span>logcat<span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">|</span><span class="devsite-syntax-w"> </span>grep<span class="devsite-syntax-w"> </span><span class="devsite-syntax-s2">"Inference timings"</span> </code></pre></devsite-code> <p>The benchmark results are reported as:</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Text only"><code translate="no" dir="ltr">... tflite : Inference timings in us: Init: 5685, First inference: 18535, Warmup (avg): 14462.3, Inference (avg): 14575.2 </code></pre></devsite-code> <h3 id="native_benchmark_binary" data-text="Native benchmark binary" tabindex="-1">Native benchmark binary</h3> <p>Benchmark tool is also provided as a native binary <code translate="no" dir="ltr">benchmark_model</code>. You can execute this tool from a shell command line on Linux, Mac, embedded devices and Android devices.</p> <h4 id="download_or_build_the_binary" data-text="Download or build the binary" tabindex="-1">Download or build the binary</h4> <p>Download the nightly pre-built native command-line binaries by following the links below:</p> <ul> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/linux_x86-64_benchmark_model">linux_x86-64</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/linux_aarch64_benchmark_model">linux_aarch64</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/linux_arm_benchmark_model">linux_arm</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/android_aarch64_benchmark_model">android_aarch64</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/android_arm_benchmark_model">android_arm</a></li> </ul> <p>As for nightly pre-built binaries that support <a href="https://ai.google.dev/edge/litert/models/ops_select">TF ops</a> via <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/delegates/flex">Flex delegate</a>, use the links below:</p> <ul> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/linux_x86-64_benchmark_model_plus_flex">linux_x86-64</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/linux_aarch64_benchmark_model_plus_flex">linux_aarch64</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/linux_arm_benchmark_model_plus_flex">linux_arm</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/android_aarch64_benchmark_model_plus_flex">android_aarch64</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/android_arm_benchmark_model_plus_flex">android_arm</a></li> </ul> <p>You can also build the native benchmark binary from <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark">source</a> on your computer.</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Bash"><code translate="no" dir="ltr">bazel<span class="devsite-syntax-w"> </span>build<span class="devsite-syntax-w"> </span>-c<span class="devsite-syntax-w"> </span>opt<span class="devsite-syntax-w"> </span>//tensorflow/lite/tools/benchmark:benchmark_model </code></pre></devsite-code> <p>To build with Android NDK toolchain, you need to set up the build environment first by following this <a href="https://ai.google.dev/edge/litert/build/android#set_up_build_environment_without_docker">guide</a>, or use the docker image as described in this <a href="https://ai.google.dev/edge/litert/build/android#set_up_build_environment_using_docker">guide</a>.</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Bash"><code translate="no" dir="ltr">bazel<span class="devsite-syntax-w"> </span>build<span class="devsite-syntax-w"> </span>-c<span class="devsite-syntax-w"> </span>opt<span class="devsite-syntax-w"> </span>--config<span class="devsite-syntax-o">=</span>android_arm64<span class="devsite-syntax-w"> </span><span class="devsite-syntax-se">\</span> <span class="devsite-syntax-w"> </span>//tensorflow/lite/tools/benchmark:benchmark_model </code></pre></devsite-code><aside class="note"><strong>Note:</strong><span> It is a valid approach to push and execute binaries directly on an Android device for benchmarking, but it can result in subtle (but observable) differences in performance relative to execution within an actual Android app. In particular, Android&#39;s scheduler tailors behavior based on thread and process priorities, which differ between a foreground Activity/Application and a regular background binary executed via <code translate="no" dir="ltr">adb shell ...</code>. This tailored behavior is most evident when enabling multi-threaded CPU execution with LiteRT. Therefore, the Android benchmark app is preferred for performance measurement.</span></aside> <h4 id="run_benchmark_2" data-text="Run benchmark" tabindex="-1">Run benchmark</h4> <p>To run benchmarks on your computer, execute the binary from the shell.</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Bash"><code translate="no" dir="ltr">path/to/downloaded_or_built/benchmark_model<span class="devsite-syntax-w"> </span><span class="devsite-syntax-se">\</span> <span class="devsite-syntax-w"> </span>--graph<span class="devsite-syntax-o">=</span>your_model.tflite<span class="devsite-syntax-w"> </span><span class="devsite-syntax-se">\</span> <span class="devsite-syntax-w"> </span>--num_threads<span class="devsite-syntax-o">=</span><span class="devsite-syntax-m">4</span> </code></pre></devsite-code> <p>You can use the same set of <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark#parameters">parameters</a> as mentioned above with the native command-line binary.</p> <h4 id="profiling_model_ops" data-text="Profiling model ops" tabindex="-1">Profiling model ops</h4> <p>The benchmark model binary also allows you to profile model ops and get the execution times of each operator. To do this, pass the flag <code translate="no" dir="ltr">--enable_op_profiling=true</code> to <code translate="no" dir="ltr">benchmark_model</code> during invocation. Details are explained <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark#profiling-model-operators">here</a>.</p> <h3 id="native_benchmark_binary_for_multiple_performance_options_in_a_single_run" data-text="Native benchmark binary for multiple performance options in a single run" tabindex="-1">Native benchmark binary for multiple performance options in a single run</h3> <p>A convenient and simple C++ binary is also provided to <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark#benchmark-multiple-performance-options-in-a-single-run">benchmark multiple performance options</a> in a single run. This binary is built based on the aforementioned benchmark tool that could only benchmark a single performance option at a time. They share the same build/install/run process, but the BUILD target name of this binary is <code translate="no" dir="ltr">benchmark_model_performance_options</code> and it takes some additional parameters. An important parameter for this binary is:</p> <p><code translate="no" dir="ltr">perf_options_list</code>: <code translate="no" dir="ltr">string</code> (default=&#39;all&#39;) <br> A comma-separated list of TFLite performance options to benchmark.</p> <p>You can get nightly pre-built binaries for this tool as listed below:</p> <ul> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/linux_x86-64_benchmark_model_performance_options">linux_x86-64</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/linux_aarch64_benchmark_model_performance_options">linux_aarch64</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/linux_arm_benchmark_model_performance_options">linux_arm</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/android_aarch64_benchmark_model_performance_options">android_aarch64</a></li> <li><a href="https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/android_arm_benchmark_model_performance_options">android_arm</a></li> </ul> <h3 id="ios_benchmark_app" data-text="iOS benchmark app" tabindex="-1">iOS benchmark app</h3> <p>To run benchmarks on iOS device, you need to build the app from <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark/ios">source</a>. Put the LiteRT model file in the <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark/ios/TFLiteBenchmark/TFLiteBenchmark/benchmark_data">benchmark_data</a> directory of the source tree and modify the <code translate="no" dir="ltr">benchmark_params.json</code> file. Those files are packaged into the app and the app reads data from the directory. Visit the <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark/ios">iOS benchmark app</a> for detailed instructions.</p> <h2 id="performance_benchmarks_for_well_known_models" data-text="Performance benchmarks for well known models" tabindex="-1">Performance benchmarks for well known models</h2> <p>This section lists LiteRT performance benchmarks when running well known models on some Android and iOS devices.</p> <h3 id="android_performance_benchmarks" data-text="Android performance benchmarks" tabindex="-1">Android performance benchmarks</h3> <p>These performance benchmark numbers were generated with the <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark">native benchmark binary</a>.</p> <p>For Android benchmarks, the CPU affinity is set to use big cores on the device to reduce variance (see <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark#reducing-variance-between-runs-on-android">details</a>).</p> <p>It assumes that models were downloaded and unzipped to the <code translate="no" dir="ltr">/data/local/tmp/tflite_models</code> directory. The benchmark binary is built using <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark#on-android">these instructions</a> and assumed to be in the <code translate="no" dir="ltr">/data/local/tmp</code> directory.</p> <p>To run the benchmark:</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Bash"><code translate="no" dir="ltr">adb<span class="devsite-syntax-w"> </span>shell<span class="devsite-syntax-w"> </span>/data/local/tmp/benchmark_model<span class="devsite-syntax-w"> </span><span class="devsite-syntax-se">\</span> <span class="devsite-syntax-w"> </span>--num_threads<span class="devsite-syntax-o">=</span><span class="devsite-syntax-m">4</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-se">\</span> <span class="devsite-syntax-w"> </span>--graph<span class="devsite-syntax-o">=</span>/data/local/tmp/tflite_models/<span class="devsite-syntax-si">${</span><span class="devsite-syntax-nv">GRAPH</span><span class="devsite-syntax-si">}</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-se">\</span> <span class="devsite-syntax-w"> </span>--warmup_runs<span class="devsite-syntax-o">=</span><span class="devsite-syntax-m">1</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-se">\</span> <span class="devsite-syntax-w"> </span>--num_runs<span class="devsite-syntax-o">=</span><span class="devsite-syntax-m">50</span> </code></pre></devsite-code> <p>To run with GPU delegate, set <code translate="no" dir="ltr">--use_gpu=true</code>.</p> <p>The performance values below are measured on Android 10.</p> <table> <thead> <tr> <th>Model Name</th> <th>Device </th> <th>CPU, 4 threads</th> <th>GPU</th> </tr> </thead> <tr> <td rowspan = 2> <a href="https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224.tgz">Mobilenet_1.0_224(float)</a> </td> <td>Pixel 3 </td> <td>23.9 ms</td> <td>6.45 ms</td> </tr> <tr> <td>Pixel 4 </td> <td>14.0 ms</td> <td>9.0 ms</td> </tr> <tr> <td rowspan = 2> <a href="https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224_quant.tgz">Mobilenet_1.0_224 (quant)</a> </td> <td>Pixel 3 </td> <td>13.4 ms</td> <td>--- </td> </tr> <tr> <td>Pixel 4 </td> <td>5.0 ms</td> <td>--- </td> </tr> <tr> <td rowspan = 2> <a href="https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/nasnet_mobile_2018_04_27.tgz">NASNet mobile</a> </td> <td>Pixel 3 </td> <td>56 ms</td> <td>--- </td> </tr> <tr> <td>Pixel 4 </td> <td>34.5 ms</td> <td>--- </td> </tr> <tr> <td rowspan = 2> <a href="https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/squeezenet_2018_04_27.tgz">SqueezeNet</a> </td> <td>Pixel 3 </td> <td>35.8 ms</td> <td>9.5 ms </td> </tr> <tr> <td>Pixel 4 </td> <td>23.9 ms</td> <td>11.1 ms</td> </tr> <tr> <td rowspan = 2> <a href="https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/inception_resnet_v2_2018_04_27.tgz">Inception_ResNet_V2</a> </td> <td>Pixel 3 </td> <td>422 ms</td> <td>99.8 ms </td> </tr> <tr> <td>Pixel 4 </td> <td>272.6 ms</td> <td>87.2 ms</td> </tr> <tr> <td rowspan = 2> <a href="https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/inception_v4_2018_04_27.tgz">Inception_V4</a> </td> <td>Pixel 3 </td> <td>486 ms</td> <td>93 ms </td> </tr> <tr> <td>Pixel 4 </td> <td>324.1 ms</td> <td>97.6 ms</td> </tr> </table> <h3 id="ios_performance_benchmarks" data-text="iOS performance benchmarks" tabindex="-1">iOS performance benchmarks</h3> <p>These performance benchmark numbers were generated with the <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark/ios">iOS benchmark app</a>.</p> <p>To run iOS benchmarks, the benchmark app was modified to include the appropriate model and <code translate="no" dir="ltr">benchmark_params.json</code> was modified to set <code translate="no" dir="ltr">num_threads</code> to 2. To use the GPU delegate, <code translate="no" dir="ltr">&quot;use_gpu&quot; : &quot;1&quot;</code> and <code translate="no" dir="ltr">&quot;gpu_wait_type&quot; : &quot;aggressive&quot;</code> options were also added to <code translate="no" dir="ltr">benchmark_params.json</code>.</p> <table> <thead> <tr> <th>Model Name</th> <th>Device </th> <th>CPU, 2 threads</th> <th>GPU</th> </tr> </thead> <tr> <td> <a href="https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224.tgz">Mobilenet_1.0_224(float)</a> </td> <td>iPhone XS </td> <td>14.8 ms</td> <td>3.4 ms</td> </tr> <tr> <td> <a href="https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224_quant.tgz">Mobilenet_1.0_224 (quant)</a> </td> <td>iPhone XS </td> <td>11 ms</td> <td>---</td> </tr> <tr> <td> <a href="https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/nasnet_mobile_2018_04_27.tgz">NASNet mobile</a> </td> <td>iPhone XS </td> <td>30.4 ms</td> <td>---</td> </tr> <tr> <td> <a href="https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/squeezenet_2018_04_27.tgz">SqueezeNet</a> </td> <td>iPhone XS </td> <td>21.1 ms</td> <td>15.5 ms</td> </tr> <tr> <td> <a href="https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/inception_resnet_v2_2018_04_27.tgz">Inception_ResNet_V2</a> </td> <td>iPhone XS </td> <td>261.1 ms</td> <td>45.7 ms</td> </tr> <tr> <td> <a href="https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/inception_v4_2018_04_27.tgz">Inception_V4</a> </td> <td>iPhone XS </td> <td>309 ms</td> <td>54.4 ms</td> </tr> </table> <h2 id="trace_litert_internals" data-text="Trace LiteRT internals" tabindex="-1">Trace LiteRT internals</h2> <h3 id="trace_litert_internals_in_android" data-text="Trace LiteRT internals in Android" tabindex="-1">Trace LiteRT internals in Android</h3> <aside class="note"><strong>Note:</strong><span> This feature is available from LiteRT v2.4.</span></aside> <p>Internal events from the LiteRT interpreter of an Android app can be captured by <a href="https://developer.android.com/topic/performance/tracing">Android tracing tools</a>. They are the same events with Android <a href="https://developer.android.com/reference/android/os/Trace">Trace</a> API, so the captured events from Java/Kotlin code are seen together with LiteRT internal events.</p> <p>Some examples of events are:</p> <ul> <li>Operator invocation</li> <li>Graph modification by delegate</li> <li>Tensor allocation</li> </ul> <p>Among different options for capturing traces, this guide covers the Android Studio CPU Profiler and the System Tracing app. Refer to <a href="https://developer.android.com/studio/command-line/perfetto">Perfetto command-line tool</a> or <a href="https://developer.android.com/topic/performance/tracing/command-line">Systrace command-line tool</a> for other options.</p> <h4 id="adding_trace_events_in_java_code" data-text="Adding trace events in Java code" tabindex="-1">Adding trace events in Java code</h4> <p>This is a code snippet from the <a href="https://github.com/tensorflow/examples/tree/master/lite/examples/image_classification/android">Image Classification</a> example app. LiteRT interpreter runs in the <code translate="no" dir="ltr">recognizeImage/runInference</code> section. This step is optional but it is useful to help notice where the inference call is made.</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Java"><code translate="no" dir="ltr"><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">Trace</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">beginSection</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-s">"recognizeImage"</span><span class="devsite-syntax-p">);</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">...</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-c1">// Runs the inference call.</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">Trace</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">beginSection</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-s">"runInference"</span><span class="devsite-syntax-p">);</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">tflite</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">run</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">inputImageBuffer</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">getBuffer</span><span class="devsite-syntax-p">(),</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">outputProbabilityBuffer</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">getBuffer</span><span class="devsite-syntax-p">().</span><span class="devsite-syntax-na">rewind</span><span class="devsite-syntax-p">());</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">Trace</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">endSection</span><span class="devsite-syntax-p">();</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">...</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">Trace</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">endSection</span><span class="devsite-syntax-p">();</span> </code></pre></devsite-code> <h4 id="enable_litert_tracing" data-text="Enable LiteRT tracing" tabindex="-1">Enable LiteRT tracing</h4> <p>To enable LiteRT tracing, set the Android system property <code translate="no" dir="ltr">debug.tflite.trace</code> to 1 before starting the Android app.</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Bash"><code translate="no" dir="ltr">adb<span class="devsite-syntax-w"> </span>shell<span class="devsite-syntax-w"> </span>setprop<span class="devsite-syntax-w"> </span>debug.tflite.trace<span class="devsite-syntax-w"> </span><span class="devsite-syntax-m">1</span> </code></pre></devsite-code> <p>If this property has been set when LiteRT interpreter is initialized, key events (e.g., operator invocation) from the interpreter will be traced.</p> <p>After you captured all the traces, disable tracing by setting the property value to 0.</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Bash"><code translate="no" dir="ltr">adb<span class="devsite-syntax-w"> </span>shell<span class="devsite-syntax-w"> </span>setprop<span class="devsite-syntax-w"> </span>debug.tflite.trace<span class="devsite-syntax-w"> </span><span class="devsite-syntax-m">0</span> </code></pre></devsite-code> <h4 id="android_studio_cpu_profiler" data-text="Android Studio CPU Profiler" tabindex="-1">Android Studio CPU Profiler</h4> <p>Capture traces with the <a href="https://developer.android.com/studio/profile/cpu-profiler">Android Studio CPU Profiler</a> by following the steps below:</p> <ol> <li><p>Select <strong>Run &gt; Profile &#39;app&#39;</strong> from the top menus.</p></li> <li><p>Click anywhere in CPU timeline when the Profiler window appears.</p></li> <li><p>Select &#39;Trace System Calls&#39; among CPU Profiling modes.</p> <p><img src="https://ai.google.dev/edge/litert/images/models/as_select_profiling_mode.png" alt="Select 'Trace System Calls'"></p></li> <li><p>Press &#39;Record&#39; button.</p></li> <li><p>Press &#39;Stop&#39; button.</p></li> <li><p>Investigate the trace result.</p> <p><img src="https://ai.google.dev/edge/litert/images/models/as_traces.png" alt="Android Studio trace"></p></li> </ol> <p>In this example, you can see the hierarchy of events in a thread and statistics for each operator time and also see the data flow of the whole app among threads.</p> <h4 id="system_tracing_app" data-text="System Tracing app" tabindex="-1">System Tracing app</h4> <p>Capture traces without Android Studio by following the steps detailed in <a href="https://developer.android.com/topic/performance/tracing/on-device">System Tracing app</a>.</p> <p>In this example, the same TFLite events were captured and saved to the Perfetto or Systrace format depending on the version of Android device. The captured trace files can be opened in the <a href="https://ui.perfetto.dev/#!/">Perfetto UI</a>.</p> <p><img src="https://ai.google.dev/edge/litert/images/models/perfetto_traces.png" alt="Perfetto trace"></p> <h3 id="trace_litert_internals_in_ios" data-text="Trace LiteRT internals in iOS" tabindex="-1">Trace LiteRT internals in iOS</h3> <aside class="note"><strong>Note:</strong><span> This feature is available from LiteRT v2.5.</span></aside> <p>Internal events from the LiteRT interpreter of an iOS app can be captured by <a href="https://developer.apple.com/library/archive/documentation/ToolsLanguages/Conceptual/Xcode_Overview/MeasuringPerformance.html#//apple_ref/doc/uid/TP40010215-CH60-SW1">Instruments</a> tool included with Xcode. They are the iOS <a href="https://developer.apple.com/documentation/os/logging/recording_performance_data">signpost</a> events, so the captured events from Swift/Objective-C code are seen together with LiteRT internal events.</p> <p>Some examples of events are:</p> <ul> <li>Operator invocation</li> <li>Graph modification by delegate</li> <li>Tensor allocation</li> </ul> <h4 id="enable_litert_tracing_2" data-text="Enable LiteRT tracing" tabindex="-1">Enable LiteRT tracing</h4> <p>Set the environment variable <code translate="no" dir="ltr">debug.tflite.trace</code> by following the steps below:</p> <ol> <li><p>Select <strong>Product &gt; Scheme &gt; Edit Scheme...</strong> from the top menus of Xcode.</p></li> <li><p>Click &#39;Profile&#39; in the left pane.</p></li> <li><p>Deselect &#39;Use the Run action&#39;s arguments and environment variables&#39; checkbox.</p></li> <li><p>Add <code translate="no" dir="ltr">debug.tflite.trace</code> under &#39;Environment Variables&#39; section.</p> <p><img src="https://ai.google.dev/edge/litert/images/models/xcode_profile_environment.png" alt="Set environment variable"></p></li> </ol> <p>If you want to exclude LiteRT events when profiling the iOS app, disable tracing by removing the environment variable.</p> <h4 id="xcode_instruments" data-text="XCode Instruments" tabindex="-1">XCode Instruments</h4> <p>Capture traces by following the steps below:</p> <ol> <li><p>Select <strong>Product &gt; Profile</strong> from the top menus of Xcode.</p></li> <li><p>Click <strong>Logging</strong> among profiling templates when Instruments tool launches.</p></li> <li><p>Press &#39;Start&#39; button.</p></li> <li><p>Press &#39;Stop&#39; button.</p></li> <li><p>Click &#39;os_signpost&#39; to expand OS Logging subsystem items.</p></li> <li><p>Click &#39;org.tensorflow.lite&#39; OS Logging subsystem.</p></li> <li><p>Investigate the trace result.</p> <p><img src="https://ai.google.dev/edge/litert/images/models/xcode_traces.png" alt="Xcode Instruments trace"></p></li> </ol> <p>In this example, you can see the hierarchy of events and statistics for each operator time.</p> <h3 id="using_the_tracing_data" data-text="Using the tracing data" tabindex="-1">Using the tracing data</h3> <p>The tracing data allows you to identify performance bottlenecks.</p> <p>Here are some examples of insights that you can get from the profiler and potential solutions to improve performance:</p> <ul> <li>If the number of available CPU cores is smaller than the number of inference threads, then the CPU scheduling overhead can lead to subpar performance. You can reschedule other CPU intensive tasks in your application to avoid overlapping with your model inference or tweak the number of interpreter threads.</li> <li>If the operators are not fully delegated, then some parts of the model graph are executed on the CPU rather than the expected hardware accelerator. You can substitute the unsupported operators with similar supported operators.</li> </ul> </div> <devsite-thumb-rating position="footer"> </devsite-thumb-rating> <devsite-feedback position="footer" project-name="Google AI Edge" product-id="5336252" bucket="documentation" context="" version="t-devsite-webserver-20241114-r00-rc02.464921008191574316" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="footer" class="nocontent" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/images/touchicon-180-new.png" > <button> Send feedback </button> </devsite-feedback> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>Except as otherwise noted, the content of this page is licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://developers.google.com/site-policies">Google Developers Site Policies</a>. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2024-08-30 UTC.</p> </devsite-content-footer> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Google AI Edge" product-id="5336252" bucket="documentation" context="" version="t-devsite-webserver-20241114-r00-rc02.464921008191574316" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" class="nocontent" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/images/touchicon-180-new.png" > <button> Need to tell us more? </button> </devsite-feedback> </template> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-08-30 UTC."],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/terms" data-category="Site-Wide Custom Events" data-label="Footer Terms link" > Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[]</script> <script type="application/json" tag-management>{&#34;at&#34;: &#34;True&#34;, &#34;ga4&#34;: [], &#34;ga4p&#34;: [], &#34;gtm&#34;: [{&#34;id&#34;: &#34;GTM-TC2MQKS8&#34;, &#34;purpose&#34;: 0}], &#34;parameters&#34;: {&#34;internalUser&#34;: &#34;False&#34;, &#34;language&#34;: {&#34;machineTranslated&#34;: &#34;False&#34;, &#34;requested&#34;: &#34;en&#34;, &#34;served&#34;: &#34;en&#34;}, &#34;pageType&#34;: &#34;article&#34;, &#34;projectName&#34;: &#34;Google AI Edge&#34;, &#34;signedIn&#34;: &#34;False&#34;, &#34;tenant&#34;: &#34;googledevai&#34;, &#34;recommendations&#34;: {&#34;sourcePage&#34;: &#34;&#34;, &#34;sourceType&#34;: 0, &#34;sourceRank&#34;: 0, &#34;sourceIdenticalDescriptions&#34;: 0, &#34;sourceTitleWords&#34;: 0, &#34;sourceDescriptionWords&#34;: 0, &#34;experiment&#34;: &#34;&#34;}, &#34;experiment&#34;: {&#34;ids&#34;: &#34;&#34;}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <script nonce="xU2zUq3Jm/CRqVWyIzSJ80rnPbIWYf"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/js/app_loader.js', '[59,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai","https://googledevai-dot-devsite-v2-prod-3p.appspot.com",null,null,["/_pwa/googledevai/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/images/favicon-new.png","/_static/googledevai/images/lockup-new.svg","https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyCNm9YxQumEXwGJgTDjxoxXK6m1F-9720Q","AIzaSyCc76DZePGtoyUjqKrLdsMGk_ry7sljLbY","ai.google.dev","AIzaSyB9bqgQ2t11WJsOX8qNsCQ6U-w91mmqF-I","AIzaSyAdYnStPdzjcJJtQ0mvIaeaMKj7_t6J_Fg",null,null,null,["Cloud__enable_cloud_shell","Search__enable_dynamic_content_confidential_banner","Profiles__enable_recognition_badges","Cloud__enable_cloud_shell_fte_user_flow","Search__enable_page_map","Concierge__enable_pushui","Cloud__enable_llm_concierge_chat","Profiles__enable_complete_playlist_endpoint","TpcFeatures__enable_mirror_tenant_redirects","CloudShell__cloud_code_overflow_menu","MiscFeatureFlags__enable_project_variables","MiscFeatureFlags__developers_footer_dark_image","Profiles__enable_developer_profiles_callout","Search__enable_suggestions_from_borg","TpcFeatures__enable_required_headers","OnSwitch__enable","Profiles__enable_public_developer_profiles","CloudShell__cloud_shell_button","Cloud__enable_cloudx_ping","Profiles__enable_page_saving","Profiles__enable_completecodelab_endpoint","MiscFeatureFlags__developers_footer_image","Cloud__enable_cloud_facet_chat","Profiles__enable_release_notes_notifications","Search__enable_ai_eligibility_checks","EngEduTelemetry__enable_engedu_telemetry","MiscFeatureFlags__enable_explain_this_code","Cloud__enable_cloud_dlp_service","DevPro__enable_developer_subscriptions","Cloud__enable_legacy_calculator_redirect","MiscFeatureFlags__enable_firebase_utm","MiscFeatureFlags__enable_view_transitions","BookNav__enable_tenant_cache_key","Profiles__require_profile_eligibility_for_signin","Profiles__enable_dashboard_curated_recommendations","Experiments__reqs_query_experiments","MiscFeatureFlags__enable_variable_operator","DevPro__enable_cloud_innovators_plus","Analytics__enable_clearcut_logging","Profiles__enable_awarding_url","Profiles__enable_profile_collections","MiscFeatureFlags__emergency_css","Cloud__enable_free_trial_server_call","Cloud__enable_cloudx_experiment_ids"],null,null,"AIzaSyA58TaKli1DculwmAmbpzLVGuWc8eCQgQc","https://developerscontentserving-pa.googleapis.com","AIzaSyDWBU60w0P9hEkr29kkksYs8Z7gvZ8u_wc","https://developerscontentsearch-pa.googleapis.com",2,4,null,"https://developerprofiles-pa.googleapis.com",[59,"googledevai","Google AI for Developers","ai.google.dev",null,"googledevai-dot-devsite-v2-prod-3p.appspot.com",null,null,[null,1,null,null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],null,null,null,null,[1],[1,1,null,1,1]],null,[73,null,null,null,null,null,"/images/lockup-new.svg","/images/touchicon-180-new.png",null,null,null,null,1,1,null,null,null,null,null,null,null,1,null,null,null,"/images/lockup-dark-theme-new.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],[1,1]],[[null,null,null,null,null,["GTM-TC2MQKS8"],null,null,null,null,null,[["GTM-TC2MQKS8",1]],1]],null,4]]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10