カタベログ

IT技術に関するブログを書きたい.食べ物関連はInstagramをご参照の事.

SageMakerでApache Airflowが触れるので試してみた

きっかけ

2018年のAWS Re:Inventで発表されたあたりからずっと触ってみたいと思って何もしていなかった。 三連休だし、でも台風だから外に出れないしなので触ってみることにした。

方針

AWSさんは初心者に優しいのでSampleをGithubに公開してくれてます。 使わないのも勿体ないので使わせていただくことにした。 AWS CloudFormation使ってAmazon EC2Amazon S3Amazon RDS、 そしてAmazon SageMakerを使ってApache Airflowによる機械学習パイプラインのサンプルが作れます。

github.com

注意点

READMEにあるボタンから作ると、リージョンがオハイオになる。 自分はあらかじめ用意したサンプル用とは別のS3 Bucketに、 git cloneでローカルにダウンロードしたファイル全てあげた上で、 CloudFormationのスタックを作成することにした。

作業の流れ

READMEにあるように、EC2キーペアの作成をあらかじめ行います。 ボタンぽちぽちするだけで簡単にできちゃいます。

あとはスタックの作成ですが、これも簡単で入力するのは以下ぐらい。

  • Amazon S3 URLにあらかじめアップロードしておいたyamlファイルのURLを指定する
  • スタックに適当な名前をつける
  • RDS用のパスワードを設定する
  • あらかじめ作成したEC2のキーペアを指定する
  • S3 Bucket名をユニークかつ既存のバケット名に被らないように設定する

スタックを作成開始したら10分15分ぐらい待ってれば出来上がります。 うまくいかないときはスタックのイベントを確認してトラシューしましょう。 自分はS3 Bucket名あたりでS3の仕様を忘れててハマりました。

EC2のページでインスタンスDNS名を特定し、 httpでブラウザからアクセスすればAirflowがさわれます。

細かい話は、AWSさんは初心者に優しいので説明ページがあるのでそちらご覧ください。

aws.amazon.com

クロージング

CloudFormationのページでスタックを削除すれば S3 Bucket 以外は削除されます。 上述のページにあるように、空ではないS3 BucketはCloudFormationからは削除できません。

感想

Airflowのやり方でSageMakerを動かせるのは良い点だと思いました。 サンプルではEC2やRDSを使ったりしていますが、 ECSやEKSを使ったりみたいにインフラ構成を変えてみるとコスト最適化や柔軟性が生まれそうだなって思います。