NEW PRODUCTSNEWS

RAM แค่ 512KB แต่ ESP32-S3 รัน AI 28.9 ล้านพารามิเตอร์ได้!

Highlight

นักพัฒนา slvDev เปิดตัวโครงการโอเพนซอร์สที่สามารถนำโมเดลภาษาขนาด 28.9 ล้านพารามิเตอร์มารันโดยตรงบน ESP32-S3 ไมโครคอนโทรลเลอร์ราคาประมาณ 8 ดอลลาร์ โดยประมวลผลทั้งหมดบนชิป ไม่ต้องส่งข้อมูลไปยังเซิร์ฟเวอร์ และสามารถสร้างข้อความได้ราว 9 tokens ต่อวินาที

สิ่งที่น่าสนใจคือ ESP32-S3 มี SRAM เพียง 512KB แต่กลับสามารถรองรับโมเดลที่มีขนาดใหญ่กว่าสถิติเดิมบนฮาร์ดแวร์ระดับใกล้เคียงกันถึงประมาณ 100 เท่า ด้วยเทคนิคการจัดเก็บพารามิเตอร์บางส่วนไว้ใน Flash แทนที่จะโหลดทั้งหมดเข้าสู่ RAM

In Detail

นักพัฒนา slvDev ได้เผยแพร่โครงการโอเพนซอร์สที่สาธิตการนำโมเดลภาษาขนาด 28.9 ล้านพารามิเตอร์ ( 28.9 million parameter) มารันโดยตรงบน ESP32-S3 ไมโครคอนโทรลเลอร์ที่มีราคาประมาณ 300 กว่าบาท โดยโมเดลสามารถทำงานบนตัวชิปทั้งหมดโดยไม่จำเป็นต้องส่งข้อมูลไปประมวลผลบนเซิร์ฟเวอร์ภายนอก

ระบบสามารถสร้างข้อความได้ประมาณ 9 tokens ต่อวินาที และแสดงผลผ่านจอขนาดเล็กที่เชื่อมต่อกับบอร์ด ความสำเร็จครั้งนี้น่าสนใจเป็นพิเศษ เพราะ ESP32-S3 มีหน่วยความจำ SRAM สำหรับการประมวลผลเพียง 512KB ขณะที่โมเดลภาษาที่มีขนาดใหญ่ที่สุดซึ่งเคยนำมารันบนฮาร์ดแวร์ในระดับใกล้เคียงกัน มีขนาดประมาณ 260,000 พารามิเตอร์เท่านั้น เท่ากับโครงการนี้สามารถรันโมเดลที่มีขนาดใหญ่กว่าประมาณ 100 เท่า

หัวใจสำคัญอยู่ที่เทคนิคการจัดการหน่วยความจำที่ได้รับแรงบันดาลใจจากโมเดล Gemma ของ Google ซึ่งเรียกว่า Per-Layer Embeddings โดยทั่วไป พารามิเตอร์จำนวนมากของโมเดลภาษาจะอยู่ในตาราง Embedding ซึ่งโมเดลมีหน้าที่อ่านข้อมูลจากตารางดังกล่าว มากกว่าที่จะต้องนำข้อมูลทั้งหมดมาคำนวณพร้อมกัน

slvDev จึงนำตาราง Embedding ที่มีขนาดประมาณ 25 ล้านพารามิเตอร์ ไปเก็บไว้ใน Flash ซึ่งมีความเร็วต่ำกว่า SRAM จากนั้นจึงดึงข้อมูลออกมาใช้เฉพาะส่วนที่จำเป็นในแต่ละ Token โดยอ่านเพียงประมาณ 6 แถว หรือราว 450 ไบต์ต่อ Token ขณะที่ส่วนของโมเดลที่ต้องใช้การคำนวณอย่างหนักและต้องการความเร็วสูง ยังคงเก็บไว้ใน SRAM

แนวทางนี้ช่วยให้โมเดลขนาดใหญ่สามารถทำงานบนไมโครคอนโทรลเลอร์ที่มี RAM จำกัดได้ โดยไม่จำเป็นต้องโหลดพารามิเตอร์ทั้งหมดเข้าสู่หน่วยความจำในเวลาเดียวกัน ส่งผลให้การใช้ SRAM อยู่ในระดับต่ำ แม้ตัวโมเดลจะมีขนาดใหญ่กว่าความจุ RAM ของชิปหลายเท่าตัว

ในด้านฮาร์ดแวร์ โมเดลที่ผ่านการ Quantization มีขนาดประมาณ 14.9MB ที่ความละเอียด 4-bit โดยระบบที่ใช้ในการทดสอบประกอบด้วย SRAM 512KB, PSRAM 8MB และ Flash 16MB

อย่างไรก็ตาม โมเดลนี้ไม่ได้ถูกออกแบบมาให้ใช้งานได้หลากหลาย เพราะได้รับการฝึกด้วยชุดข้อมูล TinyStories ซึ่งประกอบด้วยตัวอย่างเรื่องราวสั้น ๆ สำหรับฝึกโมเดลให้เรียนรู้การสร้างข้อความในลักษณะดังกล่าว เมื่อทำงาน โมเดลจึงสามารถสร้างเรื่องราวสั้น ๆ ที่มีเนื้อหาต่อเนื่องและพออ่านเข้าใจได้เป็นหลัก แต่ไม่สามารถนำไปใช้ถามตอบทั่วไป ทำตามคำสั่ง เขียนโค้ด หรือค้นหาคำตอบจากความรู้ที่โมเดลเรียนรู้มาได้

ผู้พัฒนาระบุว่า จุดประสงค์หลักของโครงการไม่ได้อยู่ที่การแสดงความสามารถของโมเดล แต่เป็นการพิสูจน์ว่า สถาปัตยกรรมการจัดการหน่วยความจำสามารถทำให้โมเดลภาษาขนาดใหญ่ทำงานบนไมโครคอนโทรลเลอร์ที่มีทรัพยากรจำกัดได้

รายละเอียดทั้งหมดของโครงการ ตั้งแต่ Firmware, วิธีการต่อวงจร, โค้ดสำหรับฝึกโมเดล ไปจนถึงผลการทดสอบ Benchmark ฉบับเต็ม ถูกเผยแพร่ไว้ใน GitHub นอกจากนี้ยังมีประวัติการพัฒนาและ Commit ต่าง ๆ ที่แสดงให้เห็นถึงการแก้ไขข้อผิดพลาดในการนับจำนวนพารามิเตอร์ ซึ่งผู้พัฒนาพบและแก้ไขระหว่างการพัฒนาโครงการอีกด้วย


Bupunpajarn Insight :


ESP32-S3 AI Project (Open Source): GitHub

Source : circuitdigest.com

my avatar

Pawinphat

Founder of Bunpajarn.com • Electronics & Embedded Systems

Leave a Reply

Your email address will not be published. Required fields are marked *