result() คืน latency_ms มาด้วย คือเวลาที่ NPU ใช้อนุมานหนึ่งครั้ง () ตัวเลขนี้บอกว่าโมเดลตอบได้ "ทันเหตุการณ์" แค่ไหน
อัตราสูงสุดที่รันได้ต่อวินาที (throughput) แปลงตรงจาก latency:
ถ้างานต้องตอบทันภายในงบเวลา เงื่อนไขที่ต้องผ่านคือ:
r['latency_ms'] — เช่น ms บนบอร์ด (Ethos-U55 ช่วยคูณเมทริกซ์ให้)ทำไมสำคัญกับชุดบทเรียนนี้: latency ต่ำคือ เหตุผลข้อแรก ที่เรารันบน edge ไม่ใช่คลาวด์ (ย้อนดูสไลด์ "ทำไมต้องรันบนอุปกรณ์") — ลูปเราอ่านผลทุก ~180 ms แต่ NPU อนุมานเสร็จในไม่กี่ ms จอเลยไม่มีทางตามไม่ทัน
ไม่มีบอร์ดก็เริ่มได้เลย เปิดเบราว์เซอร์แล้วทำตามนี้:
s01_first_inference.py (หรือวางโค้ด)shaking / circle / idle พร้อมแถบความมั่นใจEmulator ใช้เซนเซอร์ จำลอง และคะแนนของโมเดลก็คำนวณเลียนแบบจากค่าจำลองนั้น (ไม่ได้รันโมเดลจริง ยกเว้นโหมดที่รันโมเดล Motion จริงผ่าน ONNX Runtime Web) แต่ API เหมือนบอร์ดจริงทุกบรรทัด — เหมาะกับซ้อมที่บ้าน แล้วมายืนยันกับของจริงบนบอร์ด
นี่คือหน้า Edge AI ที่เราจะรันในชุดบทเรียนนี้ — dropdown เลือกโมเดล, ปุ่ม Load/Stop, คลาสที่ชนะตัวใหญ่ และแถบความมั่นใจของทุกคลาสเรียงลงมา

จอ emulator ที่รันได้จริง — BENTO Edge AI Emulator (เปิดในเบราว์เซอร์ ไม่ต้องมีบอร์ด)
ทุกอย่างที่เห็นในภาพนี้มาจากคำสั่งแค่ 4 ตัว:
models()ป้อน dropdown ·select()อยู่ที่ปุ่ม Load ·result()ป้อนคลาสที่ชนะ + แถบคะแนน ·stop()อยู่ที่ปุ่ม Stop — จำภาพนี้ไว้ เดี๋ยวไล่โค้ดจะเห็นว่าแต่ละส่วนมาจากบรรทัดไหน
บนบอร์ดจริงเราใช้ของจริง เซนเซอร์จริง NPU จริง:
s01_first_inference.py ใน BENTO IDE กด Program to Deviceจุดที่ควรสังเกต:
latency_msบนบอร์ดจริงคือเวลาที่ NPU ใช้อนุมานจริงๆ มักไม่กี่มิลลิวินาที — เร็วเพราะมี Ethos-U55 ช่วยคูณเมทริกซ์