BLOG
Keras와 Apache MXNet (incubating) 오픈 소스 프로젝트에 기여한 덕분에 Keras-MXNet 딥 러닝 백엔드의 사용이 이제 가능해졌습니다. Keras는 python으로 작성된 고급 신경 네트워크 API입니다. CNN 및 RNN의 빠르고 쉬운 프로토타이핑에 인기가 있습니다.
Keras 개발자는 이제 CNN (변환 신경 네트워크) 및 RNN (순환 신경 네트워크)의 분산형 교육을 위해 고성능 MXNet 딥 러닝 엔진을 사용할 수 있습니다. Keras 개발자는 몇 줄의 코드를 업데이트하여 MXNet의 다중 GPU 분산 교육 기능을 사용하여 교육 속도를 높일 수 있습니다. MXNet 모델을 저장하는 것이 릴리스의 또 다른 중요한 기능입니다. Keras에서 디자인하고, Keras-MXNet을 사용하여 교육하고, MXNet을 통해 대량 생산 시 추론을 실행할 수 있습니다.
Keras 2 및 MXNet을 사용한 분산 교육
이 기사에서는 Keras-MXNet을 설치하는 방법과 CNN 및 RNN을 교육하는 방법을 보여줍니다. 이전에 다른 딥 러닝 엔진을 사용한 분산 학습을 시도했다면 지루하고 어려울 수도 있다는 것을 알고 있습니다. Keras-MXNet을 통해 지금 어떠한 모습인지 보여 드리겠습니다.
설치는 매우 심플합니다.
- AWS 딥 러닝 AMI 배포
- Keras-MXNet 설치
- Keras-MXNet 구성
- AWS 딥 러닝 AMI 배포
AWS 딥 러닝 AMI (DLAMI) 배포에 대한 자습서를 따르십시오. 다중 GPU 교육 예제를 활용하려면 p3.8xlarge 또는 유사한 다중 GPU 인스턴스 유형을 실행하십시오.
CUDA, Keras, MXNet 및 TensorFlow와 같은 기타 프레임 워크를 실행하기 위해서 dependencies(종속성)을 설치하고 싶습니까? 그런 다음 Keras-MXNet 설치 안내서를 따르십시오.
- Keras-MXNet 설치
당신의 DLAMI에있는 MXNet Conda 환경에 Keras-MXnet 및 그 종속성을 설치하십시오. 이미 Keras 버전 1.0이 있으므로 먼저 제거해야 합니다. DLAMI에 로그인하고 다음을 실행하십시오.
# Activate the MXNet Python 3 environment on the DLAMI
$ source activate mxnet_p36
# Install a dependency needed for Keras datasets
$ pip install h5py
# Uninstall older versions Keras-MXNet
$ pip uninstall keras-mxnet
# Install Keras-MXNet v2.1.6
$ pip install keras-mxnet
Keras-MXnet 및 그 종속성은 이제 DLAMI의 MXNet Conda 환경에 설치됩니다.
- Keras-MXNet 설치의 유효성 검사
Keras의 유효성을 검증하려면 다음을 사용하여 MXNet 백엔드를 실행하십시오.
$ python
>>>import keras as k
Using MXNet backend
CNN 지원
CIFAR-10 데이터 세트에서 ResNet 모델을 훈련하여 비행기, 자동차, 새, 고양이, 사슴, 개, 개구리, 말, 배, 트럭 등 10 개의 타입을 확인해 봅시다. Keras-MXNet 저장소의 예제 섹션에서 Keras 2 예제 스크립트를 사용할 수 있습니다. Keras의 백엔드로 MXNet을 사용하면 사용자의 스크립트를 거의 업데이트하지 않아도 됩니다.
먼저, Keras-MXNet repo 폴더에서 예제 스크립트를 다운로드 하세요.
$ wget https://raw.githubusercontent.com/awslabs/keras–apache–mxnet/master/examples/cifar10_resnet_multi_gpu.py
이 스크립트는 multi_gpu_model API를 호출하고 사용할 GPU 수를 전달합니다.
둘째, 터미널 창에서 nvidia-smi를 실행하여 DLAMI에서 사용 가능한 GPU 수를 확인합니다. 다음 단계에서는 네 개의 GPU가 있는 경우 그대로 스크립트를 실행합니다. 그렇지 않으면 다음 명령을 실행하여 편집을 위해 스크립트를 엽니다.
$ vi cifar10_resnet_multi_gpu.py
스크립트에는 GPU 수를 정의하는 다음 줄이 있습니다. 필요한 경우 업데이트합니다.
model = multi_gpu_model(model, gpus=4)
교육을 실행해보세요.
$ python cifar10_resnet_multi_gpu.py
(선택 사항) 교육을 실행하는 동안 nvidia-smi 명령을 사용하여 GPU 사용량과 메모리 사용량을 확인하십시오. 이것을 위해 다른 터미널 세션을 여십시오.
RNN 지원
Keras-MXNet은 현재 RNN을 실험적으로 지원합니다. MXNet 백엔드에서 RNN을 사용할 때 몇 가지 제한 사항이 있습니다. 자세한 내용은 Keras-MXNet 설명서를 참조하십시오. 여기에는 LSTM 레이어를 사용하여 IMDB 데이터 세트를 학습하는 데 필요한 해결 방법이 포함되어 있습니다. 해결 방법에도 불구하고 멀티 GPU AMI에서 이 RNN을 교육하는 것은 이전에 사용했던 것보다 상대적으로 쉽고 빠릅니다.
imdb_lstm 예제 스크립트를 사용하십시오. 임베디드 레이어에서 입력 길이를 전달하고 unroll = True를 다음과 같이 설정합니다.
먼저, DLAMI의 터미널 세션에서 Keras-MXNet repo 폴더에서 예제 스크립트를 다운로드하십시오.
$ wget https://raw.githubusercontent.com/awslabs/keras–apache–mxnet/master/examples/imdb_lstm.py
다음은 스크립트를 열고 다음의 라인을 리뷰하세요.
model.add(Embedding(max_features, 128, input_length=maxlen))
model.add(LSTM(128, unroll=True))
세 번째로는 예제 스크립트는 MXNet 백엔드와 호환되도록 이미 수정되었으므로 실행할 수 있습니다.
$ python imdb_lstm.py
(선택 사항) 교육을 실행하는 동안 nvidia-smi 명령을 사용하여 GPU 사용량과 메모리 사용량을 확인하십시오. 이것을 위해 다른 터미널 세션을 여십시오.
벤치 마크
다른 Keras 백엔드의 성능을 평가하는 데 도움이 되도록 Keras-MXNet에 벤치 마크 모듈을 추가했습니다. 아래 표에 설명 된 CPU, 단일 GPU 및 다중 GPU 컴퓨터에서 다양한 모델과 데이터 세트를 사용하면 Keras-MXNet이 더 빠른 CNN 교육 속도를 갖고 있으며 여러 GPU에서 효율적으로 확장 할 수 있음을 알 수 있습니다. 이것은 교육 속도의 막대형 차트에 표시됩니다. 벤치 마크 스크립트를 실행하고 자세한 벤치 마크 결과를 생성하는 방법에 대한 자세한 내용은 Keras Benchmarks 추가 정보를 참조하십시오.
벤치 마크 구성
- Keras 버전 2.1.6
- MXNet 버전 1.2.0
- 이미지 데이터 형식: 채널 우선
CIFAR10 데이터 세트를 교육하면 데이터 세트의 이미지가 더 작아 져서 선형 선형 스케일링이 발생했습니다. 데이터 세트는 32 x 32 픽셀 크기의 50,000 개의 이미지로 구성됩니다. 이 작은 이미지를 전달하는 통신 오버 헤드는 4 GPU에서 8 GPU로 점프하여 제공되는 계산 능력보다 높습니다. ImageNet 및 합성 데이터 데이터세트는 Keras-MXNet에서 가능한 성능 향상을 입증하는데 있어 더 효과적입니다. 표 아래의 그래프에서 이를 볼 수 있습니다.
Instance | GPUs used | CIFAR-10
(images/s) |
ImageNet (images/s) | Synthetic Data |
P3.8xLarge | 1 | 831 | 135 | 194 |
P3.8xLarge | 4 | 1783 | 536 | 764 |
P3.16xLarge | 8 | 1680 | 722 | 1068 |
이미지 처리 속도와 Keras-MXNet 비교
What’s next?
추가 Keras-MXNet 튜토리얼을 시험해 보거나 릴리스 노트에서 자세한 내용을 읽어보세요.
Further Reading
- Saving a MXNet-Keras model
- Performance guide
- Multi-GPU training
- RNN limitations and workarounds
- Release Notes
원문 URL: https://aws.amazon.com/ko/blogs/machine-learning/apache-mxnet-incubating-adds-support-for-keras-2/
** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.