BLOG
AWS에서는 현재 다양한 기계 학습 모델을 최적화하여 여러 유명 기-훈련 알고리즘과 모델을 제공하여 Amazon SageMaker에서 사용할 수 있도록 하고 있습니다. 또한, AWS Marketplace의 기계 학습 분야에서는 수백개의 모델들을 원-클릭으로 SageMaker에서 사용할 수 있습니다.
이번엔 그래프 신경망의 손쉬운 구현을 위해 빌드된 오픈 소스 라이브러리인 Deep Graph Library도 Amazon SageMaker에서 사용할 수 있게 되었습니다.
최근 몇 년 동안 딥 러닝은 텍스트, 이미지 또는 비디오 같은 복잡한 데이터에서 정교한 패턴을 추출한다는 점에서 세상을 떠들썩하게 하고 그 능력을 인정받았습니다. 그러나 많은 데이터 세트가 이러한 범주에 맞지 않고 그래프로 더 효과적이게 표현되는 경우가 많았습니다. 이에 따라 AWS는 기존 신경망 아키텍처가 이러한 데이터 세트에 적합치 않다는 것을 느끼고 새로운 접근 방식의 필요성을 깨닫게 됩니다.
GNN은 무엇인가요?
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 같이 잘 알려진 딥 러닝 프레임워크를 기반으로 빌드됩니다. 이러한 프레임워크 중 하나도 알고 있다면 이 도구가 친숙하게 느껴질 것입니다. 어느 프레임워크를 사용하든 초급자용 예제를 통해 비교적 쉽게 시작하실 수 있습니다. 개인적으로는 GTC 2019 워크숍의 슬라이드와 코드가 매우 유용했습니다.
기본적인 예를 살펴보셨다면 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에서 학습 모델을 가져와서 실제 실험을 진행할 필요 없이 수많은 화합물의 독성을 예측하는 데 사용할 수 있습니다. 정말 놀라운 기능이죠!
정식 출시(서울 리전 포함)
DGL은 지금 바로 Amazon SageMaker에서 사용하실 수 있습니다.
사용 후 피드백이 있으시다면 DGL 포럼, Amazon SageMaker의 AWS 포럼 또는 AWS Support 담당자를 통해 알려주시기 바랍니다.
원문 URL: https://aws.amazon.com/ko/blogs/aws/now-available-on-amazon-sagemaker-the-deep-graph-library/
** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.