โปรเจกต์ esp32-ai โดย Slava S. รันโมเดลภาษา Local LLM ขนาด 28.9M บนชิป ESP32-S3 และแสดงผลนิทานสั้นผ่านหน้าจอ I2C
สวัสดีเพื่อนๆ สาย Maker และคนทำโปรเจกต์ AI ทุกคนครับ! 🚀 ปกติเวลาเราพูดถึงการนำไมโครคอนโทรลเลอร์อย่าง ESP32 มาทำโปรเจกต์ AI ภาษา (LLM) เรามักจะเห็นมันถูกใช้เป็นเพียงแค่ "Gateway ตัวเล็กๆ" คอยต่อ Wi-Fi ส่งเสียงหรือข้อความไปประมวลผลบนเซิร์ฟเวอร์คลาวด์ภายนอก เช่น โปรเจกต์โมดูลเสียงอย่าง HiWonderLLM, เฟรมเวิร์ก ESP-Claw Framework หรือชุดพัฒนา ESP32 Agent Dev Kit ใช่ไหมครับ?
แต่วันนี้เรื่องราวสุดว้าวของนักพัฒนาคุณ **Slava S. (slvDev)** จะทำให้คุณต้องทึ่ง! เพราะเขาได้สร้างโปรเจกต์โอเพนซอร์สชื่อ **"esp32-ai"** ที่จับโมเดลภาษา Local LLM ขนาดใหญ่ถึง **28.9 ล้าน Parameter (28.9M)** มาบีบอัดลงไปรันอยู่บนชิปตัวละไม่กี่ร้อยบาทอย่าง **ESP32-S3 แบบบอร์ดเดี่ยวๆ** แถมปั่นข้อความออกหน้าจอได้ลื่นถึง **9 tokens/s** โดยไม่ต้องต่ออินเทอร์เน็ตเลยแม้แต่กิ๊กเดียวครับ!
ความท้าทาย: ยัดไฟล์โมเดล 14.9MB ลงชิปตัวจิ๋วได้อย่างไร? 🧠💡
ก่อนหน้านี้เคยมีโปรเจกต์ ESP32-LLM โดย Dave Bennett ที่ลองทำ Local AI บนบอร์ด ESP32 มาก่อนแล้ว แต่ตอนนั้นรันได้เพียงโมเดลขนาดเล็กจิ๋วแค่ 260K Parameter เท่านั้น ต่างจากโปรเจกต์ของคุณ Slava ที่ขยับขยายก้าวกระโดดขึ้นมาถึง 28.9M Parameter!
เทคนิคสำคัญที่คุณ Slava นำมาใช้คือการ **ไม่พยายามยัดไฟล์โมเดลลงในแรมความเร็วสูง (SRAM 512KB)** เพราะพื้นที่ไม่พอ แต่เขาใช้วิธีดึงไอเดียเทคนิค Per-Layer Embeddings (แบบเดียวกับที่ใช้ใน Google Gemma 3n และ Gemma 4) มาจัดการแบ่งสรรหน่วยความจำบน ESP32-S3 ดังนี้ครับ:
-
SRAM 512KB (Fast & Tiny): ทำหน้าที่เป็นสมองกลส่วนคิด (Thinking Core) ประมวลผลตรรกะในทุกๆ Token
-
PSRAM 8MB (Medium Speed): ทำหน้าที่เก็บ Output Head และเป็นแรมทำงานชั่วคราวขณะเจนข้อความ
-
Flash Storage 16MB (Huge & Slow): ใช้เก็บไฟล์โมเดล Quantized (4-bit) ขนาด 14.9MB ซึ่งมีตาราง Embedding กว่า 25 ล้านแถว โดยในแต่ละ Token จะอ่านข้อมูลจาก Flash เพียง ~6 แถว (ประมาณ 450 Bytes) ดึงเข้ามาประมวลผลบน SRAM เท่าที่จำเป็นเท่านั้น!
💡 อยากทดลองเล่นโปรเจกต์ AI และรันฮาร์ดแวร์คัสตอมในแบบของคุณ?
ฮาร์ดแวร์หลักที่จะรันโปรเจกต์นี้ได้ ต้องเป็น **บอร์ด ESP32-S3 รุ่นพิเศษที่มี 8MB PSRAM และ 16MB Flash Storage** ขึ้นไปครับ! และหากต้องการทำกล่องครอบหน้าจอ I2C เพิ่มความสวยงาม
เพื่อนๆ สามารถเข้ามาเลือกซื้อ **บอร์ดพัฒนา ESP32-S3, จอแสดงผล I2C, สายสัญญาณ** หรือส่งไฟล์ STL มาสั่งทำ บริการรับปริ้นท์เคส 3D (3D Printing Service) กับทางร้าน **Globalbyte Shop** ได้เลยครับ!
⚠️ ข้อควรรู้เกี่ยวกับขอบเขตการใช้งานโมเดลนี้!
โปรเจกต์นี้จัดเป็นผลงานชิ้นเอกด้านวิศวกรรมฮาร์ดแวร์เพื่อพิสูจน์ขีดจำกัด ตัวโมเดลถูกเทรนมาจากชุดข้อมูล **TinyStories** เพื่อใช้ในการแต่งและเล่าเรื่องนิทานสั้นๆ เท่านั้น **ไม่สามารถนำไปใช้ตอบคำถามทั่วไป เขียนโค้ด หรือสั่งงานแบบ Complex AI ได้** เหมือนโมเดลใหญ่ๆ ครับ!
🔗 ข้อมูลอ้างอิงและจุดวาร์ปไปส่องโปรเจกต์:
สำหรับเพื่อนๆ สายโค้ดเดอร์ที่อยากดาวน์โหลดไฟล์โมเดลและซอร์สโค้ดไปทดลองแฟลชลงบอร์ด สามารถตามลิงก์ไปส่องต่อได้เลยครับ:
⚡ พร้อมลองเล่น Local AI บน ESP32-S3 และสั่งพิมพ์ชิ้นส่วน 3D แล้วหรือยัง? ⚡
*Disclaimer (ข้อจำกัดความรับผิดชอบ): เนื้อหาบทความนี้ถูกเรียบเรียงและสรุปมาจากโปรเจกต์เปิดซอร์สในต่างประเทศ การแฟลชไฟล์โมเดลขนาดใหญ่ลงใน Flash Memory ของบอร์ด ESP32-S3 ต้องใช้ความระมัดระวังและการตั้งค่า Partition Table ให้ถูกต้อง ผู้ที่สนใจควรดูขั้นตอนและคู่มือการตั้งค่าอย่างละเอียดจาก
GitHub ของคุณ Slava S. (slvDev) ให้เข้าใจอย่างถี่ถ้วนก่อนลงมือทำจริงทุกครั้งครับ!