ประตูสู่ Local AI ในราคา 8 ดอลลาร์: มาสเตอร์คลาส ESP32

@ardchain
อังกฤษ3 วันที่ผ่านมา · 27 ก.ค. 2569
716K
497
53
28
1.6K

TL;DR

คู่มือนี้อธิบายวิธีหลีกเลี่ยงการใช้ฮาร์ดแวร์ราคาแพง โดยการใช้ชิป ESP32 แบบกระจายศูนย์เพื่อรัน LLM แบบออฟไลน์ สำหรับการวิเคราะห์เจตนาและการทำระบบอัตโนมัติภายในบ้านผ่าน BLE

คนส่วนใหญ่ยังคงปฏิบัติกับ AI ภายในเครื่อง (Local AI) เหมือนกับของฟุ่มเฟือยสุดหรู

พวกเขาซื้อ NVIDIA DGX Spark ราคา $3,000 หรือกอง Mac Mini ราคา $800 โดยคิดว่าปัญญาประดิษฐ์แบบอัตโนมัติจำเป็นต้องใช้ฮาร์ดแวร์ขนาดใหญ่และรวมศูนย์

ard - inline image

แต่วิศวกรที่กำลังปรับใช้ AI ทางกายภาพในระดับจริงกำลังสร้างสิ่งที่ถูกกว่ามาก: ฝูงบินแบบกระจายศูนย์ (Distributed Swarm)

  • ชิปราคา $8 หนึ่งตัวฟังเสียงในห้อง
  • ชิปราคา $8 อีกตัวประมวลผลความตั้งใจในเครื่อง
  • สคริปต์แบบกำหนดตายตัว (Deterministic Script) กรองเสียงรบกวนพื้นหลังออก
  • ชิปตัวที่สามดำเนินการคำสั่ง Bluetooth
  • เครือข่ายทั้งหมดทำงานด้วยพลังงานของ LED เพียงดวงเดียว

นั่นคือ สถาปัตยกรรมฝูงบินทางกายภาพ (Physical Swarm Architecture)

ก่อนที่คุณจะอ่านต่อ:

บุ๊กมาร์กคำแนะนำนี้ไว้ เพื่อที่คุณจะได้กลับมาดูคำแนะนำการประกอบตอนท้ายเมื่ออะไหล่ของคุณมาถึง และติดตาม

@ardchain — ฉันจะแยกย่อยเอเจนต์อัตโนมัติ, ไพพ์ไลน์ AI ในเครื่อง, และระบบที่เปลี่ยนทั้งโค้ดและฮาร์ดแวร์ราคาถูกให้เป็นธุรกิจอัตโนมัติที่ปรับขนาดได้

(หมายเหตุ: ฉันได้รวมคู่มือฮาร์ดแวร์และการแฟลชแบบทีละขั้นตอนที่สมบูรณ์ไว้ที่ส่วนท้ายสุดของโพสต์นี้ แต่ก่อนที่คุณจะเริ่มสั่งซื้ออะไหล่ คุณต้องเข้าใจว่าสถาปัตยกรรมทำงานอย่างไรจริงๆ)

ฉันใช้เวลาหลายสัปดาห์ในการแยกส่วนคลังเก็บ GitHub slvDev/esp32-ai และรูปแบบ IoT ในการผลิต เพื่อสร้างระบบปัญญาประดิษฐ์ในเครื่องขึ้นมาใหม่เป็นคู่มือปฏิบัติเล่มเดียว

แทนที่จะซื้อสมองขนาดใหญ่ที่รวมศูนย์ คุณกระจายความฉลาดไปทั่วสภาพแวดล้อม:

ฟัง (Listen) → แยกวิเคราะห์ (Parse) → กำหนดเส้นทาง (Route) → ดำเนินการ (Execute)

ard - inline image

ไมโครคอนโทรลเลอร์แต่ละตัวกลายเป็นโหนดที่มีหน้าที่จำกัด ชิปแต่ละตัวมีโมเดลเฉพาะ การอนุมานแบบออฟไลน์ (Offline Inference) จะตัดสินใจว่าควรดำเนินการใด การเปลี่ยนแปลงที่สำคัญคือบ้านอัจฉริยะของคุณไม่จำเป็นต้องส่งคำสั่งเสียงทุกคำสั่งผ่าน API ที่มีราคาแพงหรือเวิร์กสเตชันที่มีเสียงดังอีกต่อไป

มันสามารถรัน LLM ที่มีพารามิเตอร์ 28.9 ล้านค่า แบบออฟไลน์โดยสมบูรณ์ บน ชิป ESP32-S3 ราคา $8 โดยไม่ใช้แบนด์วิดท์คลาวด์เลยแม้แต่น้อย

รูปแบบพื้นฐานไม่ใช่ของใหม่ วิศวกรฮาร์ดแวร์ใช้ไมโครคอนโทรลเลอร์, บัส I2S, และเมช BLE มาหลายทศวรรษแล้ว สิ่งที่เปลี่ยนแปลงไปคือสิ่งที่อยู่ภายในแต่ละโหนดในตอนนี้ โหนดสามารถประมวลผลภาษาธรรมชาติ, แยกวิเคราะห์คำสั่งเสียงที่ยุ่งเหยิง, จับคู่กับ API ที่ตายตัว, หรือสังเคราะห์ข้อมูลจากเซนเซอร์เป็นการตัดสินใจ

คำแนะนำนี้จะแยกย่อยระบบทั้งหมด ตั้งแต่คอขวดของฮาร์ดแวร์ไปจนถึงการแมปหน่วยความจำ, การจับเสียง I2S, การดำเนินการ BLE, และฝูงบินแบบไดนามิกที่สร้างขึ้นบนซิลิคอนโดยตรง

เมื่ออ่านจบ คุณจะสามารถมองงานทางกายภาพและหยุดถามว่า:

"ฉันควรเรียก API ไหน?"

1. AI ทางกายภาพเริ่มต้นที่คอขวดของหน่วยความจำ

การทำการตลาดฮาร์ดแวร์มักถูกนำเสนอเป็นเหตุผลให้ซื้อ VRAM เพิ่ม มุมมองนั้นพลาดความก้าวหน้าทางวิศวกรรมที่แท้จริง

คุณสามารถซื้อ RTX 5090 เพื่อรันโมเดล 70B แค่เปิดไฟของคุณ และคุณจะจ่ายด้วยความร้อน, ค่าไฟฟ้า, และบิลค่าฮาร์ดแวร์มหาศาล โหนดที่มีประโยชน์จะควบคุมว่าหน่วยความจำถูกเก็บไว้ที่ไหน, คอมโพเนนต์ใดจัดการการตัดสินใจแต่ละอย่าง, และข้อมูลเคลื่อนที่ผ่านซิลิคอนอย่างไร

ลองนึกภาพการขอให้ไมโครคอนโทรลเลอร์ ESP32-S3 ราคา $8 รันโมเดลภาษา ภูมิปัญญาดั้งเดิมบอกว่ามันจะล้มเหลว ชิปมีเพียง SRAM แบบเร็ว 512KB และ Flash ขนาด 16MB โมเดลจะไม่พอดี ภายในเฟรมเวิร์กมาตรฐาน นี่กลายเป็นงานที่เป็นไปไม่ได้ ตาราง embedding เพียงอย่างเดียวก็ทำให้หน่วยความจำทำงานพัง

วิศวกรรมฝูงบินเปิดคอขวดนั้นและทำให้ทุกพารามิเตอร์มีตำแหน่งที่มองเห็นได้

ความก้าวหน้าอยู่ที่สถาปัตยกรรม ส่วนใหญ่ของตาราง embedding (ประมาณ 25 ล้านพารามิเตอร์) ถูกแมปหน่วยความจำลงใน Flash โดยตรง หน่วยความจำทำงานที่ใช้งานอยู่จะอยู่ใน SRAM แบบเร็ว

ard - inline image

ผลลัพธ์คือเวิร์กโฟลว์ที่ชิปต้องการดึงข้อมูลเพียงประมาณ 450 ไบต์ต่อโทเค็น

โหนดควรทำการตัดสินใจเพียงครั้งเดียว

โหนดทางกายภาพที่มีประโยชน์มีหน้าที่รับผิดชอบที่จำกัด:

  1. ค้นหาคำปลุก
  2. จำแนกความตั้งใจเป็นความเชื่อมั่นต่ำ, ปานกลาง, หรือสูง
  3. ดำเนินการแมโคร Bluetooth

แต่ละโหนดต้องการอินพุตที่ชัดเจน, เอาต์พุตที่กำหนดไว้, และพื้นที่ฮาร์ดแวร์ที่จำกัด Mac Mini ส่วนกลางที่จับเสียง, ประมาณความตั้งใจ, ออกแบบการตอบสนอง, และส่งสัญญาณ มีจุดล้มเหลวหลายจุด การแก้ไขข้อบกพร่องยังคงยากเพราะทั้งบ้าน依赖于เครื่องเดียว

ขอบเขตทางกายภาพที่เล็กลงเผยให้เห็นว่าเซนเซอร์ตัวไหนล้มเหลวอย่างแม่นยำ

ขอบ (Edge) ควรส่งต่อความตั้งใจ

ขอบแสดงถึงข้อมูลที่จำเป็นสำหรับการดำเนินการทางกายภาพครั้งต่อไป โหนดเสียงสามารถคืนวัตถุ JSON ที่คาดเดาได้:

json
1{
2 "sensor": "mic-living-room",
3 "confidence": 0.98,
4 "intent": "open_chrome_20_tabs",
5 "execution_node": "ble-host-1"
6}

สคีมาช่วยลดความคลาดเคลื่อนในการตีความระหว่างชิป สตรีมเสียงแบบอิสระบังคับให้ทุกโหนดปลายน้ำต้องสร้างความหมายของโหนดก่อนหน้าขึ้นมาใหม่

บางโหนดก็เป็นโค้ดธรรมดา

เวิร์กโฟลว์จำเป็นต้องลบคำสั่งซ้ำ, สัญญาณดีบounce, และแมปความตั้งใจไปยังการกระทำที่ถูกเขียนไว้ตายตัว การดำเนินการเหล่านี้มีคำตอบที่แน่นอน

นี่คือลักษณะของลูปการดำเนินการในทางปฏิบัติ ไมโครโฟน I2S จับเสียง, LLM แยกวิเคราะห์ความตั้งใจจากหน่วยความจำแฟลช, และโค้ด C++ ยิงคำสั่ง Bluetooth:

cpp
1// 1. เริ่มต้นโมเดล 28M พารามิเตอร์จาก Flash ที่แมปไว้
2LLM model = LLM_Init(FLASH_MAPPED_EMBEDDINGS);
3
4void loop() {
5 // 2. จับเสียงสิ่งแวดล้อมผ่าน I2S
6 String audio = I2S_Record_Voice();
7
8 if (Detect_Wake_Word(audio)) {
9 // 3. การอนุมาน (ประมาณ 9.5 โทเค็น/วินาที)
10 String intent = model.generate(audio);
11
12 // 4. การดำเนินการแบบกำหนดตายตัว
13 if (intent.indexOf("open_chrome") > -1) {
14 BLE_Send_Macro(MAC_ADDRESS, CMD_OPEN_CHROME);
15 }
16 }
17}

การแปลง C++ ง่ายๆ นี้จัดการเวิร์กโฟลว์ได้ทันทีและให้ผลลัพธ์เดียวกันทุกครั้งที่รัน การส่งงานเดียวกันไปยังโมเดลอื่นจะเพิ่มความหน่วงและสร้างจุดล้มเหลว โหนดโมเดลควรอยู่รอบๆ การแยกวิเคราะห์ภาษาธรรมชาติและตรรกะคลุมเครือ โค้ดจัดการการดำเนินการ BLE, การดีบounce, และกฎการกำหนดเส้นทางที่ชัดเจน

2. ฝูงบิน: โหนดกระจายศูนย์เคลื่อนย้ายงานอย่างไร

กราฟ AI ทางกายภาพที่จริงจังส่วนใหญ่ในที่สุดก็มีรูปร่างเดียวกัน งานเริ่มต้นในสภาพแวดล้อม, แตกออกไปยังเซนเซอร์อิสระหลายตัว, บีบอัดหลักฐานทางกายภาพ, และส่งผลลัพธ์ไปยังการดำเนินการฮาร์ดแวร์ขั้นสุดท้าย

รูปร่างนั้นคือฝูงบิน (Swarm)

  • กระจายออก (Fan-out): การจับภาพสิ่งแวดล้อม (ไมค์ I2S)
  • สิ่งกีดขวาง (Barrier): LLM ออฟไลน์ (การแยกวิเคราะห์ความตั้งใจ)
  • รวมเข้าหา (Fan-in): การดำเนินการทางกายภาพ (แมโคร BLE)

รูปแบบนี้ปรากฏขึ้นทุกที่เมื่องานซับซ้อนเกินกว่ากฎแบบ "ถ้า-นี่-แล้ว-นั่น" ที่ตายตัว

การจับภาพควรสร้างอินพุตอิสระ

เซนเซอร์อยู่ในขั้นตอนการจับภาพเมื่อ它可以ฟังสิ่งแวดล้อมและสร้างผลลัพธ์ที่มีประโยชน์โดยไม่ต้องปลุกสมองหลัก

ESP32 สามารถฟังคำปลุกอย่างต่อเนื่องโดยใช้พลังงานเกือบเป็นศูนย์ เมื่อถูกกระตุ้น การจัดประสานงานจะอยู่บนซิลิคอน ชิปบันทึกเสียง, รันโมเดล, และคืนความตั้งใจที่ผ่านการตรวจสอบแล้ว

ลดขนาดก่อนดำเนินการ

หลังจากจับภาพเสียง, โหนดอาจมีความหมายที่ขัดแย้งกันหลายประการ การส่งเสียงดิบโดยตรงไปยังเลเยอร์การดำเนินการจะสร้างความสับสนวุ่นวาย ขั้นตอนการลดขนาดเตรียมคำสั่ง

การลดขนาดบางส่วนเกิดขึ้นผ่านการควอนไทซ์ (โมเดล 4-bit ที่พอดีกับแฟลช 16MB) โหนดการดำเนินการได้รับคำสั่งที่เข้มงวดโดยไม่สูญเสียการตรวจสอบย้อนกลับ

3. การกระจายศูนย์เป็นส่วนหนึ่งของสถาปัตยกรรม

โหนดสามารถอนุมานเสร็จเร็วและยังคงกระตุ้นการกระทำผิด ระบบต้องการกฎสำหรับการตัดสินใจว่าคำสั่งใดควรดำเนินการ

กำหนดเส้นทางโดยขีดจำกัดฮาร์ดแวร์

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

จับคู่ฮาร์ดแวร์กับโหนด

ทุกห้องไม่จำเป็นต้องมีชิป Apple M4 การสกัด, การจำแนกความตั้งใจพื้นฐาน, และการค้นหาเสียงแคบๆ สามารถรันบน ESP32 ราคา $8 ได้ การประมวลผลวิดีโอหนัก, การให้เหตุผลที่ซับซ้อน, และการสังเคราะห์โดยรวมอาจต้องใช้เซิร์ฟเวอร์กลางที่แข็งแกร่งกว่า

การแบ่งระดับฮาร์ดแวร์กลายเป็นคุณสมบัติอีกอย่างของฝูงบิน

รู้ว่าเมื่อใดควรหยุดรวมศูนย์

ค่าโสหุ้ยกราฟรวมถึงการจัดประสานงาน, ความหน่วงของ Wi-Fi, การกำหนดค่าเราเตอร์, และสถานะเครือข่ายมากขึ้นที่ต้องแก้ไขข้อบกพร่อง Mac Mini แบบรวมศูนย์มักจะเพียงพอเมื่อคุณมีโต๊ะทำงานเพียงตัวเดียว

วิศวกรรมฝูงบินมีประโยชน์เมื่อสภาพแวดล้อมมีหลายห้อง, ค่าใช้จ่าย API ที่แพง, อาร์เรย์เซนเซอร์ขนาดใหญ่, หรือความจำเป็นในการรักษาความเป็นส่วนตัวแบบออฟไลน์โดยสมบูรณ์

4. คำแนะนำการประกอบที่สมบูรณ์

ทฤษฎีไม่มีประโยชน์ถ้าคุณไม่รู้ว่าจะต้องบัดกรีและแฟลชอะไรอย่างแน่นอน ถ้าคุณต้องการสร้างโหนด AI ในเครื่องภายในสุดสัปดาห์นี้ นี่คือคำแนะนำทางเทคนิคแบบทีละขั้นตอนที่ตรงไปตรงมา

ขั้นตอนที่ 1: ฮาร์ดแวร์และการเดินสายไฟ

คุณต้องการสองส่วนประกอบเท่านั้น:

  1. บอร์ดพัฒนา ESP32-S3 (ต้องเป็นรุ่นที่มี Flash 16MB และ PSRAM 8MB เพื่อให้การแมปหน่วยความจำโมเดลทำงานได้)
  2. โมดูลไมโครโฟน I2S INMP441
ard - inline image

นี่คือ AI ทางกายภาพ ดังนั้นคุณต้องเดินสายไฟ INMP441 ใช้บัส I2S บัดกรีการเชื่อมต่อให้ตรงตามนี้:

  • VDD \rightarrow 3.3V
  • GND \rightarrow GND
  • L/R \rightarrow GND (ดึงไมค์ไปที่ช่องซ้าย)
  • WS \rightarrow GPIO 4 (Word Select / Frame Sync)
  • SCK \rightarrow GPIO 5 (Serial Clock)
  • SD \rightarrow GPIO 6 (Serial Data)
ard - inline image

ขั้นตอนที่ 2: โมเดลและกระบวนการแฟลช

คุณไม่ได้โหลด ChatGPT คุณกำลังโหลด โมเดลกลั่นที่มีพารามิเตอร์ 28.9 ล้านค่า ซึ่งปรับให้เหมาะสมสำหรับการจำแนกความตั้งใจและเอาต์พุต JSON ที่มีโครงสร้างเท่านั้น

คุณไม่จำเป็นต้องต่อสู้กับชุดเครื่องมือ ESP-IDF คุณสามารถแฟลชไบนารีที่คอมไพล์ไว้ล่วงหน้าและน้ำหนักโมเดลโดยตรงโดยใช้ esptool.py

  1. ใส่บอร์ดของคุณในโหมด Bootloader (กด BOOT ค้างไว้, กด RST, ปล่อย BOOT)
  2. รันคำสั่งแฟลชที่แน่นอนโดยแมปโมเดลลงในพาร์ติชั่น Flash ขนาด 16MB โดยตรง:
bash
1esptool.py --chip esp32s3 --baud 921600 \
2 --before default_reset --after hard_reset write_flash -z \
3 --flash_mode dio --flash_freq 80m --flash_size 16MB \
4 0x10000 build/firmware.bin \
5 0x400000 models/intent_classifier_28M_q4.bin
ard - inline image

ขั้นตอนที่ 3: ตัวรับ (Home Assistant)

เมื่อแฟลชแล้ว ESP32 ไม่จำเป็นต้องใช้ Wi-Fi หรือ API คลาวด์ เมื่อตรวจพบความตั้งใจ มันจะกระจาย เพย์โหลด BLE ที่เข้ากันได้กับ BTHome มาตรฐาน

เพื่อจับสัญญาณนี้และเปิดไฟของคุณจริงๆ:

  1. รัน Home Assistant ด้วยการรวม Bluetooth (หรือ BLE Proxy ของ ESP32)
  2. โหนดจะค้นพบตัวเองโดยอัตโนมัติเป็นเซนเซอร์ BTHome
  3. ความตั้งใจ (เช่น open_chrome, lights_off) จะปรากฏเป็นการเปลี่ยนแปลงสถานะเซนเซอร์ แมปสถานะนี้กับระบบอัตโนมัติที่มีอยู่ของคุณโดยตรง

คุณค่ามาจากการทำให้การคำนวณมองไม่เห็น

ทุกโหนดมีหน้าที่รับผิดชอบทางกายภาพที่จำกัด ทุกชิปมีความตั้งใจที่มีโครงสร้าง ทุกห้องมีเหตุผลในการดำรงอยู่ ทุกคำสั่งเสียงยังคงออฟไลน์

ณ จุดนั้น บ้านของคุณไม่ได้ทำงานบน API ที่มีราคาแพงอีกต่อไป

มันกำลังดำเนินการฝูงบินที่ออกแบบทางวิศวกรรม

บันทึกในคลิกเดียว

อ่านบทความไวรัลเชิงลึกด้วย AI ใน YouMind

บันทึกแหล่งที่มา ถามคำถามที่ตรงประเด็น สรุปข้อโต้แย้ง และเปลี่ยนบทความไวรัลให้เป็นโน้ตที่นำกลับมาใช้ได้ใน AI เวิร์กสเปซเดียว

สำรวจ YouMind
สำหรับครีเอเตอร์

เปลี่ยน Markdown ของคุณให้เป็นบทความ 𝕏 ที่สะอาดตา

เวลาคุณเผยแพร่งานเขียนยาวของตัวเอง การจัดรูปแบบรูปภาพ ตาราง และบล็อกโค้ดให้เข้ากับ 𝕏 นั้นน่าปวดหัว YouMind เปลี่ยนร่าง Markdown ทั้งฉบับให้เป็นบทความ 𝕏 ที่สะอาดตาและพร้อมโพสต์ทันที

ลอง Markdown เป็น 𝕏

แพตเทิร์นให้ถอดรหัสเพิ่มเติม

บทความไวรัลล่าสุด

สำรวจบทความไวรัลเพิ่มเติม