Saya Menjalankan LLM Lokal di Raspberry Pi Berusia 12 Tahun (Berhasil!)

BBetter Stack
Computing/SoftwareConsumer Electronics

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.

Key Takeaway

Model bahasa besar Falcon H1 Tiny berukuran 90 juta parameter sukses dijalankan secara lokal pada Raspberry Pi generasi pertama berusia 12 tahun dengan menggunakan metode kompilasi silang llama.cpp arsitektur ARMv6 dan kuantisasi Q4 konvensional.

Highlights

  • Raspberry Pi generasi pertama tahun 2014 memiliki prosesor single-core 700 MHz dan RAM sebesar 512 MB.

  • Model Falcon H1 Tiny memiliki 90 juta parameter dengan arsitektur hibrida transformer plus Mamba.

  • Kuantisasi IQ atau importance quantization membutuhkan instruksi CPU modern sehingga tidak kompatibel dengan arsitektur ARMv6 lama milik Raspberry Pi.

  • Biner llama.cpp harus dikompilasi silang (cross-compile) di laptop menggunakan doccross untuk menghindari waktu kompilasi hingga 36 jam atau crash memori di Raspberry Pi.

  • Sistem operasi Raspberry Pi OS Lite 32-bit menghemat konsumsi memori karena berjalan tanpa antarmuka desktop.

  • Flag 'no M map' pada perintah inferensi memaksa model memuat langsung ke heap guna mencegah kegagalan alokasi memori linear pada sistem 32-bit.

  • Pengujian inferensi dengan model terkuantisasi 4-bit menghasilkan teks yang koheren dengan kecepatan satu token per tiga detik.

Timeline

Spesifikasi Perangkat Keras dan Kandidat Model LLM Mungil

  • Raspberry Pi generasi pertama rilisan tahun 2014 mengusung prosesor single-core 700 MHz dan kapasitas RAM 512 MB.
  • Falcon H1 Tiny merupakan model bahasa ringkas yang hanya memiliki 90 juta parameter.
  • Struktur internal Falcon H1 Tiny memanfaatkan arsitektur hibrida transformer plus Mamba.

Keterbatasan spesifikasi perangkat keras lama membuat komputasi modern menjadi tantangan besar. Falcon H1 Tiny yang dikembangkan oleh Technology Innovation Institute di Abu Dhabi dirancang khusus untuk menguji batas bawah ekstrem pemodelan bahasa. Pendekatan arsitektur hibrida ini serupa dengan metode yang diterapkan IBM pada model Granite 4 milik mereka.

Strategi Kuantisasi dan Tantangan Arsitektur ARMv6

  • Metode kuantisasi baru seperti importance quantization membutuhkan instruksi manipulasi bit kompleks dari CPU modern.
  • Chip ARMv6 pada Raspberry Pi generasi pertama tidak mendukung instruksi neon modern untuk akselerasi kecerdasan buatan.
  • Model Q4 gaya lama menjadi pilihan standar karena menggunakan metode kuantisasi warisan berukuran sedang yang ramah prosesor lama.

Kuantisasi model sangat diperlukan agar data dapat masuk ke dalam memori RAM yang sangat terbatas. Penggunaan metode baru justru memicu kegagalan karena chip ARMv6 tidak memiliki instruksi modern. Model Q4 memberikan rasio kecerdasan per megabyte terbaik dengan menjaga logika bahasa tetap utuh tanpa membebani prosesor.

Proses Kompilasi Silang dan Persiapan Sistem Operasi

  • Kompilasi langsung biner llama.cpp di Raspberry Pi dapat memakan waktu hingga 18 jam atau mengalami crash akibat kehabisan memori.
  • Alat doccross di laptop berfungsi untuk melakukan kompilasi silang biner yang menargetkan set instruksi ARMv6 dengan unit matematika VFP.
  • Sistem operasi Raspberry Pi OS Lite 32-bit membebaskan sebagian besar kapasitas RAM karena tidak menjalankan antarmuka desktop.

Proses kompilasi lokal langsung pada perangkat keras usang sangat tidak efisien. Solusinya adalah melakukan kompilasi silang di laptop berarsitektur modern untuk menghasilkan biner portabel tunggal. Pemasangan OS teringan tanpa desktop dikombinasikan dengan pra-konfigurasi Wi-Fi serta SSH mempermudah manajemen sistem dari jarak jauh.

Konfigurasi Build dan Pengiriman Berkas Model

  • Optimasi biner membutuhkan penonaktifan fitur shared libs, instruksi neon, dan OpenMP untuk menekan konsumsi memori.
  • Kompilasi silang menggunakan doccross di laptop selesai dalam waktu sekitar dua menit.
  • Berkas model Falcon versi 2-bit, 4-bit, dan 8-bit dikirim ke direktori tujuan di Raspberry Pi menggunakan protokol SCP.

Konfigurasi pembuatan biner harus dilakukan secara presisi dengan membuang segala fitur modern demi kompatibilitas arsitektur lama. Langkah penonaktifan OpenMP menjaga agar penggunaan memori tetap seringan mungkin. Setelah biner kustom siap, seluruh varian model kuantisasi diunduh dan dipindahkan satu per satu melalui jaringan lokal.

Uji Coba Inferensi dan Evaluasi Kinerja Model Lokal

  • Flag 'no M map' wajib diaktifkan untuk memaksa model memuat langsung ke heap sistem.
  • Model terkuantisasi 2-bit menghasilkan keluaran teks yang tidak masuk akal akibat kompresi bobot yang terlalu agresif.
  • Model terkuantisasi 4-bit dan 8-bit mampu memberikan respons yang koheren meskipun memiliki keterbatasan cakupan pengetahuan factual.

Pengujian dilakukan dengan membatasi ukuran konteks pada 128 token dan menentukan tepat satu thread kerja. Memory mapping bawaan llama.cpp dinonaktifkan karena sering gagal menemukan blok ruang alamat yang berdekatan pada sistem 32-bit berkapasitas RAM 512 MB. Model 4-bit sukses menunjukkan performa inferensi logis dengan kecepatan satu token per tiga detik, sementara keterbatasan 90 juta parameter pada versi 8-bit berdampak pada hilangnya akurasi informasi untuk topik-topik yang kurang populer.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video