- Stack Rust+WASM bisa menjadi alternatif kuat bagi Python untuk inferensi AI
- Dibandingkan Python, aplikasi Rust+Wasm berukuran 1/100, 100 kali lebih cepat, dan dapat berjalan dengan aman di mana saja dengan akselerasi hardware penuh tanpa mengubah kode biner
- Rust adalah bahasa untuk AGI
- Jika kita menulis program Rust sederhana untuk menjalankan inferensi LLama2 pada kecepatan native
- Setelah dikompilasi ke Wasm, binernya hanya 2MB, tetapi sepenuhnya portabel ke akselerator hardware heterogen
- Selain itu, runtime Wasm (WasmEdge) menyediakan lingkungan eksekusi yang aman untuk kebutuhan keamanan di cloud. Ini bekerja mulus dengan tool container sehingga aplikasi portabel dapat diorkestrasi dan dijalankan di berbagai perangkat
Mengapa bukan Python?
- LLM seperti llama2 umumnya dilatih dengan Python (mis: PyTorch, Tensorflow, JAX)
- Namun, menggunakan Python untuk aplikasi inferensi yang mencakup sekitar 95% komputasi AI adalah kesalahan besar
- Paket Python memiliki dependensi yang kompleks. Sulit disiapkan dan digunakan
- Dependensi Python sangat besar. Image Docker untuk Python atau PyTorch biasanya berukuran beberapa GB hingga puluhan GB, dan ini menjadi masalah terutama saat menjalankan inferensi AI di server atau perangkat edge
- Python adalah bahasa yang sangat lambat. Bisa sampai 35.000 kali lebih lambat dibanding bahasa terkompilasi seperti C, C++, dan Rust
- Karena Python lambat, sebagian besar workload nyata harus didelegasikan ke shared library native di bawah wrapper Python
- Karena itu, aplikasi inferensi Python sangat bagus untuk demo, tetapi sangat sulit dimodifikasi secara internal agar sesuai dengan kebutuhan bisnis yang spesifik
- Karena ketergantungan yang tinggi pada library native dan manajemen dependensi yang kompleks, sangat sulit mem-porting program AI Python ke banyak perangkat sambil tetap memanfaatkan kemampuan hardware unik tiap perangkat
- Paket Python yang umum dipakai dalam toolchain LLM sering kali saling bertabrakan secara langsung
- Chris Lattner, yang dikenal lewat LLVM, TensorFlow, dan bahasa Swift, memberikan wawancara menarik di sebuah podcast startup minggu ini, dan ia menjelaskan mengapa Python bagus untuk pelatihan model tetapi merupakan pilihan yang keliru untuk aplikasi inferensi
Keunggulan Rust+Wasm
- Stack Rust+Wasm menyediakan infrastruktur komputasi cloud terpadu, dari perangkat ke edge cloud, server on-premise, hingga public cloud
- Ini adalah alternatif kuat untuk stack Python bagi aplikasi inferensi AI, dan tidak mengherankan jika Elon Musk menyebut Rust sebagai bahasa untuk AGI
- Sangat ringan: aplikasi inferensi hanya 2MB termasuk semua dependensi. Ini bahkan tidak sampai 1% dari ukuran container PyTorch pada umumnya
- Sangat cepat: memberikan kecepatan native C/Rust di seluruh bagian aplikasi inferensi, termasuk prapemrosesan, operasi tensor, dan pascapemrosesan
- Portabel: aplikasi bytecode Wasm yang sama dapat dijalankan di semua platform komputasi utama yang mendukung akselerasi hardware heterogen
- Mudah disiapkan, dikembangkan, dan di-deploy: tidak ada lagi dependensi yang rumit. Anda bisa membangun satu file Wasm dengan tool standar di laptop dan men-deploy-nya ke mana saja
- Aman dan mendukung cloud: runtime Wasm dirancang untuk mengisolasi kode pengguna yang tidak tepercaya. Runtime Wasm dapat dikelola dengan tool container dan mudah di-deploy ke platform cloud-native
Demo inferensi Rust
- Ditulis dalam 40 baris kode Rust dan dikompilasi ke Wasm
- Setelah bytecode Wasm tersedia, ia dapat di-deploy ke perangkat apa pun yang mendukung runtime WasmEdge
- Plugin WasmEdge GGML berbasis llama.cpp secara otomatis memanfaatkan akselerasi hardware pada perangkat untuk menjalankan model llama2
Langkah berikutnya
- Tooling WasmEdge GGML sudah tersedia saat ini dan memang sudah digunakan oleh pelanggan cloud-native nyata, tetapi masih berada pada tahap awal
- Jika Anda tertarik berkontribusi pada proyek open source dan membantu membentuk arah infrastruktur inferensi LLM masa depan, ada beberapa area kontribusi potensial
- Menambahkan plugin GGML untuk lebih banyak hardware dan platform OS: seperti TPU, ARM NPU, dan chip AI khusus lainnya di Linux dan Windows
- Mendukung lebih banyak konfigurasi llama.cpp: saat ini sudah mendukung penerusan sebagian opsi konfigurasi dari Wasm ke plugin GGML, tetapi tujuannya adalah mendukung semua opsi yang disediakan GGML
- Mendukung API WASI NN untuk lebih banyak bahasa yang kompatibel dengan Wasm: khususnya Go, Zig, Kotlin, JavaScript, C, dan C++
5 komentar
Pendekatan paling realistis yang bisa diambil Apple, yang saat ini tertinggal di AI, tampaknya adalah situasi seperti di artikel utama, yaitu mesin inferensi S/W yang dioptimalkan dipercepat oleh NPU pada chip seri A iPhone, lalu file model foundation dimasukkan utuh ke iPhone. Belakangan, di kalangan akademik/industri, pendapat yang dominan adalah bahwa dalam performa AI, data dan fine-tuning lebih penting daripada ukuran, dan pada Llama2 juga banyak penilaian bahwa performa fine-tuning-nya cukup baik, sehingga saya rasa sangat mungkin untuk terus menurunkan model yang telah dilatih dengan baik ke edge device. Dari sudut pandang itu, strategi memasukkan semuanya ke iPhone tampak cukup realistis.
Apakah WASM memang sepopuler ini? Tapi bukankah Python seharusnya dibandingkan dengan Mojo?
Saya setuju. Mojo masih harus dianggap berada pada tahap eksperimental.
Mojo memang belum dirilis secara resmi, tetapi Rust sudah menjadi bahasa yang cukup matang dan sedang menggantikan berbagai bagian dalam praktik kerja nyata.
GN⁺: Menjalankan inferensi Llama2 yang cepat dan portabel di edge heterogen
Silakan lihat juga ringkasan GN⁺ dan komentar Hacker News.