LiteRT เป็นเฟรมเวิร์กในอุปกรณ์ของ Google สำหรับการใช้งาน ML และ GenAI ประสิทธิภาพสูงบนแพลตฟอร์ม Edge โดยใช้การแปลง รันไทม์ และการเพิ่มประสิทธิภาพที่มีประสิทธิภาพ
LiteRT 2.x เวอร์ชันล่าสุดเปิดตัว CompiledModel API ซึ่งเป็นอินเทอร์เฟซรันไทม์ที่ทันสมัยซึ่งออกแบบมาเพื่อเพิ่มการเร่งความเร็วด้วยฮาร์ดแวร์ให้ได้มากที่สุด แม้ว่า Interpreter API (เดิมคือ TensorFlow Lite) จะยังคงพร้อมใช้งานเพื่อความเข้ากันได้แบบย้อนกลับ แต่ CompiledModel API เป็นตัวเลือกที่แนะนำสำหรับนักพัฒนาแอปที่ต้องการประสิทธิภาพที่ล้ำสมัยในแอปพลิเคชัน AI ในอุปกรณ์
ฟีเจอร์หลักของ LiteRT
ปรับปรุงการพัฒนาด้วย LiteRT
การเลือก Accelerator โดยอัตโนมัติเทียบกับการสร้าง Delegate อย่างชัดเจน การจัดการบัฟเฟอร์ I/O ที่มีประสิทธิภาพและการดำเนินการแบบไม่พร้อมกันเพื่อประสิทธิภาพที่เหนือกว่า ดูเอกสารประกอบเกี่ยวกับการอนุมานในอุปกรณ์
ประสิทธิภาพ GPU ที่ดีที่สุด
ขับเคลื่อนโดย ML Drift ซึ่งตอนนี้รองรับทั้งโมเดล ML และ Generative AI ใน GPU API ดูเอกสารประกอบเกี่ยวกับการเร่งความเร็ว GPU
การเร่งความเร็ว NPU แบบรวม
เร่งความเร็วโมเดลโดยใช้การเข้าถึง NPU ที่ง่ายขึ้นจากผู้ให้บริการชิปเซ็ตรายใหญ่ ดูเอกสารประกอบเกี่ยวกับการเร่งความเร็ว NPU
การรองรับ LLM ที่เหนือกว่า
LiteRT ช่วยให้ใช้งานโมเดล Generative AI ได้อย่างมีประสิทธิภาพสูงในแพลตฟอร์มอุปกรณ์เคลื่อนที่ เดสก์ท็อป และเว็บ ดูเอกสารประกอบเกี่ยวกับการใช้งาน GenAI
การรองรับเฟรมเวิร์ก ML ที่หลากหลาย
LiteRT รองรับการแปลงจากเฟรมเวิร์ก PyTorch, TensorFlow และ JAX เป็นรูปแบบ .tflite หรือ .litertlm ที่ปรับปรุงแล้ว ดูเอกสารประกอบเกี่ยวกับการแปลงโมเดล
เริ่มต้นใช้งาน CompiledModel API
สำหรับโมเดล ML แบบคลาสสิก โปรดดูแอปสาธิตต่อไปนี้
- แอป Kotlin สำหรับการแบ่งกลุ่มรูปภาพ: การอนุมาน CPU/GPU/NPU
- แอป C++ สำหรับการแบ่งกลุ่มรูปภาพ: การอนุมาน CPU/GPU/NPU ด้วย การดำเนินการแบบไม่พร้อมกัน
สำหรับโมเดล GenAI โปรดดูแอปสาธิตต่อไปนี้
- แอป C++ สำหรับความคล้ายคลึงเชิงความหมายของ EmbeddingGemma: การอนุมาน CPU/GPU/NPU
เวิร์กโฟลว์การพัฒนา
LiteRT เรียกใช้การอนุมานในอุปกรณ์อย่างสมบูรณ์บน Android, iOS, เว็บ, IoT และบนเดสก์ท็อป/แล็ปท็อป เวิร์กโฟลว์ที่พบบ่อยที่สุดมีดังนี้ โดยมีลิงก์ไปยังวิธีการเพิ่มเติม ไม่ว่าอุปกรณ์จะเป็นอะไรก็ตาม
ระบุโซลูชันที่เหมาะสมที่สุดสำหรับความท้าทายด้าน ML
LiteRT มีความยืดหยุ่นและปรับแต่งได้ในระดับสูงสำหรับผู้ใช้เมื่อต้องแก้ปัญหาแมชชีนเลิร์นนิง จึงเหมาะสำหรับผู้ใช้ที่ต้องการโมเดลเฉพาะหรือการใช้งานเฉพาะทาง ผู้ใช้ที่กำลังมองหา โซลูชันแบบ Plug and Play อาจชอบ MediaPipe Tasks, ซึ่งมีโซลูชันสำเร็จรูปสำหรับงานแมชชีนเลิร์นนิงทั่วไป เช่น การตรวจหาออบเจ็กต์, การจัดประเภทข้อความ และการอนุมาน LLM

รับและเตรียมโมเดล
โมเดล LiteRT แสดงในรูปแบบพกพาที่มีประสิทธิภาพที่เรียกว่า
FlatBuffers ซึ่งใช้นามสกุลไฟล์.tflite
คุณรับโมเดล LiteRT ได้ด้วยวิธีต่อไปนี้
รับโมเดลที่ฝึกไว้ล่วงหน้า: สำหรับภาระงาน ML ยอดนิยม เช่น การแบ่งกลุ่มรูปภาพ การตรวจหาออบเจ็กต์ เป็นต้น
วิธีที่ง่ายที่สุดคือการใช้โมเดล LiteRT ที่อยู่ในรูปแบบ
.tfliteอยู่แล้ว โมเดลเหล่านี้ไม่จำเป็นต้องมีขั้นตอนการแปลงเพิ่มเติมประเภทโมเดล แหล่งที่มาของโมเดลที่ฝึกไว้ล่วงหน้า ML แบบคลาสสิก
(.tfliteรูปแบบ)ไปที่ Kaggle หรือ HuggingFace
เช่น โมเดลการแบ่งกลุ่มรูปภาพ และ แอปตัวอย่างGenerative AI
(รูปแบบ.litertlm)หน้า Hugging Face ของ LiteRT
เช่น ตระกูล Gemmaแปลง โมเดล PyTorch, TensorFlow หรือ JAX ที่เลือกเป็นโมเดล LiteRT หากคุณเลือกที่จะไม่ใช้โมเดลที่ฝึกไว้ล่วงหน้า [ผู้ใช้ระดับโปร]
เฟรมเวิร์กโมเดล โมเดลตัวอย่าง เครื่องมือการแปลง Pytorch Hugging Face
Torchvisionลิงก์ TensorFlow โมเดล Kaggle
Hugging Faceลิงก์ Jax Hugging Face ลิงก์ สร้าง LLM เพื่อเพิ่มประสิทธิภาพโดยใช้ Generative API [ผู้ใช้ระดับโปร]
ไลบรารี Generative API มีองค์ประกอบที่ใช้สร้างสรรค์ในตัวของ PyTorch สำหรับ การสร้างโมเดล Transformer เช่น Gemma, TinyLlama และ อื่นๆ โดยใช้การแยกรายละเอียดที่เหมาะกับมือถือ ซึ่ง เราสามารถรับประกันการแปลง และการดำเนินการที่มีประสิทธิภาพในรันไทม์อุปกรณ์เคลื่อนที่ของเรา นั่นคือ LiteRT ดูเอกสารประกอบเกี่ยวกับ Generative API
เพิ่มประสิทธิภาพ [ผู้ใช้ระดับโปร]
AI Edge Quantizer สำหรับนักพัฒนาแอปขั้นสูงเป็นเครื่องมือในการหาปริมาณโมเดล LiteRT ที่แปลงแล้ว โดยมีเป้าหมายเพื่อช่วยให้ผู้ใช้ขั้นสูงมุ่งมั่นที่จะได้รับประสิทธิภาพสูงสุดในโมเดลที่ต้องใช้ทรัพยากรจำนวนมาก (เช่น โมเดล GenAI)
ดูรายละเอียดเพิ่มเติมได้จากเอกสารประกอบ AI Edge Quantizer
ผสานรวมโมเดลเข้ากับแอปในแพลตฟอร์ม Edge
LiteRT ช่วยให้คุณเรียกใช้โมเดล ML ในอุปกรณ์ได้อย่างสมบูรณ์ด้วยประสิทธิภาพสูงในแพลตฟอร์ม Android, iOS, เว็บ, เดสก์ท็อป และ IoT
ใช้คำแนะนำต่อไปนี้เพื่อผสานรวมโมเดล LiteRT ในแพลตฟอร์มที่คุณต้องการ
| แพลตฟอร์มที่รองรับ | อุปกรณ์ที่รองรับ | API ที่รองรับ |
|---|---|---|
| เรียกใช้ใน Android | โทรศัพท์มือถือ Android | C++/Kotlin |
| เรียกใช้ใน iOS/macOS | โทรศัพท์มือถือ iOS, Macbook | C++/Swift |
| เรียกใช้ในเว็บโดยใช้ LiteRT.js | อุปกรณ์ที่มี Chrome, Firefox หรือ Safari | JavaScript |
| เรียกใช้ใน Linux | เวิร์กสเตชัน Linux หรืออุปกรณ์ IoT ที่ใช้ Linux | C++/Python |
| เรียกใช้ใน Windows | เวิร์กสเตชันหรือแล็ปท็อป Windows | C++/Python |
| เรียกใช้ใน IoT | อุปกรณ์แบบฝัง | C++ |
ข้อมูลโค้ดต่อไปนี้แสดงการใช้งานพื้นฐานใน Kotlin และ C++
Kotlin
// Load model and initialize runtime
val compiledModel = CompiledModel.create(
"/path/to/mymodel.tflite",
CompiledModel.Options(Accelerator.CPU))
// Preallocate input/output buffers
val inputBuffers = compiledModel.createInputBuffers()
val outputBuffers = compiledModel.createOutputBuffers()
// Fill the input buffer
inputBuffers.get(0).writeFloat(input0)
inputBuffers.get(1).writeFloat(input1)
// Invoke
compiledModel.run(inputBuffers, outputBuffers)
// Read the output
val output = outputBuffers.get(0).readFloat()
C++
// Load model and initialize runtime
LITERT_ASSIGN_OR_RETURN(auto env, GetEnvironment());
LITERT_ASSIGN_OR_RETURN(auto options, GetOptions());
LITERT_ASSIGN_OR_RETURN(
auto compiled_model,
CompiledModel::Create(env, "/path/to/mymodel.tflite", options));
// Preallocate input/output buffers
LITERT_ASSIGN_OR_RETURN(auto input_buffers,compiled_model.CreateInputBuffers(signature_index));
LITERT_ASSIGN_OR_RETURN(auto output_buffers,compiled_model.CreateOutputBuffers(signature_index));
// Fill the input buffer
LITERT_ABORT_IF_ERROR(input_buffers[0].Write(input0));
LITERT_ABORT_IF_ERROR(input_buffers[1].Write(input1));
// Invoke
LITERT_ABORT_IF_ERROR(compiled_model.Run(signature_index, input_buffers, output_buffers));
// Read the output
LITERT_ABORT_IF_ERROR(output_buffers[0].Read(output0));
เลือกแบ็กเอนด์
วิธีที่ตรงไปตรงมาที่สุดในการรวมแบ็กเอนด์ใน LiteRT คือการใช้ประโยชน์จากความสามารถในตัวของรันไทม์ ด้วย CompiledModel API, LiteRT จะทำให้การตั้งค่าง่ายขึ้นอย่างมากด้วยความสามารถในการระบุแบ็กเอนด์เป้าหมายเป็นตัวเลือก ดูรายละเอียดเพิ่มเติมได้ที่
คำแนะนำการอนุมานในอุปกรณ์
| Android | iOS / macOS | เว็บ | Linux | Windows | IoT | |
|---|---|---|---|---|---|---|
| CPU | XNNPACK | XNNPACK | XNNPACK | XNNPACK | XNNPACK | XNNPACK |
| GPU | OpenGL OpenCL |
Metal WebGPU |
WebGPU | WebGPU OpenCL |
WebGPU OpenCL |
WebGPU |
| NPU | MediaTek Qualcomm |
- | - | Qualcomm | - | Qualcomm |
เอกสารประกอบและการสนับสนุนเพิ่มเติม
ที่เก็บของ GitHub สำหรับตัวอย่าง LiteRT เพื่อดูแอปตัวอย่าง LiteRT เพิ่มเติม
สำหรับผู้ใช้ TensorFlow Lite อยู่แล้ว โปรดดูคำแนะนำในการย้ายข้อมูล
หน้าเครื่องมือ LiteRT สำหรับประสิทธิภาพ การสร้างโปรไฟล์ การรายงานข้อผิดพลาด ฯลฯ