機械学習における前後処理と評価処理を担う、Amazon SageMaker Processingが発表されました #reinvent
どうも、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を活用することで、検証の高速化と運用負荷の軽減ができそうです。