رابط CompiledModel LiteRT در کاتلین موجود است و به توسعهدهندگان اندروید یک تجربهی یکپارچه و شتابدهندهمحور با APIهای سطح بالا ارائه میدهد. برای مثال، به برنامهی کاتلین تقسیمبندی تصویر مراجعه کنید.
راهنمای زیر استنتاج اولیه CPU از رابط برنامهنویسی کاربردی کاتلین CompiledModel را نشان میدهد. برای ویژگیهای پیشرفته شتابدهی، به راهنمای شتابدهی GPU و شتابدهی NPU مراجعه کنید.
اضافه کردن بسته Maven
پکیج LiteRT Maven را به پروژه اندروید خود اضافه کنید:
dependencies {
...
implementation `com.google.ai.edge.litert:litert:2.1.0`
}
استنتاج پایه
ایجاد CompiledModel
زمان اجرا را با یک مدل و انتخاب شتابدهنده سختافزاری خود، مقداردهی اولیه کنید:
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite",
CompiledModel.Options(Accelerator.CPU),
env,
)
ایجاد بافرهای ورودی و خروجی
ساختارهای داده لازم (بافرها) را برای نگهداری دادههای ورودی که برای استنتاج به مدل وارد میکنید و دادههای خروجی که مدل پس از اجرای استنتاج تولید میکند، ایجاد کنید.
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
اگر از حافظه CPU استفاده میکنید، ورودیها را با نوشتن مستقیم دادهها در اولین بافر ورودی پر کنید.
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
مدل را فراخوانی کنید
با فراهم کردن بافرهای ورودی و خروجی، مدل را اجرا کنید.
model.run(inputBuffers, outputBuffers)
بازیابی خروجیها
با خواندن مستقیم خروجی مدل از حافظه، خروجیها را بازیابی کنید.
val outputFloatArray = outputBuffers[0].readFloat()
استفاده از TensorBuffer
LiteRT پشتیبانی داخلی برای قابلیت همکاری بافر ورودی/خروجی ارائه میدهد و از API بافر تنسور ( TensorBuffer ) برای مدیریت جریان دادهها به داخل و خارج از CompiledModel استفاده میکند. API بافر تنسور امکان نوشتن ( Write<T>() ) و خواندن ( Read<T>() ) و قفل کردن بافرها را فراهم میکند.
برای مشاهده کاملتر نحوه پیادهسازی API Tensor Buffer، به کد منبع در TensorBuffer.kt مراجعه کنید.