ภาพรวม LiteRT

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

เวิร์กโฟลว์การพัฒนา

LiteRT เรียกใช้การอนุมานในอุปกรณ์อย่างสมบูรณ์บน Android, iOS, เว็บ, IoT และบนเดสก์ท็อป/แล็ปท็อป เวิร์กโฟลว์ที่พบบ่อยที่สุดมีดังนี้ โดยมีลิงก์ไปยังวิธีการเพิ่มเติม ไม่ว่าอุปกรณ์จะเป็นอะไรก็ตาม

ระบุโซลูชันที่เหมาะสมที่สุดสำหรับความท้าทายด้าน ML

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

กราฟเวิร์กโฟลว์การพัฒนา LiteRT

รับและเตรียมโมเดล

โมเดล 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

เอกสารประกอบและการสนับสนุนเพิ่มเติม