継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

Amazon SageMaker の XGBoost フレームワークチュートリアルを試して感じたこと

タダです.

Python もくもく自習室 #20 に参加してきました.もくもくでは Amazon SageMaker(以下,SageMaker)でモデル開発とデプロイを実践しました. retty.connpass.com

フレームワークXGBoost を使うことにしました.今後 Kaggle にチャレンジしたいのですが, XGBoost はよく使われるフレームワークという情報を見つけたため使ってみました.参考にさせてもらったのはこちらのチュートリアルです.今回はチュートリアルを終えて SageMaker を使う際の AWS 観点で注意すべき点をまとめます.

www.codexa.net

SageMaker とは

SageMaker は AWS機械学習サービスの1つで機械学習のモデル開発,トレーニング,デプロイが SageMaker で完結できるものになっています.国内での利用事例も増えつつあると感じており,昨日もちょうど dely さんの SageMaker を活用した寄稿記事がリリースされてました.AWS機械学習をするなら中核となるサービスと言えます.

aws.amazon.com

XGBoost とは

XGBoost は決定木を使った勾配ブースティングのオープンソースフレームワークになります.勾配ブースティングはアンサンブル学習の一種で,教師あり学習アルゴリズムです.

docs.aws.amazon.com

利用したデータセット

今回使ったデータセットは「Bank Marketing Data Set (銀行マーケティング・データセット」を使いました.カルフォルニア大学では様々なオープンデータを公開しているようです.同様にオープンデータを活用したチュートリアルは書評記事を書いた「機械学習の炊いたん。」でも MXNet フレームワークを使ったチュートリアルが解説されているので気になる方は購入を検討してみてください.

archive.ics.uci.edu

関連記事

sadayoshi-tada.hatenablog.com

AWS 観点で注意すべき点

ノートブックインスタンス,モデル訓練用インスタンス,モデルのデプロイ用インスタンスが存在する

今回のチュートリアルを行って初めて知ったのですが,ノートブックインスタンスのみでモデル開発とデプロイが完結するかと勘違いしていました.実際は,モデルの訓練,デプロイしホスティングするインスタンスが異なります.課金もそれぞれの利用時間当たりの料金がかかってきますので利用する際は料金表を参照ください.

aws.amazon.com

チュートリアルでは,モデルの訓練時は「ml.m4.xlarge」でモデルのデプロイとホスティングを「ml.c4.xlarge」で実施しました.なお、今回活用したチュートリアルでの利用料金はおよそ3~4ドルほどとのことです.お試しの料金として問題ない範囲かと思います.

また参考情報としてドキュメントで推奨のインスタンスタイプも紹介されているので参考になると思います.

docs.aws.amazon.com

訓練データの出力先の S3 バケット名について

SageMaker で訓練データで使う S3 を利用します.S3 バケットをモデル開発を行う前に構築しますが,試しに利用する目的であればバケット名に「SageMaker」,「Sagemaker」,「sagemaker」の文言をつければ SageMaker がデータの出力先として認識してくれます.というのも SagaMaker のノートブックインスタンスに付与される IAM ロールで指定されているためです.そのためバケット名に特にこだわりがない場合は以下のいずれかの文言を活用すると良いでしょう.

IAM ポリシー抜粋
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::*SageMaker*",
                "arn:aws:s3:::*Sagemaker*",
                "arn:aws:s3:::*sagemaker*",
                "arn:aws:s3:::*aws-glue*"
            ]
        }

XGBoost 専用のコンテナイメージのエンドポイントについて

モデルの訓練を行う際に ECR の所定のコンテナイメージを指定します.エンドポイントが既にあるのですが下記のように利用しています.アルゴリズムごとに ECR コンテナイメージが用意されているため利用用途に応じて選択ください.

※チュートリアルのコードを抜粋
containers = {'us-west-2': '433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest',
              'us-east-1': '811284229777.dkr.ecr.us-east-1.amazonaws.com/xgboost:latest',
              'us-east-2': '825641698319.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest',
              'eu-west-1': '685385470294.dkr.ecr.eu-west-1.amazonaws.com/xgboost:latest',
             'ap-northeast-1': '501404015308.dkr.ecr.ap-northeast-1.amazonaws.com/xgboost:latest'}

参考情報

docs.aws.amazon.com

まとめ

今回は SageMaker を使ってモデル開発〜モデルのホスティングまで行う XGBoostチュートリアルを使って感じた SageMaker 利用時のAWS 観点で注意すべき点をまとめました.今回のチュートリアルで使ったのは S3,ECR でしたが他にも関連できるサービスはあるためこれから色々なサービスと組み合わせて使っていければと思います.

もくもくで扱えなかったもの

もくもく会で扱えなかったのですがネットで盛り上がっているディープラーニング入門 Chainer チュートリアルを今度やってみたい.

tutorials.chainer.org