Saya Menjalankan LLM Lokal di Raspberry Pi Berusia 12 Tahun (Berhasil!)
BBetter Stack
컴퓨터/소프트웨어가전제품/카메라
Transcript
00:00:00Ini adalah Raspberry Pi generasi pertama, yang dirilis pada tahun 2014.
00:00:05Alat ini memiliki prosesor single-core 700 MHz dan RAM 512 MB.
00:00:12Menurut standar modern, ini pada dasarnya hanyalah sebuah kalkulator.
00:00:16Namun hari ini, kita akan melihat apakah kita bisa memacu perangkat keras
00:00:21berusia 12 tahun ini hingga batas maksimalnya dengan menjalankan model bahasa besar secara lokal.
00:00:26Di video ini, saya akan menunjukkan model mungil mana yang bisa dijalankan di Raspberry Pi,
00:00:30kita akan melihat performanya, dan saya akan menunjukkan cara menginstal semua dependensi yang diperlukan
00:00:35agar Anda bisa mencobanya sendiri.
00:00:37Ini akan sangat menyenangkan, jadi mari kita mulai.
00:00:40Sejujurnya, saya tidak menyangka akan bisa menemukan model
00:00:47yang cukup ringan untuk arsitektur ini.
00:00:49Namun setelah menelusuri lebih dalam, saya menemukan satu kandidat.
00:00:52Inilah Falcon H1 Tiny.
00:00:54Ini adalah model yang sangat ringkas dengan hanya 90 juta parameter.
00:00:59Model ini dikembangkan oleh Technology Innovation Institute di Abu Dhabi
00:01:03khusus untuk mengeksplorasi batas bawah ekstrem dari pemodelan bahasa.
00:01:08Tapi bagaimana mereka bisa membuat model sekecil itu?
00:01:10Apakah ada semacam ramuan teknis rahasia di baliknya?
00:01:13Yah, sebenarnya tidak juga.
00:01:14Mereka pada dasarnya menggunakan arsitektur hibrida transformer plus Mamba yang sama
00:01:19seperti yang digunakan perusahaan seperti IBM untuk model Granite 4 mungil mereka.
00:01:24Yang juga sudah saya buatkan videonya jika Anda ingin menonton.
00:01:27Tapi inilah masalahnya.
00:01:28Agar berhasil memasukkan model ini ke dalam memori, kita harus bicara tentang kuantisasi.
00:01:33Sekarang, model Falcon tersedia dalam versi 2-bit, 4-bit, dan 8-bit.
00:01:38Anda mungkin tergoda untuk mencoba IQ atau importance quantization yang sangat hemat.
00:01:43Tapi ada kendalanya.
00:01:45Metode-metode baru tersebut mengandalkan manipulasi bit yang kompleks
00:01:49yang membutuhkan instruksi CPU modern agar efisien.
00:01:52Pada chip ARMv6 jadul di Raspberry Pi kita, ini tidak akan berhasil.
00:01:57Jadi sebagai gantinya, kita harus menggunakan model Q4 gaya lama
00:02:01yang merupakan standar emas untuk kasus kita.
00:02:04Ini menggunakan metode kuantisasi warisan berukuran sedang
00:02:07yang benar-benar bisa ditangani prosesor Pi tanpa hambatan.
00:02:11Ini memberikan rasio kecerdasan per megabyte terbaik sambil menjaga logika tetap utuh.
00:02:17Namun menjalankan model ini di Raspberry Pi generasi pertama bukanlah tugas yang sepele.
00:02:22Karena Pi menggunakan arsitektur ARMv6,
00:02:26ia tidak memiliki instruksi neon modern yang menjadi tumpuan hampir semua pustaka AI.
00:02:31Untungnya, ada llama.cpp yang bisa kita gunakan untuk menjalankan inferensi.
00:02:36Tapi untuk itu, kita harus mengompilasi biner-nya khusus untuk ARMv6 kita.
00:02:42Dan jika Anda mencoba mengompilasinya langsung di Pi,
00:02:45mungkin akan memakan waktu 18 jam bagi kompiler untuk selesai.
00:02:49Itu pun jika tidak crash karena kesalahan kehabisan memori.
00:02:53Jadi untuk menyiasatinya, kita harus sedikit kreatif.
00:02:56Kita perlu melakukan cross-compile biner ini di laptop kita sebelumnya menggunakan doc_cross,
00:03:02khusus menargetkan set instruksi ARMv6 dengan unit matematika VFP diaktifkan,
00:03:08lalu menyalinnya melalui SSH agar kita bisa langsung masuk ke tahap inferensi.
00:03:13Jadi itulah yang akan kita lakukan sekarang.
00:03:15Pertama, kita perlu mem-flash OS teringan yang mungkin ke Pi kita menggunakan Raspberry Pi imager.
00:03:22Untuk board dengan RAM hanya 512 megabyte, setiap megabyte sangatlah berarti.
00:03:28Jadi saya akan memilih Raspberry Pi OS Lite, versi 32-bit,
00:03:32karena tidak memiliki antarmuka desktop dan berjalan dengan memori yang jauh lebih sedikit
00:03:38daripada OS standar, sehingga hampir semua RAM kita tersedia untuk menjalankan model.
00:03:44Satu catatan penting lagi, pastikan untuk menggunakan pengaturan lanjutan
00:03:47untuk melakukan pra-konfigurasi Wi-Fi dan mengaktifkan SSH.
00:03:51Karena pada papan lama ini, jauh lebih mudah untuk mengelola semuanya dari jarak jauh,
00:03:55sehingga Anda tidak perlu berurusan dengan terminal lokal yang lambat.
00:03:58Setelah Pi menyala dan kita masuk melalui SSH, kita perlu menangani masalah ARMv6.
00:04:05Jika kita mencoba mengompilasi llama CPP langsung di sini,
00:04:08Pi akan menghabiskan waktu satu setengah hari hanya untuk memproses header.
00:04:13Jadi sebagai gantinya, kita akan melakukannya di laptop biasa untuk mempercepat proses.
00:04:18Mari kita klon kode sumber llama CPP dan buat direktori build khusus
00:04:23untuk menyimpan hasil kompilasi yang akan kita gunakan di Raspberry Pi.
00:04:28Kini, ada masalah lain.
00:04:29Mac saya menggunakan ARMv8, yang merupakan versi 64-bit, bukan ARMv6 32-bit.
00:04:37Keduanya memiliki set instruksi yang berbeda.
00:04:40Jadi untuk mengompilasi biner khusus untuk Pi, kita perlu menggunakan doccross,
00:04:45yaitu toolchain cross-compiler yang berjalan di Mac saya,
00:04:48tapi menghasilkan biner khusus untuk arsitektur lama milik Pi.
00:04:53Berikutnya, kita perlu mengonfigurasi build-nya.
00:04:55Di sinilah kita harus sangat presisi.
00:04:58Kita perlu menyertakan beberapa flag yang sangat spesifik.
00:05:00Pertama, kita harus mematikan shared libs untuk membuat biner portabel tunggal.
00:05:05Lalu kita harus mematikan neon karena Pi kita tidak punya instruksi matematika modern itu.
00:05:10Dan kita perlu menonaktifkan OpenMP agar penggunaan memori tetap seringan mungkin.
00:05:15Kita benar-benar membuang segala fitur modern
00:05:18untuk memastikan biner tersebut kompatibel dengan board Pi jadul kita.
00:05:22Dan sekarang jika kita klik build, dalam waktu sekitar dua menit, kita akan mendapatkan
00:05:26biner llama completion yang teroptimasi dan siap disalin ke board Pi kita.
00:05:31Sekarang saya akan menggunakan SSH untuk terhubung langsung ke Pi melalui jaringan,
00:05:35membuat direktori baru di Pi, lalu menggunakan SCP untuk menyalin biner kustom kita ke sana.
00:05:42Dan satu hal terakhir yang perlu kita lakukan.
00:05:44Mari kita unduh model Falcon versi 2-bit, 4-bit, dan 8-bit yang dikuantisasi secara lama,
00:05:50karena kita akan menguji semuanya secara berurutan.
00:05:53Lalu salin semuanya ke Pi satu per satu melalui jaringan ke dalam folder models.
00:05:58Sekarang sampai pada bagian yang menyenangkan.
00:05:59Mari beralih ke Pi kita dan jalankan tes inferensi pertama.
00:06:03Kita akan mulai dengan kompresi yang paling agresif, yaitu model terkuantisasi 2-bit.
00:06:07Di sini kita perlu menjalankan perintah panjang ini.
00:06:10Pada dasarnya yang saya lakukan di sini adalah memberinya perintah sederhana
00:06:13“Halo, apa kabar?” dan membatasi outputnya pada 32 token.
00:06:18Kita menentukan tepat satu thread karena, yah, hanya itu yang kita punya.
00:06:22Kita juga menjaga ukuran konteks tetap kecil pada 128 token untuk menghemat setiap byte RAM yang ada.
00:06:29Tapi flag yang paling penting di sini adalah no M map.
00:06:32Biasanya, llama CPP menggunakan memory mapping untuk memuat model, yang bagus untuk GPU kelas atas,
00:06:38tapi ini adalah mimpi buruk bagi board Pi kita.
00:06:41Pada sistem 32-bit dengan RAM hanya 512 megabyte,
00:06:45M map bisa gagal jika tidak bisa menemukan blok ruang alamat yang berdekatan.
00:06:50Jadi dengan menonaktifkannya, kita memaksa model untuk memuat langsung ke heap,
00:06:55memberikan kita kontrol yang jauh lebih stabil atas memori kita yang terbatas.
00:06:58Setelah itu selesai, mari jalankan perintahnya.
00:07:00Dan itu dia, token pertama kita muncul.
00:07:03Seperti yang kita lihat di sini, versi 2-bit ini sangat kesulitan.
00:07:08Pertama-tama, terlihat ia memproses satu token kira-kira setiap tiga detik,
00:07:14yang memang sudah diduga dari sebuah board Raspberry Pi lama.
00:07:18Namun yang lebih penting, jawabannya benar-benar tidak masuk akal.
00:07:21Pada model 90 juta parameter, bobotnya sangat terkompresi
00:07:25hingga logika bahasanya pada dasarnya hancur.
00:07:28Hampir tidak koheren, tapi secara teknis ini berfungsi.
00:07:32Sekarang mari kita lihat apa yang terjadi jika kita menggantinya dengan model 4-bit.
00:07:35Dan lihat itu, sekarang kita mendapatkan balasan salam yang koheren.
00:07:40Jadi, ini sebuah keberhasilan.
00:07:42Kita sekarang memiliki model AI asli yang berjalan secara lokal di Pi
00:07:47dan merespons perintah kita secara logis.
00:07:49Hore!
00:07:50Sekarang mari kita dorong lebih jauh lagi.
00:07:53Mari lihat apakah Pi bisa menangani model 8-bit.
00:07:56Kali ini saya akan menanyakan sesuatu yang lebih cerdas,
00:07:59seperti apa ibu kota Albania?
00:08:02Dan, yah, jawabannya salah karena ibu kota Albania adalah Tirana
00:08:08dan itu jelas tidak benar secara faktual.
00:08:10Tapi jika saya tanya apa ibu kota Belgia, ia menjawab dengan benar.
00:08:15Jadi ini menunjukkan sesuatu yang sangat menarik kepada kita.
00:08:17Tampaknya pemangkasan hingga 90 juta parameter ada harganya.
00:08:22Mungkin ia punya pengetahuan akurat tentang negara-negara besar yang lebih populer,
00:08:26tapi kurang pengetahuan tentang negara-negara dan mungkin topik-topik yang kurang dikenal.
00:08:31Dan itulah sifat alami dari sebuah pengetahuan.
00:08:33Ada jumlah pengetahuan terbatas yang bisa dimasukkan ke dalam 90 juta parameter tersebut.
00:08:38Meski begitu, hasilnya sangat keren.
00:08:41Dan ini adalah konfirmasi bahwa ya, memang ada model AI yang cukup kecil
00:08:46dan cukup ringan untuk berjalan di Raspberry Pi berusia 12 tahun.
00:08:50Apakah ini cepat?
00:08:51Tentu saja tidak.
00:08:52Apakah ini presisi?
00:08:53Mungkin tidak.
00:08:54Haruskah Anda menggunakannya di tahap produksi?
00:08:55Sepertinya tidak.
00:08:57Kecuali jika Anda ingin membangun robot yang sangat, sangat, sangat, sangat lambat.
00:09:02Tapi yang terpenting, sekarang kita tahu bahwa secara teoritis hal itu mungkin.
00:09:06Jadi pada dasarnya, hanya itu yang ingin saya buktikan dalam video ini.
00:09:09Dan sejujurnya, eksperimen ini sangat menyenangkan.
00:09:13Jadi begitulah, kawan-kawan.
00:09:14Itulah model Falcon H1 Tiny.
00:09:17Mungkin model AI terkecil yang ada saat ini.
00:09:20Dan sekarang kita tahu bahwa mereka memang cukup kecil untuk berjalan di Raspberry Pi generasi pertama,
00:09:25yang mana sangat keren.
00:09:27Saya tak henti-hentinya merayakan betapa kerennya fakta ini.
00:09:30Meskipun implementasi praktisnya tidak berguna, ini tetap keren.
00:09:35Beri tahu saya jika Anda punya pemikiran lucu,
00:09:37komentar, atau catatan tentang apa yang baru saja Anda saksikan.
00:09:40Tuliskan di kolom komentar di bawah ini.
00:09:42Dan teman-teman, jika kalian suka jenis bedah teknis seperti ini,
00:09:45tolong beri tahu saya dengan menekan tombol like di bawah video.
00:09:49Dan jangan lupa juga untuk berlangganan ke saluran kami.
00:09:51Saya Andris dari Better Stack, sampai jumpa di video-video berikutnya.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video