見出し画像

第3回 Amazon SageMaker 事例祭り|体験ハンズオン セミナーレポート

セミナーの参加レポートです。

表向きの目的
AI関連の情報をアップデート。(業務用の目的は、秘密)
気付き
・Deeplearningするときの開発環境の準備は、SageMakerによりだいぶ手間が省けるようになっている
・Deeplearningのモデルを作るのは、現状も大変でデータサイエンティストを連れてこないと作れない
・ラベル付けもツールがあるが基本人力
ToDo
他の普段触らないサービスのハンズオンもやってみる

1.Amazon SageMakerとは何か

機械学習プロジェクトの課題

典型的な機械学習プロジェクトの進め方
開発学習)データサイエンティストが開発と学習を実施⇒(推論)エンジニアがプロダクション環境(APIサーバやエッジデバイス)を構築、デプロイ

開発と学習における課題
・環境構築が大変
・ジョブのパラレル化と学習結果の管理
推論における課題
・スケールする本番環境の構築

SageMakerの紹介

SageMakerとは
・機械学習プロジェクトの上述課題を解決するためのマネージドサービス
数分で環境の準備ができ、開発と学習を始められる
本番環境もすぐに作れる。オートスケーリング、A/Bテストにも対応

<開発>
マネージドなJupyter Notebookインスタンスを提供
・主要ライブラリはNotebookインスタンスにインストール済み
・Git(Codecommit or Github)とも連携が可能

<学習>
・任意の強さのインスタンスを起動して推論
・学習が終わったら自動的にインスタンスを破棄してくれる

・学習後、モデルとコードはS3に保管される

<推論>
・コマンド一つで、推論用APIエンドポイントを作成
・バッチ推論も可能(本番環境の一時的な利用)
・インスタンスは、パワーが足りないときだけ、GPUのアタッチが可能(Elastic Inference

SageMakerの使い方

SageMakerで機械学習を行うために必要なもの
・学習データ
・実行環境(コンテナ) 
・機械学習のコード

1.学習データの準備
学習データをS3に置く

2.実行環境
実行環境をコンテナイメージとしてAmazon ECRに置く
著名なライブラリのコンテナイメージは、AWSで準備済み

3.機械学習のコード
S3に合わせたコードを作成

SageMakerの特徴

<前処理>
ノートブックインスタンスでのデータの前処理が可能
・16TBまでディスクをアタッチできる
・前処理にEMRなどの別のAWSサービスも利用できる

<学習>
・S3からのファイル転送
 ーFileモード・・・全ファイルをダウンロードして学習
 ーPIPEモード・・・ダウンロードしながら非同期で学習

・ビルトインアルゴリズム
 Image Classification
など有名なアルゴリズムは、実装済みコンテナを提供
 Marketplaceでもビルトインアルゴリズムを提供

・コンテナイメージの提供
 実装済みのコンテナのDockerファイルは、Githubで公開されている
 コンテナが動く環境であれば手元のPCでも実装済みコンテナを実行可能(ローカルモード)

・分散学習
 インフラ:インスタンス数を指定するだけ
 コード:分散学習のアルゴを指定
(TensorFlowではHorovod、など)

<推論>
・リアルタイム推論
 deploy()を呼ぶだけで推論エンドポイントの作成が可能
 エンドポイントを起動している間、料金がかかる

・バッチ推論
 推論対象のデータは、S3においておく

機械学習パイプライン全体を支援するサービス

SageMaker Ground Truth
・データにラベルを付与するためのアノテーションを支援
・ラベルを付与するワーカーは、Mechanical Turk、外部ベンダ、プライベートなチーム(自社の人間)から選べる
・アノテーションの基本プロセス
 1.データをS3にアップロード
 2.ラベリング用Webページテンプレートを作成
 3.ワーカの人がラベル付(S3にアップロード)

SageMaker Neo
・モデルを高速なモデルへ変換(コンパイル)

パイラインの管理
・AWS StepFunction
・Apache Airflow

 ワークフローを定義するOSS

2.SageMaker Neoの可能性について

https://dena.ai/news/201903-amazon-sagemaker-fes-3-post/

エッジでのDeeplearning

プロジェクトの紹介
DeNAでAIを使って交通事故を減らそうとという試みを行っている

エッジで推論をするときの課題
・メジャーなDeeplearningのフレームワークは、エッジで動かくすと重い
・そのため、プロダクション環境用にCやC++で書き直したり、簡単な軽いランタイム用を利用している

Amazon SageMaker Neo

SageMaker Neoとは
・学習したモデルをエッジで高速に動く用にコンパイルしてくれる
 入力モデル:ONNXやPytourch、TensorFlowなど
 出力モデル:Rasperry Pi、Jetson TX1/2、Deeplens、AWS MLインスタンスなど
・内部ではOSSのTVMを利用
・コンパイルは無料で実行可能

SageMaker Neo使い方
・モデルをtar.gzにしてS3にアップロード
・SageMaker Python SDKによるコンパイル
・DLR(Deep Learning Runtime)
のPython APIで実行

今後の期待
・Neoは、特定のモデルにしか対応していない
・TVMの機能への追随。TVMは、すごい速度で開発が進んでいる

3.1人でも使えるSageMaker

クックパッドと機械学習

クックパッドのデータ
・300万以上のレシピデータ
 タイトル、手順、材料、分量、各種写真
・つくれぽ
・検索、その他行動ログ

機械学習を使っているサービス
・料理記録機能

 スマホで撮った写真の中から、料理の写真をカレンダーにピックアップしてくれる機能
・検索エンジンの精度向上
・お問い合わせの分類などにもMLを利用

クックパッドとSageMaker

機械学習の環境
・現在、SlackでオーダーするとGPUインスタンスが自動で起動して、SSHログイン情報をSlackで返してくれる仕組みを提供
・学習前後もインスタンスが起動しており、非効率なためSageMaker Trainigng Job環境の利用を検討中

Training Job
・機械学習向けに拡張されたコンテナ実行環境
・P3インスタンスが使える、フレームワーク導入済みコンテナが使える
・AWS Batchのような環境

babysage
独自モデルのSageMaker用コンテナを簡単に作れるようなツール(作成中)
コンテナの動作に必要なECRやIAMロールやS3をよしなに作ってくれる

4.ハンズオン

(参考)
https://github.com/aws-samples/amazon-sagemaker-examples-jp

この記事が気に入ったらサポートをしてみませんか?