Amazon Web Services 한국 블로그
Amazon SageMaker 업데이트 – CloudFormation, Chainer 및 GreenGrass ML 지원 등
지난주 도쿄에서 열린 AWS 서밋에서 Amazon SageMaker대한 다양한 신규 기능을 발표하였습니다. SageMaker를 아시아 태평양(도쿄) 리전에서 사용할 수 있고 이제 CloudFormation을 지원합니다. MXNet 및 Tensorflow에 더해 새로운 Machine Learning 프레임워크인 Chainer가 SageMaker Python SDK로 제공됩니다. 마지막으로, AWS Greengrass Machine Learning에서는 Chainer 모델을 다수의 디바이스에서 실행할 수 있습니다.
좀 더 자세하게 알아보겠습니다.
SageMaker Chainer 지원
Chainer는 유명하고 유연하며 직관적인 Deep Learning 프레임워크입니다. Chainer 네트워크는 네트워크 토폴로지가 순방향 계산을 통해 동적으로 정의되는 “Define-by-Run” 스키마를 기반으로 작동합니다. 네트워크 토폴로지가 데이터로부터 개별적으로 정의되는 “Define-and-Run” 스키마를 기반으로 작동하는 다른 많은 프레임워크와 다릅니다. Chainer 스키마는 네이티브 Python 구조와 도구를 사용하여 네트워크를 작성할 수 있기 때문에 많은 개발자들이 즐겨 사용합니다.
이제 SageMaker에서 TensorFlow 또는 MXNet 추정기를 사용하는 것만큼 쉽게 Chainer를 사용할 수 있습니다. 사실은 더 쉬울 수도 있습니다. 기존 스크립트를 가져와서 약간만 수정하면 SageMaker 훈련에 사용할 수 있기 때문입니다. TensorFlow 또는 MXNet 사용자는 특정 서명을 사용하여 훈련 함수를 구현해야 합니다. Chainer의 경우 다음과 같은 환경 변수 몇 개를 읽기만 하면 되므로 이동이 조금 더 편리합니다. SM_MODEL_DIR
, SM_NUM_GPUS
및 기타. 기존 스크립트를 if __name__ == '__main__':
가드로 래핑하고 로컬로 또는 sagemaker에서 호출할 수 있습니다.
import argparse
import os
if __name__ =='__main__':
parser = argparse.ArgumentParser()
# hyperparameters sent by the client are passed as command-line arguments to the script.
parser.add_argument('--epochs', type=int, default=10)
parser.add_argument('--batch-size', type=int, default=64)
parser.add_argument('--learning-rate', type=float, default=0.05)
# Data, model, and output directories
parser.add_argument('--output-data-dir', type=str, default=os.environ['SM_OUTPUT_DATA_DIR'])
parser.add_argument('--model-dir', type=str, default=os.environ['SM_MODEL_DIR'])
parser.add_argument('--train', type=str, default=os.environ['SM_CHANNEL_TRAIN'])
parser.add_argument('--test', type=str, default=os.environ['SM_CHANNEL_TEST'])
args, _ = parser.parse_known_args()
# ... load from args.train and args.test, train a model, write model to args.model_dir.
그런 다음 이 스크립트를 로컬로 실행하거나 SageMaker Python SDK를 사용하여 SageMaker의 GPU 인스턴스에서 시작할 수 있습니다. 하이퍼파라미터는 CLI 명령으로 스크립트에 전달되고 위의 환경 변수가 자동으로 채워집니다. fit를 호출하면 전달하는 입력 채널이 SM_CHANNEL_*
환경 변수에 채워집니다.
from sagemaker.chainer.estimator import Chainer
# Create my estimator
chainer_estimator = Chainer(
entry_point='example.py',
train_instance_count=1,
train_instance_type='ml.p3.2xlarge',
hyperparameters={'epochs': 10, 'batch-size': 64}
)
# Train my estimator
chainer_estimator.fit({'train': train_input, 'test': test_input})
# Deploy my estimator to a SageMaker Endpoint and get a Predictor
predictor = chainer_estimator.deploy(
instance_type="ml.m4.xlarge",
initial_instance_count=1
)
이제, 자체 도커 컨테이너 없이 스크립트만으로 Chainer를 훈련하고 호스팅할 수 있습니다. 전체 sagemaker-chainer-containers를 github에서 확인할 수 있습니다. 이 새로운 컨테이너의 기능 중에서 제가 가장 좋아하는 기능은 기본적으로 포함된 chainermn입니다. 이 기능을 사용하면 Chainer 훈련 작업을 여러 노드에 쉽게 배포할 수 있습니다.
README와 예제 필기장에서 더 많은 문서 자료와 정보를 확인할 수 있습니다.
AWS GreenGrass ML과 Chainer 지원
이제 AWS GreenGrass ML에 사전 구축된 Chainer 패키지가 포함됩니다. 이 패키지는 인텔 아톰, NVIDIA Jetson, TX2 및 Raspberry Pi에 기반을 둔 모든 디바이스에서 사용할 수 있습니다. 이제 GreenGrass ML이 TensorFlow, Apache MXNet 및 Chainer를 위한 사전 구축 패키지를 제공합니다! SageMaker에서 모델을 훈련한 다음 GreenGrass ML을 사용하여 모든 GreenGrass 지원 디바이스에 쉽게 배포할 수 있습니다.
– Randall