Slava S. (slvDev) ได้ปรับแต่งโมเดล LLM ที่มีพารามิเตอร์ 28.9 ล้านตัว ให้สามารถทำงานบนบอร์ดพัฒนา ESP32-S3 ได้แบบรันภายในเครื่อง (Local) โดยมีความเร็วในการสร้างข้อความประมาณ 9 โทเคนต่อวินาที (tokens/s) สำหรับการแต่งเรื่องสั้น
ก่อนหน้านี้เราเคยนำเสนอการใช้งาน LLM บน ESP32 มาแล้ว แต่โดยทั่วไปบอร์ดเหล่านี้มักทำหน้าที่เป็นเกตเวย์พลังงานต่ำสำหรับเชื่อมต่อกับ LLM ที่รันอยู่บนเซิร์ฟเวอร์ประสิทธิภาพสูงในศูนย์ข้อมูล ตัวอย่างเช่น HiWonderLLM “smart chat module”, ESP-Claw framework หรือ ESP32 Agent Dev Kit แต่โปรเจกต์ esp32-ai ของ Slava มีความแตกต่างอย่างชัดเจน เพราะโมเดล LLM ทั้งหมดทำงานอยู่บนไมโครคอนโทรลเลอร์ ESP32-S3 โดยตรง ไม่ต้องพึ่งพาเซิร์ฟเวอร์ภายนอกหรือการประมวลผลบนคลาวด์เลย
โปรเจกต์นี้ไม่สามารถใช้งานได้กับบอร์ด ESP32-S3 ทุกตัว เนื่องจากต้องมีหน่วยความจำและพื้นที่จัดเก็บเพียงพอสำหรับเก็บไฟล์โมเดลขนาด 14.9MB (แบบ 4-bit) โดย Slava ได้ทดสอบเดโมบนบอร์ด ESP32-S3 ราคาประมาณ $8 (~270฿) ที่มาพร้อมกับ SRAM 512KB + PSRAM 8MB และแฟลช 16MB พร้อมเชื่อมต่อกับจอแสดงผล I2C ขนาดเล็กสำหรับแสดงนิทานสั้น ๆ ที่โมเดลสร้างขึ้น
ก่อนหน้านี้ Dave Bennett เคยพัฒนาโปรเจกต์ ESP32-LLM ในลักษณะคล้ายกัน แต่ใช้โมเดลที่มีพารามิเตอร์เพียง 260,000 ตัว ซึ่งถือว่าเล็กมากเมื่อเทียบกับโมเดล 28.9 ล้านพารามิเตอร์ ที่ใช้ในโปรเจกต์นี้ เคล็ดลับสำคัญคือ ไม่เก็บโมเดลทั้งหมดไว้ในหน่วยความจำความเร็วสูง (SRAM ขนาด 512KB) อีกต่อไป เนื่องจากพารามิเตอร์ส่วนใหญ่ของโมเดลภาษาอยู่ใน Embedding Table ที่มีประมาณ 25 ล้านแถว ซึ่งสามารถอ่านได้โดยตรงจากหน่วยความจำแฟลชที่มีความเร็วต่ำกว่า ดังนั้นในการประมวลผลแต่ละโทเคน ระบบจะโหลดเฉพาะข้อมูลจากไม่กี่แถวที่จำเป็นเท่านั้น หรือคิดเป็นข้อมูลประมาณ 450 ไบต์ เข้าสู่ SRAM เพื่อประมวลผล ทำให้สามารถรันโมเดลขนาดใหญ่กว่ามากบนไมโครคอนโทรลเลอร์ที่มีหน่วยความจำจำกัดได้
Slava อธิบายว่าแนวคิดนี้ได้รับแรงบันดาลใจจากเทคนิค Google Per-Layer Embeddings ที่ใช้ในโมเดล Gemma 3n และ Gemma 4 โดยโครงสร้างการจัดวางหน่วยความจำ (Memory Layout) บน ESP32-S3 มีลักษณะดังนี้:
|
1 2 3 |
SRAM (fast, tiny) the "thinking" core, used on every token PSRAM (medium) the output head and working memory FLASH (huge, slow) the 25M-param table, about 6 rows read per token (~450 B) |
โปรเจกต์นี้ถือเป็นความสำเร็จด้านวิศวกรรม (Engineering Feat) มากกว่าจะเป็นโปรเจกต์ LLM ที่นำไปใช้งานจริงได้ในวงกว้าง เนื่องจากโมเดลได้รับการฝึกด้วยชุดข้อมูล TinyStories ซึ่งออกแบบมาเพื่อสร้าง นิทานสั้น ๆ ที่ใช้ภาษาง่ายเท่านั้น ดังนั้นโมเดลจึงไม่สามารถตอบคำถาม ทำตามคำสั่ง เขียนโค้ด หรือทำงานอื่น ๆ ที่ผู้ใช้คาดหวังจาก LLM ทั่วไปได้
ด้านล่างนี้เป็นตัวอย่างการสาธิตการทำงานของโปรเจกต์ดังกล่าว:
28.9M LLM running on an $8 esp32, writing a story on a screen! fully on the chip, nothing goes to a server.
that’s ~100x bigger than the model people ran on this chip in 2023.
it grew out of @karpathy llama2.c and google’s per-layer embeddings, which is what lets a big model live… pic.twitter.com/m9PWTYCoKL— Slava S. (@slvDev) July 23, 2026
สามารถดูซอร์สโค้ด, คำแนะนำในการใช้งาน และ รายละเอียดเพิ่มเติมเกี่ยวกับผลลัพธ์ของโปรเจกต์ได้บน GitHub, นอกจากนี้ยังมีข้อมูลเพิ่มเติมจากการพูดคุยบน Reddit รวมถึงวิดีโอด้านล่างสำหรับผู้ที่ต้องการคำอธิบายแบบเห็นภาพเกี่ยวกับหลักการทำงานและวิธีที่โปรเจกต์นี้ทำงานทั้งหมด
แปลภาษาไทย : 28.9M-parameter LLM runs locally on ESP32-S3 at 9 tokens/s

บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT

