この記事は筋肉エンジニア アドベントカレンダーの 23 日目です。
私は筋肉エンジニアというほど筋肉があるわけではないのですが、
今年からボルダリングにハマっていることもあり、筋肉に興味が湧いたため、参加してみることにしました。
マクラ
私が最近筋肉について学んだことといえば、「筋力」と「パワー」は異なる、ということと、筋トレのパフォーマンスは「パワー」に着目するべきだ、ということです。
詳しくは下記の記事を参照していただきたいのですが、
なぜなら、パワーは「力 × 速度」だからです。
...
縦軸が力(Force)で横軸が速度(Velocity)です。力と速度を掛けたものがパワーです。
つまり、競技パフォーマンス、私でいえばより良く壁を登る(ボルダリング) には、
Power、つまりP に着目することがとても重要なのです。
みなさん、P が重要ですよ。覚えておいてください。
... さて、筋肉といえばトレーニング、
トレーニングといえば機械学習ですね!
というわけで、今回は AWS Sage Maker を触ってみた、という記事です。
公式ページ によると、
機械学習モデルを大規模に構築、トレーニング、デプロイ
Amazon SageMaker は、開発者やデータサイエンティストが機械学習モデルをあらゆる規模ですばやく簡単に構築、トレーニング、デプロイできるようにするフルマネージドサービスです。Amazon SageMaker を使用すると、開発者による機械学習を通常減速させるような障害すべてを排除できます。
とのことです。
正直、機械学習を少しかじり始めているだけの自分にとっては、説明を読むだけでは何ができるのか、なんとな〜くしかわかりません。
なので、実際に触ってみることにしました。
いきなり結論
- いわば、クラウド上にあるJupyter Notebook 環境。
- 学習(トレーニング) したモデルをS3 に置いておいておくこともできるし、エンドポイントを設定してモデルを利用することもできる。
- API もあるので、定期的にジョブを作成・学習を回して、常に最新のモデルを利用できる。
- ※ CloudWatch のRule でできるかなと思ったけど、現時点ではターゲットで選択できなかったので、Lambda から呼び出す必要がありそう。
以上。。!
やばい、あんま書くことなかった。。
ということで、画像を貼ってごまかしておく。
サービスを有効化すると、こんな画面になります。
キャプチャは「ノートブックインスタンス」を作成したところです。
![Screen Shot 2017-12-23 at 21.33.54.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27788%2Fe90389c6-9cc4-fafb-d93a-1ec8133d7b7d.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=54cc19e99e3b83f3f6edfb88bf0014fc)
ここから「オープン」のリンクをたどると、おなじみのJupyter Notebook 画面にアクセスできます。
![Screen Shot 2017-12-23 at 21.34.43.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27788%2F744db472-6588-3ae2-894e-ef630feb9566.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=6d3c887fc66f7f15325253410ebdb24b)
この、「sample-notebooks」の中を見ると、ご丁寧にチュートリアル的なNotebook がいくつか入っています。
![Screen Shot 2017-12-23 at 22.04.17.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27788%2Fbad9be27-0bcd-402c-1193-b0efb1fd0a12.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=75df1e50770dd0aebf1901e6daee5f3a)
試しに「sagemaker-python-sdk」の、「1P_kmeans_highlevel」を開いてみると、こんなかんじで、機械学習ではおなじみのMNIST (手書きの数字を当てるやつ) をK means 法で学習する、というのを、何も考えずにポチポチ実行していくだけでできちゃったりします。
![Screen Shot 2017-12-23 at 21.36.31.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27788%2Fd759de37-2d7d-2879-9240-90327eb7fba6.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a870f285d49c8dd9f86510143ba7b253)
S3 に入力データを置いたり、学習結果をS3 に吐き出したりできます。
![Screen Shot 2017-12-23 at 21.36.55.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27788%2F881c50b0-856f-0bcc-2aa9-b33eb7f5f37c.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=f867e466ebf9bf95b70a0cf82c3e2476)
あとはこんなかんじで、「deploy」ってやると、勝手にendpoint にしてくれるのは便利っぽかったです。
![Screen Shot 2017-12-23 at 22.18.10.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27788%2F3e91da9a-442a-e6c1-dfbc-aeadf8305678.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=f1f45b7243a011c919bf9aba70440e14)
ということで、AWS Sage Maker を使えば、環境の構築や運用のことはあまり考えることなく、大事なトレーニングに集中することができますね!
つまづいたところ
公式ページ の一番下に紹介されているブログ記事 に、「CIFAR-10」というデータセットを使っている例がありました。
これを試そうと思い、Notebook のsample-notebooks/sagemaker-python-sdk/mxnet_gluon_cifar10
を実行していったところ、
![Screen Shot 2017-12-23 at 22.36.14.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27788%2Fc96930ac-27de-e46c-5666-45bf6e0e1531.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=d2b1b9b79f986e49147ef2e12192d0bf)
こんなかんじでエラーになりました。
指定したインスタンスタイプはデフォルトで起動できる数が決まっているようですね。
インスタンスタイプをあらためて見てみると、ml.p* ファミリーがGPU を積んでるインスタンスなんですね。
そう、P ファミリーが、ね。。
Sage
AWS SageMaker のデフォルト設定とかけまして、
動きのノロいマッチョと解きます。
その心は。。。
P が足りません。
おあとがよろしいようで。