AI | ML

[AWS] SageMaker에서 파이토치를 이용한 딥러닝 학습 (1)

깜태 2021. 5. 28. 15:50
728x90

안녕하세요, 오늘은 AWS SageMaker 환경에서 파이토치를 사용하는 과정을 써보겠습니다.

 

AWS SageMaker는 AWS 생태계 내에서 머신러닝 부분을 담당하는 서비스로,

 

AWS에서 제공하는 SageMaker SDK를 이용해 모델의 학습, 배포, 관리까지 이용이 가능합니다.

 

왜 AWS SageMaker를 써야하는지 이유를 생각해보면 제 생각은 다음과 같습니다.

 

1. 딥러닝 학습을 시킬 수 없는 환경인 경우

 

2. AWS 생태계에서 연동 가능성

(아마존의 다른 서비스들과 연동이 되기 때문에 기존에 쓰고 계신 분이라면 배포 및 관리가 용이)

 

3. 서버 설정 시간 및 비용 단축

도커나 쿠버네티스를 사용하는 경우도 있겠지만, 도커 이미지를 생성하는 경우도 나만의 이미지를 생성하는데는

시간이 소요됩니다. 저같은 경우에는 GPU마다 CUDA버전을 다르게 써야되고,
CUDA 버전에 따라 라이브러리 호환이 안되는 경우도 종종 겪었습니다.

여기서 AWS Sagemaker에서 제공하는 SDK를 이용하면 위의 설정시간을 줄일 수 있는게 장점으로 보입니다.

 

 

1. AWS SageMaker 사이트 접속

 

2. AWS SageMaker 노트북 인스턴스를 만듭니다.

 - 인스턴스 생성

 

만들어진 AWS 노트북 인스턴스를 확인합니다.

- 인스턴스 내 주피터 파일 생성

 

3. Sagemaker 구조 확인

AWS 환경에선 sagemaker SDK를 이용해 학습환경에 코드를 이어 붙여야 합니다.

따라서 sagemaker 라는 라이브러리를 import 해야하는데, 자세한 내용은
https://github.com/aws/sagemaker-python-sdk

홈페이지에서 볼 수 있습니다.

위에서 말씀드린 SDK를 이용하면 AWS에서 라이브러리 버전에 따라 설정된 이미지를 불러오는 것으로 보입니다.

 

저는 sagemaker 라는 SDK를 처음 쓰다보니 검색을 많이 하기도 했지만, 위의 홈페이지를 많이 참고했습니다.

검색해보니 PyTorchPredict 객체는 인퍼런스할 때 쓰는 용이고, Predictor라는 클래스를 상속받은 것을 볼 수 있습니다.

https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/pytorch/model.py

Predictor는 뭐지? 하고 깃허브를 타고, 찾아보았습니다.

여기서 파라미터를 보니 endpoint_name부터 어떤 게 필요로 하는지 대략적으로는 파악할 수 있었습니다만,

이걸 지금 쓸 것 같진 않아서 넘어갔습니다.

 

그 다음으로, PyTorchModel이라는 객체를 봤는데, python 버전도 설정하고, model_data도 설정하고, Entry_point, pytorch_version 등을 설정하는 부분과 image_uri 설정하는 부분이 있는데요.

pytorch_version명시하거나 image_uri 는 경우에 따라서 도커 이미지를 쓰는 것으로 보입니다.

https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/pytorch/estimator.py

다음으로 제일 중요한 PyTorch 부분입니다.

위와 마찬가지로 framework_version 파라미터를 이용해 SDK가 어느 클라우드 PC를 사용할지 설정하는 듯 합니다.

 

https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/pytorch/estimator.py

 

조금 더 내려보면, 아래의 메소드를 볼 수 있습니다.

https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/pytorch/estimator.py

hyperparameters 메소드를 이용해 전반적인 파라미터 설정을 업데이트할 수 있는 게 보입니다.

PyTorch 클래스의 create_model 메소드를 이용해 pyTorchModel 구조가 만들어지는 것을 볼 수 있고,

따라서 위의 PyTorchModel 과 PyTorch 의 차이는

PyTorch는 학습을 중점으로 둬서 hyperparameters 옵션으로 학습시키는 구조라는 점,

반면에 PyTorchModel은 학습된 모델을 불러올 때, 설정하는 클래스라는 걸 확인할 수 있습니다.

그럼 추론할 수 있는 것은, PyTorchPredictor는 end_point를 이용해 저장된 PyTorchModel을 인퍼런스 하는 용도라는 것을 생각해볼 수 있습니다.

이제 구조는 대략적으로 확인한 듯 하니, 직접적으로 학습을 시도해보겠습니다.

 

특이사항으로는 git에 있는 모델을 그대로 쓸 수도 있어 보입니다.

https://sagemaker.readthedocs.io/en/stable/overview.html

링크를 보면, 아래의 내용이 나와있습니다.

 

인스턴스를 만들고 구조와 파악했으니, 다음 글에 모델 학습시키는 과정을 적어보겠습니다.

728x90

'AI | ML' 카테고리의 다른 글

Transfer Learning 가이드  (0) 2021.01.05
딥러닝 학습 데이터셋 쉽게 찾고 다운받기  (0) 2020.12.03