2 poin oleh GN⁺ 2023-11-14 | 1 komentar | Bagikan ke WhatsApp

Tumpukan Rust+Wasm: alternatif kuat untuk Python

  • Aplikasi Rust+Wasm berukuran 1/100 dibanding Python, 100 kali lebih cepat, dan dapat dijalankan dengan aman di mana saja tanpa mengubah akselerasi perangkat keras sama sekali.
  • Rust adalah bahasa untuk AGI (kecerdasan umum buatan), dan digunakan untuk membuat program Rust sederhana yang menjalankan inferensi model llama2 pada kecepatan aslinya.
  • Aplikasi biner yang dikompilasi ke Wasm (2MB) sepenuhnya portabel di perangkat dengan berbagai akselerator perangkat keras.
  • Runtime Wasm (WasmEdge) menyediakan lingkungan eksekusi yang aman dan terlindungi di lingkungan cloud.

Instalasi dan menjalankan program Rust

  • Step 1. Instal WasmEdge dan plugin GGML: di perangkat Linux atau Mac, lakukan instalasi menggunakan perintah di bawah ini.
  • Step 2. Unduh aplikasi Wasm pra-build dan model: unduh model llama2 dalam format GGUF, dan sebagai contoh gunakan versi model chat-tuned llama2 7B yang dikuantisasi ke bobot 5-bit.
  • Step 3. Jalankan: gunakan WasmEdge untuk menjalankan aplikasi inferensi wasm, berikan model GGUF, lalu masukkan pertanyaan untuk berbicara dengan model.

Mengatur cara kerja model

  • Anda dapat mengatur cara berinteraksi dengan model menggunakan opsi baris perintah.
  • Misalnya, Anda dapat menentukan panjang konteks tertentu, menetapkan jumlah maksimum token yang diprediksi pada setiap respons, mencetak statistik, dan melakukan streaming respons model ke stdout.
  • Program ini menghasilkan sekitar 25 token per detik pada MacBook M2 kelas bawah.

Agen dan aplikasi LLM

  • Dengan Rust dan WasmEdge, dapat dibuat server API yang kompatibel dengan OpenAI.
  • Dengan ini, Anda dapat membuat agen dan aplikasi LLM menggunakan alat pengembangan yang kompatibel dengan OpenAI.

Keunggulan Rust+Wasm dibanding Python

  • Tumpukan Rust+Wasm adalah alternatif kuat untuk tumpukan Python bagi aplikasi inferensi AI, sekaligus menyediakan infrastruktur komputasi cloud.
  • Sangat ringan: aplikasi inferensi hanya berukuran 2MB termasuk semua dependensinya.
  • Sangat cepat: memberikan kecepatan native C/Rust di seluruh bagian aplikasi inferensi.
  • Portabilitas: aplikasi bytecode Wasm yang sama dapat berjalan di semua platform komputasi utama yang mendukung akselerasi perangkat keras yang heterogen.
  • Mudah dipasang, dikembangkan, dan dideploy: tidak ada dependensi yang rumit, dan Anda dapat membangun satu file Wasm dengan alat standar di laptop lalu mendeploy-nya ke mana saja.
  • Aman dan siap untuk cloud: runtime Wasm dirancang untuk mengisolasi kode pengguna yang tidak tepercaya, dapat dikelola oleh alat kontainer, dan mudah dideploy ke platform cloud-native.

Program inferensi Rust

  • Program inferensi demo ditulis dalam Rust dan dikompilasi ke Wasm.
  • Kode sumber Rust sangat sederhana, hanya terdiri dari 40 baris kode.
  • Program Rust mengelola input pengguna, melacak riwayat percakapan, mengubah teks ke template chat llama2, dan menjalankan tugas inferensi menggunakan API WASI NN.

Menjalankan di cloud atau edge

  • Setelah Anda memiliki file bytecode Wasm, Anda dapat mendeploy-nya ke perangkat apa pun yang mendukung runtime WasmEdge.
  • WasmEdge dipasang bersama plugin GGML, dan secara otomatis memanfaatkan berbagai akselerasi perangkat keras untuk menjalankan model llama2.

Langkah berikutnya

  • Alat WasmEdge GGML sudah tersedia saat ini dan digunakan oleh pelanggan cloud-native, 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 tugas level rendah yang bisa Anda kerjakan.

Model AI lainnya

  • WasmEdge dan WASI NN dapat membangun aplikasi inferensi yang ringan namun cepat, portabel, dan aman sebagai alternatif Python.
  • Sebagai contoh, proyek mediapipe-rs menyediakan API Rust+Wasm untuk model Tensorflow mediapipe milik Google.

Opini GN⁺

Hal terpenting dari tulisan ini adalah bahwa tulisan ini menawarkan alternatif terhadap Python untuk inferensi AI dengan menggunakan Rust dan WebAssembly (Wasm), yang memberikan keunggulan mencolok dalam ukuran, kecepatan, portabilitas, dan keamanan. Tumpukan teknologi ini menawarkan cara untuk mengintegrasikan infrastruktur komputasi cloud guna meningkatkan kinerja di berbagai perangkat dan lingkungan cloud, menyelesaikan masalah dependensi yang kompleks, serta menyederhanakan pengembangan dan deployment. Pendekatan ini berpotensi memberi dampak penting terutama pada masa depan edge computing dan inferensi AI, sehingga menjadi topik yang sangat menarik bagi mereka yang tertarik pada teknologi.

1 komentar

 
GN⁺ 2023-11-14
Opini Hacker News
  • Sambil menyatakan dukungan untuk Rust dan WASM, ia menunjukkan bahwa kode sebenarnya hanyalah skrip command line dasar yang ditulis dalam Rust, dan pemrosesan utamanya bergantung pada satu baris kode yang memanggil backend WASI-NN. Dalam kasus ini backend tersebut disediakan oleh runtime WasmEdge, dan WasmEdge sendiri ditulis dalam C++.
  • Bagi pengembang aplikasi, proyek ini menyediakan cara termudah untuk mengemas mesin inferensi menjadi berkas yang bisa didistribusikan. Bobot model pada dasarnya sudah portabel dan dapat diunduh sesuai kebutuhan.
  • Mengajukan pertanyaan apakah proyek ini pada dasarnya hanya membungkus llama.cpp, sambil membagikan pengalaman mengembangkan framework ML dengan Rust dan WebGPU.
  • Menunjukkan bahwa proyek yang bergantung pada wasm-nn sebenarnya tidak portabel, dan bisa jadi tidak dapat dijalankan jika tidak ada dukungan untuk perangkat keras tertentu. Ini merupakan situasi yang tidak sejalan dengan tujuan WASI.
  • Mempertanyakan keakuratan pernyataan bahwa build Mac OS dari plugin GGML menjalankan inferensi menggunakan API Metal di GPU, bukan di neural engine pada M1/M2/M3.
  • Mengungkapkan kekhawatiran bahwa meskipun cara untuk menjalankan arsitektur transformer dengan lebih efisien dan cepat di edge computing akan terus dikembangkan, kebutuhan VRAM akan menjadi hambatan utama dan dapat mencapai batas saat memuat model besar.
  • Menanyakan apakah proyek ini bisa berjalan di iPhone dalam keadaan offline. Ini dapat berguna dalam situasi ketika koneksi internet tidak tersedia.
  • Mengkritik pemasaran proyek seperti ini seolah revolusioner dalam ukuran atau kecepatan hanya karena menggunakan wrapper yang ditulis dalam bahasa lain. Padahal sebenarnya proyek tersebut berbasis llama.cpp, dan kecepatan inferensi maupun ukuran biner tidak dibatasi oleh pilihan wrapper.
  • Menanyakan bagaimana ukuran dapat diperkecil tanpa kehilangan akurasi ketika bobot model yang telah dilatih mencakup sebagian besar ukuran keseluruhan.
  • Inti kode sumber Rust sangat sederhana, terdiri dari 40 baris kode yang mengelola masukan pengguna, melacak riwayat percakapan, mengubah teks ke template chat llama2, dan menjalankan inferensi menggunakan API WASI NN.