นำ AI หุ่นยนต์สู่แพลตฟอร์มฝังตัว: การบันทึกข้อมูล, การปรับแต่ง VLA และการเพิ่มประสิทธิภาพบนอุปกรณ์

ความก้าวหน้าล่าสุดของโมเดลภาษาขนาดใหญ่ (Large Language Models - LLMs) ได้นำไปสู่การเปลี่ยนแปลงจากการประมวลผลข้อความเพียงอย่างเดียว ไปสู่ระบบแบบ Multimodal โดยเริ่มจากการผสานรวมการรับรู้ด้วยภาพเข้ากับโมเดล Vision-Language Models (VLMs) และล่าสุดคือการสร้างการกระทำของหุ่นยนต์ในโมเดล Vision-Language-Action (VLA) อย่างไรก็ตาม การนำโมเดลเหล่านี้ไปใช้บนแพลตฟอร์มโรบอทิกส์แบบฝังตัว (Embedded Platforms) ยังคงเป็นความท้าทาย เนื่องจากข้อจำกัดด้านการประมวลผล หน่วยความจำ พลังงาน และข้อกำหนดการควบคุมแบบเรียลไทม์

ในกระบวนการควบคุมแบบซิงโครนัส (Synchronous Control Pipelines) ขณะที่ VLA กำลังประมวลผล (Inference) แขนหุ่นยนต์จะหยุดทำงานเพื่อรอคำสั่ง ซึ่งนำไปสู่พฤติกรรมแบบสั่น (Oscillatory Behavior) และการแก้ไขที่ล่าช้า เพื่อแก้ไขปัญหานี้ การประมวลผลแบบไม่ซิงโครนัส (Asynchronous Inference) สามารถช่วยให้การเคลื่อนไหวราบรื่นและต่อเนื่อง โดยการแยกการสร้างคำสั่งออกจากการดำเนินการ อย่างไรก็ตาม เพื่อให้มีประสิทธิภาพ ความหน่วงแฝงในการประมวลผลทั้งหมด (End-to-End Inference Latency) ต้องสั้นกว่าระยะเวลาการดำเนินการของการกระทำนั้นๆ ข้อจำกัดด้านเวลานี้จึงกำหนดขีดจำกัดสูงสุดของ Throughput ของโมเดล

การนำ VLA Models ไปใช้บนแพลตฟอร์มฝังตัวนั้นไม่ใช่แค่เรื่องของการบีบอัดโมเดล (Model Compression) เท่านั้น แต่เป็นปัญหาด้านวิศวกรรมระบบที่ซับซ้อน ซึ่งต้องอาศัยการแยกสถาปัตยกรรม (Architectural Decomposition) การจัดตารางเวลาที่คำนึงถึงความหน่วงแฝง (Latency-Aware Scheduling) และการประมวลผลที่สอดคล้องกับฮาร์ดแวร์ (Hardware-Aligned Execution) การจัดการกับความท้าทายเหล่านี้เป็นสิ่งสำคัญในการนำความก้าวหน้าล่าสุดของ Multimodal Foundation Models มาใช้จริงในระบบหุ่นยนต์ฝังตัวที่ใช้งานได้

บทความนี้จะนำเสนอแนวทางปฏิบัติที่ดีที่สุดที่ NXP ได้ทดลองมาในการบันทึกชุดข้อมูลหุ่นยนต์ที่เชื่อถือได้ การปรับแต่งนโยบาย VLA (ACT และ SmolVLA) และชี้ให้เห็นถึงประสิทธิภาพแบบเรียลไทม์ที่ NXP i.MX 95 SoC ทำได้หลังจากการปรับแต่ง

🎥 การบันทึกชุดข้อมูล: สิ่งที่สำคัญจริง ๆ

ข้อมูลคุณภาพสูงและสม่ำเสมอ ดีกว่าข้อมูลที่ "เยอะแต่ไม่เป็นระเบียบ" ส่วนนี้จะเปลี่ยนบทเรียนที่ได้มาอย่างยากลำบาก ให้กลายเป็นรายการตรวจสอบและโครงสร้างที่ชัดเจน

ในกรณีของเรา เราได้บันทึกชุดข้อมูลสำหรับงาน: "วางถุงชาลงในแก้ว"

1) ความสม่ำเสมอต้องมาก่อน

  • กล้องที่ตั้งอยู่กับที่: ใช้แท่นยึดที่แข็งแรงเพื่อหลีกเลี่ยงการเคลื่อนของตำแหน่ง (Pose Drift) หากระหว่างการบันทึกหรือการประเมิน กล้องหนึ่งตัวหรือมากกว่านั้นมีการเคลื่อนที่เนื่องจากการสั่นของหุ่นยนต์ หรือผู้ปฏิบัติงานจัดสภาพแวดล้อมใหม่ คุณอาจสังเกตเห็นการสูญเสียความแม่นยำอย่างรุนแรง
  • แสงที่ควบคุมได้: จัดสภาพแวดล้อมของคุณในที่ที่คุณสามารถควบคุมแสงได้มากที่สุด (แหล่งกำเนิดแสงคงที่ และอยู่ห่างจากแสงแดดที่เปลี่ยนแปลงในแต่ละวัน)
  • ความเปรียบต่างสูง: หลีกเลี่ยงการฝึกด้วย "สีขาวบนสีขาว" เว้นแต่ว่านั่นคือโดเมนการใช้งานของคุณ เพิ่มความเปรียบต่างระหว่างแขน วัตถุ และสภาพแวดล้อมให้สูงสุด
  • การปรับเทียบที่คงที่: ตรวจสอบให้แน่ใจว่าคุณมีสำเนาการปรับเทียบหุ่นยนต์และผู้ควบคุมระยะไกลของคุณ เพื่อที่คุณจะได้ไม่ต้องบันทึกตอนก่อนหน้าใหม่หากโค้ดขัดข้อง
  • อย่าโกง: อย่าใช้ข้อมูลที่โมเดลจะไม่มีสิทธิ์เข้าถึงในเวลาประมวลผล ในระหว่างการบันทึกข้อมูล ผู้ปฏิบัติงานอาจพึ่งพาการสังเกตฉากด้วยสายตาโดยตรง แต่นี่เป็นการนำข้อมูลที่ไม่มีอยู่ในชุดข้อมูลเข้ามา การรวบรวมชุดข้อมูลต้องจำกัดอยู่เพียงอินพุตกล้องเดียวกันกับที่จะพร้อมใช้งานสำหรับนโยบายในขณะทำงาน

2) ใช้กล้องที่ติดกับกริปเปอร์ (แนะนำอย่างยิ่ง)

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

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

เมื่อติดตั้งกล้องกริปเปอร์ เราขอแนะนำให้ยึดสายเคเบิลด้วย Velcro หรือตัวนำการลดแรงดึง เพื่อป้องกันไม่ให้สายขัดขวางมุมมองหรือหลุดออกระหว่างการเคลื่อนไหว

3) ปรับปรุงการจับยึด

การปรับแต่งฮาร์ดแวร์ง่ายๆ เช่น การใช้ท่อหดด้วยความร้อน (Heat-shrink tubing) ที่ก้ามหนีบ เพิ่มแรงเสียดทาน ลดความหยาบ ลดการลื่นไถลระหว่างการทำงาน และเพิ่มอัตราความสำเร็จของงาน (ตอนที่ "เกือบสำเร็จ" น้อยลง) ซึ่งช่วยเพิ่มความเสถียรในการเรียนรู้นโยบาย

4) ความหลากหลายและการแบ่งชุดข้อมูล

เมื่อบันทึกชุดข้อมูล คุณควร:

  • กระจายการกระจายของตอน: แบ่งพื้นที่ทำงานของคุณออกเป็นกลุ่มตำแหน่งเริ่มต้น และบันทึกอย่างน้อย 10 ตอนต่อกลุ่ม เพิ่มความหลากหลายด้วยการเปลี่ยนตำแหน่งและการหมุนของวัตถุ เช่น เราได้แบ่งพื้นที่ที่แขนหุ่นยนต์เข้าถึงได้ออกเป็น 11 กลุ่ม แต่ละกลุ่มมีขนาด 10 × 10 ซม.
  • แยกชุดฝึกและชุดตรวจสอบ: นโยบายสามารถเกิด Overfit กับชุดฝึกได้อย่างง่ายดาย ดังนั้น ตรวจสอบให้แน่ใจว่าชุดตรวจสอบนั้นไม่เคยเห็นมาก่อนโดยโมเดล เช่น เราได้ลบกลุ่มที่ 6 ออกจากชุดฝึก
  • บันทึกการเคลื่อนไหวให้ได้มากที่สุด: โมเดล VLA ขนาดเล็กมีการสรุปผล (Generalization) ที่จำกัดในรูปแบบการเคลื่อนไหวที่ไม่เคยเห็นมาก่อน ดังนั้น ให้บันทึกตอนที่ครอบคลุมช่วงการเคลื่อนไหวที่กว้างที่สุดเท่าที่จะทำได้ เช่น เราจับถุงชาในตำแหน่งแนวนอนหรือแนวตั้ง
  • คาดการณ์ความล้มเหลว: บางครั้งนโยบายอาจไม่สามารถเข้าถึงวัตถุได้ในครั้งแรก และจะต้อง "กลับไปหา" เราสังเกตว่าการมี 20% ของตอนทั้งหมดที่สอดคล้องกับกรณีของการกลับไปหาวัตถุ ช่วยให้โมเดลปรับปรุงอัตราความสำเร็จโดยรวมได้ เช่น ประมาณ 20% ของชุดฝึกของเราสอดคล้องกับตอนการกู้คืน

สิ่งนี้สะท้อนถึงแนวทางปฏิบัติที่ดีที่สุดในเอกสาร VLA และคู่มือชุมชน นี่คือตัวอย่าง 3 แบบของความหลากหลายของข้อมูลภายในกลุ่มเดียวกัน:

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

สิ่งที่เราทำจริง:

  • งาน: "หยิบถุงชาและวางลงในแก้ว"
  • ชุดข้อมูล: 120 ตอน: 10 กลุ่ม x (10 ตำแหน่งเริ่มต้นถุงชาที่แตกต่างกัน + 2 ตอนการกู้คืน)
  • กล้อง 3 ตัว (640x480px, 30fps): ด้านบน, กริปเปอร์, ด้านซ้าย
  • กลุ่มที่ 6 ถูกลบออกสำหรับการตรวจสอบ

การฝึก: เลือก Checkpoint โมเดลที่มี Validation Loss ต่ำที่สุดหลังจาก 200k ขั้นตอน

ช่วงที่ให้ความสมดุลที่ดีที่สุดระหว่างความแม่นยำ การสรุปผล และความราบรื่นของการเคลื่อนไหว ทั้งในชุดฝึกและชุดตรวจสอบ พบว่าสำหรับ ACT (100 การกระทำต่อ Chunk) อยู่ในช่วง 100k-160k ขั้นตอนการฝึก สำหรับการฝึก SMolVLA (50 การกระทำต่อ Chunk) ความสมดุลจะปรากฏขึ้นหลังจากขั้นตอนการฝึกจำนวนมากขึ้น เราพบว่าการฝึกต่อไปเล็กน้อยหลังจากจุดที่โมเดลเริ่ม Overfit มักจะช่วยปรับปรุงความแม่นยำโดยรวม

กฎทอง: เลือก Checkpoint สุดท้ายโดยการประเมินความสำเร็จทั้งในชุดฝึกและชุดตรวจสอบ ไม่ใช่จาก Training Loss

⚡ การเพิ่มประสิทธิภาพสำหรับ NXP i.MX 95 Applications Processor

i.MX 95 SoC ผสานรวม Arm Cortex-A55 จำนวน 6 คอร์, Cortex-M7 และ Cortex M33 MCU, Mali GPU, NXP ISP ใหม่ และ eIQ® Neutron NPU ซึ่งมุ่งเป้าไปที่การประมวลผลแบบ Edge ที่มีประสิทธิภาพและปลอดภัย พร้อมรองรับ Multi-Camera และ I/O ที่แข็งแกร่ง

1) แบ่งและพิชิต

แทนที่จะรันโมเดลเป็นกราฟเดียว เราได้แยก VLA Graph ออกเป็นระยะต่างๆ เช่น Encoders, Decoders และ Action Experts ทำให้แต่ละส่วนสามารถปรับแต่ง จัดตารางเวลา และปรับใช้ได้อย่างอิสระ

ในทางปฏิบัติ SmolVLA ถูกแบ่งออกเป็นส่วนย่อยๆ ดังนี้:

  • Vision: ประมวลผลเฟรมกล้อง RGB และสร้าง Visual Embeddings
  • LLM Backbone: สร้าง Token การกระทำจาก Visual และ Textual Embeddings
  • Action Expert: ใช้ Flow Matching เพื่อลดสัญญาณรบกวนของ Action Samples ซ้ำๆ และส่งออกคำสั่งควบคุมสุดท้าย

การแยกส่วนนี้ช่วยให้สามารถปรับแต่งแต่ละส่วนได้ สามารถวัดผลกระทบของการ Quantization ในแต่ละส่วน เพื่อเลือกความสมดุลที่ดีที่สุดระหว่างความหน่วงแฝงและความแม่นยำ นอกจากนี้ การแยก Action Expert ออกจาก VLM ยังเหมาะอย่างยิ่งสำหรับการทำงานที่ความถี่ต่ำลง

เพื่อให้การประมวลผลสำหรับ i.MX 95 SoC มีประสิทธิภาพ เราได้สำรวจเทคนิค Quantization หลายอย่างในส่วนต่างๆ เราพบว่าการ Quantize Vision Encoder และ LLM Prefill มีผลกระทบต่อความแม่นยำเพียงเล็กน้อย ในขณะที่การ Quantize Denoising Flow ใน Action Expert ทำให้ประสิทธิภาพลดลงอย่างมาก พฤติกรรมนี้เป็นไปตามที่คาดไว้ เนื่องจากข้อผิดพลาดจากการ Quantization จะสะสมข้ามขั้นตอนการลดสัญญาณรบกวนแบบซ้ำๆ

ด้วยเหตุนี้ เราจึงตัดสินใจคงส่วนนี้ไว้ที่ความแม่นยำสูงขึ้นเพื่อรักษาเสถียรภาพ ในขณะที่ส่วนอื่นๆ เราได้สำรวจการกำหนดค่า Quantization ที่หลากหลาย ตั้งแต่ 8-bit Mixed Precision ไปจนถึง 4-bit Quantization ขึ้นอยู่กับเลเยอร์

นอกจากนี้ เราได้ใช้การปรับแต่งภายใน (In-house Optimization) ในส่วนต่างๆ ผลลัพธ์แสดงอยู่ในตารางด้านล่าง ซึ่งอ้างอิงถึงโมเดลที่ปรับแต่งแล้ว

3) การประมวลผลแบบไม่ซิงโครนัส: การจัดตารางเวลาที่คำนึงถึงการควบคุม

ในลูปควบคุมแบบซิงโครนัส กระบวนการทำงานดังนี้:

  1. รันการประมวลผลโมเดลเต็มรูปแบบ
  2. ดำเนินการตามการกระทำที่สร้างขึ้น

ในระหว่างขั้นตอนที่ (2) หุ่นยนต์จะหยุดทำงาน หากความหน่วงแฝงในการประมวลผลไม่น้อย จะส่งผลให้เกิด:

  • การแก้ไขแบบสั่นเนื่องจากการสังเกตข้อมูลที่ล้าสมัย
  • ความถี่การควบคุมที่ลดลง
  • พฤติกรรมการกู้คืนที่ไม่ดี

ด้วยการประมวลผลแบบไม่ซิงโครนัส การสร้างการกระทำจะทำงานพร้อมกันกับการดำเนินการ:

  • หุ่นยนต์ดำเนินการตาม Chunk การกระทำปัจจุบัน
  • Chunk ถัดไปจะถูกคำนวณพร้อมกัน

สิ่งนี้ช่วยเพิ่มความถี่การควบคุมที่มีประสิทธิภาพ ลดความล้าสมัยของข้อมูล และปรับปรุงพฤติกรรมการกู้คืน

บนแพลตฟอร์มฝังตัว เช่น i.MX 95 SoC การประมวลผลแบบไม่ซิงโครนัสเป็นสิ่งจำเป็น แต่จะมีประสิทธิภาพก็ต่อเมื่อความหน่วงแฝงในการประมวลผลยังคงน้อยกว่างบประมาณของ Action Horizon: เวลาประมวลผล < เวลาดำเนินการ

📊 สิ่งที่เราทำได้บน i.MX

ขอบคุณ แหล่งข้อมูล
https://huggingface.co/blog/nxp/bringing-robotics-ai-to-embedded-platforms

นำ AI หุ่นยนต์สู่แพลตฟอร์มฝังตัว: การบันทึกข้อมูล, การปรับแต่ง VLA และการเพิ่มประสิทธิภาพบนอุปกรณ์ความก้าวหน้าล่าสุดของโมเดลภาษาขนาดใหญ่ (Large Language Models - LLMs) ได้นำไปสู่การเปลี่ยนแปลงจากการประมวลผลข้อความเพียงอย่างเดียว ไปสู่ระบบแบบ Multimodal โดยเริ่มจากการผสานรวมการรับรู้ด้วยภาพเข้ากับโมเดล Vision-Language Models (VLMs) และล่าสุดคือการสร้างการกระทำของหุ่นยนต์ในโมเดล Vision-Language-Action (VLA) อย่างไรก็ตาม การนำโมเดลเหล่านี้ไปใช้บนแพลตฟอร์มโรบอทิกส์แบบฝังตัว (Embedded Platforms) ยังคงเป็นความท้าทาย เนื่องจากข้อจำกัดด้านการประมวลผล หน่วยความจำ พลังงาน และข้อกำหนดการควบคุมแบบเรียลไทม์ในกระบวนการควบคุมแบบซิงโครนัส (Synchronous Control Pipelines) ขณะที่ VLA กำลังประมวลผล (Inference) แขนหุ่นยนต์จะหยุดทำงานเพื่อรอคำสั่ง ซึ่งนำไปสู่พฤติกรรมแบบสั่น (Oscillatory Behavior) และการแก้ไขที่ล่าช้า เพื่อแก้ไขปัญหานี้ การประมวลผลแบบไม่ซิงโครนัส (Asynchronous Inference) สามารถช่วยให้การเคลื่อนไหวราบรื่นและต่อเนื่อง โดยการแยกการสร้างคำสั่งออกจากการดำเนินการ อย่างไรก็ตาม เพื่อให้มีประสิทธิภาพ ความหน่วงแฝงในการประมวลผลทั้งหมด (End-to-End Inference Latency) ต้องสั้นกว่าระยะเวลาการดำเนินการของการกระทำนั้นๆ ข้อจำกัดด้านเวลานี้จึงกำหนดขีดจำกัดสูงสุดของ Throughput ของโมเดลการนำ VLA Models ไปใช้บนแพลตฟอร์มฝังตัวนั้นไม่ใช่แค่เรื่องของการบีบอัดโมเดล (Model Compression) เท่านั้น แต่เป็นปัญหาด้านวิศวกรรมระบบที่ซับซ้อน ซึ่งต้องอาศัยการแยกสถาปัตยกรรม (Architectural Decomposition) การจัดตารางเวลาที่คำนึงถึงความหน่วงแฝง (Latency-Aware Scheduling) และการประมวลผลที่สอดคล้องกับฮาร์ดแวร์ (Hardware-Aligned Execution) การจัดการกับความท้าทายเหล่านี้เป็นสิ่งสำคัญในการนำความก้าวหน้าล่าสุดของ Multimodal Foundation Models มาใช้จริงในระบบหุ่นยนต์ฝังตัวที่ใช้งานได้บทความนี้จะนำเสนอแนวทางปฏิบัติที่ดีที่สุดที่ NXP ได้ทดลองมาในการบันทึกชุดข้อมูลหุ่นยนต์ที่เชื่อถือได้ การปรับแต่งนโยบาย VLA (ACT และ SmolVLA) และชี้ให้เห็นถึงประสิทธิภาพแบบเรียลไทม์ที่ NXP i.MX 95 SoC ทำได้หลังจากการปรับแต่ง🎥 การบันทึกชุดข้อมูล: สิ่งที่สำคัญจริง ๆข้อมูลคุณภาพสูงและสม่ำเสมอ ดีกว่าข้อมูลที่ "เยอะแต่ไม่เป็นระเบียบ" ส่วนนี้จะเปลี่ยนบทเรียนที่ได้มาอย่างยากลำบาก ให้กลายเป็นรายการตรวจสอบและโครงสร้างที่ชัดเจนในกรณีของเรา เราได้บันทึกชุดข้อมูลสำหรับงาน: "วางถุงชาลงในแก้ว"1) ความสม่ำเสมอต้องมาก่อนกล้องที่ตั้งอยู่กับที่: ใช้แท่นยึดที่แข็งแรงเพื่อหลีกเลี่ยงการเคลื่อนของตำแหน่ง (Pose Drift) หากระหว่างการบันทึกหรือการประเมิน กล้องหนึ่งตัวหรือมากกว่านั้นมีการเคลื่อนที่เนื่องจากการสั่นของหุ่นยนต์ หรือผู้ปฏิบัติงานจัดสภาพแวดล้อมใหม่ คุณอาจสังเกตเห็นการสูญเสียความแม่นยำอย่างรุนแรงแสงที่ควบคุมได้: จัดสภาพแวดล้อมของคุณในที่ที่คุณสามารถควบคุมแสงได้มากที่สุด (แหล่งกำเนิดแสงคงที่ และอยู่ห่างจากแสงแดดที่เปลี่ยนแปลงในแต่ละวัน)ความเปรียบต่างสูง: หลีกเลี่ยงการฝึกด้วย "สีขาวบนสีขาว" เว้นแต่ว่านั่นคือโดเมนการใช้งานของคุณ เพิ่มความเปรียบต่างระหว่างแขน วัตถุ และสภาพแวดล้อมให้สูงสุดการปรับเทียบที่คงที่: ตรวจสอบให้แน่ใจว่าคุณมีสำเนาการปรับเทียบหุ่นยนต์และผู้ควบคุมระยะไกลของคุณ เพื่อที่คุณจะได้ไม่ต้องบันทึกตอนก่อนหน้าใหม่หากโค้ดขัดข้องอย่าโกง: อย่าใช้ข้อมูลที่โมเดลจะไม่มีสิทธิ์เข้าถึงในเวลาประมวลผล ในระหว่างการบันทึกข้อมูล ผู้ปฏิบัติงานอาจพึ่งพาการสังเกตฉากด้วยสายตาโดยตรง แต่นี่เป็นการนำข้อมูลที่ไม่มีอยู่ในชุดข้อมูลเข้ามา การรวบรวมชุดข้อมูลต้องจำกัดอยู่เพียงอินพุตกล้องเดียวกันกับที่จะพร้อมใช้งานสำหรับนโยบายในขณะทำงาน2) ใช้กล้องที่ติดกับกริปเปอร์ (แนะนำอย่างยิ่ง)การเปลี่ยนจากการมองเห็นจากฉากเพียงอย่างเดียวไปสู่มุมมองแบบผสมผสานช่วยเพิ่มความแม่นยำโดยรวม แต่ยิ่งคุณมีกล้องมากเท่าใด ก็ยิ่งส่งผลต่อความหน่วงแฝงมากขึ้นเท่านั้น ดังนั้น คุณต้องเลือกระหว่างการประนีประนอมที่เหมาะสม ในกรณีของเรา ความสมดุลนี้ทำได้ด้วยกล้อง 3 ตัว:เราขอแนะนำอย่างยิ่งให้ใช้กล้องที่ติดอยู่กับกริปเปอร์ ช่วยเพิ่มอัตราความสำเร็จในงานการจัดการที่ละเอียดได้อย่างสม่ำเสมอ โดยให้มุมมองที่ใกล้ชิดและเกี่ยวข้องกับงาน ที่สำคัญที่สุดคือกล้องนี้ยังบังคับใช้วิธีการรวบรวมข้อมูลที่ถูกต้องได้อย่างมีประสิทธิภาพที่สุด ทำให้ผู้ปฏิบัติงานสามารถพึ่งพาการรับรู้ของหุ่นยนต์เพียงอย่างเดียว แทนที่จะสังเกตฉากโดยตรงเมื่อติดตั้งกล้องกริปเปอร์ เราขอแนะนำให้ยึดสายเคเบิลด้วย Velcro หรือตัวนำการลดแรงดึง เพื่อป้องกันไม่ให้สายขัดขวางมุมมองหรือหลุดออกระหว่างการเคลื่อนไหว3) ปรับปรุงการจับยึดการปรับแต่งฮาร์ดแวร์ง่ายๆ เช่น การใช้ท่อหดด้วยความร้อน (Heat-shrink tubing) ที่ก้ามหนีบ เพิ่มแรงเสียดทาน ลดความหยาบ ลดการลื่นไถลระหว่างการทำงาน และเพิ่มอัตราความสำเร็จของงาน (ตอนที่ "เกือบสำเร็จ" น้อยลง) ซึ่งช่วยเพิ่มความเสถียรในการเรียนรู้นโยบาย4) ความหลากหลายและการแบ่งชุดข้อมูลเมื่อบันทึกชุดข้อมูล คุณควร:กระจายการกระจายของตอน: แบ่งพื้นที่ทำงานของคุณออกเป็นกลุ่มตำแหน่งเริ่มต้น และบันทึกอย่างน้อย 10 ตอนต่อกลุ่ม เพิ่มความหลากหลายด้วยการเปลี่ยนตำแหน่งและการหมุนของวัตถุ เช่น เราได้แบ่งพื้นที่ที่แขนหุ่นยนต์เข้าถึงได้ออกเป็น 11 กลุ่ม แต่ละกลุ่มมีขนาด 10 × 10 ซม.แยกชุดฝึกและชุดตรวจสอบ: นโยบายสามารถเกิด Overfit กับชุดฝึกได้อย่างง่ายดาย ดังนั้น ตรวจสอบให้แน่ใจว่าชุดตรวจสอบนั้นไม่เคยเห็นมาก่อนโดยโมเดล เช่น เราได้ลบกลุ่มที่ 6 ออกจากชุดฝึกบันทึกการเคลื่อนไหวให้ได้มากที่สุด: โมเดล VLA ขนาดเล็กมีการสรุปผล (Generalization) ที่จำกัดในรูปแบบการเคลื่อนไหวที่ไม่เคยเห็นมาก่อน ดังนั้น ให้บันทึกตอนที่ครอบคลุมช่วงการเคลื่อนไหวที่กว้างที่สุดเท่าที่จะทำได้ เช่น เราจับถุงชาในตำแหน่งแนวนอนหรือแนวตั้งคาดการณ์ความล้มเหลว: บางครั้งนโยบายอาจไม่สามารถเข้าถึงวัตถุได้ในครั้งแรก และจะต้อง "กลับไปหา" เราสังเกตว่าการมี 20% ของตอนทั้งหมดที่สอดคล้องกับกรณีของการกลับไปหาวัตถุ ช่วยให้โมเดลปรับปรุงอัตราความสำเร็จโดยรวมได้ เช่น ประมาณ 20% ของชุดฝึกของเราสอดคล้องกับตอนการกู้คืนสิ่งนี้สะท้อนถึงแนวทางปฏิบัติที่ดีที่สุดในเอกสาร VLA และคู่มือชุมชน นี่คือตัวอย่าง 3 แบบของความหลากหลายของข้อมูลภายในกลุ่มเดียวกัน:ตำแหน่งเริ่มต้น 1 และ 2 สอดคล้องกับตำแหน่งที่แตกต่างกันภายในกลุ่มเดียวกัน ในทางตรงกันข้าม ในระหว่างตอนการกู้คืน หุ่นยนต์ไม่ได้เริ่มต้นใน "โหมดเริ่มต้น" แต่จะอยู่ใกล้แก้วอยู่แล้วและควรดำเนินการต่อเพื่อหยิบถุงชาจากตำแหน่งนั้นโดยตรงสิ่งที่เราทำจริง:งาน: "หยิบถุงชาและวางลงในแก้ว"ชุดข้อมูล: 120 ตอน: 10 กลุ่ม x (10 ตำแหน่งเริ่มต้นถุงชาที่แตกต่างกัน + 2 ตอนการกู้คืน)กล้อง 3 ตัว (640x480px, 30fps): ด้านบน, กริปเปอร์, ด้านซ้ายกลุ่มที่ 6 ถูกลบออกสำหรับการตรวจสอบการฝึก: เลือก Checkpoint โมเดลที่มี Validation Loss ต่ำที่สุดหลังจาก 200k ขั้นตอนช่วงที่ให้ความสมดุลที่ดีที่สุดระหว่างความแม่นยำ การสรุปผล และความราบรื่นของการเคลื่อนไหว ทั้งในชุดฝึกและชุดตรวจสอบ พบว่าสำหรับ ACT (100 การกระทำต่อ Chunk) อยู่ในช่วง 100k-160k ขั้นตอนการฝึก สำหรับการฝึก SMolVLA (50 การกระทำต่อ Chunk) ความสมดุลจะปรากฏขึ้นหลังจากขั้นตอนการฝึกจำนวนมากขึ้น เราพบว่าการฝึกต่อไปเล็กน้อยหลังจากจุดที่โมเดลเริ่ม Overfit มักจะช่วยปรับปรุงความแม่นยำโดยรวมกฎทอง: เลือก Checkpoint สุดท้ายโดยการประเมินความสำเร็จทั้งในชุดฝึกและชุดตรวจสอบ ไม่ใช่จาก Training Loss⚡ การเพิ่มประสิทธิภาพสำหรับ NXP i.MX 95 Applications Processori.MX 95 SoC ผสานรวม Arm Cortex-A55 จำนวน 6 คอร์, Cortex-M7 และ Cortex M33 MCU, Mali GPU, NXP ISP ใหม่ และ eIQ® Neutron NPU ซึ่งมุ่งเป้าไปที่การประมวลผลแบบ Edge ที่มีประสิทธิภาพและปลอดภัย พร้อมรองรับ Multi-Camera และ I/O ที่แข็งแกร่ง1) แบ่งและพิชิตแทนที่จะรันโมเดลเป็นกราฟเดียว เราได้แยก VLA Graph ออกเป็นระยะต่างๆ เช่น Encoders, Decoders และ Action Experts ทำให้แต่ละส่วนสามารถปรับแต่ง จัดตารางเวลา และปรับใช้ได้อย่างอิสระในทางปฏิบัติ SmolVLA ถูกแบ่งออกเป็นส่วนย่อยๆ ดังนี้:Vision: ประมวลผลเฟรมกล้อง RGB และสร้าง Visual EmbeddingsLLM Backbone: สร้าง Token การกระทำจาก Visual และ Textual EmbeddingsAction Expert: ใช้ Flow Matching เพื่อลดสัญญาณรบกวนของ Action Samples ซ้ำๆ และส่งออกคำสั่งควบคุมสุดท้ายการแยกส่วนนี้ช่วยให้สามารถปรับแต่งแต่ละส่วนได้ สามารถวัดผลกระทบของการ Quantization ในแต่ละส่วน เพื่อเลือกความสมดุลที่ดีที่สุดระหว่างความหน่วงแฝงและความแม่นยำ นอกจากนี้ การแยก Action Expert ออกจาก VLM ยังเหมาะอย่างยิ่งสำหรับการทำงานที่ความถี่ต่ำลงเพื่อให้การประมวลผลสำหรับ i.MX 95 SoC มีประสิทธิภาพ เราได้สำรวจเทคนิค Quantization หลายอย่างในส่วนต่างๆ เราพบว่าการ Quantize Vision Encoder และ LLM Prefill มีผลกระทบต่อความแม่นยำเพียงเล็กน้อย ในขณะที่การ Quantize Denoising Flow ใน Action Expert ทำให้ประสิทธิภาพลดลงอย่างมาก พฤติกรรมนี้เป็นไปตามที่คาดไว้ เนื่องจากข้อผิดพลาดจากการ Quantization จะสะสมข้ามขั้นตอนการลดสัญญาณรบกวนแบบซ้ำๆด้วยเหตุนี้ เราจึงตัดสินใจคงส่วนนี้ไว้ที่ความแม่นยำสูงขึ้นเพื่อรักษาเสถียรภาพ ในขณะที่ส่วนอื่นๆ เราได้สำรวจการกำหนดค่า Quantization ที่หลากหลาย ตั้งแต่ 8-bit Mixed Precision ไปจนถึง 4-bit Quantization ขึ้นอยู่กับเลเยอร์นอกจากนี้ เราได้ใช้การปรับแต่งภายใน (In-house Optimization) ในส่วนต่างๆ ผลลัพธ์แสดงอยู่ในตารางด้านล่าง ซึ่งอ้างอิงถึงโมเดลที่ปรับแต่งแล้ว3) การประมวลผลแบบไม่ซิงโครนัส: การจัดตารางเวลาที่คำนึงถึงการควบคุมในลูปควบคุมแบบซิงโครนัส กระบวนการทำงานดังนี้:รันการประมวลผลโมเดลเต็มรูปแบบดำเนินการตามการกระทำที่สร้างขึ้นในระหว่างขั้นตอนที่ (2) หุ่นยนต์จะหยุดทำงาน หากความหน่วงแฝงในการประมวลผลไม่น้อย จะส่งผลให้เกิด:การแก้ไขแบบสั่นเนื่องจากการสังเกตข้อมูลที่ล้าสมัยความถี่การควบคุมที่ลดลงพฤติกรรมการกู้คืนที่ไม่ดีด้วยการประมวลผลแบบไม่ซิงโครนัส การสร้างการกระทำจะทำงานพร้อมกันกับการดำเนินการ:หุ่นยนต์ดำเนินการตาม Chunk การกระทำปัจจุบันChunk ถัดไปจะถูกคำนวณพร้อมกันสิ่งนี้ช่วยเพิ่มความถี่การควบคุมที่มีประสิทธิภาพ ลดความล้าสมัยของข้อมูล และปรับปรุงพฤติกรรมการกู้คืนบนแพลตฟอร์มฝังตัว เช่น i.MX 95 SoC การประมวลผลแบบไม่ซิงโครนัสเป็นสิ่งจำเป็น แต่จะมีประสิทธิภาพก็ต่อเมื่อความหน่วงแฝงในการประมวลผลยังคงน้อยกว่างบประมาณของ Action Horizon: เวลาประมวลผล < เวลาดำเนินการ📊 สิ่งที่เราทำได้บน i.MXhttps://huggingface.co/blog/nxp/bringing-robotics-ai-to-embedded-platforms
7 Comments 0 Shares 646 Views 0 Reviews