

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Otimização
<a name="tutorial-gpu-opt"></a>

Para aproveitar ao máximo GPUs, você pode otimizar seu pipeline de dados e ajustar sua rede de aprendizado profundo. Como o gráfico a seguir descreve, uma implementação simples ou básica de uma rede neural pode usar a GPU de maneira inconsistente e não aproveitar o potencial máximo. Ao otimizar o pré-processamento e o carregamento de dados, você pode reduzir o gargalo da CPU para a GPU. Você pode ajustar a rede neural em si usando hibridização (quando compatível com a estrutura), ajustando o tamanho do lote e sincronizando as chamadas. Você também pode usar treinamento de precisão múltipla (float16 ou int8) na maioria das estruturas, o que pode causar um efeito enorme na melhoria da taxa de transferência. 

A tabela a seguir mostra os ganhos de desempenho cumulativos ao aplicar otimizações diferentes. Seus resultados dependerão dos dados que você está processando e da rede que está otimizando.

![\[Aprimoramentos de desempenho para GPUs\]](http://docs.aws.amazon.com/pt_br/dlami/latest/devguide/images/performance-enhancements.png)


Os seguintes guias apresentam opções que funcionarão com a DLAMI e ajudarão a aumentar o desempenho da GPU.

**Topics**
+ [Pré-processamento](tutorial-gpu-opt-preprocessing.md)
+ [Treinamento](tutorial-gpu-opt-training.md)

# Pré-processamento
<a name="tutorial-gpu-opt-preprocessing"></a>

O pré-processamento de dados durante transformações ou aumento muitas vezes pode ser um processo vinculado à CPU e isso pode ser o gargalo em todo o seu pipeline. Estruturas têm operadores integrados para processamento de imagens, mas a DALI (Data Augmentation Library) demonstra um melhor desempenho em relação às opções integradas das estruturas.
+ NVIDIA Data Augmentation Library (DALI): a DALI minimiza o aumento dos dados para a GPU. Não é pré-instalada na DLAMI, mas você pode ter acesso instalando-a ou carregando um contêiner de estrutura compatível na sua DLAMI ou em outra instância do Amazon Elastic Compute Cloud. Consulte a [página do projeto DALI](https://docs.nvidia.com/deeplearning/sdk/dali-install-guide/index.html) no site do NVIDIA para obter detalhes. Para ver um exemplo de caso de uso e baixar amostras de código, consulte a amostra de desempenho do [treinamento SageMaker de pré-processamento](https://github.com/aws-samples/sagemaker-cv-preprocessing-training-performance).
+ nvJPEG: uma biblioteca de decodificadores JPEG acelerados para GPU para programadores de C. Ela oferece suporte à decodificação de imagens ou lotes únicos, bem como operações de transformação subsequentes que são comuns em aprendizado profundo. A nvJPEG vem integrada à DALI, ou você pode fazer download da [página nvjpeg do site da NVIDIA](https://developer.nvidia.com/nvjpeg) e usá-la separadamente.

Você pode estar interessado nesses outros tópicos sobre monitoramento e otimização de GPU:
+ [Monitoramento](tutorial-gpu-monitoring.md)
  + [Monitor GPUs com CloudWatch](tutorial-gpu-monitoring-gpumon.md)
+ [Otimização](tutorial-gpu-opt.md)
  + [Pré-processamento](#tutorial-gpu-opt-preprocessing)
  + [Treinamento](tutorial-gpu-opt-training.md)

# Treinamento
<a name="tutorial-gpu-opt-training"></a>

Com treinamento de precisão mista, você pode implantar redes maiores com a mesma quantidade de memória ou reduzir o uso de memória em comparação com sua rede de precisão única ou dupla, e você verá aumentos de desempenho de computação. Você também pode obter o benefício de transferências de dados menores e mais rápidas, um fator importante em um treinamento distribuído em vários nós. Para aproveitar o treinamento de precisão mista, você precisa ajustar a conversão de dados e a escalabilidade de perdas. Veja a seguir os guias que descrevem como fazer isso para as estruturas que oferecem suporte à precisão mista.
+ [SDK de aprendizado profundo da NVIDIA](https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/) - documentos no site da NVIDIA descrevendo a implementação de precisão mista para, e. MXNet PyTorch TensorFlow

**dica**  
Verifique se o site oferece a estrutura de sua preferência e procure por "precisão mista" ou "fp16" para encontrar as técnicas de otimização mais recentes. Veja a seguir alguns guias sobre precisão mista que podem ser úteis:  
[Treinamento de precisão mista com TensorFlow (vídeo)](https://devblogs.nvidia.com/mixed-precision-resnet-50-tensor-cores/) - no site do blog da NVIDIA.
[Treinamento de precisão mista usando float16 com MXNet](https://mxnet.apache.org/api/faq/float16) - um artigo de perguntas frequentes no site. MXNet 
[NVIDIA Apex: uma ferramenta para treinamento fácil de precisão mista com PyTorch](https://devblogs.nvidia.com/apex-pytorch-easy-mixed-precision-training/) - um artigo de blog no site da NVIDIA.

Você pode estar interessado nesses outros tópicos sobre monitoramento e otimização de GPU:
+ [Monitoramento](tutorial-gpu-monitoring.md)
  + [Monitor GPUs com CloudWatch](tutorial-gpu-monitoring-gpumon.md)
+ [Otimização](tutorial-gpu-opt.md)
  + [Pré-processamento](tutorial-gpu-opt-preprocessing.md)
  + [Treinamento](#tutorial-gpu-opt-training)