Google Baru Saja Membuat TensorFlow.js Menjadi Usang (LiteRT.js)
BBetter Stack
컴퓨터/소프트웨어게임/e스포츠AI/미래기술
스크립트
00:00:00Google baru saja merilis pustaka runtime baru yang memungkinkan Anda menjalankan model pembelajaran mesin dan AI
00:00:05di dalam peramban dengan kecepatan mendekati aslinya. Namanya LiteRT.js dan sangat mengesankan. Jadi
00:00:12dalam video ini kita akan melihat LiteRT.js, memahami cara kerjanya, dan kita akan mengujinya dengan
00:00:18membangun aplikasi penangkap gerak 3D waktu nyata yang berjalan sepenuhnya di dalam peramban. Ini akan menjadi
00:00:24sangat menyenangkan, jadi mari kita selami. Jadi apa sebenarnya LiteRT.js itu? Nah, ini adalah binding JavaScript untuk
00:00:36LiteRT, runtime inferensi di perangkat mereka, yang telah menjalankan model di Android, iOS, dan perangkat keras
00:00:42tertanam selama bertahun-tahun. Namun LiteRT.js menghadirkan runtime yang sama ke dalam peramban melalui WebAssembly menggunakan
00:00:50paket npm inti LiteRT.js. Dan inilah yang membuat LiteRT.js berbeda. Google sudah memiliki
00:00:58pustaka pembelajaran mesin peramban, namanya TensorFlow.js, dan sudah ada selama bertahun-tahun. Tapi
00:01:04TensorFlow.js berjalan pada kernel berbasis JavaScript, dan itu merupakan hambatan besar. Anda tahu, kernel JavaScript
00:01:11tidak dapat sepenuhnya memanfaatkan CPU atau GPU seperti runtime asli. Jadi TensorFlow.js selalu tertinggal di belakang
00:01:19performa aplikasi asli. Namun LiteRT.js menggunakan WebAssembly, dan hadir dengan kernel yang dioptimalkan sendiri.
00:01:27Jadi runtime asli yang sama yang mendukung inferensi Android dan iOS dikompilasi ke WASM lalu diekspos ke
00:01:34LiteRT.js. Jadi Anda tidak lagi mendapatkan lapisan abstraksi rasa web, Anda benar-benar mendapatkan
00:01:40mesin runtime yang benar-benar dioptimalkan. Dan ini juga terlihat pada arsitektur back-end mereka. LiteRT.js memiliki
00:01:47tiga tingkat berbeda yang memungkinkannya berkinerja baik pada CPU, GPU, dan bahkan NPU. Jadi di sisi CPU,
00:01:55ia menggunakan XNNPack, pustaka kernel CPU yang dioptimalkan milik Google, yang bersifat multi-thread dengan dukungan SIMD yang fleksibel.
00:02:04Dan ini adalah fallback universal Anda yang akan berjalan di mana saja, tidak memerlukan GPU. Namun untuk GPU,
00:02:11ia menggunakan ML drift melalui web GPU, dan di sinilah performa sebenarnya berada. Ia memanfaatkan kernel
00:02:18GPU asli, jadi hal-hal seperti shader tidak lagi dirender menggunakan semacam orkestrasi JavaScript. Dan untuk
00:02:24NPU, ia memiliki WebNN, yang masih eksperimental di Chrome dan Edge, dan menargetkan perangkat keras pemrosesan
00:02:31neural khusus untuk inferensi yang hemat daya. Dan menurut tolok ukur Google sendiri, yang mereka
00:02:37lakukan pada MacBook Pro 2024 dengan Silikon M4, tampaknya ia memiliki inferensi tiga kali lebih cepat daripada
00:02:45runtime web lainnya pada CPU dan GPU untuk model visi dan audio. Dan saat menjalankan beban kerja seperti
00:02:53pelacakan objek, transkripsi audio, atau manipulasi gambar pada GPU atau NPU, daripada pada CPU,
00:03:00kita mendapatkan peningkatan performa yang melonjak dari lima kali hingga 60 kali lebih cepat,
00:03:07tergantung pada tugasnya. Dan perlu disebutkan bahwa itu adalah skenario kasus terbaik. Dan Google juga
00:03:13mengakui hal ini. Jadi hasil Anda mungkin bervariasi, dengan mempertimbangkan GPU spesifik Anda,
00:03:18thermal throttling, dan kualitas driver. Dan ada satu hal lagi yang sangat penting untuk runtime ini.
00:03:24Jika Anda sudah memiliki model yang biasa Anda gunakan untuk berjalan di PyTorch atau TensorFlow, jika Anda memiliki file
00:03:30TF Lite yang ada, LiteRT.js sebenarnya dapat menjalankannya secara langsung. Dan jika Anda menggunakan PyTorch, ada juga LiteRT
00:03:38Torch, jalur konversi yang membawa model Anda langsung ke .TF Lite. Selain itu, ada juga AI Edge
00:03:44Quantizer untuk memperkecil ukuran model tanpa penulisan ulang penuh. Jadi alur kerja lama yang Anda gunakan pada
00:03:50TensorFlow.js dapat dengan mudah dipindahkan ke LiteRT.js yang baru, yang sangat keren. Tapi apa yang bisa
00:03:58Anda lakukan dengannya? Nah, Google memiliki beberapa demo keren, yang memberi Anda gambaran tentang
00:04:03jangkauannya. Jadi Anda dapat melakukan deteksi objek YOLO waktu nyata, estimasi kedalaman monokular dengan
00:04:09pustaka depth anything yang mengubah feed webcam Anda menjadi titik awan 3D langsung. Dan ia juga dapat melakukan peningkatan skala gambar
00:04:16dengan pustaka real ESR GAN. Dan semua demo ini berjalan sepenuhnya di sisi klien tanpa
00:04:23backend, tanpa API langsung di dalam peramban Anda. Dan mereka sudah mengumumkan apa yang akan datang selanjutnya,
00:04:29LiteRT.LM.js. Dan ini akan digunakan untuk menjalankan model bahasa lengkap secara lokal di dalam peramban.
00:04:36Jadi ini bukan hanya untuk visi komputer. Segera ia juga akan menawarkan inferensi LLM lokal juga.
00:04:42Baiklah, itu semua terdengar bagus, tetapi saya ingin mengujinya sendiri untuk melihat seberapa kuat sebenarnya
00:04:48itu. Jadi untuk demo ini, saya memutuskan untuk membuat aplikasi penangkap gerak nyata yang menggunakan webcam Anda untuk
00:04:55estimasi pose waktu nyata. Dan itu juga berjalan sepenuhnya di peramban Anda, sisi klien, dan offline tanpa
00:05:03syarat apa pun. Jadi saya membuat aplikasi ini di cloud code menggunakan model Fable 5 yang baru. Dan inilah hasil akhirnya.
00:05:10Dan omong-omong, jika Anda ingin mengunduh repo ini dan memainkannya sendiri, saya juga telah menambahkan tautan ke
00:05:15proyek ini di deskripsi di bawah. Jadi di sini LiteRT.JS berjalan melalui peramban menggunakan model blaze pose
00:05:23dengan 33 tengara tubuh, menggerakkan karakter 3D secara waktu nyata menggunakan 3.js. Tidak ada server backend dan
00:05:31semua yang Anda lihat terjadi pada mesin ini sekarang sepenuhnya offline. Jadi kita bisa melihat di sini bahwa pada
00:05:38CPU, kita rata-rata mencapai sekitar 38 FPS dengan inferensi 23,3 milidetik. Dan kita juga bisa melihat bahwa estimasi pose
00:05:47sedikit tertinggal. Tapi sekarang jika kita beralih ke versi web GPU, kita bisa melihat bahwa kita sekarang
00:05:54mendapatkan 120 frame per detik yang solid dengan inferensi 8,4 milidetik. Dan estimasi pose juga sedikit
00:06:02lebih cepat. Dan itu kira-kira tiga kali lipat lonjakan frame rate dan 2,8 kali penurunan waktu inferensi, yang
00:06:10sejalan dengan angka Google sendiri, meskipun itu pada batas moderat dari apa yang mereka publikasikan. Tapi kita harus
00:06:16mempertimbangkan bahwa blaze pose benar-benar model kecil. Jadi ada lebih sedikit komputasi mentah bagi GPU
00:06:23untuk diproses. Namun bahkan dengan itu, memindahkan matematika tensor dari CPU ke web GPU memangkas latensi
00:06:30cukup sehingga lag jauh lebih rendah. Dan saya juga menambahkan fitur di mana Anda dapat merekam animasi tangkapan pose
00:06:36Anda dan mengekspornya sebagai JSON atau sebagai file penangkapan gerak bio vision, lalu membukanya di
00:06:44sesuatu seperti blender dan menargetkan ulang animasi itu ke karakter khusus Anda sendiri. Dan seperti yang Anda lihat di sini,
00:06:49itu tidak sempurna. Gerakannya tidak terlalu detail atau halus. Jadi ini masih sangat dalam proses
00:06:56pengerjaan. Tapi sangat keren bahwa saya bisa membuat versi awal ini berfungsi hanya dalam 10 menit
00:07:01menggunakan LiteRT.js yang baru. Jadi begitulah, kawan. Itu adalah LiteRT.js secara singkat. Sungguh
00:07:08luar biasa melihat seberapa jauh WebAssembly telah mendorong kemampuan menjalankan aplikasi kompleks
00:07:14di peramban. Dan pustaka LiteRT.js baru ini benar-benar membuktikan bahwa terkadang JavaScript bisa
00:07:21menjadi hambatan nyata untuk mencapai kecepatan performa yang mendekati asli. Jadi saya sangat terkesan dengan
00:07:27pustaka ini dan saya tidak sabar untuk mencoba LiteRT.js ketika akhirnya dirilis akhir tahun ini. Tapi apa pendapat Anda
00:07:35tentang LiteRT.js? Apakah Anda sudah mencobanya? Apakah Anda akan menggunakannya? Beri tahu kami di komentar di bawah. Dan kawan,
00:07:40jika Anda menyukai jenis perincian teknis ini, harap beri tahu saya dengan menekan tombol suka itu
00:07:45di bawah video. Dan juga jangan lupa untuk berlangganan saluran kami. Ini adalah Andres dari
00:07:50BetterStack dan saya akan melihat Anda di video berikutnya.