LiteRT Next مجموعه جدیدی از APIها است که نسبت به LiteRT بهبود مییابد، به ویژه از نظر شتاب سختافزاری و عملکرد برای برنامههای کاربردی ML و AI روی دستگاه. APIها نسخه آلفا هستند و در Kotlin و C++ موجود هستند.
LiteRT Next Compiled Model API مبتنی بر TensorFlow Lite Interpreter API است و فرآیند بارگیری و اجرای مدل را برای یادگیری ماشین روی دستگاه ساده میکند. APIهای جدید یک راه کارآمد جدید برای استفاده از شتاب سختافزاری ارائه میکنند که نیاز به مقابله با FlatBuffers مدل، قابلیت همکاری بافر I/O و نمایندگان را از بین میبرد. API های LiteRT Next با API های LiteRT سازگار نیستند. به منظور استفاده از ویژگی های LiteRT Next، راهنمای شروع را ببینید.
برای مثال پیاده سازی LiteRT Next، به برنامه های آزمایشی زیر مراجعه کنید:
شروع سریع
اجرای استنتاج با LiteRT Next API شامل مراحل کلیدی زیر است:
- یک مدل سازگار بارگیری کنید.
- بافرهای تانسور ورودی و خروجی را اختصاص دهید.
- مدل کامپایل شده را فراخوانی کنید.
- استنتاج ها را در بافر خروجی بخوانید.
قطعه کد زیر یک پیاده سازی اساسی از کل فرآیند در Kotlin و C++ را نشان می دهد.
C++
// Load model and initialize runtime
LITERT_ASSIGN_OR_RETURN(auto model, Model::CreateFromFile("mymodel.tflite"));
LITERT_ASSIGN_OR_RETURN(auto env, Environment::Create({}));
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
CompiledModel::Create(env, model, kLiteRtHwAcceleratorCpu));
// Preallocate input/output buffers
LITERT_ASSIGN_OR_RETURN(auto input_buffers, compiled_model.CreateInputBuffers());
LITERT_ASSIGN_OR_RETURN(auto output_buffers, compiled_model.CreateOutputBuffers());
// Fill the first input
float input_values[] = { /* your data */ };
input_buffers[0].Write<float>(absl::MakeConstSpan(input_values, /*size*/));
// Invoke
compiled_model.Run(input_buffers, output_buffers);
// Read the output
std::vector<float> data(output_data_size);
output_buffers[0].Read<float>(absl::MakeSpan(data));
کاتلین
// Load model and initialize runtime
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite",
CompiledModel.Options(Accelerator.CPU)
)
// Preallocate input/output buffers
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
// Invoke
model.run(inputBuffers, outputBuffers)
// Read the output
val outputFloatArray = outputBuffers[0].readFloat()
برای اطلاعات بیشتر، به راهنمای Get Started with Kotlin و Get Started with C++ مراجعه کنید.
ویژگی های کلیدی
LiteRT Next شامل مزایا و ویژگی های کلیدی زیر است:
- LiteRT API جدید : توسعه را با انتخاب شتاب دهنده خودکار، اجرای ناهمگام واقعی و مدیریت کارآمد بافر I/O ساده کنید.
- بهترین عملکرد GPU در کلاس : از پیشرفته ترین شتاب GPU برای ML روی دستگاه استفاده کنید. قابلیت همکاری بافر جدید امکان کپی صفر را فراهم می کند و تأخیر را در انواع مختلف بافر GPU به حداقل می رساند.
- استنباط هوش مصنوعی مولد برتر : ساده ترین ادغام را با بهترین عملکرد برای مدل های GenAI فعال کنید.
- شتاب یکپارچه NPU : ارائه دسترسی یکپارچه به NPU ها از ارائه دهندگان اصلی چیپست با تجربه توسعه دهنده سازگار. شتاب NPU LiteRT از طریق یک برنامه دسترسی زودهنگام در دسترس است.
پیشرفت های کلیدی
LiteRT Next (Compiled Model API) شامل بهبودهای کلیدی زیر در LiteRT (TFLite Interpreter API) است. برای یک راهنمای جامع برای تنظیم برنامه خود با LiteRT Next، راهنمای شروع را ببینید.
- استفاده از شتابدهنده : اجرای مدلها بر روی GPU با LiteRT به ایجاد نماینده صریح، فراخوانی عملکرد و تغییرات نمودار نیاز دارد. با LiteRT Next، فقط شتاب دهنده را مشخص کنید.
- قابلیت همکاری بافر سخت افزاری اصلی : LiteRT گزینه بافر را ارائه نمی دهد و تمام داده ها را از طریق حافظه CPU مجبور می کند. با LiteRT Next، میتوانید بافرهای سختافزار Android (AHWB)، بافرهای OpenCL، بافرهای OpenGL یا سایر بافرهای تخصصی را پاس کنید.
- اجرای Async : LiteRT Next با یک API ناهمگام طراحی شده مجدد ارائه می شود که یک مکانیسم ناهمگام واقعی بر اساس حصارهای همگام سازی ارائه می دهد. این کار با استفاده از سخت افزارهای متنوع - مانند CPU، GPU، CPU و NPU - برای کارهای مختلف، زمان اجرای کلی سریعتر را ممکن می کند.
- بارگذاری مدل : LiteRT Next هنگام بارگذاری یک مدل به مرحله سازنده جداگانه نیاز ندارد.