Path: blob/master/site/pt-br/model_optimization/guide/combine/pcqat_example.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Exemplo do Keras de treinamento consciente de quantização que preserva a esparsidade e os clusters (CQAT)
Visão geral
Este é um exemplo completo que mostra o uso da API de treinamento consciente de quantização que preserva a esparsidade e os clusters (PCQAT), parte do pipeline de otimização colaborativa do Kit de ferramentas para otimização de modelos do TensorFlow.
Outras páginas
Para uma introdução sobre o pipeline e outras técnicas disponíveis, confira a página de visão geral da otimização colaborativa.
Conteúdo
Neste tutorial, você:
Treinará um modelo
tf.keras
para o dataset MNIST do zero.Ajustará o modelo com o pruning, verá a exatidão e observará se o pruning teve êxito.
Aplicará o clustering que preserva a esparsidade no modelo após o pruning e observará se a esparsidade aplicada antes foi preservada.
Aplicará o QAT e observará a perda de clusters.
Aplicará o CQAT e observará se a esparsidade e o clustering aplicados antes foram preservados.
Gerará um modelo do TFLite e observará os efeitos da aplicação do PCQAT nele.
Comparará os tamanhos de modelos diferentes para observar os benefícios da compressão ao aplicar a esparsidade, seguida por técnicas de otimização colaborativa: o clustering que preserva a esparsidade e o PCQAT.
Comparará a exatidão do modelo completamente otimizado com a exatidão do modelo de referência não otimizado.
Configuração
Você pode executar este Notebook do Jupyter no seu virtualenv local ou no colab. Para mais detalhes sobre como configurar as dependências, consulte o guia de instalação.
Treine um modelo tf.keras para o MNIST que passará pelo pruning e clustering
Avalie o modelo de referência e salve-o para usar mais tarde
Faça o pruning e ajuste o modelo para 50% da esparsidade
Aplique a API prune_low_magnitude()
para obter o modelo com pruning que será agrupado na próxima etapa. Consulte o guia completo de pruning para mais informações sobre a API de pruning.
Defina o modelo e aplique a API de esparsidade
Observe que é usado o modelo pré-treinado.
Ajuste o modelo e compare a exatidão dele com a referência
Ajuste o modelo com o pruning para 3 épocas.
Defina funções helper para calcular e imprimir a esparsidade e os clusters do modelo.
Vamos remover o wrapper de pruning primeiro e verificar se os kernels do modelo foram podados corretamente.
Aplique o clustering que preserva a esparsidade e confira o efeito na esparsidade do modelo em ambos os casos
Em seguida, aplique o clustering que preserva a esparsidade no modelo após o pruning, observe o número de clusters e verifique se a esparsidade foi preservada.
Remova o wrapper de clustering primeiro e verifique se o modelo foi podado e agrupado corretamente.
Aplique o QAT e o PCQAT e confira o efeito nos clusters e na esparsidade do modelo
Em seguida, aplicamos ambos o QAT e o PCQAT no modelo agrupado esparso e observamos se o PCQAT preserva a esparsidade e os clusters de peso no seu modelo. Observe que o modelo extraído é passado à API de QAT e PCQAT.
Veja os benefícios da compressão do modelo de PCQAT
Defina a função helper para obter um arquivo de modelo compactado.
Observe se aplicar a esparsidade, o clustering e o PCQAT ao modelo gera benefícios de compressão significativos.
Veja a persistência da exatidão do TF para o TFLite
Defina uma função helper para avaliar o modelo do TFLite com o dataset de teste.
Avalie o modelo após o pruning, o clustering e a quantização e veja se a exatidão do TensorFlow persiste no back-end do TFLite.
Conclusão
Neste tutorial, você aprendeu a criar um modelo, fazer o pruning dele usando a API prune_low_magnitude()
e aplicar o clustering que preserva a esparsidade usando a API cluster_weights()
para preservar a esparsidade e agrupar os pesos.
Em seguida, o treinamento consciente de quantização que preserva a esparsidade e os clusters (PCQAT) foi aplicado para preservar a esparsidade e os clusters do modelo ao usar o QAT. O modelo PCQAT final foi comparado ao QAT para mostrar que a esparsidade e os clusters são preservados no primeiro e perdidos no último.
Em seguida, os modelos foram convertidos para o TFLite, mostrando os benefícios da compressão ao usar as técnicas de esparsidade, clustering e PCQAT em cadeia para a otimização do modelo, e o modelo do TFLite foi avaliado para garantir a persistência da eficácia no back-end do TFLite.
Por fim, a exatidão do modelo do TFLite de PCQAT foi comparada ao modelo de referência antes da otimização para mostrar que as técnicas de otimização colaborativa conseguiram obter benefícios de compressão e manter uma exatidão semelhante em comparação ao modelo original.