Remover pesos insignificantes

Mantido pela otimização de modelos do TensorFlow

Este documento fornece uma visão geral sobre a remoção em modelos para ajudar você a determinar como isso se adapta ao seu caso de uso.

Visão geral

A remoção de peso baseada em magnitude exclui gradualmente os pesos do modelo durante o processo de treinamento para atingir a escassez do modelo. Os modelos esparsos são mais fáceis de compactar e podemos ignorar os zeros durante a inferência para melhorar a latência.

Essa técnica traz melhorias por meio da compactação do modelo. No futuro, a compatibilidade com frameworks para essa técnica melhorará ainda mais a latência. Vimos melhorias de até seis vezes na compactação de modelos com perda mínima de acurácia.

A técnica está sendo avaliada em vários aplicativos de fala, como reconhecimento de fala e conversão de texto em voz, e foi testada em vários modelos de visão e tradução.

Matriz de compatibilidade da API

Os usuários podem aplicar a remoção com as seguintes APIs:

  • Criação de modelos: tf.keras apenas com modelos sequenciais e funcionais
  • Versões do TensorFlow: TF 1.x para as versões 1.14 ou mais recentes e 2.x
    • tf.compat.v1 com um pacote TF 2.x e tf.compat.v2 com um pacote TF 1.x não são compatíveis.
  • Modo de execução do TensorFlow: grafo e rápido
  • Treinamento distribuído: tf.distribute apenas com execução de grafo

Nosso roteiro prevê incluir compatibilidade nas seguintes áreas:

Resultados

Classificação de imagens

Modelo Acurácia de primeiro nível não esparsa Acurácia escassa Esparsidade
InceptionV3 78,1% 78,0% 50%
76,1%75%
74,6%87,5%
MobilenetV1 22471,04%70,84%50%

Os modelos foram testados no ImageNet.

Tradução

Modelo BLEU não esparso BLEU esparso Esparsidade
GNMT EN-DE 26.77 26.86 80%
26.5285%
26.1990%
GNMT DE-EN 29.47 29.50 80%
29.2485%
28.8190%

Os modelos usam o conjunto de dados WMT16 alemão e inglês, com news-test2013 como o conjunto de desenvolvimento e news-test2015 como o conjunto de testes.

Exemplos

Além do tutorial de remoção com a Keras, veja os exemplos a seguir:

  • Treine um modelo de CNN na tarefa de classificação de dígitos manuscritos MNIST com remoção: código.
  • Treine um LSTM na tarefa de classificação de sentimento do IMDB com remoção: código.

Para mais informações, consulte como explorar a eficácia da remoção para compactação de modelo [artigo em inglês].