Përdorimi i njësive të përpunimit grafik (GPU) për të ekzekutuar modelet tuaja të mësimit të makinerisë (ML) mund të përmirësojë në mënyrë dramatike performancën dhe përvojën e përdoruesit të aplikacioneve tuaja të aktivizuara me ML. Në pajisjet Android, mund të aktivizoni një delegat dhe një nga API-të e mëposhtme:
- Interpreter API - ky udhëzues
- API amtare (C/C++) - udhëzues
Kjo faqe përshkruan se si të aktivizoni përshpejtimin e GPU-së për modelet LiteRT në aplikacionet Android duke përdorur API-në e interpretuesit. Për më shumë informacion rreth përdorimit të delegatit të GPU për LiteRT, duke përfshirë praktikat më të mira dhe teknikat e avancuara, shihni faqen e delegatëve të GPU .
Përdorni GPU me LiteRT me shërbimet e Google Play
LiteRT Interpreter API ofron një sërë API-sh për qëllime të përgjithshme për ndërtimin e një aplikacioni për mësimin e makinerive. Ky seksion përshkruan se si të përdoret delegati i përshpejtuesit GPU me këto API me shërbimet LiteRT me Google Play.
LiteRT me shërbimet e Google Play është rruga e rekomanduar për të përdorur LiteRT në Android. Nëse aplikacioni juaj synon pajisje që nuk përdorin Google Play, shihni seksionin GPU me Interpreter API dhe seksionin e pavarur LiteRT .
Shto varësitë e projektit (me katalogun e versioneve .toml)
- Përditësoni skedarin
libs.versions.toml
të projektit tuaj
[libraries]
...
tflite-gpu = { module = "com.google.ai.edge.litert:litert-gpu", version = "2.X.Y" }
tflite-gpu-api = { module = "com.google.ai.edge.litert:litert-gpu-api", version = "2.X.Y" }
...
- Shtoni varësitë e projektit në
build.gradle.kts
të aplikacionit
dependencies {
...
implementation(libs.tflite.gpu)
implementation(libs.tflite.gpu.api)
...
}
Shtoni varësitë e projektit
Për të aktivizuar aksesin te delegati i GPU-së, shtoni com.google.android.gms:play-services-tflite-gpu
në skedarin build.gradle
të aplikacionit tuaj:
dependencies {
...
implementation 'com.google.android.gms:play-services-tflite-java:16.0.1'
implementation 'com.google.android.gms:play-services-tflite-gpu:16.1.0'
}
Aktivizo përshpejtimin e GPU-së
Më pas inicializoni LiteRT me shërbimet e Google Play me mbështetjen e GPU:
Kotlin
val useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context) val interpreterTask = useGpuTask.continueWith { useGpuTask -> TfLite.initialize(context, TfLiteInitializationOptions.builder() .setEnableGpuDelegateSupport(useGpuTask.result) .build()) }
Java
Task<boolean> useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context); Task<Options> interpreterOptionsTask = useGpuTask.continueWith({ task -> TfLite.initialize(context, TfLiteInitializationOptions.builder() .setEnableGpuDelegateSupport(true) .build()); });
Më në fund mund të inicializoni përkthyesin duke kaluar një GpuDelegateFactory
përmes InterpreterApi.Options
:
Kotlin
val options = InterpreterApi.Options() .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY) .addDelegateFactory(GpuDelegateFactory()) val interpreter = InterpreterApi(model, options) // Run inference writeToInput(input) interpreter.run(input, output) readFromOutput(output)
Java
Options options = InterpreterApi.Options() .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY) .addDelegateFactory(new GpuDelegateFactory()); Interpreter interpreter = new InterpreterApi(model, options); // Run inference writeToInput(input); interpreter.run(input, output); readFromOutput(output);
Delegati i GPU-së mund të përdoret gjithashtu me lidhjen e modelit ML në Android Studio. Për më shumë informacion, shihni Krijo ndërfaqe modeli duke përdorur metadatat .
Përdorni GPU me LiteRT të pavarur
Nëse aplikacioni juaj synon pajisje që nuk ekzekutojnë Google Play, është e mundur të bashkoni delegatin e GPU-së në aplikacionin tuaj dhe ta përdorni atë me versionin e pavarur të LiteRT.
Shtoni varësitë e projektit
Për të aktivizuar aksesin te delegati i GPU-së, shtoni com.google.ai.edge.litert:litert-gpu-delegate-plugin
në skedarin build.gradle
të aplikacionit tuaj:
dependencies {
...
implementation 'com.google.ai.edge.litert:litert'
implementation 'com.google.ai.edge.litert:litert-gpu'
implementation 'com.google.ai.edge.litert:litert-gpu-api'
}
Aktivizo përshpejtimin e GPU-së
Pastaj ekzekutoni LiteRT në GPU me TfLiteDelegate
. Në Java, mund të specifikoni GpuDelegate
përmes Interpreter.Options
.
Kotlin
import org.tensorflow.lite.Interpreter import org.tensorflow.lite.gpu.CompatibilityList import org.tensorflow.lite.gpu.GpuDelegate val compatList = CompatibilityList() val options = Interpreter.Options().apply{ if(compatList.isDelegateSupportedOnThisDevice){ // if the device has a supported GPU, add the GPU delegate val delegateOptions = compatList.bestOptionsForThisDevice this.addDelegate(GpuDelegate(delegateOptions)) } else { // if the GPU is not supported, run on 4 threads this.setNumThreads(4) } } val interpreter = Interpreter(model, options) // Run inference writeToInput(input) interpreter.run(input, output) readFromOutput(output)
Java
import org.tensorflow.lite.Interpreter; import org.tensorflow.lite.gpu.CompatibilityList; import org.tensorflow.lite.gpu.GpuDelegate; // Initialize interpreter with GPU delegate Interpreter.Options options = new Interpreter.Options(); CompatibilityList compatList = CompatibilityList(); if(compatList.isDelegateSupportedOnThisDevice()){ // if the device has a supported GPU, add the GPU delegate GpuDelegate.Options delegateOptions = compatList.getBestOptionsForThisDevice(); GpuDelegate gpuDelegate = new GpuDelegate(delegateOptions); options.addDelegate(gpuDelegate); } else { // if the GPU is not supported, run on 4 threads options.setNumThreads(4); } Interpreter interpreter = new Interpreter(model, options); // Run inference writeToInput(input); interpreter.run(input, output); readFromOutput(output);
Modele të kuantizuara
Bibliotekat e delegatëve të GPU-së Android mbështesin modelet e kuantizuara si parazgjedhje. Ju nuk keni nevojë të bëni ndonjë ndryshim kodi për të përdorur modele të kuantizuara me delegatin e GPU. Seksioni vijues shpjegon se si të çaktivizohet mbështetja e kuantizuar për qëllime testimi ose eksperimentale.
Çaktivizo mbështetjen e modelit të kuantizuar
Kodi i mëposhtëm tregon se si të çaktivizoni mbështetjen për modelet e kuantizuara.
Java
GpuDelegate delegate = new GpuDelegate(new GpuDelegate.Options().setQuantizedModelsAllowed(false)); Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
Për më shumë informacion rreth ekzekutimit të modeleve të kuantizuara me përshpejtim GPU, shihni përmbledhjen e delegatëve të GPU .