SageMakerでApache Airflowが触れるので試してみた
きっかけ
2018年のAWS Re:Inventで発表されたあたりからずっと触ってみたいと思って何もしていなかった。 三連休だし、でも台風だから外に出れないしなので触ってみることにした。
方針
AWSさんは初心者に優しいのでSampleをGithubに公開してくれてます。 使わないのも勿体ないので使わせていただくことにした。 AWS CloudFormation使ってAmazon EC2、Amazon S3、Amazon RDS、 そしてAmazon SageMakerを使ってApache Airflowによる機械学習パイプラインのサンプルが作れます。
注意点
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さんは初心者に優しいので説明ページがあるのでそちらご覧ください。
クロージング
CloudFormationのページでスタックを削除すれば S3 Bucket 以外は削除されます。 上述のページにあるように、空ではないS3 BucketはCloudFormationからは削除できません。
感想
Airflowのやり方でSageMakerを動かせるのは良い点だと思いました。 サンプルではEC2やRDSを使ったりしていますが、 ECSやEKSを使ったりみたいにインフラ構成を変えてみるとコスト最適化や柔軟性が生まれそうだなって思います。