Este documento fornece uma visão geral sobre a remoção de modelos para ajudá-lo a determinar como ela se ajusta ao seu caso de uso.
- Para mergulhar direto em um exemplo completo, consulte o exemplo Podando com Keras .
- Para encontrar rapidamente as APIs necessárias para seu caso de uso, consulte o guia completo de remoção .
- Para explorar a aplicação de remoção para inferência no dispositivo, consulte Limpeza para inferência no dispositivo com XNNPACK .
- Para ver um exemplo de poda estrutural, execute o tutorial Poda estrutural com esparsidade 2 por 4 .
Visão geral
A poda de peso baseada na magnitude zera gradualmente os pesos do modelo durante o processo de treinamento para atingir a dispersão do modelo. Modelos esparsos são mais fáceis de compactar e podemos pular 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, o suporte da estrutura para esta técnica proporcionará melhorias na latência. Vimos melhorias de até 6x na compactação do modelo com perda mínima de precisão.
A técnica está sendo avaliada em diversas aplicações de fala, como reconhecimento de fala e conversão de texto em fala, e foi experimentada em vários modelos de visão e tradução.
Matriz de compatibilidade de API
Os usuários podem aplicar a remoção com as seguintes APIs:
- Construção de modelo:
keras
apenas com modelos sequenciais e funcionais - Versões do TensorFlow: TF 1.x para versões 1.14+ e 2.x.
-
tf.compat.v1
com um pacote TF 2.X etf.compat.v2
com um pacote TF 1.X não são suportados.
-
- Modo de execução do TensorFlow: gráfico e ansioso
- Treinamento distribuído:
tf.distribute
apenas com execução de gráfico
Está em nosso roteiro adicionar suporte nas seguintes áreas:
Resultados
Classificação de imagens
Modelo | Precisão Top-1 não esparsa | Precisão aleatória esparsa | Esparsidade Aleatória | Precisão esparsa estruturada | Esparsidade Estruturada |
---|---|---|---|---|---|
InícioV3 | 78,1% | 78,0% | 50% | 75,8% | 2 por 4 |
76,1% | 75% | ||||
74,6% | 87,5% | ||||
Rede MóvelV1 224 | 71,04% | 70,84% | 50% | 67,35% | 2 por 4 |
Rede MóvelV2 224 | 71,77% | 69,64% | 50% | 66,75% | 2 por 4 |
Os modelos foram testados no Imagenet.
Tradução
Modelo | BLEU não esparso | AZUL esparso | Esparsidade |
---|---|---|---|
GNMT EN-DE | 26,77 | 26,86 | 80% |
26,52 | 85% | ||
26.19 | 90% | ||
GNMT DE-EN | 29h47 | 29h50 | 80% |
29.24 | 85% | ||
28,81 | 90% |
Os modelos usam o conjunto de dados WMT16 em alemão e inglês com news-test2013 como conjunto de desenvolvimento e news-test2015 como conjunto de teste.
Modelo de identificação de palavras-chave
DS-CNN-L é um modelo de localização de palavras-chave criado para dispositivos de ponta. Ele pode ser encontrado no repositório de exemplos do software ARM.
Modelo | Precisão não escassa | Precisão esparsa estruturada (padrão 2 por 4) | Precisão aleatória esparsa (escassez alvo 50%) |
---|---|---|---|
DS-CNN-L | 95,23 | 94,33 | 94,84 |
Exemplos
Além do tutorial Prune with Keras , veja os seguintes exemplos:
- Treine um modelo CNN na tarefa de classificação de dígitos manuscritos MNIST com poda: código
- Treine um LSTM na tarefa de classificação de sentimento do IMDB com poda: código
Para obter informações básicas, consulte Podar ou não podar: explorando a eficácia da poda para compactação de modelo [ papel ].