Path: blob/master/site/pt-br/model_optimization/guide/clustering/clustering_example.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Clustering de pesos no exemplo do Keras
Visão geral
Bem-vindo ao exemplo completo de clustering de peso, parte do Kit de ferramentas para otimização de modelos do TensorFlow.
Outras páginas
Para uma introdução sobre o que é o clustering de peso e para determinar se você deve usá-lo (incluindo a compatibilidade dele), veja a página de visão geral.
Para encontrar rapidamente as APIs necessárias para seu caso de uso (além de realizar todo o clustering de um modelo com 16 clusters), veja o guia completo.
Conteúdo
Neste tutorial, você:
Treinará um modelo
tf.keras
para o dataset MNIST do zero.Ajustará o modelo ao aplicar a API de clustering de peso e verá a exatidão.
Criará modelos do TF e do TFLite 6x menores com o clustering.
Criará um modelo do TFLite 8x menor ao combinar o clustering de peso e a quantização pós-treinamento.
Verá a persistência da exatidão do TF para o TFLite.
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 sem o clustering
Avalie o modelo de linha de base e salve-o para usar mais tarde
Ajuste o modelo pré-treinado com o clustering
Aplique a API cluster_weights()
a um modelo pré-treinado inteiro para demonstrar a eficácia em reduzir o tamanho do modelo após a aplicação do zip, mantendo uma exatidão adequada. Para saber como melhor equilibrar a exatidão e a taxa de compressão no seu caso de uso, consulte o exemplo por camada no guia completo.
Defina o modelo e aplique a API de clustering
Antes de passar o modelo à API de clustering, confira se ele foi treinado e apresenta uma exatidão aceitável.
Ajuste o modelo e compare a exatidão dele com a linha de base
Ajuste o modelo com o clustering para 1 época.
Nesse exemplo, há uma perda mínima na exatidão do teste após o clustering, em comparação com a linha de base.
Crie modelos 6x menores com o clustering
O strip_clustering
e a aplicação de um algoritmo de compressão padrão (por exemplo, por gzip) são necessários para ver os benefícios de compressão do clustering.
Primeiro, crie um modelo comprimível para o TensorFlow. Aqui, o strip_clustering
remove todas as variáveis (por exemplo, tf.Variable
para armazenar os centroides dos clusters e os índices) que só são necessárias para o clustering durante o treinamento e aumentariam o tamanho do modelo durante a inferência.
Em seguida, crie modelos comprimíveis para o TFLite. Você pode converter o modelo agrupado em um formato executável no seu back-end de destino. O TensorFlow Lite é um exemplo que você pode usar para a implantação em dispositivos móveis.
Defina uma função helper para comprimir os modelos por gzip e medir o tamanho compactado.
Compare e veja se os modelos estão 6x menores com o clustering.
Crie um modelo do TFLite 8x menor ao combinar o clustering de peso e a quantização pós-treinamento
Você pode aplicar a quantização pós-treinamento ao modelo agrupado para benefícios adicionais.
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 clustering e a quantização e veja se a exatidão do TensorFlow persiste no back-end do TFLite.
Conclusão
Neste tutorial, você viu como criar modelos agrupados com a API do Kit de ferramentas para otimização de modelos do TensorFlow. Mais especificamente, você conferiu um exemplo completo para criar um modelo 8x menor para o MNIST com uma diferença mínima de exatidão. Recomendamos que você teste essa nova capacidade, que pode ser especialmente importante para a implantação em ambientes de recursos limitados.