2019.06.28
目黒にあるAWS Loft Tokyoで月1〜隔月で開催されているラフなイベント「Code Happy Hour」に参加してきた。
参加者は20名程度で、コミュニケーションがしっかり取れるくらいの人数でちょうどよかった。
今回はStartup SAで機械学習に強い針原さんがSageMakerのハンズオンを行なってくださるとのことだったので、それ目当てで参加。
Cognito User Pool
Cognitoに住所・趣味・乗っている車などなど登録できるんじゃないか?という質問をよく受ける
Cognitoを叩くときにSDKを使うべきか?
Amazon RDSに溜めているデータをAmazon S3に持っていきたいがどうしたらよいか?
ELBのログをPV集計等に使いたい。どのような基盤でログ分析をしたらよいか?
1分ごと定期実行オブを動かしたいがどうしたらよいか?
aws-samplesリポジトリ
Lambdaで15分以上のジョブを実行したい場合はどうする?
Amazon SageMakerでJupyter Notebookのインスタンスを立ち上げて、aws-samplesリポジトリにあるchainer_mnistを試した。
手書き入力した数字を判別できるAPIを作成できた。
P系のインスタンスにGPUが載っている
モデルのトレーニングにP3インスタンスを、推論にC5インスタンスを使うとかがよくある
学習
推論
機械学習には教師あり学習と教師なし学習がある
機械学習の最初に取り組みやすいのがMNISTを使った数字の認識
Jupyter Notebook
開発と学習の環境を分ける
SageMakerのインスタンスタイプは ml.*
ml.p3.2xlargeを使えば基本十分
SageMakerには専用のSDKがある
普通のAWS SDKはデータサイエンティストが慣れ親しんでいないインターフェースだが、SageMaker SDKはデータサイエンティストが慣れ親しんでいるようなインターフェースで作られている
インスタンスを立ち上げる際にIAMロールも指定する
拡張子ipynb
シーケンシャルなニューラルネット
ベーシックなネットワーク
trainとtest
モデルのアップデートの手法もいろいろある
epocs
net関数
loss関数
L.backward
過学習
1 epochの計算も一瞬では終わらない
Chainer
Chainerのデータセットは画像とラベルのタプルになってる
扱いやすくするためにばらす
変数train_imagesに画像の行列が配列で入っている
変数train_labelsに正解の数字が配列で入っている
Jupyter Notebookでは最後の行の評価結果は自動で出力される
ハイパーパラメーター
Amazon Rekognitionは複数のモデルを組み合わせて高い精度を出しているので、Amazon SageMaker Neoを使ったエッジデバイスでの機械学習では替えがきかない(精度が高くならない)
GPUインスタンスはどこに立ち上がる?マネコンからみれる?
HTTPのAPIを立てるときに、Jupyter Notebookを開いて tuner.deploy()
を叩くのは不安定に感じる
SageMaker単体でHTTPエンドポイントを立ち上げられるのに、前段にAPI GatewayとLambdaを配置する必要はある?
「モデルを作る」というが、モデルの実態はどのような形式なのか?
モデルのトレーニング中にJupyter Notebookインスタンスを停止・削除したらどうなる?
安全な後片付けの方法を知りたい
train()
関数の実行が時間がかかるからGPUにやらせようってことなのか?
train()
関数の中のループの回数が多いのはもちろん、モデルの学習の際に行列の演算を大量に行う。GPUは行列の演算に強いため、高速に計算できる機械学習は「いつかやりたい」と思っていてなかなか手を出せていなかったので、このようなハンズオンでサクッと試すことができてよかった。基本的な知識が全くなかったのでとりあえずAWS Black BeltセミナーのAmazon SageMaker Basic SessionとAmazon SageMaker Advanced Sessionを見ておいたが、それでもついていくのがやっとだった。
AWSが提供している機械学習系サービスでは、Amazon RekognitionやAmazon Textractのようなマネージド型のサービスもあるので、そちらも触りつつ機械学習の可能性を探っていきたい。