第3回 Amazon SageMaker 事例祭り + 体験ハンズオンに参加した。
その時のメモ。
SageMakerはセージメーカーと呼ばれていた
初めてAmazon Japanの新オフィスはとても綺麗だった
Amazon SageMakerとは何か アマゾン ウェブサービス ジャパン株式会社 ソリューションアーキテクト 鮫島 正樹 氏
今までの機械学習開発の欠点とSageMakerについて
・モデル作成にあたり、開発と学習を同じ1台のインスタンスで実施することが多い
・環境構築、運用が死ぬほど大変(複数ライブラリやGPUのドライバー、分散学習や学習結果の管理など)
・推論用のAPIなどを準備することも大変
⇒これらの問題点をすべて解決したのがSageMaker
SageMakerの特徴
・数分で開発環境が起動でき、学習、推論環境は柔軟にスケールする
・特徴的なのはSDKやコンテナがほぼオープンソースであること
・開発と学習環境は完全に分離されている。開発はJupyter Notebook(機械学習のコードを開発、実行可能なノートブックインスタンス)で行う
・実運用における必要な機械学習パイプラインもサポートしており、本番環境へのデプロイもスムーズに実現可能
・開発、学習、推論、いずれかをAWSで対応することが可能
開発、学習をAWSで実施し、モデルをオンプレミスの環境に適用するということもできる
またDockerが動く環境であればSageMakerの学習、推論ジョブを実行することが可能(例えば手元のMACでも)
SageMaker構成
・機械学習に必要なものは、学習データ、機械学習のコード、実行環境の3つ
・学習データはS3におく
・実行環境はECRにコンテナイメージをおく(TensorFlow,mxnetなど)
・これらの3つを結びつけるのがSageMaker
・学習が完了すると、モデルと学習コードはS3に保存されて、学習用インスタンスは自動的に削除される
・できたモデルをもとに、推論を実施する
機械学習パイプライン全体を支援する仕組みが用意されている
・現画像の容量が大きすぎる、欠落データが存在するといった場合は、自動的に前処理(Pandasを利用)することが可能
・S3からのファイル転送方法は2種類ある
・17種類のアルゴリズムを用意している(ビルトインアルゴリズム)
このアルゴリズムについては自分たちで書くよりも、こちらを利用することをオススメする
・分散学習については、プログラムにtrain_instance_count=2 などで実装することが可能
・SageMaker Ground Truth
Amazon Mechanical Turkは、Amazonのチームにてアノテーションされる
・CloudWatchにて精度が上がらない場合は停止するようなことも可能
・モデル変換(SageMaker Neo)とはモデルの高速化を実現する。モデルコンパイラと呼ばれるもの
ユースケース
・Dely:レシピ動画のリコメンデーションを機械学習で実装(90日で機械学習モデルを構築し、本番環境にデプロイ)
・SmartNews:ニュース記事の分類に利用し、関連性が高い記事を提供することに成功
・GE Healthcare:レントゲン写真から病気が疑われる部分を自動診断する
Amazon SageMaker 事例紹介「SageMaker Neoの可能性について」 株式会社ディー・エヌ・エー 加藤 倫弘 氏
DeNA × AI
・DeNA × AIにてAIに対しての取り組みを紹介している
・交通事故低減に向けたDeepLearning
ドライバーの顔・環境モニタリング・センサ解析・地図から危険運転かどうか判定する
エッジデバイスでのDeepLearningについて
・エッジデバイスでDeepLearningする場合、動かないことやGPU前提のため動いても遅いことが多い
エッジ側のフレームワークは非サポートOperatorがサーバ側より多く、モデル設計の上に制約が生じる
⇒それを解決したのがSageMaker Neo
任意のモデルを任意の環境(例えばRaspberry Pi)で動作できるようにコンパイルする
Amazon SageMaker 事例紹介「1人でも使えるSageMaker」 クックパッド株式会社 染谷悠一郎 氏
クックパッドと機械学習
・300万品以上のレシピデータ(分量や作り方など、多少構造があるデータ)を活用したいという想いが以前からあり
2016年7月より研究開発部が発足した。初期は3名、現在10-15名体制で機械学習に取り組んでいる
・料理きろくという機能で機械学習を利用している
スマホの写真のうち、料理写真を自動的に収集し、カレンダーと結びつける機能(27万人以上のユーザが利用している)
・現状の学習機能はGPUインスタンスのオンデマンド利用しているが、常にGPUを利用している作業をしているわけでなく
GPUインスタンスは高価であるため、学習前後のロスタイムが大きく、SageMakerに切り替えるメリットはあるとのこと
babysage – 近日公開予定
・独自モデルの学習は覚えることが多い(コンテナなど)ため、それを軽減するために作成したツール
・SageMaker(特にTraning job)を利用する際の補助となる
質疑応答
jupyterでの複数開発が難しい
⇒1人1リポジトリで集中管理がベストプラクティス
ハンズオン
Jupyter Notebook インスタンスを起動し、開発、学習、推論を実施した
ポイントはGitリポジトリで以下のURLを指定すること
https://github.com/aws-samples/amazon-sagemaker-examples-jp