Selama dekade lalu, ponsel telah menggabungkan akselerator khusus yang makin kuat, termasuk GPU dan baru-baru ini, NPU (Neural Processing Unit) yang lebih kuat. Dengan mempercepat model AI Anda pada GPU dan NPU seluler, Anda dapat mempercepat model Anda hingga 25x dibandingkan dengan CPU sekaligus mengurangi konsumsi daya hingga 5x. Namun, membuka manfaat performa yang luar biasa ini terbukti menantang bagi sebagian besar developer, karena memerlukan pengaturan API khusus hardware jika terjadi inferensi GPU atau pengaturan SDK, format, dan runtime khusus vendor untuk inferensi NPU.
Mendengarkan masukan Anda, tim Google AI Edge dengan gembira mengumumkan berbagai peningkatan pada LiteRT yang memecahkan tantangan di atas, dan mempercepat AI pada perangkat seluler dengan lebih mudah seiring peningkatan performa. Rilis baru kami mencakup API LiteRT baru yang membuat inferensi ML pada perangkat lebih mudah daripada sebelumnya, akselerasi GPU canggih terbaru kami, dukungan NPU baru yang dikembangkan bersama MediaTek dan Qualcomm (terbuka untuk akses awal), dan fitur inferensi lanjutan untuk memaksimalkan performa bagi aplikasi di perangkat. Mari kita bahas!
GPU selalu menjadi inti dari cerita akselerasi LiteRT, yang menyediakan dukungan terluas dan peningkatan performa paling konsisten. MLDrift, versi akselerasi GPU terbaru kami, mendorong standar lebih jauh dengan performa yang lebih cepat dan peningkatan untuk mendukung model dengan ukuran yang jauh lebih besar melalui:
Hal ini menghasilkan performa yang jauh lebih cepat daripada CPU, daripada versi delegasi GPU TFLite kami sebelumnya, dan bahkan framework lain yang mendukung GPU, khususnya untuk model CNN dan Transformer.
Temukan contoh dalam dokumentasi kami dan cobalah akselerasi GPU hari ini.
NPU, akselerator khusus AI, makin umum digunakan di ponsel andalan. NPU memungkinkan Anda menjalankan model AI dengan jauh lebih efisien dan dalam banyak kasus, jauh lebih cepat. Dalam pengujian internal kami, dibandingkan dengan CPU, akselerasi ini dapat mencapai 25x lebih cepat, dan 5x lebih hemat daya. (Mei 2025, berdasarkan pengujian internal)
Biasanya, setiap vendor menyediakan SDK mereka sendiri, termasuk compiler, runtime, dan dependensi lainnya, untuk mengompilasi dan menjalankan model pada SoC mereka. SDK harus sama persis dengan versi SoC tertentu dan memerlukan download dan penginstalan yang tepat. LiteRT kini menyediakan cara yang seragam untuk mengembangkan dan menerapkan model pada NPU, sehingga menghilangkan semua kerumitan ini.
Dengan gembira kami bermitra dengan MediaTek dan Qualcomm untuk memungkinkan developer mempercepat berbagai model ML klasik, seperti model visi, audio, dan NLP, pada NPU MediaTek dan Qualcomm. Dukungan model dan domain yang lebih besar akan terus berlanjut selama tahun mendatang.
Fitur ini tersedia dalam pratinjau pribadi. Untuk akses awal, daftar di sini.
Kami telah membuat GPU dan NPU lebih mudah digunakan dari sebelumnya dengan menyederhanakan proses dalam versi terbaru API LiteRT. Dengan perubahan terbaru, kami telah menyederhanakan pengaturan secara signifikan dengan kemampuan untuk menentukan target backend sebagai opsi. Sebagai contoh, berikut adalah cara developer menentukan akselerasi GPU:
// 1. Load model.
auto model = *Model::Load("mymodel.tflite");
// 2. Create a compiled model targeting GPU.
auto compiled_model = *CompiledModel::Create(model, kLiteRtHwAcceleratorGpu);
Seperti yang Anda lihat, API CompiledModel baru sangat menyederhanakan cara menentukan model dan target backend untuk akselerasi.
Meskipun penggunaan backend berperforma tinggi sangat membantu, performa optimal aplikasi Anda dapat terhambat oleh memori, atau bottleneck prosesor. Dengan API LiteRT yang baru, Anda dapat mengatasi tantangan ini dengan memanfaatkan interoperabilitas buffering bawaan untuk mengeliminasi operasi penyalinan memori yang mahal, dan eksekusi asinkron untuk secara paralel memanfaatkan prosesor yang tidak ada aktivitas.
API TensorBuffer yang baru menyediakan cara yang efisien untuk menangani data input/output dengan LiteRT. API ini memungkinkan Anda untuk langsung menggunakan data yang berada dalam memori hardware, seperti Buffering OpenGL, sebagai input atau output untuk CompiledModel Anda, sehingga sepenuhnya mengeliminasi kebutuhan akan salinan CPU yang mahal.
auto tensor_buffer = *litert::TensorBuffer::CreateFromGlBuffer(tensor_type, opengl_buffer);
Hal ini secara signifikan mengurangi overhead CPU yang tidak perlu dan memacu performa.
Selain itu, API TensorBuffer memungkinkan konversi bebas salinan yang lancar antara berbagai jenis memori hardware jika didukung oleh sistem. Bayangkan mengubah data dengan mudah dari Buffering OpenGL Buffer ke Buffering OpenCL atau bahkan ke HardwareBuffer Android tanpa transfer CPU perantara.
Teknik ini merupakan kunci untuk menangani peningkatan volume data dan kinerja yang menuntut yang dibutuhkan oleh model AI yang semakin kompleks. Anda dapat menemukan contoh dalam dokumentasi kami tentang cara menggunakan TensorBuffer.
Eksekusi asinkron memungkinkan berbagai bagian model AI atau tugas independen berjalan bersamaan di seluruh CPU, GPU, dan NPU yang memungkinkan Anda memanfaatkan siklus komputasi yang tersedia dari berbagai prosesor secara oportunistis untuk meningkatkan efisiensi dan daya respons. Misalnya:
Dalam aplikasi yang memerlukan interaksi AI secara waktu nyata, suatu tugas dapat dimulai pada satu prosesor dan dilanjutkan dengan operasi lain pada prosesor lain. Pemrosesan paralel meminimalkan latensi dan memberikan pengalaman pengguna yang lebih lancar dan lebih interaktif. Dengan mengelola dan tumpang tindih komputasi secara efektif di beberapa prosesor, eksekusi asinkron memaksimalkan throughput sistem dan memastikan bahwa aplikasi AI tetap lancar dan reaktif, bahkan di bawah beban komputasi yang berat.
Eksekusi asinkron diterapkan menggunakan mekanisme level OS (mis.: pagar sinkronisasi pada Android/Linux) yang memungkinkan satu akselerator hardware untuk terpicu setelah selesainya akselerator hardware lain secara langsung tanpa melibatkan CPU. Hal ini mengurangi latensi (hingga 2x dalam demoasinkron GPU kami) dan konsumsi daya sekaligus membuat pipeline lebih deterministik.
Berikut cuplikan kode yang menunjukkan inferensi asinkron dengan input buffering OpenGL:
// Create an input TensorBuffer based on tensor_type that wraps the given OpenGL
// Buffer. env is an LiteRT environment to use existing EGL display and context.
auto tensor_buffer_from_opengl = *litert::TensorBuffer::CreateFromGlBuffer(env,
tensor_type, opengl_buffer);
// Create an input event and attach it to the input buffer. Internally, it
// creates and inserts a fence sync object into the current EGL command queue.
auto input_event = *Event::CreateManaged(env, LiteRtEventTypeEglSyncFence);
tensor_buffer_from_opengl.SetEvent(std::move(input_event));
// Create the input and output TensorBuffers…
// Run async inference
compiled_model1.RunAsync(input_buffers, output_buffers);
Contoh kode lainnya tersedia dalam dokumentasi kami tentang cara memanfaatkan eksekusi asinkron.
Kami menganjurkan Anda untuk mencoba kemampuan akselerasi dan teknik peningkatan performa terbaru guna menghadirkan pengalaman terbaik bagi pengguna Anda sembari memanfaatkan model AI terbaru. Untuk membantu Anda memulai, lihat aplikasi contoh kami yang berisi contoh-contoh yang terintegrasi lengkap tentang cara menggunakan semua fitur.
Semua fitur LiteRT baru yang disebutkan dalam blog ini dapat ditemukan di: https://github.com/google-ai-edge/LiteRT
Untuk berita Google AI Edge selengkapnya, baca pembaruan kami di GenAI di perangkat dan layanan AI Edge Portal baru kami untuk tolok ukur dan evaluasi di perangkat dengan cakupan luas.
Jelajahi pengumuman ini dan semua update Google I/O 2025 di io.google mulai tanggal 22 Mei.
Terima kasih kepada para anggota tim dan kolaborator atas kontribusi mereka dalam memungkinkan kemajuan dalam rilis ini: Advait Jain, Alan Kelly, Alexander Shaposhnikov, Andrei Kulik, Andrew Zhang, Akshat Sharma, Byungchul Kim, Chunlei Niu, Chuo-Ling Chang, Claudio Basile, Cormac Brick, David Massoud, Dillon Sharlet, Eamon Hugh, Ekaterina Ignasheva, Fengwu Yao, Frank Ban, Frank Barchard, Gerardo Carranza, Grant Jensen, Henry Wang, Ho Ko, Jae Yoo, Jiuqiang Tang, Juhyun Lee, Julius Kammerl, Khanh LeViet, Kris Tonthat, Lin Chen, Lu Wang, Luke Boyer, Marissa Ikonomidis, Mark Sherwood, Matt Kreileder, Matthias Grundmann, Misha Gutman, Pedro Gonnet, Ping Yu, Quentin Khan, Raman Sarokin, Sachin Kotwani, Steven Toribio, Suleman Shahid, Teng-Hui Zhu, Volodymyr Kysenko, Wai Hon Law, Weiyi Wang, Youchuan Hu, Yu-Hui Chen