LiteRT ช่วยให้คุณเรียกใช้โมเดล TensorFlow, PyTorch และ JAX ในแอป Android ได้ ระบบ LiteRT มีสภาพแวดล้อมการเรียกใช้ที่สร้างไว้ล่วงหน้าและปรับแต่งได้สําหรับการเรียกใช้โมเดลใน Android อย่างรวดเร็วและมีประสิทธิภาพ รวมถึงตัวเลือกการเร่งด้วยฮาร์ดแวร์
เช่น แอปพลิเคชัน Android ที่ใช้ LiteRT โปรดดูที่ที่เก็บตัวอย่าง LiteRT
โมเดลแมชชีนเลิร์นนิง
LiteRT ใช้โมเดล TensorFlow, PyTorch และ JAX ที่แปลงเป็นรูปแบบโมเดลแมชชีนเลิร์นนิงที่เล็กลง พกพาได้ และมีประสิทธิภาพมากขึ้น คุณสามารถใช้โมเดลที่สร้างไว้ล่วงหน้ากับ LiteRT ใน Android หรือสร้างโมเดลของคุณเองและแปลงเป็นรูปแบบ LiteRT
หน้านี้อธิบายการใช้โมเดลแมชชีนเลิร์นนิงที่สร้างไว้แล้ว แต่ไม่ครอบคลุมการสร้าง การฝึก ทดสอบ หรือการเปลี่ยนรูปแบบโมเดล ดูข้อมูลเพิ่มเติมเกี่ยวกับการเลือก แก้ไข สร้าง และแปลงโมเดลแมชชีนเลิร์นนิงสำหรับ LiteRT ในหน้าโมเดล
เรียกใช้โมเดลใน Android
โมเดล LiteRT ที่ทำงานภายในแอป Android จะรับข้อมูล ประมวลผลข้อมูล และสร้างการคาดการณ์ตามตรรกะของโมเดล โมเดล LiteRT ต้องใช้สภาพแวดล้อมรันไทม์พิเศษจึงจะทํางานได้ และข้อมูลที่ส่งไปยังโมเดลต้องอยู่ในรูปแบบข้อมูลที่เฉพาะเจาะจงที่เรียกว่า เทนเซอร์ เมื่อโมเดลประมวลผลข้อมูล ซึ่งเรียกว่าการอนุมาน โมเดลจะสร้างผลลัพธ์การคาดการณ์เป็นเทนเซอร์ใหม่ และส่งไปยังแอป Android เพื่อให้ดำเนินการต่างๆ เช่น แสดงผลลัพธ์ต่อผู้ใช้หรือเรียกใช้ตรรกะทางธุรกิจเพิ่มเติม
รูปที่ 1 ขั้นตอนการดําเนินการแบบฟังก์ชันสําหรับโมเดล LiteRT ในแอป Android
ในระดับการออกแบบฟังก์ชันการทำงาน แอป Android ต้องมีองค์ประกอบต่อไปนี้เพื่อเรียกใช้โมเดล LiteRT
- สภาพแวดล้อมรันไทม์ LiteRT สําหรับการเรียกใช้โมเดล
- ตัวแฮนเดิลอินพุตของโมเดลเพื่อเปลี่ยนข้อมูลเป็นเทนเซอร์
- ตัวแฮนเดิลเอาต์พุตของโมเดลเพื่อรับ Tensor ผลลัพธ์เอาต์พุตและตีความเป็นผลการคาดการณ์
ส่วนต่อไปนี้อธิบายวิธีที่ไลบรารีและเครื่องมือ LiteRT ให้บริการองค์ประกอบที่ใช้งานได้เหล่านี้
สร้างแอปด้วย LiteRT
ส่วนนี้จะอธิบายเส้นทางที่พบบ่อยที่สุดซึ่งแนะนำสำหรับการใช้ LiteRT ในแอป Android คุณควรให้ความสำคัญกับส่วนรันไทม์และไลบรารีสำหรับนักพัฒนาซอฟต์แวร์มากที่สุด หากคุณได้พัฒนาโมเดลที่กําหนดเอง โปรดดูส่วนเส้นทางการพัฒนาขั้นสูง
ตัวเลือกสภาพแวดล้อมรันไทม์
คุณเปิดใช้สภาพแวดล้อมรันไทม์สําหรับการเรียกใช้โมเดลในแอป Android ได้หลายวิธี โดยตัวเลือกที่แนะนํามีดังนี้
- LiteRT ในสภาพแวดล้อมรันไทม์ของบริการ Google Play (แนะนำ)
- สภาพแวดล้อมรันไทม์ LiteRT แบบสแตนด์อโลน
โดยทั่วไป คุณควรใช้สภาพแวดล้อมรันไทม์ที่บริการของ 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 ไม่รองรับ
- รันไทม์ Flex สำหรับ LiteRT
- รันไทม์ 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 ได้ที่แนวทางปฏิบัติแนะนำด้านประสิทธิภาพในส่วนโมเดล