LiteRT: Performa maksimal, disederhanakan

20 MEI 2025

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!


MLDrift: Akselerasi GPU Terbaik Saat Ini

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:

  • Organisasi Data yang Lebih Cerdas: MLDrift mengatur data dengan cara yang lebih efisien dengan menggunakan tata letak Tensor yang dioptimalkan dan jenis penyimpanan yang dirancang khusus untuk cara GPU memproses data, mengurangi waktu akses memori dan mempercepat kalkulasi AI.

  • Pengoptimalan Grup Kerja: Komputasi cerdas berdasarkan konteks (tahap) dan batasan sumber daya

  • Peningkatan Penanganan Data: Merampingkan cara akselerator menerima dan mengirimkan data Tensor untuk mengurangi overhead dalam transfer data dan pengoptimalan konversi untuk lokalitas data.


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.

model of LiteRT GPU compared to TFLite GPU
Gambar: Latensi inferensi per model GPU LiteRT dibandingkan dengan GPU TFLite, diukur pada Samsung 24.

Temukan contoh dalam dokumentasi kami dan cobalah akselerasi GPU hari ini.


Dukungan MediaTek dan NPU Qualcomm

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.

  • Distribusi compiler vendor: Saat menginstal paket LiteRT PyPI, kami akan secara otomatis men-download SDK vendor untuk mengompilasi model.

  • Model dan distribusi runtime vendor: Model yang dikompilasi dan runtime SoC perlu didistribusikan bersama aplikasi. Sebagai developer, Anda dapat menangani distribusi ini sendiri, atau Anda dapat meminta Google Play mendistribusikannya untuk Anda. Dalam kode contoh kami, Anda dapat melihat cara menggunakan Paket AI dan Pengiriman Fitur untuk mengirimkan model dan runtime yang tepat ke perangkat yang tepat.


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.

classic ML models

Akselerasi Hardware GPU dan NPU yang Disederhanakan

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);
C++

Seperti yang Anda lihat, API CompiledModel baru sangat menyederhanakan cara menentukan model dan target backend untuk akselerasi.


Inferensi Lanjutan untuk Pengoptimalan Performa

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.


Interoperabilitas Buffering yang Sempurna

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);
C++

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

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:

  • CPU mungkin menangani praproses data

  • GPU dapat mempercepat perkalian matriks di lapisan jaringan neural dan

  • NPU dapat secara efisien mengelola tugas inferensi tertentu—semuanya terjadi secara paralel.


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);
C++

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.



Ucapan Terima kasih

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