Amazon Web Services 한국 블로그
Amazon SageMaker, 그래프 딥러닝 학습을 위한 Deep Graph Library 모델 추가
AWS에서는 이미 검증된 다양한 기계 학습 모델을 최적화해서 Amazon SageMaker에서 사용할 수 있도록 다수의 유명 기-훈련 알고리즘과 모델을 제공하고 있습니다. 또한, AWS Marketplace의 기계 학습 분야에는 수백개의 모델들을 원-클릭으로 SageMaker에서 사용 가능합니다.
이번에 그래프 신경망의 손쉬운 구현을 위해 빌드된 오픈 소스 라이브러리 Deep Graph Library를 Amazon SageMaker에서 사용할 수 있습니다.
최근 몇 년 동안 딥 러닝은 텍스트, 이미지 또는 비디오 같은 복잡한 데이터에서 정교한 패턴을 추출하는 능력 덕분에 세상을 떠들썩하게 했습니다. 하지만, 이런 범주에 맞지 않고 그래프로 더 효과적으로 표현되는 데이터 세트가 상당히 많습니다. 기존 신경망 아키텍처도 이러한 데이터 세트에 적합하지 않다는 것과 새로운 접근 방식의 필요성을 느낍니다.
그래프 신경망에 대한 기본 정보
Graph Neural Network(그래프 신경망,GNN)은 최근 기계 학습에서 가장 흥미로운 발전 분야 중 하나로, 이러한 참조 문서는 작업을 시작하는 데 도움이 됩니다. GNN은 다음과 같은 데이터 세트에서 예측 모델을 학습하는 데 사용됩니다.
- 사람들 사이의 관계를 그래프로 나타내는 소셜 네트워크
- 고객과 제품 사이의 상호 작용을 그래프로 나타내는 추천 시스템
- 화합물을 원자와 결합의 그래프로 모델링하는 화학 분석
- 소스 및 대상 IP 주소 사이의 연결을 그래프로 설명하는 사이버 보안
- 그 외 더 많은 데이터 세트
대부분의 경우 이러한 데이터 세트는 크기가 매우 크고 부분적으로만 레이블이 지정됩니다. 알려진 사기범과의 관계를 분석하여 한 개인이 사기범일 가능성을 예측하는 사기 감지 시나리오를 고려해보겠습니다. 이 문제는 그래프 노드의 일부에만 레이블(‘불법’ 또는 ‘합법)이 지정되는 반 지도 학습 작업으로 정의할 수 있습니다. 이 솔루션은 수작업으로 레이블이 지정된 대규모 데이터 세트를 빌드하여 기존의 기계 학습 알고리즘을 적용하기 위해 ‘선형화’하는 방법보다 낫습니다.
이러한 문제를 해결하려면 도메인 지식(소매, 금융, 화학 등), 컴퓨터 과학 지식(Python, 딥 러닝, 오픈 소스 도구) 및 인프라 지식(교육, 배포 및 모델 확장)이 필요합니다. 하지만 이러한 기술 모두를 숙달하는 사람은 거의 없습니다. 그래서 Deep Graph Library 및 Amazon SageMaker 같은 도구가 필요한 것입니다.
Deep Graph Library 소개
2018년 12월 Github에 처음으로 출시된 Deep Graph Library(DGL)는 연구원과 과학자가 데이터 세트에서 GNN을 신속하게 빌드, 교육 및 평가할 수 있게 도와주는 Python 오픈 소스 라이브러리입니다.
DGL은 PyTorch 및 Apache MXNet 같이 잘 알려진 딥 러닝 프레임워크를 기반으로 빌드됩니다. 이러한 프레임워크 중 하나도 알고 있다면 이 도구가 친숙하게 느껴질 것입니다. 어느 프레임워크를 사용하든 초급자용 예 덕분에 비교적 쉽게 시작할 수 있습니다.
기본적인 예를 살펴본 후에는 DGL에 이미 구현되어 있는 최신 모델을 살펴볼 차례입니다. 예를 들어 다음을 실행하면 그래프 컨볼루션 네트워크(GCN)와 CORA 데이터 세트를 사용하여 문서 분류 모델을 학습할 수 있습니다.
$ python3 train.py --dataset cora --gpu 0 --self-loop
모든 모델의 코드는 검사 및 조정 가능합니다. 이러한 구현은 성능 클레임을 확인하고 결과가 재현될 수 있도록 AWS 팀이 철저히 검증했습니다.
DGL에는 쉽게 다운로드하여 실험해볼 수 있는 그래프 데이터 세트 모음도 포함되어 있습니다.
DGL은 로컬에 설치하여 실행할 수 있는 것은 물론 사용자의 편의를 위해 PyTorch 및 Apache MXNet용 딥 러닝 컨테이너에도 추가되었습니다. 따라서 단일 서버를 관리할 필요 없이 Amazon SageMaker에서 DGL을 쉽게 사용하여 다양한 규모의 모델을 교육하고 배포할 수 있습니다. 방법을 직접 보여드리겠습니다.
Amazon SageMaker에서 DGL 사용
SageMaker용 Github 리포지토리에 전체 예제가 있습니다. 예제 중 하나는 Tox21 데이터 세트를 사용하여 분자 독성 예측을 위한 간단한 GNN을 학습합니다.
이 예제에서 우리가 해결하려는 문제는 12개의 다른 대상(생물 세포 내의 수용체 등)과 관련하여 새 화학 화합물의 잠재적인 독성을 파악하는 것입니다. 여러분이 짐작하는 것처럼 이러한 유형의 분석은 신규 약물을 개발할 때 매우 중요한데 시험관 실험을 진행할 필요 없이 결과를 빠르게 예측할 수 있는 기능은 연구원이 가장 효과적인 약물 후보에 모든 노력을 집중할 수 있게 도와 줍니다.
데이터 세트에는 8,000개가 조금 넘는 화합물이 포함되어 있으며 각 화합물은 그래프로 모델링되고(원자: 정점, 원자 결합: 간선) 대상별로 레이블 하나씩 총 열 두 번 레이블이 지정됩니다.. 후보 분자의 잠재적인 독성을 예측할 수 있도록 GNN을 사용하여 멀티 레이블 이진 분류 모델을 빌드해보겠습니다.
학습 스크립트에서는 DGL 모음에서 데이터 세트를 쉽게 다운로드할 수 있습니다.
from dgl.data.chem import Tox21
dataset = Tox21()
마찬가지로 DGL 모델 zoo를 사용하여 GNN 분류기를 쉽게 빌드할 수 있습니다.
from dgl import model_zoo
model = model_zoo.chem.GCNClassifier(
in_feats=args['n_input'],
gcn_hidden_feats=[args['n_hidden'] for _ in range(args['n_layers'])],
n_tasks=dataset.n_tasks,
classifier_hidden_feats=args['n_hidden']).to(args['device'])
나머지 코드는 대부분 일반 PyTorch이며 이 라이브러리에 익숙하다면 쉽게 이해할 수 있을 것입니다.
Amazon SageMaker에서 이 코드를 실행할 때는 SageMaker 예측기
를 사용하여 DGL 컨테이너의 전체 이름과 학습 스크립트의 이름을 하이퍼파라미터로 전달하면 됩니다.
estimator = sagemaker.estimator.Estimator(container,
role,
train_instance_count=1,
train_instance_type='ml.p3.2xlarge',
hyperparameters={'entrypoint': 'main.py'},
sagemaker_session=sess)
code_location = sess.upload_data(CODE_PATH,
bucket=bucket,
key_prefix=custom_code_upload_location)
estimator.fit({'training-code': code_location})
<output removed>
epoch 23/100, batch 48/49, loss 0.4684
epoch 23/100, batch 49/49, loss 0.5389
epoch 23/100, training roc-auc 0.9451
EarlyStopping counter: 10 out of 10
epoch 23/100, validation roc-auc 0.8375, best validation roc-auc 0.8495
Best validation score 0.8495
Test score 0.8273
2019-11-21 14:11:03 Uploading - Uploading generated training model
2019-11-21 14:11:03 Completed - Training job completed
Training seconds: 209
Billable seconds: 209
이제 S3에서 학습 모델을 가져와서 실제 실험을 진행할 필요 없이 수많은 화합물의 독성을 예측하는 데 사용할 수 있습니다. 정말 놀라운 기능이죠!
지금 이용 가능
지금 바로 Amazon SageMaker에서 DGL을 사용할 수 있습니다.
사용해 보시고 피드백이 있으면 DGL 포럼, Amazon SageMaker에 대한 AWS 포럼 또는 평소에 연락하는 AWS Support 담당자를 통해 알려주시기 바랍니다.
— Julien