Estamos entusiasmados com a apresentação do novo kit de ferramentas de otimização do TensorFlow: um conjunto de técnicas que desenvolvedores iniciantes ou avançados podem usar para otimizar modelos de aprendizado de máquina para implantação e execução.
Esperamos que essas técnicas sejam úteis para otimizar qualquer modelo do TensorFlow para implantação, mas elas são especialmente importantes para desenvolvedores do TensorFlow Lite, que disponibilizam modelos para dispositivos com limitações de memória, energia e armazenamento. Se você ainda não experimentou o TensorFlow Lite, saiba mais clicando aqui .
Otimize modelos para reduzir tamanho, latência e consumo de energia com perda de precisão insignificante
A primeira técnica que passamos a oferecer é a quantização pós-treinamento para a ferramenta de conversão do TensorFlow Lite. Essa técnica pode gerar compressão 4 vezes maior e execução 3 vezes mais rápida para os modelos de aprendizado de máquina.
Quantizando os modelos, os desenvolvedores ainda ganham a vantagem de reduzir o consumo de energia. Isso é bastante útil para implantação em dispositivos de borda, além de celulares.
Ativação da quantização pós-treinamento
A técnica de quantização pós-treinamento está integrada à ferramenta de conversão do TensorFlow Lite. E começar a usar é bem fácil: depois de construir o modelo no TensorFlow, os desenvolvedores podem simplesmente ativar o sinalizador "post_training_quantize" na ferramenta de conversão do TensorFlow Lite. Presumindo que o modelo salvo está armazenado em "saved_model_dir", o flatbuffer tflite quantizado pode ser gerado:
Nosso tutorial mostra detalhadamente como fazer isso. No futuro, também queremos incorporar essa técnica às ferramentas gerais do TensorFlow para que possa ser usada na implantação em plataformas que hoje não contam com o suporte do TensorFlow Lite.
Benefícios da quantização pós-treinamento
Redução de 4x no tamanho dos modelos
A execução de modelos, compostos principalmente de camadas convolucionais, fica 10% a 50% mais rápida
Modelos baseados em RNN ganham até 3x mais velocidade
Com os requisitos reduzidos de memória e computação, também esperamos que a maioria os modelos consuma menos energia
Nos gráficos abaixo, você pode ver redução de tamanho e o ganho de velocidade de execução de alguns modelos (medições em um Android Pixel 2 usando apenas um núcleo).
Figura 1: Comparação de tamanho dos modelos: os otimizados são praticamente 4x menores Figura 2: Comparação de latência: modelos otimizados são de 1,2 a 1,4x mais rápidos
Essas otimizações de velocidade e tamanho afetam pouco a precisão. Em geral, modelos que já são pequenos para a tarefa em questão (como o mobilenet v1 para classificação de imagens) podem sofrer maior perda de precisão. Pensando em muitos desses casos, oferecemos modelos totalmente quantizados pré-treinados.
Figura 3: Comparação de precisão: modelos otimizados apresentam queda insignificante de precisão, exceto os mobilenet
Com o tempo, esperamos continuar melhorando esses resultados. Não deixe de ler o guia de otimização de modelos para conhecer as medições mais recentes.
Como a quantização pós-treinamento funciona?
Internamente, executamos otimizações (também chamadas de quantizações) reduzindo a precisão dos parâmetros (ou seja, pesos da rede neural) das representações de ponto flutuante de 32 bits do tempo de treinamento para números inteiros de 8 bits, muito menores e mais eficientes. Veja o guia de quantização pós-treinamento para saber mais.
Com essas otimizações, conseguimos unir as definições de operação de precisão reduzida no modelo resultante com implementações de kernel que usam uma combinação de matemática de ponto flutuante e de ponto fixo. Dessa forma, os cálculos mais pesados são executados com mais velocidade e menor precisão, mas os mais delicados são executados com alta precisão. Normalmente, o resultado é uma perda de precisão final nula ou insignificante para a tarefa, mas um ganho de velocidade substancial sobre a execução de ponto-flutuante pura. Nas operações em que não haja um kernel "híbrido" correspondente, ou quando o Tookit julgue necessário, os parâmetros serão reconvertidos para a maior precisão de ponto flutuante para a execução. Acesse a página quantização pós-treinamento para ver uma lista de operações híbridas compatíveis.
Trabalho futuro
Continuaremos a aprimorar a quantização pós-treinamento e trabalharemos em outras técnicas que facilitem a otimização de modelos. Essas técnicas serão integradas aos fluxos de trabalho relevantes do TensorFlow para facilitar seu uso.
A quantização pós-treinamento é o primeiro resultado obtido com o toolkit de otimização que estamos desenvolvendo. Contamos com o feedback dos desenvolvedores.
Registre os problemas no GitHub e faça perguntas no Stack Overflow .
Agradecimentos
Gostaríamos de agradecer a Raghu Krishnamoorthi, Raziel Alvrarez, Suharsh Sivakumar, Yunlu Li, Alan Chiao, Pete Warden, Shashi Shekhar, Sarah Sirajuddin e Tim Davis pelas contribuições essenciais. Mark Daoust ajudou a criar o tutorial de colaboração . Billy Lamberta e Lawrence Chan ajudaram na criação do site .
Um comentário :
Treat your taste buds to a vibrant explosion of Thai flavors atSanook Kitchen Menu This lively restaurant offers a delectable menu that captures the essence of authentic Thai cuisine, prepared with fresh ingredients and a touch of modern ingenuity.
Postar um comentário