LiteRT Compiled Model API, Kotlin में उपलब्ध है. इससे Android डेवलपर को हाई-लेवल एपीआई के साथ, ऐक्सलरेटर-फ़र्स्ट का बेहतरीन अनुभव मिलता है.
Kotlin में LiteRT ऐप्लिकेशन के उदाहरण के लिए, Kotlin की मदद से इमेज सेगमेंटेशन का डेमो देखें.
शुरू करें
अपने Android ऐप्लिकेशन में LiteRT Compiled Model API जोड़ने के लिए, यह तरीका अपनाएं.
Maven पैकेज जोड़ना
अपने ऐप्लिकेशन में, Compiled Model API के साथ LiteRT डिपेंडेंसी जोड़ें:
dependencies {
...
implementation `com.google.ai.edge.litert:litert:2.0.0-alpha`
}
कंपाइल किया गया मॉडल बनाना
CompiledModel एपीआई का इस्तेमाल करके, मॉडल और अपनी पसंद के हार्डवेयर ऐक्सेलरेटर के साथ रनटाइम शुरू करें:
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite",
CompiledModel.Options(Accelerator.CPU),
env,
)
इनपुट और आउटपुट बफ़र बनाना
इनपुट डेटा को सेव करने के लिए ज़रूरी डेटा स्ट्रक्चर (बफ़र) बनाएं. इस डेटा को मॉडल में इनफ़रेंस के लिए डाला जाएगा. साथ ही, आउटपुट डेटा को सेव करने के लिए ज़रूरी डेटा स्ट्रक्चर (बफ़र) बनाएं. यह डेटा, मॉडल में इनफ़रेंस चलाने के बाद जनरेट होगा.
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
अगर सीपीयू मेमोरी का इस्तेमाल किया जा रहा है, तो पहले इनपुट बफ़र में सीधे डेटा लिखकर इनपुट भरें.
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
मॉडल को चालू करना
इनपुट और आउटपुट बफ़र उपलब्ध कराकर, कंपाइल किए गए मॉडल को चलाएं.
model.run(inputBuffers, outputBuffers)
आउटपुट वापस पाना
मेमोरी से मॉडल के आउटपुट को सीधे तौर पर पढ़कर, आउटपुट वापस पाना.
val outputFloatArray = outputBuffers[0].readFloat()
मुख्य कॉन्सेप्ट और कॉम्पोनेंट
LiteRT Kotlin Compiled Model API के मुख्य कॉन्सेप्ट और कॉम्पोनेंट के बारे में जानने के लिए, यहां दिए गए सेक्शन देखें.
बुनियादी अनुमान (सीपीयू)
यहां LiteRTNext के साथ अनुमान लगाने की सुविधा को कम शब्दों में और आसान तरीके से लागू करने का तरीका बताया गया है.
// Load model and initialize runtime
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite"
)
// Preallocate input/output buffers
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
// Invoke
model.run(inputBuffers, outputBuffers)
// Read the output
val outputFloatArray = outputBuffers[0].readFloat()
// Clean up buffers and model
inputBuffers.forEach { it.close() }
outputBuffers.forEach { it.close() }
model.close()
कंपाइल किया गया मॉडल (CompiledModel)
Compiled Model API (CompiledModel) का काम मॉडल को लोड करना, हार्डवेयर ऐक्सलरेशन लागू करना, रनटाइम को इंस्टैंशिएट करना, इनपुट और आउटपुट बफ़र बनाना, और अनुमान लगाना है.
नीचे दिए गए कोड स्निपेट में, यह दिखाया गया है कि Compiled Model API, LiteRT मॉडल (.tflite) को कैसे लेता है और एक कंपाइल किया गया मॉडल बनाता है. यह मॉडल, अनुमान लगाने के लिए तैयार होता है.
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite"
)
नीचे दिए गए आसान कोड स्निपेट में दिखाया गया है कि CompiledModel एपीआई, इनपुट और आउटपुट बफ़र कैसे लेता है. साथ ही, कंपाइल किए गए मॉडल के साथ अनुमान कैसे लगाता है.
// Preallocate input/output buffers
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
// Invoke
model.run(inputBuffers, outputBuffers)
// Read the output
val outputFloatArray = outputBuffers[0].readFloat()
// Clean up buffers and model
inputBuffers.forEach { it.close() }
outputBuffers.forEach { it.close() }
model.close()
CompiledModel API को कैसे लागू किया जाता है, इसके बारे में ज़्यादा जानकारी के लिए Model.kt पर जाकर सोर्स कोड देखें.
टेंसर बफ़र (TensorBuffer)
LiteRT, I/O बफ़र इंटरऑपरेबिलिटी के लिए पहले से मौजूद सहायता उपलब्ध कराता है. इसके लिए, Tensor Buffer API (TensorBuffer) का इस्तेमाल किया जाता है, ताकि CompiledModel में डेटा के फ़्लो को मैनेज किया जा सके. Tensor Buffer API, बफ़र को लिखने (Write<T>()), पढ़ने (Read<T>()), और लॉक करने की सुविधा देता है.
TensorBuffer API को लागू करने के बारे में ज़्यादा जानकारी के लिए, TensorBuffer.kt पर जाकर सोर्स कोड देखें.