On-device Inference with LiteRT

LiteRT CompiledModel API represents the modern standard for on-device ML inference, offering streamlined hardware acceleration that significantly outperforms the Interpreter API. This interface simplifies the deployment of .tflite models across a wide range of edge platforms by providing a unified developer experiences and advanced features designed for maximum hardware efficiency.

Why Choose the CompiledModel API?

While the Interpreter API remains available for backward compatibility, the CompiledModel API is where new performance and accelerator features are prioritized. It is the recommended choice for these reasons:

  • Best-in-class GPU acceleration: Leverages ML Drift, the state-of-the-art GPU acceleration library, to deliver reliable GPU inference across mobile, web, desktop, and IoT devices. See GPU acceleration with LiteRT.

  • Unified NPU access: Provides a single, consistent developer experience to access NPUs from various providers like Google Tensor, Qualcomm, MediaTek, abstracting away vendor-specific compilers and runtime complexities. See NPU acceleration with LiteRT.

  • Automated hardware selection: Automatically selects the optimal backend among CPU, GPU, and NPU, based on available hardware and internal priority logic, eliminating the need for manual delegate configuration.

  • Asynchronous execution: Utilizes OS-level mechanisms (like sync fences) to allow hardware accelerators to trigger directly upon completion of previous tasks without involving the CPU. This can reduce latency by up to 2x and ensures a smoother, more interactive AI experience.

  • Efficient I/O buffer management: Leverages the TensorBuffer API to manage high-performance data flow between accelerators. This includes zero-copy buffer interop across AHardwareBuffer, OpenCL, and OpenGL, eliminating costly data copies between preprocessing, inference, and post-processing stages.

Get Started with CompiledModel API

Supported platforms

LiteRT CompiledModel API supports high-performance inferences across Android, iOS, Web, IoT, and Desktop devices. See platform-specific guide.

Supported operators

Code Op Code Category CPU Accelerator GPU Accelerator Qualcomm NPU MediaTek NPU Intel NPU Samsung NPU
0 kLiteRtOpCodeTflAdd tfl Y Y Y Y Y Y
1 kLiteRtOpCodeTflAveragePool2d tfl Y Y Y Y Y Y
2 kLiteRtOpCodeTflConcatenation tfl Y Y Y Y Y Y
3 kLiteRtOpCodeTflConv2d tfl Y Y Y Y Y Y
4 kLiteRtOpCodeTflDepthwiseConv2d tfl Y Y Y Y Y Y
5 kLiteRtOpCodeTflDepthToSpace tfl Y Y Y Y
6 kLiteRtOpCodeTflDequantize tfl Y Y Y Y Y
7 kLiteRtOpCodeTflEmbeddingLookup tfl Y Y Y
8 kLiteRtOpCodeTflFloor tfl Y Y Y Y
9 kLiteRtOpCodeTflFullyConnected tfl Y Y Y Y Y Y
10 kLiteRtOpCodeTflHashtableLookup tfl
11 kLiteRtOpCodeTflL2Normalization tfl Y Y Y
12 kLiteRtOpCodeTflL2Pool2d tfl Y
13 kLiteRtOpCodeTflLocalResponseNormalization tfl
14 kLiteRtOpCodeTflLogistic tfl Y Y Y Y Y Y
15 kLiteRtOpCodeTflLshProjection tfl
16 kLiteRtOpCodeTflLstm tfl Y
17 kLiteRtOpCodeTflMaxPool2d tfl Y Y Y Y Y Y
18 kLiteRtOpCodeTflMul tfl Y Y Y Y Y Y
19 kLiteRtOpCodeTflRelu tfl Y Y Y Y Y Y
20 kLiteRtOpCodeTflReluN1To1 tfl Y Y Y
21 kLiteRtOpCodeTflRelu6 tfl Y Y Y
22 kLiteRtOpCodeTflReshape tfl Y Y Y Y Y Y
23 kLiteRtOpCodeTflResizeBilinear tfl Y Y Y Y Y Y
24 kLiteRtOpCodeTflRnn tfl
25 kLiteRtOpCodeTflSoftmax tfl Y Y Y Y Y Y
26 kLiteRtOpCodeTflSpaceToDepth tfl Y Y Y Y
27 kLiteRtOpCodeTflSvdf tfl
28 kLiteRtOpCodeTflTanh tfl Y Y Y Y Y
29 kLiteRtOpCodeTflConcatEmbeddings tfl
30 kLiteRtOpCodeTflSkipGram tfl
31 kLiteRtOpCodeTflCall tfl
32 kLiteRtOpCodeTflCustom tfl Y Y
33 kLiteRtOpCodeTflEmbeddingLookupSparse tfl
34 kLiteRtOpCodeTflPad tfl Y Y Y Y Y Y
35 kLiteRtOpCodeTflUnidirectionalSequenceRnn tfl
36 kLiteRtOpCodeTflGather tfl Y Y Y Y
37 kLiteRtOpCodeTflBatchToSpaceNd tfl
38 kLiteRtOpCodeTflSpaceToBatchNd tfl
39 kLiteRtOpCodeTflTranspose tfl Y Y Y Y Y Y
40 kLiteRtOpCodeTflMean tfl Y Y Y Y Y Y
41 kLiteRtOpCodeTflSub tfl Y Y Y Y Y Y
42 kLiteRtOpCodeTflDiv tfl Y Y Y Y Y Y
43 kLiteRtOpCodeTflSqueeze tfl
44 kLiteRtOpCodeTflUnidirectionalSequenceLstm tfl
45 kLiteRtOpCodeTflStridedSlice tfl Y Y Y Y Y Y
46 kLiteRtOpCodeTflBidirectionalSequenceRnn tfl
47 kLiteRtOpCodeTflExp tfl Y Y Y Y Y
48 kLiteRtOpCodeTflTopkV2 tfl Y
49 kLiteRtOpCodeTflSplit tfl Y Y Y Y Y Y
50 kLiteRtOpCodeTflLogSoftmax tfl Y
51 kLiteRtOpCodeTflDelegate tfl
52 kLiteRtOpCodeTflBidirectionalSequenceLstm tfl
53 kLiteRtOpCodeTflCast tfl Y Y Y Y Y
54 kLiteRtOpCodeTflPrelu tfl Y Y Y Y Y
55 kLiteRtOpCodeTflMaximum tfl Y Y Y Y Y Y
56 kLiteRtOpCodeTflArgMax tfl Y Y Y Y
57 kLiteRtOpCodeTflMinimum tfl Y Y Y Y Y Y
58 kLiteRtOpCodeTflLess tfl Y Y Y Y
59 kLiteRtOpCodeTflNeg tfl Y Y Y
60 kLiteRtOpCodeTflPadv2 tfl Y Y Y Y Y
61 kLiteRtOpCodeTflGreater tfl Y Y Y Y Y
62 kLiteRtOpCodeTflGreaterEqual tfl Y Y Y Y
63 kLiteRtOpCodeTflLessEqual tfl Y Y Y
64 kLiteRtOpCodeTflSelect tfl Y Y Y Y
65 kLiteRtOpCodeTflSlice tfl Y Y Y Y Y Y
66 kLiteRtOpCodeTflSin tfl Y Y Y Y Y
67 kLiteRtOpCodeTflTransposeConv tfl Y Y Y Y Y Y
68 kLiteRtOpCodeTflSparseToDense tfl
69 kLiteRtOpCodeTflTile tfl Y Y
70 kLiteRtOpCodeTflExpandDims tfl Y Y
71 kLiteRtOpCodeTflEqual tfl Y Y Y Y
72 kLiteRtOpCodeTflNotEqual tfl Y Y Y Y
73 kLiteRtOpCodeTflLog tfl Y Y Y Y
74 kLiteRtOpCodeTflSum tfl Y Y Y Y Y Y
75 kLiteRtOpCodeTflSqrt tfl Y Y Y Y Y Y
76 kLiteRtOpCodeTflRsqrt tfl Y Y Y Y Y Y
77 kLiteRtOpCodeTflShape tfl
78 kLiteRtOpCodeTflPow tfl Y Y Y Y
79 kLiteRtOpCodeTflArgMin tfl Y
80 kLiteRtOpCodeTflFakeQuant tfl
81 kLiteRtOpCodeTflReduceProd tfl Y
82 kLiteRtOpCodeTflReduceMax tfl Y Y Y Y Y Y
83 kLiteRtOpCodeTflPack tfl Y Y Y
84 kLiteRtOpCodeTflLogicalOr tfl Y Y Y
85 kLiteRtOpCodeTflOneHot tfl Y Y Y
86 kLiteRtOpCodeTflLogicalAnd tfl Y Y Y Y
87 kLiteRtOpCodeTflLogicalNot tfl Y Y Y
88 kLiteRtOpCodeTflUnpack tfl Y Y Y
89 kLiteRtOpCodeTflReduceMin tfl Y Y Y Y
90 kLiteRtOpCodeTflFloorDiv tfl Y Y Y Y
91 kLiteRtOpCodeTflReduceAny tfl Y Y
92 kLiteRtOpCodeTflSquare tfl Y Y Y Y
93 kLiteRtOpCodeTflZerosLike tfl
94 kLiteRtOpCodeTflFill tfl
95 kLiteRtOpCodeTflFloorMod tfl Y
96 kLiteRtOpCodeTflRange tfl Y
97 kLiteRtOpCodeTflResizeNearestNeighbor tfl Y Y Y Y Y
98 kLiteRtOpCodeTflLeakyRelu tfl Y Y Y Y Y
99 kLiteRtOpCodeTflSquaredDifference tfl Y Y Y Y Y Y
100 kLiteRtOpCodeTflMirrorPad tfl Y Y Y Y
101 kLiteRtOpCodeTflAbs tfl Y Y Y Y Y Y
102 kLiteRtOpCodeTflSplitV tfl Y
103 kLiteRtOpCodeTflUnique tfl
104 kLiteRtOpCodeTflCeil tfl Y Y Y Y
105 kLiteRtOpCodeTflReverseV2 tfl Y Y Y
106 kLiteRtOpCodeTflAddN tfl
107 kLiteRtOpCodeTflGatherNd tfl Y Y Y
108 kLiteRtOpCodeTflCos tfl Y Y Y Y Y
109 kLiteRtOpCodeTflWhere tfl
110 kLiteRtOpCodeTflRank tfl
111 kLiteRtOpCodeTflElu tfl Y Y Y
112 kLiteRtOpCodeTflReverseSequence tfl
113 kLiteRtOpCodeTflMatrixDiag tfl
114 kLiteRtOpCodeTflQuantize tfl Y Y Y Y
115 kLiteRtOpCodeTflMatrixSetDiag tfl
116 kLiteRtOpCodeTflRound tfl Y Y Y
117 kLiteRtOpCodeTflHardSwish tfl Y Y Y Y Y Y
118 kLiteRtOpCodeTflIf tfl
119 kLiteRtOpCodeTflWhile tfl
120 kLiteRtOpCodeTflNonMaxSuppressionV4 tfl
121 kLiteRtOpCodeTflNonMaxSuppressionV5 tfl
122 kLiteRtOpCodeTflScatterNd tfl Y
123 kLiteRtOpCodeTflSelectV2 tfl Y Y Y Y
124 kLiteRtOpCodeTflDensify tfl
125 kLiteRtOpCodeTflSegmentSum tfl
126 kLiteRtOpCodeTflBatchMatmul tfl Y Y Y Y Y Y
127 kLiteRtOpCodeTflPlaceholderForGreaterOpCodeTfls tfl
128 kLiteRtOpCodeTflCumsum tfl Y Y Y Y
129 kLiteRtOpCodeTflCallOnce tfl
130 kLiteRtOpCodeTflBroadcastTo tfl Y Y
131 kLiteRtOpCodeTflRfft2d tfl
132 kLiteRtOpCodeTflConv3d tfl Y Y
133 kLiteRtOpCodeTflImag tfl
134 kLiteRtOpCodeTflReal tfl
135 kLiteRtOpCodeTflComplexAbs tfl
136 kLiteRtOpCodeTflHashtable tfl
137 kLiteRtOpCodeTflHashtableFind tfl
138 kLiteRtOpCodeTflHashtableImport tfl
139 kLiteRtOpCodeTflHashtableSize tfl
140 kLiteRtOpCodeTflReduceAll tfl Y Y
141 kLiteRtOpCodeTflConv3dTranspose tfl
142 kLiteRtOpCodeTflVarHandle tfl Y
143 kLiteRtOpCodeTflReadVariable tfl Y
144 kLiteRtOpCodeTflAssignVariable tfl Y
145 kLiteRtOpCodeTflBroadcastArgs tfl
146 kLiteRtOpCodeTflRandomStandardNormal tfl
147 kLiteRtOpCodeTflBucketize tfl
148 kLiteRtOpCodeTflRandomUniform tfl
149 kLiteRtOpCodeTflMultinomial tfl
150 kLiteRtOpCodeTflGelu tfl Y Y Y Y Y
151 kLiteRtOpCodeTflDynamicUpdateSlice tfl Y Y
152 kLiteRtOpCodeTflRelu0To1 tfl Y Y
153 kLiteRtOpCodeTflUnsortedSegmentProd tfl
154 kLiteRtOpCodeTflUnsortedSegmentMax tfl
155 kLiteRtOpCodeTflUnsortedSegmentSum tfl
156 kLiteRtOpCodeTflAtan2 tfl Y
157 kLiteRtOpCodeTflUnsortedSegmentMin tfl
158 kLiteRtOpCodeTflSign tfl Y Y
159 kLiteRtOpCodeTflBitcast tfl Y
160 kLiteRtOpCodeTflBitwiseXor tfl Y
161 kLiteRtOpCodeTflRightShift tfl Y
162 kLiteRtOpCodeShloLogistic shlo
163 kLiteRtOpCodeShloAdd shlo
164 kLiteRtOpCodeShloDivide shlo
165 kLiteRtOpCodeShloMultiply shlo
166 kLiteRtOpCodeShloMaximum shlo
167 kLiteRtOpCodeShloReshape shlo
168 kLiteRtOpCodeShloClamp shlo Y
169 kLiteRtOpCodeShloConcatenate shlo
170 kLiteRtOpCodeShloBroadcastInDim shlo Y
171 kLiteRtOpCodeShloConvolution shlo
172 kLiteRtOpCodeShloSlice shlo
173 kLiteRtOpCodeShloCustomCall shlo
174 kLiteRtOpCodeShloReduce shlo
175 kLiteRtOpCodeShloAbs shlo
176 kLiteRtOpCodeShloAnd shlo
177 kLiteRtOpCodeShloCosine shlo
178 kLiteRtOpCodeShloExponential shlo
179 kLiteRtOpCodeShloFloor shlo
180 kLiteRtOpCodeShloLog shlo
181 kLiteRtOpCodeShloMinimum shlo
182 kLiteRtOpCodeShloNegate shlo
183 kLiteRtOpCodeShloOr shlo
184 kLiteRtOpCodeShloPower shlo
185 kLiteRtOpCodeShloRemainder shlo Y
186 kLiteRtOpCodeShloRsqrt shlo
187 kLiteRtOpCodeShloSelect shlo
188 kLiteRtOpCodeShloSubtract shlo
189 kLiteRtOpCodeShloTanh shlo
190 kLiteRtOpCodeShloScatter shlo
191 kLiteRtOpCodeShloCompare shlo
192 kLiteRtOpCodeShloConvert shlo
193 kLiteRtOpCodeShloDynamicSlice shlo
194 kLiteRtOpCodeShloDynamicUpdateSlice shlo
195 kLiteRtOpCodeShloPad shlo
196 kLiteRtOpCodeShloIota shlo
197 kLiteRtOpCodeShloGeneral shlo
198 kLiteRtOpCodeShloWindow shlo
199 kLiteRtOpCodeShloSort shlo
200 kLiteRtOpCodeShloWhile shlo
201 kLiteRtOpCodeShloGather shlo
202 kLiteRtOpCodeShloTranspose shlo
203 kLiteRtOpCodeTflDilate tfl
204 kLiteRtOpCodeShloRngBitGenerator shlo
205 kLiteRtOpCodeTflReduceWindow tfl
206 kLiteRtOpCodeShloComposite shlo Y Y Y Y Y