LiteRT สำหรับ Android

LiteRT ช่วยให้คุณเรียกใช้โมเดล TensorFlow, PyTorch และ JAX ในแอป Android ได้ ระบบ LiteRT มีสภาพแวดล้อมการเรียกใช้ที่สร้างไว้ล่วงหน้าและปรับแต่งได้สําหรับการเรียกใช้โมเดลใน Android อย่างรวดเร็วและมีประสิทธิภาพ รวมถึงตัวเลือกการเร่งด้วยฮาร์ดแวร์

เช่น แอปพลิเคชัน Android ที่ใช้ LiteRT โปรดดูที่ที่เก็บตัวอย่าง LiteRT

โมเดลแมชชีนเลิร์นนิง

LiteRT ใช้โมเดล TensorFlow, PyTorch และ JAX ที่แปลงเป็นรูปแบบโมเดลแมชชีนเลิร์นนิงที่เล็กลง พกพาได้ และมีประสิทธิภาพมากขึ้น คุณสามารถใช้โมเดลที่สร้างไว้ล่วงหน้ากับ LiteRT ใน Android หรือสร้างโมเดลของคุณเองและแปลงเป็นรูปแบบ LiteRT

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

เรียกใช้โมเดลใน Android

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

ขั้นตอนการดําเนินการแบบฟังก์ชันสําหรับโมเดล LiteRT ในแอป Android

รูปที่ 1 ขั้นตอนการดําเนินการแบบฟังก์ชันสําหรับโมเดล LiteRT ในแอป Android

ในระดับการออกแบบฟังก์ชันการทำงาน แอป Android ต้องมีองค์ประกอบต่อไปนี้เพื่อเรียกใช้โมเดล LiteRT

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

ส่วนต่อไปนี้อธิบายวิธีที่ไลบรารีและเครื่องมือ LiteRT ให้บริการองค์ประกอบที่ใช้งานได้เหล่านี้

สร้างแอปด้วย LiteRT

ส่วนนี้จะอธิบายเส้นทางที่พบบ่อยที่สุดซึ่งแนะนำสำหรับการใช้ LiteRT ในแอป Android คุณควรให้ความสำคัญกับส่วนรันไทม์และไลบรารีสำหรับนักพัฒนาซอฟต์แวร์มากที่สุด หากคุณได้พัฒนาโมเดลที่กําหนดเอง โปรดดูส่วนเส้นทางการพัฒนาขั้นสูง

ตัวเลือกสภาพแวดล้อมรันไทม์

คุณเปิดใช้สภาพแวดล้อมรันไทม์สําหรับการเรียกใช้โมเดลในแอป Android ได้หลายวิธี โดยตัวเลือกที่แนะนํามีดังนี้

โดยทั่วไป คุณควรใช้สภาพแวดล้อมรันไทม์ที่บริการของ Google Play มอบให้ เนื่องจากใช้พื้นที่น้อยกว่าสภาพแวดล้อมมาตรฐานเนื่องจากโหลดแบบไดนามิก ซึ่งทำให้แอปมีขนาดเล็กลง นอกจากนี้ Google Play Services ยังใช้รันไทม์ LiteRT เวอร์ชันล่าสุดที่มีความเสถียรโดยอัตโนมัติ ซึ่งจะช่วยให้คุณได้รับฟีเจอร์เพิ่มเติมและประสิทธิภาพที่ดีขึ้นเมื่อเวลาผ่านไป หากคุณเสนอแอปในอุปกรณ์ที่ไม่มีบริการ Google Play หรือต้องจัดการสภาพแวดล้อมรันไทม์ ML อย่างใกล้ชิด คุณควรใช้รันไทม์ LiteRT มาตรฐาน ตัวเลือกนี้จะรวมโค้ดเพิ่มเติมไว้ในแอป ซึ่งจะช่วยให้คุณควบคุมรันไทม์ ML ในแอปได้มากขึ้น แต่จะทำให้ขนาดการดาวน์โหลดของแอปเพิ่มขึ้น

คุณเข้าถึงสภาพแวดล้อมรันไทม์เหล่านี้ในแอป Android ได้โดยการเพิ่มไลบรารีการพัฒนา LiteRT ลงในสภาพแวดล้อมการพัฒนาแอป ดูข้อมูลเกี่ยวกับวิธีใช้สภาพแวดล้อมรันไทม์มาตรฐานในแอปได้ที่ส่วนถัดไป

ห้องสมุด

คุณเข้าถึง Interpreter API ได้โดยใช้บริการของ Google Play คุณสามารถใช้ไลบรารี core และsupport ของ LiteRT ในแอป Android ได้ ดูรายละเอียดการเขียนโปรแกรมเกี่ยวกับการใช้ไลบรารี LiteRT และสภาพแวดล้อมรันไทม์ได้ที่เครื่องมือสำหรับนักพัฒนาแอป Android

รับโมเดล

การใช้โมเดลในแอป Android ต้องใช้โมเดลรูปแบบ LiteRT คุณสามารถใช้รูปแบบที่สร้างไว้ล่วงหน้าหรือสร้างรูปแบบขึ้นมาเองแล้วแปลงเป็นรูปแบบ Lite ได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการรับโมเดลสําหรับแอป Android ได้ที่หน้าโมเดลของ LiteRT

จัดการข้อมูลอินพุต

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

เรียกใช้การอนุมาน

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

ความเร็วที่โมเดลสร้างการอนุมานในอุปกรณ์หนึ่งๆ จะขึ้นอยู่กับขนาดของข้อมูลที่ประมวลผล ความซับซ้อนของโมเดล และทรัพยากรการประมวลผลที่มีอยู่ เช่น หน่วยความจำและ CPU หรือตัวประมวลผลเฉพาะที่เรียกว่า Accelerator โมเดลแมชชีนเลิร์นนิงจะทำงานได้เร็วขึ้นบนโปรเซสเซอร์เฉพาะเหล่านี้ เช่น หน่วยประมวลผลกราฟิก (GPU) และหน่วยประมวลผลเทนเซอร์ (TPU) โดยใช้ไดรเวอร์ฮาร์ดแวร์ LiteRT ที่เรียกว่าตัวแทน ดูข้อมูลเพิ่มเติมเกี่ยวกับผู้รับมอบสิทธิ์และการเร่งด้วยฮาร์ดแวร์ของการดำเนินการกับโมเดลได้ที่ภาพรวมการเร่งด้วยฮาร์ดแวร์

จัดการผลลัพธ์เอาต์พุต

โมเดลจะสร้างผลการคาดการณ์เป็นเทนเซอร์ ซึ่งแอป Android ของคุณต้องจัดการด้วยการดําเนินการหรือแสดงผลลัพธ์ต่อผู้ใช้ เอาต์พุตของโมเดลอาจเรียบง่ายเพียงตัวเลขที่สอดคล้องกับผลลัพธ์เดียว (0 = สุนัข, 1 = แมว, 2 = นก) สำหรับการแยกประเภทรูปภาพ หรืออาจซับซ้อนกว่านั้นมาก เช่น กล่องขอบเขตหลายกล่องสําหรับวัตถุที่แยกประเภทหลายรายการในรูปภาพ โดยมีคะแนนความเชื่อมั่นในการคาดการณ์ระหว่าง 0 ถึง 1

เส้นทางการพัฒนาขั้นสูง

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

สภาพแวดล้อมรันไทม์ขั้นสูง

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

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

API ของ C และ C++

LiteRT ยังมี API สำหรับเรียกใช้โมเดลโดยใช้ C และ C++ ด้วย หากแอปของคุณใช้ Android NDK คุณควรพิจารณาใช้ API นี้ นอกจากนี้ คุณอาจพิจารณาใช้ API นี้หากต้องการแชร์โค้ดระหว่างแพลตฟอร์มหลายแพลตฟอร์ม ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการพัฒนานี้ได้ในหน้าเครื่องมือการพัฒนา

การดำเนินการโมเดลฝั่งเซิร์ฟเวอร์

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

Google Cloud มีชุดบริการที่ครบวงจรสําหรับการเรียกใช้โมเดล AI ดูข้อมูลเพิ่มเติมได้ในหน้าผลิตภัณฑ์ AI และแมชชีนเลิร์นนิงของ Google Cloud

การพัฒนาและการเพิ่มประสิทธิภาพโมเดลที่กําหนดเอง

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