ไมโครคอนโทรลเลอร์มี RAM และพื้นที่เก็บข้อมูลที่จำกัด ซึ่งทำให้มีข้อจำกัดใน ขนาดโมเดลแมชชีนเลิร์นนิง นอกจากนี้ LiteRT สำหรับ ในปัจจุบันไมโครคอนโทรลเลอร์สนับสนุนการทำงานเพียงบางส่วนเท่านั้น จึงอาจไม่ใช่ทั้งหมด สถาปัตยกรรมโมเดล ที่เป็นไปได้
เอกสารนี้อธิบายกระบวนการแปลงโมเดล TensorFlow เพื่อเรียกใช้ ไมโครคอนโทรลเลอร์ นอกจากนี้ยังสรุปการดำเนินการที่สนับสนุนและให้ คำแนะนำในการออกแบบและฝึกโมเดลให้พอดีกับหน่วยความจำที่จำกัด
สำหรับตัวอย่างการสร้างและแปลงโมเดลที่ทำงานได้แบบครบวงจร โปรดดู สวัสดีชาวโลก
การแปลงโมเดล
หากต้องการแปลงโมเดล TensorFlow ที่ผ่านการฝึกแล้วให้ทำงานบนไมโครคอนโทรลเลอร์ คุณควรใช้
เวลา
Python API ตัวแปลง LiteRT
ซึ่งจะแปลงโมเดลนี้เป็น
FlatBuffer
ลดขนาดโมเดล
และแก้ไขเพื่อใช้การดำเนินการ LiteRT
หากต้องการได้โมเดลที่มีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้ คุณควรพิจารณาใช้ การวัดปริมาณหลังการฝึก
แปลงเป็นอาร์เรย์ C
แพลตฟอร์มไมโครคอนโทรลเลอร์จำนวนมากไม่รองรับระบบไฟล์ในเครื่อง วิธีที่ง่ายที่สุดในการใช้โมเดลจากโปรแกรมของคุณคือ รวมโมเดลเป็นอาร์เรย์ C คอมไพล์ไว้ในโปรแกรมของคุณ
คำสั่ง Unix ต่อไปนี้จะสร้างไฟล์ต้นฉบับ C ที่มีองค์ประกอบ
โมเดล LiteRT เป็นอาร์เรย์ char
:
xxd -i converted_model.tflite > model_data.cc
ผลลัพธ์จะมีลักษณะคล้ายกับด้านล่างนี้
unsigned char converted_model_tflite[] = {
0x18, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x0e, 0x00,
// <Lines omitted>
};
unsigned int converted_model_tflite_len = 18200;
เมื่อสร้างไฟล์แล้ว คุณจะรวมไว้ในโปรแกรมได้ ใช่เลย
ต้องเปลี่ยนการประกาศอาร์เรย์เป็น const
เพื่อให้หน่วยความจำดีขึ้น
ประสิทธิภาพบนแพลตฟอร์มแบบฝัง
สำหรับตัวอย่างของวิธีรวมและใช้โมเดลในโปรแกรมของคุณ โปรดดู
hello_world_test.cc
ในตัวอย่าง Hello World
การฝึกและสถาปัตยกรรมโมเดล
สิ่งสำคัญที่ต้องพิจารณาเมื่อออกแบบโมเดลสำหรับไมโครคอนโทรลเลอร์ ขนาดโมเดล ภาระงาน และการดำเนินการที่ใช้
ขนาดโมเดล
โมเดลต้องมีขนาดเล็กพอที่จะใส่ไว้ในหน่วยความจำของอุปกรณ์เป้าหมายควบคู่ไปกับ โปรแกรมที่เหลือ ทั้งในรูปแบบไบนารีและระหว่างรันไทม์
หากต้องการสร้างโมเดลขนาดเล็กลง คุณสามารถใช้เลเยอร์ที่น้อยลงและเล็กลงได้ใน สถาปัตยกรรม อย่างไรก็ตาม โมเดลขนาดเล็กมีแนวโน้มที่จะถูกปรับให้ไม่เหมาะสม ซึ่งหมายความว่าสำหรับปัญหาหลายประการ คุณควรลองใช้โมเดลที่ใหญ่ที่สุด ขนาดที่จะใส่ลงในความทรงจำ อย่างไรก็ตาม การใช้โมเดลที่มีขนาดใหญ่กว่าจะทำให้ ปริมาณงานของตัวประมวลผลที่เพิ่มขึ้น
ภาระงาน
ขนาดและความซับซ้อนของโมเดลส่งผลต่อภาระงาน มีขนาดใหญ่และซับซ้อน อาจทำให้มีรอบการทำงานที่สูงขึ้น ซึ่งหมายความว่าโปรเซสเซอร์ของอุปกรณ์ ใช้เวลาในการทำงานมากขึ้น และไม่มีการใช้งานน้อยลง ซึ่งจะช่วยเพิ่มพลังงาน การใช้พลังงานและพลังงานความร้อน ซึ่งอาจเป็นปัญหา ทั้งนี้ขึ้นอยู่กับ แอปพลิเคชัน
การสนับสนุนการดำเนินการ
ปัจจุบัน LiteRT สำหรับไมโครคอนโทรลเลอร์สนับสนุนชุดย่อยของ การดำเนินการของ TensorFlow ซึ่งส่งผลต่อสถาปัตยกรรมโมเดลที่เป็นไปได้ ที่จะเรียกใช้ เรากำลังขยายการสนับสนุนการปฏิบัติงาน ทั้งในด้านของ อ้างอิงการติดตั้งใช้งานและการเพิ่มประสิทธิภาพสำหรับสถาปัตยกรรมที่เฉพาะเจาะจง
ดูการดำเนินการที่รองรับได้ในไฟล์
micro_mutable_ops_resolver.h