ภาพรวมการแปลงรูปแบบ

เดิมโมเดลแมชชีนเลิร์นนิง (ML) ที่คุณใช้กับ LiteRT สร้างและฝึกฝนโดยใช้ไลบรารีและเครื่องมือหลักของ TensorFlow เมื่อคุณสร้าง คุณสามารถแปลงโมเดลที่มีแกน TensorFlow เป็นขนาดเล็กกว่า รูปแบบโมเดล ML ที่มีประสิทธิภาพ ที่เรียกว่าโมเดล LiteRT ส่วนนี้มีคำแนะนำเกี่ยวกับ Conversion โมเดล TensorFlow ให้อยู่ในรูปแบบโมเดล LiteRT

เวิร์กโฟลว์ Conversion

การแปลงโมเดล TensorFlow เป็นรูปแบบ LiteRT สามารถทำได้ 2-3 เส้นทาง ขึ้นอยู่กับเนื้อหาของโมเดล ML ในขั้นตอนแรกของกระบวนการดังกล่าว คุณควรประเมินโมเดลเพื่อดูว่าจะแปลงโดยตรงได้หรือไม่ การประเมินนี้กำหนดว่าเนื้อหาของโมเดลได้รับการสนับสนุนโดย สภาพแวดล้อมรันไทม์ LiteRT มาตรฐานที่อิงตามการดำเนินการของ TensorFlow ที่สิ่งต่างๆ ใช้ หากโมเดลใช้การดำเนินการนอกชุดที่รองรับ คุณจะมี ตัวเลือกในการเปลี่ยนโครงสร้างภายในรูปแบบหรือใช้เทคนิค Conversion ขั้นสูง

แผนภาพด้านล่างแสดงขั้นตอนระดับสูงในการแปลงโมเดล

เวิร์กโฟลว์ Conversion TFLite

รูปที่ 1 ขั้นตอนการแปลง LiteRT

ส่วนต่อไปนี้จะสรุปขั้นตอนการประเมินและแปลงโมเดล สำหรับใช้กับ LiteRT

รูปแบบโมเดลอินพุต

คุณสามารถใช้ตัวแปลงกับรูปแบบโมเดลอินพุตต่อไปนี้

คุณสามารถบันทึกทั้ง Keras และโมเดลฟังก์ชันคอนกรีตเป็น savedModel ได้ และแปลงโดยใช้เส้นทางที่แนะนำ

ถ้าใช้รุ่น Jax คุณสามารถใช้ TFLiteConverter.experimental_from_jax API เพื่อแปลงเป็นรูปแบบ LiteRT โปรดทราบว่า API นี้เป็นไปตาม เพื่อเปลี่ยนขณะอยู่ในโหมดทดลอง

การประเมิน Conversion

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

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

การแปลงโมเดล

ตัวแปลง LiteRT จะใช้โมเดล TensorFlow และสร้าง โมเดล LiteRT (เพิ่มประสิทธิภาพ FlatBuffer ที่ระบุโดย .tflite) คุณโหลดได้ SaveModel หรือแปลงโมเดลที่คุณสร้างในโค้ดโดยตรง

ผู้ทำ Conversion จะใช้แฟล็กหลัก 3 รายการ (หรือตัวเลือก) ที่กำหนด Conversion เอง สำหรับโมเดลของคุณ:

  1. แฟล็กความเข้ากันได้ช่วยให้คุณระบุ ว่า Conversion ควรอนุญาตให้ใช้โอเปอเรเตอร์ที่กำหนดเองหรือไม่
  2. แฟล็กการเพิ่มประสิทธิภาพช่วยให้คุณดำเนินการต่อไปนี้ได้ ระบุประเภทการเพิ่มประสิทธิภาพที่จะใช้ ระหว่างการแปลง เทคนิคการเพิ่มประสิทธิภาพที่ใช้กันโดยทั่วไปคือ เกณฑ์หลังการฝึก
  3. แฟล็กข้อมูลเมตาช่วยให้คุณเพิ่มข้อมูลเมตาลงในโมเดลที่แปลงแล้วได้ ซึ่งช่วยให้สร้างโค้ด Wrapper เฉพาะแพลตฟอร์มได้ง่ายขึ้นเมื่อทำให้ใช้งานได้ รุ่นต่างๆ ในอุปกรณ์

คุณแปลงโมเดลได้โดยใช้ Python API หรือ เครื่องมือบรรทัดคำสั่ง โปรดดู คู่มือแปลงรูปแบบ TF แบบทีละขั้นตอน วิธีเรียกใช้ตัวแปลงบนโมเดล

โดยทั่วไปแล้ว คุณจะต้องแปลงโมเดลสำหรับ LiteRT มาตรฐาน สภาพแวดล้อมรันไทม์หรือ สภาพแวดล้อมรันไทม์ของบริการ Google Play สำหรับ LiteRT (เบต้า) Use Case ขั้นสูงบางกรณีต้องใช้ การปรับแต่งสภาพแวดล้อมรันไทม์ของโมเดล ซึ่งจำเป็นต้องมีขั้นตอนเพิ่มเติมใน ขั้นตอน Conversion โปรดดู ส่วนสภาพแวดล้อมรันไทม์ขั้นสูงของ Android ภาพรวมสำหรับคำแนะนำเพิ่มเติม

Conversion ขั้นสูง

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

ขั้นตอนถัดไป