この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
どうも、DA事業本部の大澤です。
現在開催中のre:Invent2019でAmazon SageMakerに関連した新サービス/アップデートが続々と発表されています。 そんな中でAmazon SageMaker Processingが発表されました!
Amazon SageMakerが対応しているリージョン全てで利用可能です。東京リージョンでも利用可能です!
概要
Amazon SageMakerを用いた機械学習モデル作成時におけるデータの流れは一般的に次のような流れになります。
今回発表されたAmazon SageMaker Processingは前処理と評価処理の部分を担ったサービスです。
これまでの場合、前処理や評価処理の部分については別で用意する必要がありましたが、Amazon SageMaker Processingを利用することでAmazon SageMakerに統合することができます。また、検証時においてもノートブック環境で実行するには時間がかかりすぎる、重たい処理をAmazon SageMaker Processingに任せることもできます。
コード例
AWS公式ブログにscikit-learnを用いる例が載っているので、紹介します。
まずはsagemaker.sklearn.processing.SKLearnProcessor
を用いて、処理を実行する環境情報を設定し、sklearn_processor
を作成します。
from sagemaker.sklearn.processing import SKLearnProcessor
sklearn_processor = SKLearnProcessor(framework_version='0.20.0',
role=role,
instance_count=1,
instance_type='ml.m5.xlarge')
前処理を実装してあるスクリプトpreprocessing.py
や入出力情報を先ほど作成したsklearn_processor
に設定して、前処理を実行します。
from sagemaker.processing import ProcessingInput, ProcessingOutput
sklearn_processor.run(
code='preprocessing.py',
# arguments = ['arg1', 'arg2'],
inputs=[ProcessingInput(
source='dataset.csv',
destination='/opt/ml/processing/input')],
outputs=[ProcessingOutput(source='/opt/ml/processing/output/train'),
ProcessingOutput(source='/opt/ml/processing/output/validation'),
ProcessingOutput(source='/opt/ml/processing/output/test')]
)
preprocessing.py
は次のような形で書けます。
import pandas as pd
from sklearn.model_selection import train_test_split
# Read data locally
df = pd.read_csv('/opt/ml/processing/input/dataset.csv')
# Preprocess the data set
downsampled = apply_mad_data_science_skills(df)
# Split data set into training, validation, and test
train, test = train_test_split(downsampled, test_size=0.2)
train, validation = train_test_split(train, test_size=0.2)
# Create local output directories
try:
os.makedirs('/opt/ml/processing/output/train')
os.makedirs('/opt/ml/processing/output/validation')
os.makedirs('/opt/ml/processing/output/test')
except:
pass
# Save data locally
train.to_csv("/opt/ml/processing/output/train/train.csv")
validation.to_csv("/opt/ml/processing/output/validation/validation.csv")
test.to_csv("/opt/ml/processing/output/test/test.csv")
print('Finished running processing job')
sklearn_processor.run()
の実行後は次のように処理後のデータがS3に出力されます。
料金
料金は使用するインスタンスに応じた従量課金となります。東京リージョンにおける料金は次の通りです。
Standard Instances - Current Generation | Price per Hour |
---|---|
ml.t2.medium | $0.0608 |
ml.t2.large | $0.1702 |
ml.t2.xlarge | $0.3405 |
ml.t2.2xlarge | $0.681 |
ml.t3.medium | $0.0762 |
ml.t3.large | $0.1523 |
ml.t3.xlarge | $0.3046 |
ml.t3.2xlarge | $0.6093 |
ml.m4.xlarge | $0.361 |
ml.m4.2xlarge | $0.722 |
ml.m4.4xlarge | $1.445 |
ml.m4.10xlarge | $3.612 |
ml.m4.16xlarge | $5.779 |
ml.m5.large | $0.174 |
ml.m5.xlarge | $0.347 |
ml.m5.2xlarge | $0.694 |
ml.m5.4xlarge | $1.389 |
ml.m5.12xlarge | $4.166 |
ml.m5.24xlarge | $8.333 |
ml.m5d.xlarge | $0.409 |
ml.m5d.large | $0.204 |
ml.m5d.4xlarge | $1.635 |
ml.m5d.2xlarge | $0.818 |
ml.m5d.24xlarge | $9.811 |
ml.m5d.12xlarge | $4.906 |
Compute Optimized Instances - Current Generation | Price per Hour |
---|---|
ml.c4.xlarge | $0.353 |
ml.c4.2xlarge | $0.706 |
ml.c4.4xlarge | $1.411 |
ml.c4.8xlarge | $2.822 |
ml.c5.xlarge | $0.3 |
ml.c5.2xlarge | $0.599 |
ml.c5.4xlarge | $1.198 |
ml.c5.9xlarge | $2.696 |
ml.c5.18xlarge | $5.393 |
ml.c5d.xlarge | $0.342 |
ml.c5d.large | $0.171 |
ml.c5d.9xlarge | $3.074 |
ml.c5d.4xlarge | $1.366 |
ml.c5d.2xlarge | $0.683 |
ml.c5d.18xlarge | $6.149 |
Memory Optimized Instances - Current Generation | Price per Hour |
---|---|
ml.r5.large | $0.213 |
ml.r5.xlarge | $0.426 |
ml.r5.2xlarge | $0.851 |
ml.r5.4xlarge | $1.702 |
ml.r5.8xlarge | $3.405 |
ml.r5.12xlarge | $5.107 |
ml.r5.16xlarge | $6.81 |
ml.r5.24xlarge | $10.214 |
ml.r5d.xlarge | $0.487 |
ml.r5d.large | $0.244 |
ml.r5d.4xlarge | $1.949 |
ml.r5d.2xlarge | $0.974 |
ml.r5d.24xlarge | $11.693 |
ml.r5d.12xlarge | $5.846 |
Accelerated Computing - Current Generation | Price per Hour |
---|---|
ml.p2.xlarge | $2.159 |
ml.p2.8xlarge | $17.27 |
ml.p2.16xlarge | $34.541 |
ml.p3.2xlarge | $5.872 |
ml.p3.8xlarge | $23.489 |
ml.p3.16xlarge | $46.978 |
さいごに
新しくリリースされたAmazon SageMaker Processingについてご紹介しました。機械学習の検証、運用どちらにおいても前後処理、評価は重要な要素です。Amazon SageMaker Processingを活用することで、検証の高速化と運用負荷の軽減ができそうです。