O Dia da Comunidade de ML é dia 9 de novembro! Junte-nos para atualização de TensorFlow, JAX, e mais Saiba mais

Biblioteca de tarefas do TensorFlow Lite

A Biblioteca de Tarefas do TensorFlow Lite contém um conjunto de bibliotecas específicas de tarefas poderosas e fáceis de usar para desenvolvedores de aplicativos criarem experiências de ML com TFLite. Ele fornece interfaces de modelo out-of-box otimizadas para tarefas populares de aprendizado de máquina, como classificação de imagem, pergunta e resposta, etc. As interfaces de modelo são projetadas especificamente para cada tarefa para obter o melhor desempenho e usabilidade. A biblioteca de tarefas funciona em várias plataformas e é compatível com Java, C ++ e Swift.

O que esperar da Biblioteca de Tarefas

  • APIs limpas e bem definidas utilizáveis ​​por não especialistas em ML
    A inferência pode ser feita em apenas 5 linhas de código. Use as APIs poderosas e fáceis de usar na biblioteca de tarefas como blocos de construção para ajudá-lo a desenvolver ML com TFLite em dispositivos móveis.

  • Processamento de dados complexo, mas comum
    Suporta visão comum e lógica de processamento de linguagem natural para converter entre seus dados e o formato de dados exigido pelo modelo. Fornece a mesma lógica de processamento compartilhável para treinamento e inferência.

  • Ganho de alto desempenho
    O processamento de dados não levaria mais do que alguns milissegundos, garantindo a experiência de inferência rápida usando o TensorFlow Lite.

  • Extensibilidade e personalização
    Você pode aproveitar todos os benefícios que a infraestrutura da Biblioteca de Tarefas oferece e construir facilmente suas próprias APIs de inferência Android / iOS.

Tarefas suportadas

Abaixo está a lista dos tipos de tarefas com suporte. A lista deve crescer à medida que continuamos permitindo mais e mais casos de uso.

Executar Biblioteca de Tarefas com Delegados

Os delegados permitem a aceleração de hardware dos modelos TensorFlow Lite, aproveitando os aceleradores no dispositivo, como GPU e Coral Edge TPU . Utilizá-los para operações de rede neural oferece enormes benefícios em termos de latência e eficiência de energia. Por exemplo, as GPUs podem fornecer até 5x de aceleração na latência em dispositivos móveis, e as TPUs Coral Edge inferem 10x mais rápido do que as CPUs de desktop.

A Biblioteca de Tarefas oferece fácil configuração e opções de fallback para você configurar e usar delegados. Os seguintes aceleradores agora são compatíveis com a API Task C ++:

O delegado do Core ML para iOS e os suportes de aceleração em Task Java / Swift / Web API chegarão em breve.

Exemplo de uso de GPU no Android

Etapa 1. Depende do plug-in delegado de GPU em seu destino de compilação do bazel, como:

deps = [
  "//tensorflow_lite_support/acceleration/configuration:gpu_plugin", # for GPU
]

Outras opções de delegado incluem:

"//tensorflow_lite_support/acceleration/configuration:nnapi_plugin", # for NNAPI
"//tensorflow_lite_support/acceleration/configuration:hexagon_plugin", # for Hexagon

Etapa 2. Configure o delegado GPU nas opções de tarefa. Por exemplo, você pode configurar a GPU em BertQuestionAnswerer seguinte maneira:

// Initialization
BertQuestionAnswererOptions options;
// Load the TFLite model.
auto base_options = options.mutable_base_options();
base_options->mutable_model_file()->set_file_name(model_file);
// Turn on GPU delegation.
auto tflite_settings = base_options->mutable_compute_settings()->mutable_tflite_settings();
tflite_settings->set_delegate(Delegate::GPU);
// (optional) Turn on automatical fallback to TFLite CPU path on delegation errors.
tflite_settings->mutable_fallback_settings()->set_allow_automatic_fallback_on_execution_error(true);

// Create QuestionAnswerer from options.
std::unique_ptr<QuestionAnswerer> answerer = BertQuestionAnswerer::CreateFromOptions(options).value();

// Run inference on GPU.
std::vector<QaAnswer> results = answerer->Answer(context_of_question, question_to_ask);

Explore as configurações mais avançadas do acelerador aqui .

Exemplo de uso do Coral Edge TPU

Etapa 1. Depende do plug-in Coral Edge TPU delegado em seu destino de compilação do bazel, como:

deps = [
  "//tensorflow_lite_support/acceleration/configuration:edgetpu_coral_plugin", # for Coral Edge TPU
]

Etapa 2. Configure o Coral Edge TPU nas opções de tarefa. Por exemplo, você pode configurar Coral Edge TPU em ImageClassifier seguinte maneira:

// Initialization
ImageClassifierOptions options;
// Load the TFLite model.
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
// Turn on Coral Edge TPU delegation.
options.mutable_base_options()->mutable_compute_settings()->mutable_tflite_settings()->set_delegate(Delegate::EDGETPU_CORAL);
// Create ImageClassifier from options.
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference on Coral Edge TPU.
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();

Etapa 3. Instale o pacote libusb-1.0-0-dev conforme abaixo. Se já estiver instalado, vá para a próxima etapa.

# On the Linux
sudo apt-get install libusb-1.0-0-dev

# On the macOS
port install libusb
# or
brew install libusb

Etapa 4. Compile com as seguintes configurações em seu comando bazel:

# On the Linux
--define darwinn_portable=1 --linkopt=-lusb-1.0

# On the macOS, add '--linkopt=-lusb-1.0 --linkopt=-L/opt/local/lib/' if you are
# using MacPorts or '--linkopt=-lusb-1.0 --linkopt=-L/opt/homebrew/lib' if you
# are using Homebrew.
--define darwinn_portable=1 --linkopt=-L/opt/local/lib/ --linkopt=-lusb-1.0

# Windows is not supported yet.

Experimente a ferramenta de demonstração Task Library CLI com seus dispositivos Coral Edge TPU. Explore mais sobre os modelos pré - treinados do Edge TPU e as configurações avançadas do Edge TPU .