Esta página foi traduzida pela API Cloud Translation.
Switch to English

Otimização de modelo

Os dispositivos de borda geralmente têm memória ou poder computacional limitado. Várias otimizações podem ser aplicadas aos modelos para que possam ser executadas dentro dessas restrições. Além disso, algumas otimizações permitem o uso de hardware especializado para inferência acelerada.

O TensorFlow Lite e o TensorFlow Model Optimization Toolkit fornecem ferramentas para minimizar a complexidade da otimização de inferência.

É recomendável considerar a otimização do modelo durante o processo de desenvolvimento de aplicativos. Este documento descreve algumas práticas recomendadas para otimizar os modelos TensorFlow para implantação em hardware de ponta.

Por que os modelos devem ser otimizados

Existem várias maneiras principais de a otimização do modelo ajudar no desenvolvimento de aplicativos.

Redução de tamanho

Algumas formas de otimização podem ser usadas para reduzir o tamanho de um modelo. Modelos menores têm os seguintes benefícios:

  • Tamanho de armazenamento menor: modelos menores ocupam menos espaço de armazenamento nos dispositivos dos usuários. Por exemplo, um aplicativo Android usando um modelo menor ocupará menos espaço de armazenamento no dispositivo móvel do usuário.
  • Tamanho de download menor: modelos menores requerem menos tempo e largura de banda para fazer o download nos dispositivos dos usuários.
  • Menos uso de memória: modelos menores usam menos RAM quando são executados, o que libera memória para outras partes do aplicativo e pode ser traduzido em melhor desempenho e estabilidade.

A quantização pode reduzir o tamanho de um modelo em todos esses casos, potencialmente à custa de alguma precisão. A remoção pode reduzir o tamanho de um modelo para download, tornando-o mais facilmente compactável.

Redução de latência

Latência é a quantidade de tempo que leva para executar uma única inferência com um determinado modelo. Algumas formas de otimização podem reduzir a quantidade de computação necessária para executar inferência usando um modelo, resultando em menor latência. A latência também pode ter um impacto no consumo de energia.

Atualmente, a quantização pode ser usada para reduzir a latência, simplificando os cálculos que ocorrem durante a inferência, potencialmente à custa de alguma precisão.

Compatibilidade do acelerador

Alguns aceleradores de hardware, como o Edge TPU , podem executar inferência extremamente rápido em modelos que foram otimizados corretamente.

Geralmente, esses tipos de dispositivos exigem que os modelos sejam quantizados de uma maneira específica. Consulte a documentação de cada acelerador de hardware para saber mais sobre seus requisitos.

Trade-offs

As otimizações podem resultar em alterações na precisão do modelo, que devem ser consideradas durante o processo de desenvolvimento de aplicativos.

As alterações de precisão dependem do modelo individual que está sendo otimizado e são difíceis de prever com antecedência. Geralmente, os modelos otimizados para tamanho ou latência perderão uma pequena quantidade de precisão. Dependendo do seu aplicativo, isso pode ou não afetar a experiência dos usuários. Em casos raros, certos modelos podem ganhar alguma precisão como resultado do processo de otimização.

Tipos de otimização

Atualmente, o TensorFlow Lite suporta otimização via quantização e poda.

Eles fazem parte do TensorFlow Model Optimization Toolkit , que fornece recursos para técnicas de otimização de modelo compatíveis com o TensorFlow Lite.

Quantização

A quantização funciona reduzindo a precisão dos números usados ​​para representar os parâmetros de um modelo, que por padrão são números de ponto flutuante de 32 bits. Isso resulta em um tamanho de modelo menor e computação mais rápida.

Os seguintes tipos de quantização estão disponíveis no TensorFlow Lite:

Técnica Requisitos de dados Redução de tamanho Precisão Hardware suportado
Quantização pós-treinamento float16 Sem dados Até 50% Perda de precisão insignificante CPU, GPU
Quantização da faixa dinâmica pós-treinamento Sem dados Até 75% Perda de precisão CPU, GPU (Android)
Quantização de número inteiro pós-treinamento Amostra representativa não rotulada Até 75% Menor perda de precisão CPU, GPU (Android), EdgeTPU, Hexagon DSP
Treinamento sensível à quantização Dados de treinamento rotulados Até 75% Menor perda de precisão CPU, GPU (Android), EdgeTPU, Hexagon DSP

Abaixo estão os resultados de latência e precisão para quantização pós-treinamento e treinamento com reconhecimento de quantização em alguns modelos. Todos os números de latência são medidos em dispositivos Pixel 2 usando uma única CPU de grande núcleo. À medida que o kit de ferramentas melhora, também aumentam os números aqui:

Modelo Precisão Top-1 (Original) Precisão Top 1 (quantificado após o treinamento) Precisão Top 1 (treinamento com quantização consciente) Latência (original) (ms) Latência (quantificado após o treinamento) (ms) Latência (treinamento consciente da quantização) (ms) Tamanho (original) (MB) Tamanho (otimizado) (MB)
Mobilenet-v1-1-224 0,709 0,657 0,70 124 112 64 16,9 4.3.
Mobilenet-v2-1-224 0,719 0,637 0,709 89 98 54 14 3.6.
Inception_v3 0,78 0,772 0,775 1130 845 543 95,7 23,9
Resnet_v2_101 0,770 0,768 N / D 3973 2868 N / D 178,3 44,9
Tabela 1 Benefícios da quantização de modelos para alguns modelos da CNN

Poda

A poda funciona removendo parâmetros em um modelo que têm apenas um impacto menor em suas previsões. Os modelos removidos têm o mesmo tamanho no disco e têm a mesma latência de tempo de execução, mas podem ser compactados com mais eficiência. Isso torna a remoção uma técnica útil para reduzir o tamanho do download do modelo.

No futuro, o TensorFlow Lite fornecerá redução de latência para modelos podados.

Fluxo de trabalho de desenvolvimento

Como ponto de partida, verifique se os modelos nos modelos hospedados podem funcionar para o seu aplicativo. Caso contrário, recomendamos que os usuários comecem com a ferramenta de quantização pós-treinamento, pois isso é amplamente aplicável e não requer dados de treinamento.

Nos casos em que os objetivos de precisão e latência não são atingidos ou o suporte ao acelerador de hardware é importante, o treinamento com reconhecimento de quantização é a melhor opção. Veja técnicas de otimização adicionais no TensorFlow Model Optimization Toolkit .

Se você deseja reduzir ainda mais o tamanho do modelo, tente remover antes de quantizar seus modelos.