GenAI di perangkat pada Chrome, Chromebook Plus, dan Pixel Watch dengan LiteRT-LM

24 SEP. 2025
Yu-hui Chen Staff Software Engineer
Ram Iyengar Senior Staff Software Engineer

GenAI di perangkat pada Chrome, Chromebook Plus, dan Pixel Watch dengan LiteRT-LM

Menjalankan model bahasa besar (LLM) yang kuat secara langsung di perangkat pengguna akan membuka kemampuan yang bisa secara signifikan meningkatkan pengalaman produk. Ketersediaan offline membuatnya selalu tersedia setiap saat, sementara efisiensi biaya (tidak ada biaya per panggilan API) membuatnya praktis untuk tugas-tugas berfrekuensi tinggi, seperti meringkas atau mengoreksi teks.

Namun, menerapkan model berskala Gigabyte ini di berbagai hardware edge sekaligus mencapai kecepatan latensi time-to-first-token (TTFT) di bawah satu detik dan kualitas output yang dibutuhkan merupakan tantangan teknis yang besar. Kami telah membahasnya dalam LiteRT-LM.

Hari ini, kami sangat senang bisa menawarkan developer akses langsung ke LiteRT-LM, framework inferensi siap produksi yang telah mendukung beberapa deployment terluas Gemini Nano di berbagai produk Google hingga saat ini. Mesin yang telah teruji ini memungkinkan Gemini Nano dan Gemma di perangkat pada produk, seperti Chrome, Chromebook Plus, dan Pixel Watch, serta model terbuka lainnya melalui MediaPipe LLM Inference API.

Anda sudah bisa memanfaatkan API tingkat tinggi, seperti MediaPipe LLM Inference API, API AI Bawaan Chrome, dan Android AICore untuk menjalankan LLM di perangkat, tetapi sekarang, untuk pertama kalinya, kami menyediakan antarmuka C++ dasar (dalam pratinjau) engine LiteRT-LM kami. Akses tingkat rendah ini memungkinkan Anda membangun pipeline AI khusus berkinerja tinggi yang disesuaikan untuk aplikasi Anda sendiri, membuka teknologi engine yang telah terbukti dan performa yang dioptimalkan pada platform pilihan Anda. Manfaatkan API kami untuk mulai membangun aplikasi berbasis LLM Anda hari ini untuk merasakan pengalaman performa yang dioptimalkan ini.

Secara khusus, LiteRT-LM memberikan kemampuan:

  • Web AI di Chrome, memungkinkan developer web memanfaatkan tugas berbasis AI melalui API AI bawaan. Ini secara krusial merepresentasikan deployment terluas Gemini Nano di berbagai platform.
  • Kemampuan AI di Chromebook Plus untuk membantu Anda mengelola jutaan tab, dan memahami bagian teks yang padat.
  • Fitur AI seperti Smart Replies di Pixel Watch.

Apa yang dimaksud dengan LiteRT-LM dan stack Google AI Edge?

LiteRT-LM adalah framework inferensi yang telah teruji secara produksi yang dirancang untuk menjalankan model bahasa besar, seperti Gemini Nano, Gemma, dengan performa tinggi di berbagai perangkat edge. Pada intinya, LiteRT-LM adalah project open-source sepenuhnya yang menyediakan API yang mudah diintegrasikan dan seperangkat modul yang dapat digunakan kembali. Ini memungkinkan developer membangun pipeline LLM khusus yang disesuaikan secara cermat untuk kebutuhan fitur produk mereka.

Untuk memahami kegunaan LiteRT-LM, ada baiknya kita melihat seluruh stack Google AI Edge, dari tingkat abstraksi yang paling rendah hingga yang paling tinggi:

  • LiteRT: Runtime dasar untuk menjalankan model ML/AI individual secara efisien di perangkat.
  • LiteRT-LM: Framework pipeline LLM berbasis C++ yang menggunakan LiteRT untuk menjalankan beberapa model dan langkah pemrosesan— seperti kloning sesi, pengelolaan kv-cache, prompt caching/scoring, inferensi stateful—secara bersamaan untuk tugas AI generatif kompleks.
  • LLM Inference API: API native tingkat tinggi (Kotlin, Swift, JS) untuk GenAI, didukung oleh LiteRT-LM di dalamnya.

Struktur berlapis ini memberi Anda fleksibilitas untuk bekerja pada lapisan abstraksi yang paling sesuai dengan kebutuhan project Anda, sementara LiteRT-LM menyediakan kekuatan inti dan adaptabilitas bagi developer yang mencoba menerapkan model bahasa besar (LLM) dalam skala besar secara langsung di perangkat pengguna.

Sorotan utama LiteRT-LM meliputi:

  • Lintas platform: Memungkinkan deployment di Android, Linux, macOS, Windows, dan Raspberry Pi.
  • Akselerasi hardware: Memanfaatkan runtime LiteRT inti kami untuk membuka potensi penuh hardware di perangkat, dengan dukungan untuk akselerasi CPU, GPU, dan NPU.
  • Fleksibilitas yang ditingkatkan: Desain modular dan codebase open source memberikan fleksibilitas maksimum untuk kustomisasi pipeline inferensi, dan mendukung fitur-fitur utama, seperti multi-modalitas, model open-weight, dan inferensi model besar siap produksi di berbagai akselerator dan platform seluler.

Kami mendemonstrasikan keserbagunaan ini dengan dua studi kasus yang menyoroti deployment-nya dalam skala besar—meliputi browser Chrome, Chromebook, dan Pixel Watch terbaru—untuk menjangkau ratusan juta perangkat.

Memberdayakan beberapa fitur LLM dengan Gemini Nano di Chrome dan Chromebook Plus

Demonstrasi AI Prompt API bawaan yang menjalankan Gemini Nano secara lokal di Chrome

LLM modern berskala Gigabyte menghadirkan tantangan deployment yang unik. Tidak seperti model machine learning konvensional, yang biasanya berukuran megabyte, ukuran LLM yang sangat besar membuatnya tidak praktis untuk menerapkan beberapa model parameter multi-miliar terspesialisasi—misalnya, satu model untuk meringkas dan satu model lagi untuk melakukan chat—untuk mendukung berbagai fitur di perangkat edge yang sama.

Untuk mengatasi hal ini, LiteRT-LM dirancang untuk memungkinkan beberapa fitur berbagi satu model dasar, menggunakan LoRA yang ringan untuk kustomisasi khusus fitur. Hal ini dimungkinkan berkat pola arsitektural yang jelas yang memisahkan sumber daya bersama yang berat dari aspek interaksi pengguna yang dapat dikonfigurasi dan bersifat stateful. Pemisahan ini dicapai melalui dua class inti, yaitu Engine dan Session:

  • Engine (singleton): Berfungsi sebagai instance tunggal yang akan digunakan bersama di seluruh fitur aplikasi. Ia memiliki dan mengelola semua sumber daya yang mahal dan digunakan bersama, seperti model dasar dan encoder multi-modalitas. Ia secara cerdas menangani pemuatan dan menghapus muatan sumber daya ini berdasarkan lingkungan runtime dan persyaratannya.
  • Session (antarmuka stateful): Ini adalah antarmuka yang digunakan saat interaksi fitur aplikasi. Setiap Session merepresentasikan percakapan atau tugas yang berbeda, mengelola status, riwayat, dan konteksnya sendiri. Session bisa dikonfigurasikan dengan adaptor kecil yang khusus untuk tugas tertentu (LoRA weight) untuk menyesuaikan perilaku model dasar.
engine_session
Diagram arsitektur sistem engine/sesi LiteRT-LM: Engine (bawah) berfungsi sebagai pengelola sumber daya pusat, menghasilkan dua Session yang berbeda (atas); satu untuk peringkasan dan satu lagi untuk pemahaman gambar. Kedua Session berbagi sumber daya yang sama, seperti decoder teks dasar dan tokenizer, sementara Session pemahaman gambar juga meminta encoder visi. Encoder audio dikurangi bebannya dari memori oleh Engine karena tidak ada Session aktif yang memerlukannya.

Arsitektur ini didukung oleh pengoptimalan utama yang memungkinkan peralihan tugas yang efisien dan rendah jejak memori1:

  • Pengalihan Konteks: Setiap Session merangkum “konteks” lengkapnya—termasuk KV-cache Transformer, LoRA weight..dll. Mirip dengan OS, saat beralih di antara tugas, LiteRT-LM menyimpan status Session's yang keluar dan memulihkan yang masuk. Hal ini memastikan LLM yang dibagikan selalu memiliki status yang benar untuk tugas aktif.
  • Kloning Session: Untuk menghindari komputasi ulang prefiks prompt yang dibagikan (mis., untuk pembelajaran dalam konteks), pengguna bisa mengkloning Session. Hal ini secara efektif menyimpan status KV-cache yang dikomputasi pada titik tertentu, sehingga memungkinkan beberapa tugas baru bercabang dari status tersebut dan menghemat komputasi secara signifikan.
  • Copy-on-Write (CoW) KV-Cache: KV-cache bisa berukuran sangat besar (MB hingga GB), sehingga biaya penyalinan menjadi mahal. Dengan CoW, Session yang dikloning tidak langsung menyalin KV-cache tetapi membuat referensi ke buffer asli. Salinan yang sebenarnya hanya dilakukan ketika Session akan menimpa data baru yang bertentangan dengan isi Session lain. Desain ini membuat kloning berjalan sangat cepat (<10ms) dan meminimalkan jejak memori dengan menggunakan kembali buffer kv-cache.

Bersama-sama, kemampuan arsitektur dan pengoptimalan ini merupakan kunci keberhasilan memproduksi berbagai fitur LLM berkinerja tinggi di perangkat pada Chrome dan Chromebook Plus.

Selain mengelola tugas bersamaan, penskalaan model ML di SKU perangkat yang terfragmentasi menghadirkan rintangan teknis besar yang kedua. Setiap SoC memiliki komponen dan kemampuan yang berbeda (di CPU, GPU, dan NPU), sehingga membutuhkan pengoptimalan khusus untuk menjalankan inferensi model dengan performa tinggi. LiteRT-LM memanfaatkan LiteRT sebagai runtime tingkat rendah untuk delegasi backend, memungkinkannya diskalakan secara efisien di berbagai akselerator hardware. Selain itu, LiteRT-LM memperoleh kompatibilitas platform yang luas melalui desain inti yang mengabstraksikan komponen khusus platform (seperti deskriptor file dan mmap), menyediakan implementasi native jika diperlukan.

1Perhatikan bahwa sebagian pengoptimalan yang disebutkan tidak disertakan dalam pratinjau awal ini, tetapi secara bertahap akan dirilis pada versi mendatang.

Menerapkan model bahasa di perangkat berkomputasi rendah: Pixel Watch

Demonstrasi fitur Smart Replies di Pixel Watch

Menerapkan LLM di perangkat dengan sumber daya yang sangat terbatas, seperti Pixel Watch, menghadirkan tantangan yang sama sekali berbeda. Pada platform ini, prioritas bergeser dari mendukung beberapa fitur dengan model bersama menjadi menerapkan satu fitur khusus dengan ukuran biner dan jejak memori sekecil mungkin.

Di sinilah desain modular LiteRT-LM menjadi sangat penting. Meskipun arsitektur Engine/Session kami sangat kuat untuk mengelola deployment multi-tugas yang kompleks, jejak binernya tidak cukup kecil untuk memenuhi persyaratan ketat perangkat wearable.

Sebaliknya, framework ini memungkinkan developer membangun pipeline khusus secara langsung dari komponen intinya. Untuk Pixel Watch, kami memilih modul minimum yang diperlukan—seperti eksekutor, tokenizer, dan sampler—serta menyusun pipeline khusus. Pendekatan ini memungkinkan kami meminimalkan ukuran biner dan penggunaan memori untuk memenuhi batasan sumber daya perangkat, seperti yang ditunjukkan pada gambar di bawah ini.

litert_lm_pixel_watch
Pipeline LLM ringan yang dioptimalkan untuk Pixel Watch

Studi kasus ini menunjukkan fleksibilitas LiteRT-LM. Komponen modularnya memberdayakan developer untuk membuat deployment LLM yang secara khusus disesuaikan dengan sumber daya spesifik dan persyaratan fitur dari setiap perangkat target, mulai dari smartphone yang kuat hingga perangkat wearable yang terbatas kemampuannya.

Memulai

Mulailah dan hadirkan AI generatif yang kuat dan efisien di perangkat kepada pengguna Anda.

  1. Jelajahi komunitas HuggingFace LiteRT untuk menemukan model terbuka yang kompatibel seperti Gemma dan Qwen.
  2. Masuk ke dalam repositori GitHub kami untuk mengakses pratinjau C++ dan menjelajahi kode contoh. Lihat cuplikan contoh di bawah ini.
  3. Baca dokumentasi untuk melihat lebih dalam mengenai langkah-langkah yang diperlukan untuk membangun dan menjalankan Model Bahasa Besar (LLM) di perangkat Anda menggunakan runtime LiteRT-LM.
  4. Setelah Anda menyiapkan lingkungan, Anda bisa memulai dengan cuplikan kode contoh berikut ini:
#include "YOUR_INCLUDE_DIRECTORY/engine.h"
 
// ...
 
// 1. Define model assets and engine settings.
auto model_assets = ModelAssets::Create(model_path);
CHECK_OK(model_assets);
 
auto engine_settings = EngineSettings::CreateDefault(
    model_assets, litert::lm::Backend::CPU);
 
// 2. Create the main Engine object.
absl::StatusOr<std::unique_ptr<Engine>> engine = Engine::CreateEngine(engine_settings);
CHECK_OK(engine);
 
// 3. Create a Session for a new conversation.
auto session_config = SessionConfig::CreateDefault();
absl::StatusOr<std::unique_ptr<Engine::Session>> session = (*engine)->CreateSession(session_config);
CHECK_OK(session);
 
// 4. Generate content using the high-level API.
absl::StatusOr<Responses> responses = (*session)->GenerateContent(
    {InputText("What is the tallest building in the world?")});
CHECK_OK(responses);
 
// 5. Print the response.
std::cout << *responses << std::endl;
C++

Ucapan Terima kasih

Kami ingin menyampaikan ucapan terima kasih khusus kepada kontributor utama kami atas kerja keras mereka pada project ini: Advait Jain, Austin Sullivan, Clark Duvall, Haoliang Zhang, Ho Ko, Howard Yang, Marissa Ikonomidis, Mohammadreza Heydary, Ronghui Zhu, Tyler Mullen, Umberto Ravaioli, Weiyi Wang, Xu Chen, Youchuan Hu

Kami juga mengucapkan terima kasih atas kontribusi yang signifikan dari anggota tim berikut ini: Agi Sferro, Chi Yo Tsai, David Massoud, Dillon Sharlet, Frank Barchard, Grant Jensen, Ivan Grishchenko, Jae Yoo, Jim Pollock, Majid Dadashi, Quentin Khan, Raman Sarokin, Ricky Liang, Tenghui Zhu, Terry (Woncheol) Heo, Yi-Chun Kuo, Yishuang Pang

Upaya ini dapat terwujud berkat bimbingan dan dukungan dari pimpinan kami: Cormac Brick, Etienne Noël, Juhyun Lee, Lu Wang, Matthias Grundmann, dan Sachin Kotwani.