Mikrokontroler Seharga $8 Ini Menjalankan Language Model Secara Lokal!

Transcript

00:00:00Ini adalah model bahasa 28,9 juta parameter yang sedang menghasilkan teks kata demi kata
00:00:08di atas chip seharga sekitar delapan dolar. Tanpa Wi-Fi, tidak ada yang dikirim ke server,
00:00:14semuanya terjadi di dalam ESP32S3, mikrokontroler dengan RAM yang lebih kecil dari komputer
00:00:22tahun 90-an. Ini luar biasa. Bagaimana ini bisa terjadi? Apa rahasia di baliknya dan bagaimana
00:00:29kita bisa membuat sesuatu yang serupa? Pertanyaan-pertanyaan bagus itu akan kita bahas di video
00:00:34hari ini. Ini bakal sangat seru, jadi mari kita mulai. ESP32S3 adalah chip yang memberi Anda
00:00:46512 kilobita SRAM, yaitu jumlah memori cepat yang digunakan chip ini untuk komputasi. Normalnya,
00:00:54jika Anda mencoba menjalankan LLM di dalamnya, seluruh model harus muat di sana.
00:01:00Model bahasa terakhir yang berhasil dijalankan di chip seperti ini maksimal 260.000 parameter. Jadi model
00:01:08ini menampung sekitar 110 kali lebih banyak, dan pengembang Ukraina Slava S adalah orang yang berhasil melakukannya.
00:01:16Lantas apa trik rahasianya? Bagaimana mereka melakukannya? Bagaimana memuat model 28,9 juta parameter ke chip $8?
00:01:24Solusinya berasal dari ide yang digunakan Google pada Gemma. Namanya per-layer embeddings. Sebagian besar
00:01:31parameter model bahasa tidak melakukan komputasi apa pun. Parameter tersebut tersimpan di tabel embedding yang hanya dibaca.
00:01:37Jika sebagian besar parameter hanya dibaca saja, mereka tidak butuh memori cepat. Jadi Anda bisa
00:01:44membiarkan tabel itu tersimpan di memori flash yang lambat dan murah, lalu hanya mengambil baris yang dibutuhkan token saat ini.
00:01:52Sedangkan bagian kecil yang benar-benar melakukan komputasi dan memikirkan token berikutnya, seperti attention head dan feed forward, tetap berada di SRAM.
00:01:59Oke, itu bagian komputasinya. Namun pertanyaannya tetap: Bagaimana kita memasukkan model sebesar itu ke chip sekecil ini?
00:02:05Tabel 25 juta baris tersimpan di memori flash. Dan itu adalah bagian terbesar dari keseluruhan
00:02:1228,9 juta parameter model. Memori flash pada chip ini sangat murah dan berkapasitas besar, yaitu 16 megabita.
00:02:20Jadi alih-alih memaksakan tabel tersebut masuk ke SRAM sebesar 512 kilobita,
00:02:26tabel itu tetap dibiarkan berada di flash. Kita hanya mengambil sekitar enam baris, satu untuk setiap enam lapisan model.
00:02:33Itu secara total hanya sekitar 450 bita. Sebelum Anda terlalu senang, saya harus menyampaikan bahwa
00:02:40ini adalah model yang sangat sederhana dan terbatas. Ini tidak seperti LLM tipe GPT pada umumnya. Model ini tidak bisa menghasilkan kode
00:02:47atau menjawab pertanyaan tentang topik yang rumit. Karena jika Anda mencoba melatih model biasa berukuran ini
00:02:53pada himpunan data normal, 28 juta parameter hanya akan menghasilkan racauan tak bermakna. Namun model ini sendiri dilatih menggunakan
00:03:01Tiny Stories, himpunan data yang dibuat oleh para peneliti di Microsoft, yang sengaja ditulis cukup sederhana sehingga
00:03:08model kecil dengan beberapa juta parameter pun dapat belajar menulis cerita secara koheren. Dan menjalankannya dalam bahasa C murni,
00:03:15di atas chip tanpa sistem operasi dan tanpa interpreter Python, ide tersebut berasal dari proyek Llama2.c milik Andrei
00:03:22Karpathy yang terkenal. Proyek itu menunjukkan bahwa kita bisa melatih model bahasa kecil dan melakukan
00:03:28inferensi hanya menggunakan beberapa ratus baris kode C portabel. Dan itulah cetak biru utama dari
00:03:35seluruh proyek ini. Tanpa Karpathy, hal ini mungkin tidak akan pernah terwujud. Jadi begitulah cara kerjanya secara
00:03:40singkat. Sekarang mari kita coba membuatnya sendiri dan menjalankannya di chip untuk melihat performanya.
00:03:47Untuk membuatnya sendiri, hal pertama yang Anda butuhkan adalah perangkat keras yang tepat, khususnya ESP32S3
00:03:54dengan flash 16 megabita dan PSRAM 8 megabita. Yaitu varian N16R8. Dan ini sangat
00:04:03penting karena ingat ketika kita membahas tabel 25 juta baris yang berada di flash? Tabel itu sendiri,
00:04:10setelah dilatih dan diekspor, berukuran sekitar 15 megabita. Sedangkan papan dengan flash 4 atau 8 megabita
00:04:17jelas tidak akan muat. Jadi jika Anda mencari papan untuk praktik, itulah spesifikasi utama yang harus
00:04:22Anda periksa terlebih dahulu. Saat saya pertama kali mengikuti instruksi resmi proyek ini, penyiapannya tersebar
00:04:28di beberapa berkas berbeda dan mengasumsikan banyak hal yang belum saya ketahui sebelumnya. Jadi
00:04:34alih-alih memandu Anda persis seperti yang tertulis, saya menyusun satu skrip serbaguna yang melakukan
00:04:40semuanya. Memeriksa papan, memasang toolchain, menyiapkan data, melatih, mengekspor, memverifikasi,
00:04:47membuat build, dan mem-flash semuanya sekaligus. Mari kita jalankan skrip tersebut. Satu info penting,
00:04:55jika Anda ikutan mencoba, seluruh skrip butuh waktu sekitar 25 menit sampai selesai. Dan itu kurang lebih sama
00:05:00dengan waktu jika dilakukan langkah demi langkah. Ini karena ada sangat banyak perintah terpisah
00:05:05yang harus Anda awasi. Sebagian besar waktu sebenarnya dihabiskan untuk melatih model tiny stories.
00:05:11Proses itu memakan waktu sekitar 13 menit di MacBook saya. Setelah pelatihan selesai, Anda akan melihat LED pada panel
00:05:18mulai berkedip. Itu menandakan bahwa kita akan memuat modelnya. Begitu memuatnya selesai,
00:05:24di sini kita bisa melihat contoh dasar pertama dari cerita tentang seorang gadis kecil. Dan benar,
00:05:29kita mendapatkan sembilan token per detik. Namun Anda akan menyadari bahwa pada titik tertentu,
00:05:33cerita tersebut akan mengulang dari awal lagi. Jadi model ini masuk ke dalam semacam perulangan. Jika Anda ingin
00:05:39memberikan prompt kustom, saya juga menyertakan skrip contoh yang bisa Anda gunakan untuk menjalankan prompt kustom
00:05:44Anda sendiri. Untuk contoh ini, mari kita mulai cerita tentang seekor robot. Hal lain yang perlu dicatat adalah jika Anda
00:05:50mengubah prompt, Anda harus mem-flash ulang ESP32 tersebut. Itu adalah keterbatasan dari metode ini.
00:05:56Metode ini hanya bisa memainkan satu prompt yang di-flash di awal secara bergantian. Seperti yang Anda lihat,
00:06:02robot tersebut memang disebutkan di dalam cerita. Dan ceritanya memang sedikit berbeda kali ini.
00:06:08Namun perhatikan apa yang terjadi setelah akhir paragraf. Ceritanya kembali ke gadis kecil
00:06:13tadi. Saya tidak tahu pasti mengapa ini terjadi. Namun yang jelas, model cenderung kembali ke satu
00:06:19cerita spesifik tentang gadis kecil itu. Mari kita coba contoh lain. Kali ini mari kita gunakan
00:06:24kalimat terkenal yang ditulis di awal setiap film Star Wars. Mari kita lihat ke mana kalimat itu akan
00:06:30membawa kita. Ini contoh yang menarik. Kita bisa melihat bahwa model tersebut langsung beralih kembali ke
00:06:36naratif gadis kecil lagi. Asumsi saya, untuk model berukuran sebesar ini, ia bahkan tidak paham
00:06:42apa itu galaksi. Mungkin itu sebabnya model tersebut mengabaikan prompt spesifik kita dalam kasus ini. Dan
00:06:47sekali lagi, kita melihat paragraf berikutnya memulai cerita yang sama. Meskipun eksperimen ini
00:06:53mengesankan dan melihat sebuah model menghasilkan sembilan token per detik di mikrokontroler kecil sungguh mengagumkan,
00:06:59ini masih sebatas bukti konsep yang sangat terbatas. Seperti yang kita lihat, apa pun yang Anda tanyakan ke model, ia akan
00:07:06selalu kembali ke bercerita karena memang itulah data latihnya. Namun jika Anda merasa pengujian ini
00:07:11menarik, saya juga membuat video lain di topik serupa saat menguji apakah Raspberry Pi generasi
00:07:18pertama bisa menjalankan LLM sungguhan secara lokal. Silakan tonton video itu jika Anda tertarik. Begitulah,
00:07:24teman-teman. Begitulah cara menjalankan model bahasa 28,9 juta parameter di chip ESP32. Kita sudah
00:07:32mengujinya. Dan berhasil. Apresiasi untuk Slava yang telah membuat proyek ini. Bagaimana pendapat Anda tentang eksperimen ini?
00:07:38Apakah Anda melihat contoh dunia nyata di mana penerapan seperti ini bisa berguna? Tuliskan
00:07:43pendapat Anda di kolom komentar di bawah. Dan teman-teman, jika Anda menyukai pembahasan teknis seperti ini,
00:07:48beritahu saya dengan menekan tombol suka di bawah video ini. Jangan lupa juga untuk
00:07:53berlangganan ke saluran kami. Saya Andres dari Betterstack, sampai jumpa di video-video berikutnya.

Description

A developer got a 28.9-million-parameter language model running entirely offline on an $8 ESP32-S3 microcontroller, a chip with just 512KB of RAM, using a memory trick borrowed from Google's Gemma architecture called Per-Layer Embeddings. In this video we break down how the trick actually works, reproduce the entire training and flashing process ourselves from a bare board, and put the model through some prompt tests of our own, including one it stubbornly refuses to follow. If you're curious how far you can push AI onto hardware that was never meant to run it, this one's for you. 🔗 Relevant Links Esp32-ai: https://github.com/slvDev/esp32-ai build_and_flash.sh: https://gist.github.com/andrisgauracs/ce459630660f82cf4ca7e43aa81604c7 run_prompt.sh: https://gist.github.com/andrisgauracs/e84b842d0f5e301485ecbf6654b0838e ❤️ More about us Radically better observability stack: https://betterstack.com/ Written tutorials: https://betterstack.com/community/ Example projects: https://github.com/BetterStackHQ 📱 Socials Twitter: https://twitter.com/betterstackhq Instagram: https://www.instagram.com/betterstackhq/ TikTok: https://www.tiktok.com/@betterstack LinkedIn: https://www.linkedin.com/company/betterstack 📌 Chapters: 00:00 Running an LLM on an $8 Chip 00:43 The ESP32’s Memory Problem 01:12 How Did They Make It Work? 01:30 The Per-Layer Embedding Trick 02:04 Fitting 28.9 Million Parameters 02:36 What This Tiny LLM Can Actually Do 02:58 TinyStories and Karpathy’s llama2.c 03:41 Building It Ourselves 03:47 Choosing the Right ESP32 04:23 The One-Shot Installation Script 04:52 Training and Flashing the Model 05:24 Testing the LLM at 9 Tokens per Second 05:38 Trying Custom Prompts 06:21 The Star Wars Prompt Test 06:51 Is an ESP32 LLM Actually Useful? 07:23 Final Thoughts

Community Posts

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

Write about this video