

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 최적화
<a name="tutorial-gpu-opt"></a>

GPU를 최대한 활용하기 위해 데이터 파이프라인을 최적화하고 딥 러닝 네트워크를 튜닝할 수 있습니다. 아래 차트에서 설명하듯, 단순하고 기본적인 방식으로 구현된 신경망에서는 GPU를 일관성 있게 사용하지 못해서 잠재력이 충분히 발휘되지 못할 수 있습니다. 사전 처리 및 데이터 로딩을 최적화하면 CPU에서 GPU로의 병목을 줄일 수 있습니다. 하이브리드화를 사용(프레임워크에서 지원할 때)하여 배치 크기를 조정하고, 호출을 동기화하여 신경망 자체를 조정할 수 있습니다. 또한 대부분 프레임워크에서 다중 정밀도(float16 또는 int8) 교육을 사용하여 처리량 개선에 획기적인 영향을 미칠 수도 있습니다.

다음 차트에는 서로 다른 최적화를 적용할 때 누적되는 성능상 이점을 보여줍니다. 처리 중인 데이터와 최적화 중인 네트워크에 따라 결과는 달라집니다.

![\[GPU 성능 개선\]](http://docs.aws.amazon.com/ko_kr/dlami/latest/devguide/images/performance-enhancements.png)


다음 설명서는 DLAMI에서 실행 가능하고 GPU 성능을 높이는 데 도움을 주는 옵션에 대해 설명합니다.

**Topics**
+ [

# 사전 처리
](tutorial-gpu-opt-preprocessing.md)
+ [

# 학습
](tutorial-gpu-opt-training.md)

# 사전 처리
<a name="tutorial-gpu-opt-preprocessing"></a>

변환 또는 증강을 통한 데이터 사전 처리는 CPU 바운드 프로세스인 경우가 종종 있기 때문에 전체 파이프라인에서 병목이 될 수 있습니다. 프레임워크에는 이미지 처리를 위한 연산자가 내장되어 있지만, DALI(Data Augmentation Library)는 프레임워크에 내장된 옵션을 통한 성능 개선을 입증합니다.
+ NVIDIA DALI(Data Augmentation Library): DALI는 GPU에 데이터 증강을 오프로드합니다. DLAMI에 사전 설치되어 있지 않지만, 이를 설치하거나 지원되는 프레임워크 컨테이너를 DLAMI나 다른 Amazon Elastic Compute Cloud 인스턴스에 로드하여 액세스할 수 있습니다. 자세한 내용은 NVIDIA 웹 사이트의 [DALI 프로젝트 페이지](https://docs.nvidia.com/deeplearning/sdk/dali-install-guide/index.html)를 참조하세요. 예제 사용 사례와 코드 샘플을 다운로드하려면 [SageMaker 사전 처리 교육 성능](https://github.com/aws-samples/sagemaker-cv-preprocessing-training-performance) 샘플을 참조하세요.
+ nvJPEG: C 프로그래머를 위한 GPU 기반의 JPEG 디코더 라이브러리입니다. 단일 이미지 또는 배치를 비롯해 딥 러닝에서 일반적인 후속 변환 작업을 디코딩할 수 있도록 지원합니다. nvJPEG에는 DALI가 내장되어 있을 수도 있고, [NVIDIA 웹 사이트의 nvjpeg 페이지](https://developer.nvidia.com/nvjpeg)에서 다운로드하여 별도로 사용할 수 있습니다.

GPU 모니터링 및 최적화에 대한 이러한 기타 주제들에 관심이 있을 수 있습니다.
+ [모니터링](tutorial-gpu-monitoring.md)
  + [CloudWatch를 이용한 GPU 모니터링](tutorial-gpu-monitoring-gpumon.md)
+ [최적화](tutorial-gpu-opt.md)
  + [사전 처리](#tutorial-gpu-opt-preprocessing)
  + [학습](tutorial-gpu-opt-training.md)

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

혼합 정밀도 교육을 통해 같은 양의 메모리로 더 큰 네트워크를 배포하거나 단일 또는 이중 정밀도 네트워크와 비교해 메모리 사용량을 줄여서 컴퓨팅 성능을 높일 수 있습니다. 또한 보다 소규모로 더 빨리 데이터를 전송할 수 있다는 이점이 있는데, 이는 여러 노드에 분산된 교육에서 중요한 요소입니다. 혼합 정밀도 교육을 활용하려면 데이터 캐스팅 및 손실을 조정해야 합니다. 다음은 혼합 정밀도를 지원하는 프레임워크에서 이를 수행하는 방법을 설명하는 설명서입니다.
+ [NVIDIA 딥 러닝 SDK](https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/) - MXNet, PyTorch 및 TensorFlow를 위한 혼합 정밀도 구현을 설명하는 NVIDIA 웹 사이트의 문서.

**작은 정보**  
선택한 프레임워크를 위한 웹 사이트를 확인하고 최신 최적화 기법에 대한 "혼합 정밀도" 또는 "fp16"을 검색하세요. 다음과 같이 몇 가지 혼합 정밀도 설명서가 도움이 될 수 있습니다.  
[TensorFlow를 이용한 혼합 정밀도 교육(비디오)](https://devblogs.nvidia.com/mixed-precision-resnet-50-tensor-cores/) - NVIDIA 블로그 사이트에서 제공.
[MXNet에서 float16을 사용한 혼합 정밀도 교육](https://mxnet.apache.org/api/faq/float16) - MXNet 웹 사이트의 FAQ 문서.
[NVIDIA Apex: PyTorch를 이용한 간편한 혼합 정밀도 교육을 위한 도구](https://devblogs.nvidia.com/apex-pytorch-easy-mixed-precision-training/) - NVIDIA 웹 사이트의 블로그 기사.

GPU 모니터링 및 최적화에 대한 이러한 기타 주제들에 관심이 있을 수 있습니다.
+ [모니터링](tutorial-gpu-monitoring.md)
  + [CloudWatch를 이용한 GPU 모니터링](tutorial-gpu-monitoring-gpumon.md)
+ [최적화](tutorial-gpu-opt.md)
  + [사전 처리](tutorial-gpu-opt-preprocessing.md)
  + [학습](#tutorial-gpu-opt-training)