こんにちは!
AWS SageMakerは、Amazon Web Services(AWS)が提供する、機械学習(ML)モデルを構築、訓練、デプロイするためのサービスです。本記事では、AWS SageMakerを使用して、MLモデルを構築し、CloudFormationを使用してデプロイする方法を解説します。
AWS SageMakerを使用すると、MLモデルを構築、訓練、デプロイすることができます。AWS SageMakerを使用すると、MLモデルを構築するためのツールキットが提供され、MLモデルを訓練するためのハイパーパラメータを設定したり、MLモデルをデプロイするためのサービスを提供します。
CloudFormationを使用すると、MLモデルをデプロイするためのインフラストラクチャを自動的に構築できます。
AWS SageMakerを使用してMLモデルを構築するには、まず、AWS SageMakerのコンソールから新しいノートブックインスタンスを作成します。ノートブックインスタンスを作成したら、MLモデルを構築するためのPythonコードを作成します。
MLモデルを構築するためのPythonコードを作成するには、AWS SageMakerのノートブックインスタンスで提供されているライブラリを使用します。例えば、TensorFlowやKerasなどのライブラリを使用して、MLモデルを構築することができます。
import sagemaker
from sagemaker.tensorflow import TensorFlow
sagemaker_session = sagemaker.Session()
bucket = sagemaker_session.default_bucket()
prefix = 'sagemaker/my-training'
estimator = TensorFlow(entry_point='train.py',
role='arn:aws:iam::1234567890:role/MySageMakerRole',
framework_version='2.1.0',
train_instance_count=1,
train_instance_type='ml.c5.xlarge',
output_path='s3://{}/{}/output'.format(bucket, prefix),
base_job_name='my-training-job')
inputs = 's3://{}/{}/data'.format(bucket, prefix)
estimator.fit(inputs)
MLモデルを構築するためのPythonコードを作成したら、AWS SageMakerのノートブックインスタンスでコードを実行します。コードを実行すると、MLモデルが構築されます。
MLモデルを構築したら、MLモデルを訓練する必要があります。MLモデルを訓練するために、AWS SageMakerのノートブックインスタンスで提供されている訓練用のツールを使用します。
訓練用のツールを使用してMLモデルを訓練するには、MLモデルを訓練するためのハイパーパラメータを設定する必要があります。ハイパーパラメータを設定すると、MLモデルを訓練するためのデータセットを指定したり、訓練用のアルゴリズムを指定したりすることができます。
以下はPyTorch のカスタムコードを使用して MNIST データセットをトレーニングする方法です。
import boto3
import sagemaker
import os
from sagemaker.pytorch import PyTorch
sagemaker_session = sagemaker.Session()
# S3 bucket name for storing training data
bucket = sagemaker_session.default_bucket()
prefix = 'sagemaker/pytorch-mnist-example'
# S3 location to store training data
input_data = 's3://{}/{}/'.format(bucket, prefix)
# S3 location for model artifacts
output_path = 's3://{}/{}/output'.format(bucket, prefix)
# IAM role for executing the training job
role = 'arn:aws:iam::1234567890:role/MySageMakerRole'
# Get the PyTorch estimator
estimator = PyTorch(entry_point='train.py',
source_dir='source',
role=role,
framework_version='1.8.0',
train_instance_count=1,
train_instance_type='ml.c5.2xlarge',
output_path=output_path,
sagemaker_session=sagemaker_session,
hyperparameters={
'epochs': 10,
'batch-size': 128,
'learning-rate': 0.01,
'backend': 'gloo',
'rank': 0,
'world-size': 1
})
# Launch the training job
estimator.fit(inputs=input_data)
MLモデルを訓練するためのハイパーパラメータを設定したら、MLモデルを訓練するためのコードを作成します。MLモデルを訓練するためのコードを作成したら、AWS SageMakerのノートブックインスタンスでコードを実行します。コードを実行すると、MLモデルが訓練されます。
MLモデルを訓練したら、MLモデルをデプロイする必要があります。MLモデルをデプロイするために、CloudFormationを使用します。CloudFormationを使用すると、MLモデルをデプロイするためのインフラストラクチャを自動的に構築できます。
次にCloudFormationを使用してMLモデルをデプロイするためのコードを作成します。
簡単なCloudFormationの例を記載します。
Resources:
SageMakerExecutionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: sagemaker.amazonaws.com
Action: sts:AssumeRole
Path: /
Policies:
- PolicyName: SageMakerExecutionPolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- s3:ListBucket
- s3:GetObject
- s3:PutObject
- sagemaker:CreateTrainingJob
- sagemaker:DescribeTrainingJob
- sagemaker:CreateModel
- sagemaker:CreateEndpointConfig
- sagemaker:CreateEndpoint
- sagemaker:DeleteEndpoint
- sagemaker:InvokeEndpoint
- sagemaker:ListEndpointConfigs
- sagemaker:ListEndpoints
Resource: '*'
MySageMakerInstance:
Type: AWS::SageMaker::NotebookInstance
Properties:
InstanceType: ml.t2.medium
RoleArn: !GetAtt SageMakerExecutionRole.Arn
NotebookInstanceName: my-notebook-instance
AssumeRolePolicyDocument
: ロールがアクセス可能なサービスと、ロールが権限を委任できる場合の許可ポリシーが設定されています。Policies
: このロールにアタッチするポリシーが設定されています。S3 と SageMaker のアクセス権が設定されています。InstanceType
: SageMaker ノートブックインスタンスのインスタンスタイプを設定します。RoleArn
: SageMaker ノートブックインスタンスが使用する IAM ロールの ARN を設定します。NotebookInstanceName
: SageMaker ノートブックインスタンスの名前を設定します。本記事では、AWS SageMakerを使用して、MLモデルを構築し、簡易的ですがCloudFormationを使用したデプロイを解説しました。AWS SageMakerを使用すると、MLモデルを構築するためのツールキットが提供され、MLモデルを訓練するためのハイパーパラメータを設定したり、MLモデルをデプロイするためのサービスを提供します。CloudFormationを使用すると、MLモデルをデプロイするためのインフラストラクチャを自動的に構築できます。
サーバーレス開発、低コストなAWS開発内製化はお気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎