LiteRT برای اندروید

APIهای زمان اجرای LiteRT زیر برای توسعه اندروید در دسترس هستند:

  • رابط برنامه‌نویسی CompiledModel API): استاندارد مدرن برای استنتاج با کارایی بالا ، که شتاب‌دهی سخت‌افزاری را در سراسر CPU/GPU/NPU ساده‌سازی می‌کند. درباره دلیل انتخاب رابط برنامه‌نویسی کاربردی کامپایل‌شده‌ی مدل بیشتر بدانید.
  • رابط برنامه‌نویسی Interpreter : رابط برنامه‌نویسی استنتاج پایه، که برای سازگاری با نسخه‌های قبلی نگهداری می‌شود.

شروع کار با CompiledModel API

نسخه‌ها و APIهای اندروید پشتیبانی‌شده

نسخه LiteRT وضعیت API پشتیبانی شده حداقل سطح SDK حداقل نسخه NDK (در صورت استفاده) تاریخ انتشار
v2.1.0 ✅ جدیدترین‌ها CompiledModel
Interpreter (فقط CPU)
23 (اندروید ۶ مارشمالو) r26a هنوز منتشر نشده
v2.0.3 ⚠️ منسوخ شده CompiledModel 26 (اندروید ۸ اوریو) r26a ۲۰۲۵-۱۱-۰۸
v1.4.1 ✅ جدیدترین‌ها Interpreter 21 (اندروید ۵ لالی‌پاپ) r26a ۲۰۲۵-۱۱-۰۷
v1.4.0 ⚠️ منسوخ شده Interpreter 26 (اندروید ۸ اوریو) r26a ۲۰۲۵-۰۶-۲۵
v1.3.0 ⚠️ منسوخ شده Interpreter 21 (اندروید ۵ لالی‌پاپ) r26a ۲۰۲۵-۰۵-۱۹
v1.2.0 ⚠️ منسوخ شده Interpreter 21 (اندروید ۵ لالی‌پاپ) r26a ۲۰۲۵-۰۳-۱۳

مهم: وابستگی‌های خود را به‌روز نگه دارید تا از سازگاری با جدیدترین ویژگی‌ها و به‌روزرسانی‌های امنیتی اطمینان حاصل شود.

شروع سریع با CompiledModel API

اجرای استنتاج با رابط برنامه‌نویسی کاربردی مدل کامپایل‌شده شامل مراحل کلیدی زیر است:

  1. یک مدل سازگار را بارگذاری کنید.
  2. بافرهای تانسور ورودی و خروجی را اختصاص دهید.
  3. مدل کامپایل شده را فراخوانی کنید.
  4. استنتاج‌ها را در یک بافر خروجی بخوانید.

قطعه کدهای زیر پیاده‌سازی اولیه‌ی کل فرآیند را در کاتلین و سی‌پلاس‌پلاس نشان می‌دهند.

کاتلین

// 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()

سی++

// 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));