Remover pesos insignificantes

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. Para ir direto ao código, consulte o tutorial de remoção com a Keras e os documentos da API. Para mais detalhes sobre como usar a API Keras, uma análise aprofundada da remoção e documentação sobre padrões de uso mais avançados, consulte o guia Treinar modelos esparsos.

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ê oferecer suporte 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: code
  • Treine um LSTM na tarefa de classificação de sentimento do IMDB com remoção: código

Dicas

  1. Comece com um modelo pré-treinado ou pesos, se possível. Caso contrário, crie um sem remoção e comece depois.
  2. Não use a remoção com muita frequência para dar ao modelo tempo de recuperação. O kit de ferramentas fornece uma frequência padrão.
  3. Tente executar um experimento em que você possa remover de um modelo pré-treinado até a dispersão final com passo inicial 0.
  4. Use uma taxa de aprendizado que não seja muito alta ou muito baixa quando o modelo estiver sendo removido. Considere a programação da remoção como um hiperparâmetro.

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