Path: blob/master/site/es-419/lite/android/delegates/gpu.md
25118 views
Delegado de aceleración de GPU con API de intérprete
Usar unidades de procesamiento gráfico (GPU) para ejecutar sus modelos de aprendizaje automático (ML) puede mejorar drásticamente el rendimiento y la experiencia de usuario de sus aplicaciones habilitadas para ML. En los dispositivos Android, puede habilitar
delegate y una de las siguientes API:
Esta página describe cómo habilitar la aceleración por GPU para modelos TensorFlow Lite en apps Android usando la API de intérprete. Para saber más sobre cómo usar el delegado de GPU para TensorFlow Lite, incluyendo las mejores prácticas y técnicas avanzadas, consulte la página Delegados de GPU.
Use la GPU con TensorFlow Lite con los servicios de Google Play
La API del intérprete de TensorFlow Lite ofrece un grupo de APIs de propósito general para crear aplicaciones de aprendizaje automático. Esta sección describe cómo usar el delegado del acelerador de GPU con estas API con TensorFlow Lite con los servicios de Google Play.
TensorFlow Lite con los servicios de Google Play es la ruta recomendada para usar TensorFlow Lite en Android. Si su aplicación está dirigida a dispositivos que no ejecutan Google Play, consulte la sección GPU con API de intérprete y TensorFlow Lite independiente.
Añada las dependencias del proyecto
Para habilitar el acceso al delegado de la GPU, añada com.google.android.gms:play-services-tflite-gpu
al archivo build.gradle
de su app:
Habilite la aceleración de la GPU
Después inicialice TensorFlow Lite con los servicios de Google Play con el soporte GPU:
Kotlin
val useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context)
Task<boolean> useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context); Task<Options> interpreterOptionsTask = useGpuTask.continueWith({ task -> TfLite.initialize(context, TfLiteInitializationOptions.builder() .setEnableGpuDelegateSupport(true) .build()); });
Finalmente puede inicializar el intérprete pasando un GpuDelegateFactory
por InterpreterApi.Options
:
Kotlin
val options = InterpreterApi.Options() .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY) .addDelegateFactory(GpuDelegateFactory())
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);
Nota: El delegado GPU debe crearse en el mismo hilo que lo ejecuta. De lo contrario, puede aparecer el siguiente error, TfLiteGpuDelegate Invoke: GpuDelegate must run on the same thread where it was initialized.
El delegado de la GPU también se puede usar con la vinculación de modelos ML en Android Studio. Para más información, consulte Generar interfaces de modelos usando metadatos.
Use la GPU con TensorFlow Lite autónomo {:#standalone}
Si su aplicación está dirigida a dispositivos que no ejecutan Google Play, es posible vincular el delegado de GPU a su aplicación y usarlo con la versión independiente de TensorFlow Lite.
Añada las dependencias del proyecto
Para habilitar el acceso al delegado de la GPU, añada org.tensorflow:tensorflow-lite-gpu-delegate-plugin
al archivo build.gradle
de su app:
Habilite la aceleración de la GPU
Luego ejecute TensorFlow Lite en la GPU con TfLiteDelegate
. En Java, puede especificar el GpuDelegate
a través de Interpreter.Options
.
Kotlin
import org.tensorflow.lite.Interpreter import org.tensorflow.lite.gpu.CompatibilityList import org.tensorflow.lite.gpu.GpuDelegate
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);
Modelos cuantizados {:#quantized-models}
Las librerías de delegado de GPU de Android admiten modelos cuantizados de forma predeterminada. No es necesario realizar ningún cambio en el código para usar modelos cuantizados con la GPU delegada. En la siguiente sección se explica cómo desactivar el soporte cuantizado para realizar pruebas o con fines experimentales.
Deshabilite el soporte de modelos cuantizados
El siguiente código muestra cómo deshabilitar el soporte para modelos cuantizados.
Java
GpuDelegate delegate = new GpuDelegate(new GpuDelegate.Options().setQuantizedModelsAllowed(false));
Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
Para obtener más información sobre la ejecución de modelos cuantizados con aceleración de GPU, consulte la descripción general de Delegado de GPU.