Android के लिए LiteRT

Android डेवलपमेंट के लिए, ये LiteRT रनटाइम एपीआई उपलब्ध हैं:

  • CompiledModel एपीआई: यह बेहतर परफ़ॉर्मेंस देने वाले अनुमान के लिए, आधुनिक स्टैंडर्ड है. यह सीपीयू/जीपीयू/एनपीयू में हार्डवेयर ऐक्सेलरेट करने की प्रोसेस को आसान बनाता है. CompiledModel API को क्यों चुनें, इस बारे में ज़्यादा जानें.
  • Interpreter एपीआई: यह बुनियादी अनुमान लगाने वाला एपीआई है. इसे पुराने सिस्टम के साथ काम करने की सुविधा के लिए बनाया गया है.

CompiledModel API का इस्तेमाल शुरू करना

Android के इस्तेमाल किए जा सकने वाले वर्शन और एपीआई

LiteRT का वर्शन स्थिति काम करने वाला एपीआई एसडीके का कम से कम लेवल एनडीके का कम से कम वर्शन (अगर इस्तेमाल किया गया है) रिलीज़ की तारीख
v2.1.0 ✅ सबसे नया CompiledModel
Interpreter(सिर्फ़ सीपीयू)
23 (Android 6 Marshmallow) r26a अभी तक रिलीज़ नहीं किया गया
v2.0.3 ⚠️ पुराना CompiledModel 26 (Android 8 Oreo) r26a 08-11-2025
v1.4.1 ✅ सबसे नया Interpreter 21 (Android 5 Lollipop) r26a 07-11-2025
v1.4.0 ⚠️ अब काम नहीं करता Interpreter 26 (Android 8 Oreo) r26a 25-06-2025
v1.3.0 ⚠️ अब काम नहीं करता Interpreter 21 (Android 5 Lollipop) r26a 19-05-2025
v1.2.0 ⚠️ अब काम नहीं करता Interpreter 21 (Android 5 Lollipop) r26a 13-03-2025

अहम जानकारी: अपनी डिपेंडेंसी को अप-टू-डेट रखें, ताकि यह पक्का किया जा सके कि वे नई सुविधाओं और सुरक्षा से जुड़े अपडेट के साथ काम करती हैं.

CompiledModel API का इस्तेमाल शुरू करना

Compiled Model API की मदद से अनुमान लगाने के लिए, ये मुख्य चरण पूरे करने होते हैं:

  1. इमेज के साथ काम करने वाला मॉडल लोड करें.
  2. इनपुट और आउटपुट टेंसर बफ़र असाइन करें.
  3. कंपाइल किए गए मॉडल को लागू करें.
  4. अनुमानों को आउटपुट बफ़र में पढ़ता है.

नीचे दिए गए कोड स्निपेट में, Kotlin और C++ में पूरी प्रोसेस को लागू करने का बुनियादी तरीका दिखाया गया है.

Kotlin

// Load model and initialize runtime
val compiledModel = CompiledModel.create(
    "/path/to/mymodel.tflite",
    CompiledModel.Options(Accelerator.CPU))

// Preallocate input/output buffers
val inputBuffers = compiledModel.createInputBuffers()
val outputBuffers = compiledModel.createOutputBuffers()

// Fill the input buffer
inputBuffers.get(0).writeFloat(input0)
inputBuffers.get(1).writeFloat(input1)

// Invoke
compiledModel.run(inputBuffers, outputBuffers)

// Read the output
val output = outputBuffers.get(0).readFloat()

C++

// Load model and initialize runtime
LITERT_ASSIGN_OR_RETURN(auto env, GetEnvironment());
LITERT_ASSIGN_OR_RETURN(auto options, GetOptions());
LITERT_ASSIGN_OR_RETURN(
    auto compiled_model,
    CompiledModel::Create(env, "/path/to/mymodel.tflite", options));

// Preallocate input/output buffers
LITERT_ASSIGN_OR_RETURN(auto input_buffers,compiled_model.CreateInputBuffers(signature_index));
LITERT_ASSIGN_OR_RETURN(auto output_buffers,compiled_model.CreateOutputBuffers(signature_index));

// Fill the input buffer
LITERT_ABORT_IF_ERROR(input_buffers[0].Write(input0));
LITERT_ABORT_IF_ERROR(input_buffers[1].Write(input1));

// Invoke
LITERT_ABORT_IF_ERROR(compiled_model.Run(signature_index, input_buffers, output_buffers));

// Read the output
LITERT_ABORT_IF_ERROR(output_buffers[0].Read(output0));