SageMaker概要

SageMakerのアップデートに関して

re:invent 2019でSageMaker関連のアップデートが激しかったので、それについて。

ぶっちゃけまだ分からないことが多いので、概要レベルです。

そもそもの話

re:invent 2019 SageMaker周辺のアップデート

re:invent 2019で以下のアップデートが発表された。

cf. https://aws-seminar.smktg.jp/public/seminar/view/892

今まで、SageMakerをはじめとしたクラウドサービスの機械学習基盤(GCPのAI Platform, Azure Machine Learning)は
notebook, モデル管理, デプロイの機能は個別に提供されているものの
よく見てみると微妙に統合されていなくて(各機能の連携が弱く一元的に管理できない、など)イマイチ使いづらかった印象。

SageMakerはre:invent 2019の発表で頭ひとつ抜きん出た感じがする。
特に「各機能の連携」という意味で、SageMaker Studioが非常に使いやすくしてくれている。

なんで機械学習基盤が必要か

https://aws.amazon.com/jp/blogs/news/introducing-amazon-sagemaker-operators-for-kubernetes/
より抜粋。

機械学習は、ただモデルを構築すればよいわけではありません。
ML ワークフローには、データのソーシングと準備、機械学習モデルの構築、
構築したモデルのトレーニングと評価、その本番環境へのデプロイ、
本稼働後の継続的なモニタリングというプロセスが含まれます。
モジュラー式のフルマネージドサービスである Amazon SageMaker を利用すると、
データサイエンティストおよび開発者は、より迅速に
モデルの構築、トレーニング、デプロイ、メンテナンスといったタスクを完了することができます。

SageMakerについて

無料枠

AWS 無料利用枠の一環として、Amazon SageMaker の使用を無料で開始できます。
Amazon SageMaker を使用したことがない場合は、最初の 2 か月間、
モデル構築のためのノートブック利用に t2.medium または t3.medium インスタンスを 1 か月あたり 250 時間、
トレーニングに m4.xlarge または m5.xlarge インスタンスを 50 時間、
リアルタイム推論とバッチ変換用の機械学習モデルのデプロイに m4.xlarge
または m5.xlarge インスタンスを追加で 125 時間、無料でご利用いただけます。
無料利用枠は、初めて SageMaker リソースを作成した最初の月から始まります。

らしい。

SageMaker Studio

中身としては単にJupyter Labのカスタマイズ版っぽい。
ただ、SageMakerを利用するうえで必要なモジュールが同じUIに統合されていて必要十分な印象。

既存のnotebooksとの違い

基本的には今後はStudio版のnotebooksを使っていけば良いはず。
以下のメリットがある。

  • Jupyter notebook用のインスタンス起動が速い
    (確かに既存のnotebookでは起動・停止が遅い。起動に数分待たされたりする)
  • notebookのインスタンス管理が不要。使っているときだけ費用がかかる(多分)
  • インスタンスのスケールアップ, スケールダウンも自動でやってくれる。 (どういうトリガでされるかは不明)
    最近ドキュメントから記載が削除されていた…手動でインスタンスタイプを変更する必要がありそう。
  • ユーザ管理が楽(AWSコンソール上でユーザを追加できたりする)
  • 協同可能とうたっており、jupyter notebookの共有などをStudio内で簡単に可能。
    (と書いてあるが、機能が見当たらない…単にGitでの共有を意味している…?)

SageMaker最初に使うとき

https://qiita.com/SatoshiGachiFujimoto/items/eecb66f5d57cb50324c7
を参考にしてセットアップ

SageMaker Studioを起動

  • 「ユーザーの割り当て」でユーザを追加すると、そのユーザでSageMaker Studioへのリンクが有効になる。
  • Studioの起動時、特にインスタンスタイプは指定しなかった。
    • 起動後、Jupyter Labが使えるようになる。
      • 起動直後は、以下な感じ。
    bash-4.2$ free
                 total       used       free     shared    buffers     cached
    Mem:       3978236    3852820     125416        524       2176    2904620
    -/+ buffers/cache:     946024    3032212
    Swap:            0          0          0
    bash-4.2$ nproc
    2
    
    • SageMaker notebookは、起動時にインスタンスタイプを指定する必要がある。

SageMaker Autopilot

AutopilotのGithubサンプルをやってみた。

  • 前処理, 特徴量エンジニアリング, 複数のモデル生成, などをすべて自動的に行なってくれる。
  • 上記のサンプルでは大体$6くらいかかった。
    Autopilotによって大量のProcessing, Trainingジョブが生成されるので、それくらいお金がかかっている。
  • サンプルコードの create_auto_ml_job ってのでAutopilotを回しているっぽい?

疑問点

まだよく分からないことが多い。
ドキュメントを検索するが、英語版でもなかなか詳細が見当たらない。

AWSの知人にもちょっと聞きつつ、次回以降にまた深堀りしていきたい。

  • jupyter lab上のメニューでshutdownをすると接続できなくなってしまった…
  • SageMaker Studio notebooksの費用がよくわからない。
    • ブラウザで接続されている間だけ料金がかかっているように見えるが…?
    • 自動でスケールする、とあるがどういうトリガでスケールアップ、スケールダウンするのかがよく分からない。
      最新版のドキュメントを見るに、どうやら結局手動でインスタンスタイプを変更しないとダメっぽい。。
    • Cost Exploreを見てもnotebookの利用料金が計上されていなかった。
      トライアルだからなのか、とても微小だったからなのか…
  • 急にStudioが起動しなくなったり、まだプレビュー版ということもあるのか色々ありそう?
  • Shareの機能が見当たらない。
  • ExperimentsってStudio上ではビルトインのアルゴリズムしか選択できない?
    自前のモデルを走行したいときはSDKからやる必要あり?
    Create Experiment
  • Autopilotのコードダウンロードもどこでやるのか分からない
mukiudo
mukiudo
Software Engineer