LiteRT.js Mengatasi TensorFlow.js
LiteRT.js dengan WebGPU menjalankan inferens MobileNetV2 dalam masa 0.41 ms, memberikan 2,439 FPS pada GPU desktop M2 Max—lebih 25 kali lebih pantas daripada TensorFlow.js pada perkakasan yang sama. Jurang ini semakin melebar bagi model yang lebih besar, membawa pembelajaran mesin berasaskan web ke tahap prestasi yang dahulunya hanya dikhaskan untuk aplikasi natif.
Mengapa penanda aras ini penting
Pembangun telah menggunakan TensorFlow.js untuk inferens pada peranti, biasanya melalui backend WebGL. WebGL memetakan operasi tensor ke dalam saluran paip grafik 2-D pelayar; ia berfungsi di mana-mana sahaja tetapi tidak dibina untuk selari (parallelism) besar yang diperlukan oleh model pembelajaran mendalam. WebGPU, API grafik generasi seterusnya, memberikan akses terus ke unit pengkomputeran GPU. LiteRT.js adalah perpustakaan pertama yang mendedahkan enjin inferens disokong WebGPU untuk model TensorFlow-Lite, dan Google melaporkan peningkatan kelajuan sebanyak tiga kali ganda. Ujian bebas menunjukkan peningkatan yang lebih besar, menimbulkan persoalan sama ada WebGPU akan menjadi laluan lalai untuk ML web.
Bagaimana ujian dijalankan
Kami membuat penanda aras bagi dua model pengelasan imej—MobileNetV2 dan EfficientNet-Lite4—kedua-duanya ditukar kepada TensorFlow-Lite. Ujian dijalankan pada cip Apple-silicon M2 Max. Bagi setiap model, kami mengukur kependaman (latency) satu laluan ke hadapan (forward pass) melalui banyak iterasi dan melaporkan bingkai sesaat (FPS). Kami menjalankan model yang sama dengan TensorFlow.js pada backend WebGL dan merekodkan masa mula sejuk (cold-start time) setiap perpustakaan.
Keputusan: kelajuan dan permulaan
MobileNetV2
- LiteRT.js (WebGPU): kependaman 0.41 ms → 2,439 FPS
- TensorFlow.js (WebGL): kependaman 10.82 ms → 92 FPS
EfficientNet-Lite4
- LiteRT.js (WebGPU): kependaman 0.62 ms → 1,623 FPS
- TensorFlow.js (WebGL): tidak dilaporkan, tetapi MobileNetV2 sudah menunjukkan kelebihan >25×.
TensorFlow.js memerlukan kira-kira 10 saat (10,014 ms) untuk menyusun (compile) shader WebGL miliknya sebelum inferens pertama. LiteRT.js sedia dalam masa 4.3 ms, secara asasnya menghapuskan penalti mula sejuk untuk aplikasi interaktif.
Apabila kami meningkatkan saiz model sebanyak lima kali ganda, kependaman hanya meningkat sebanyak 50%, mengesahkan bahawa selari (parallelism) GPU menyerap sebahagian besar kerja tambahan tersebut. Hasilnya ialah sempadan prestasi yang membolehkan pelayar mengendalikan penstriman video masa nyata, tindanan (overlay) AR, atau prototaip pantas model penglihatan tanpa perlu ke pelayan (server round-trips).
Apa yang tersembunyi di sebalik angka tersebut
- Batching – Kebanyakan model TensorFlow-Lite mengunci dimensi batch kepada 1. Memasukkan pelbagai imej dalam satu panggilan tidak disokong secara terus, memaksa pembangun untuk melancarkan Web Workers atau menyusun input secara manual (manually pipeline).
- Pengurusan memori – LiteRT.js tidak melakukan pengutipan sampah (garbage-collect) pada tensor GPU secara automatik. Pembangun mesti memanggil
.delete()pada setiap tensor yang mereka cipta, atau berisiko menghabiskan memori GPU selepas beberapa ratus inferens. - Capaian perkakasan – WebGPU adalah stabil pada Chrome dan Firefox desktop. Pelayar mudah alih—termasuk Chrome pada Android dan Safari pada iOS—hanya mendedahkan API ini di sebalik bendera eksperimen atau tidak langsung. Pada platform tersebut, backend WASM kekal sebagai satu-satunya laluan yang tersedia secara universal, tetapi ia jauh lebih perlahan untuk model yang lebih besar.
Kekangan ini bermakna walaupun kelajuan mentah sangat mengagumkan, usaha kejuruteraan untuk mencapainya boleh menjadi agak sukar.
Had dan pertukaran (trade-offs)
Backend WebGL TensorFlow.js masih menawarkan keserasian hampir universal. Seorang pembangun yang menyasarkan audiens campuran—desktop, Android, iOS—boleh bergantung pada satu laluan kod tunggal yang berjalan di mana-mana sahaja, walaupun dengan daya pemprosesan (throughput) yang lebih rendah. Backend WASM berjalan pada hampir semua perkakasan tetapi ketinggalan di belakang WebGPU bagi model yang lebih besar yang diukur di sini.
LiteRT.js menyerlah apabila sasarannya ialah persekitaran desktop dengan WebGPU yang diaktifkan. Ia menjalankan model .tflite secara terus, membolehkan pembangun mengambil model daripada Hugging Face atau Kaggle tanpa penukaran, sekali gus mengekalkan kuantisasi dan prestasi asal. Pertukarannya ialah skop penggunaan yang lebih sempit dan keperluan untuk pengendalian sumber yang teliti.
Apa yang perlu dipertimbangkan oleh pembangun
- Platform sasaran – Untuk alat desktop berasaskan web sahaja (cth., aplikasi reka bentuk yang menggunakan pemindahan gaya dalam masa nyata), WebGPU dengan LiteRT.js berkemungkinan besar adalah pilihan terbaik.
- Saiz model – Model yang lebih besar dan berat pengkomputeran mendapat manfaat paling banyak daripada selari (parallelism) GPU; model yang lebih kecil mungkin tidak mewajarkan usaha kejuruteraan tambahan.
- Disiplin memori – Rancang pemadaman tensor secara eksplisit atau bungkus panggilan inferens dalam skop yang membebaskan sumber secara automatik.
- Strategi sandaran (fallback) – Sediakan sandaran WASM atau WebGL untuk pelayar yang tidak dapat mengaktifkan WebGPU, bagi memastikan aplikasi kekal berfungsi untuk audiens yang lebih luas.
Kesimpulan
LiteRT.js membuktikan WebGPU boleh melonjakkan inferens berasaskan web ke dalam julat sub-milisaat, memberikan kelajuan lebih daripada 25 × kelajuan TensorFlow.js pada GPU desktop. Teknologi ini masih dalam proses pematangan, dan pembangun perlu menangani had pemprosesan berkelompok, pembersihan memori secara manual, serta sokongan mudah alih yang terhad. Bagi pengalaman mengutamakan desktop yang memerlukan prestasi masa nyata, perpustakaan baharu ini menawarkan hala tuju yang meyakinkan; manakala untuk capaian rentas platform, backend WebGL dan WASM yang lebih lama tetap penting.
