Amazon SageMaker  リンク集（使い方で悩んだらここを見る！）

# Amazon SageMaker の使い方で悩んだら
猫好きのみなさま、そうでないみなさま、こんにちは。
[Amazon SageMaker](https://aws.amazon.com/jp/sagemaker/) 使ってますよね（使っていない場合もあります）。

サクッと機械学習の開発環境を構築できたり、GPU マシンを使って分散学習できたり（Spot Instance も選択可能！）と、機械学習に関するあれこれに便利な Amazon SageMaker ですが、「SageMaker でこういうことできるの？」「これをやりたいとき、どうすれば良いの？」という状況になることもあると思います。

エンジニアの方は自己解決スキルが高い方が多いので、たいていググって正解にたどり着かれると思いますが、まれにググっても正解が見つからない、見つかるまでに時間がかかることもあると思います。そんなとき、この記事を思い出していただけるとお役に立つかもしれません。



## 具体的な使い方を知りたいとき：サンプルノートブック
AWS が SageMaker の [サンプルノートブックを GitHub で公開](https://github.com/awslabs/amazon-sagemaker-examples) しているのをご存知でしょうか？

SageMaker の [開発者ガイド](https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/whatis.html) を読んで使い方を知るのもアリなのですが、こちらのサンプルノートブックから、ご自分のやりたいことに一番近そうなノートブックをベースに、それを改造していくと、やりたいことに最短距離で到達できることがあります。

2019年の AWS re:Invent で Amazon SageMaker [Studio](https://aws.amazon.com/jp/blogs/news/amazon-sagemaker-studio-the-first-fully-integrated-development-environment-for-machine-learning/), [Autopilot](https://aws.amazon.com/jp/blogs/news/amazon-sagemaker-autopilot-fully-managed-automatic-machine-learning/), [Debugger](https://aws.amazon.com/jp/blogs/news/amazon-sagemaker-debugger-debug-your-machine-learning-models/), [Experiments](https://aws.amazon.com/jp/blogs/news/amazon-sagemaker-experiments-organize-track-and-compare-your-machine-learning-trainings/), [Model Monitor](https://aws.amazon.com/jp/blogs/news/amazon-sagemaker-model-monitor-fully-managed-automatic-monitoring-for-your-machine-learning-models/) などの新機能が発表されましたが、これらの機能を使うためのサンプルノートブックも用意されています。フォルダやノートブック名に機能名が入っているので、[GitHub リポジトリ](https://github.com/awslabs/amazon-sagemaker-examples) で機能名で検索すると所望のノートブックが見つかると思います。
<img width="1014" alt="スクリーンショット 2020-01-03 16.24.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315319/b543ee9d-184b-2b69-f7f9-55cc9f008d66.png">

## とりあえず触ってみたいとき：ワークショップコンテンツ

|#|コンテンツ|概要|
|:--|:--|:--|
|1|[SageMaker Immersion Day](https://sagemaker-immersionday.workshop.aws/)|英語のコンテンツですが SageMaker の代表的な機能を一通り体験できます。<br>1. SageMaker DataWrangler を使った前処理<br>2. XGBoost の学習、チューニング、デプロイ<br>3. 独自のモデルの学習<br>4. SageMaker Autopilot, SageMaker Debugger, SageMaker Model Monitor<br>5. バイアスと説明性 (SageMaker Clarify)<br>6. SageMaker Pipelines|
|2|[Inferentia Workshop](https://introduction-to-inferentia.workshop.aws/)|英語のコンテンツですが、推論用チップ Inferentia を搭載したインスタンスで推論を実行するまでを体験できます。|

## どんな機能があるのかを俯瞰的に知りたいとき：開発者ガイド
サンプルノートブックを動かしてみて、他に便利な使い方はないかな？と思った場合は、こちらの [開発者ガイド](https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/whatis.html) を見ていただくと、サンプルノートブックには書かれていなかった他の方法や便利機能などを知ることができます。最新情報を知りたい場合は、<font color="OrangeRed">*言語設定を英語*</font> にすると、日本語バージョンでは書かれていない情報が出てくることがあります。言語設定は、開発者ガイドの上のメニューから変更することができます。情報を検索したいときは英語で検索するのがオススメです。検索エンジンに [Amazon Kendra](https://aws.amazon.com/jp/kendra/) が使われており、英語による自然言語での検索が可能です。
<img width="1209" alt="スクリーンショット 2020-01-03 15.49.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315319/f668e270-a405-a1b5-59c8-63306f352dc4.png">

## API の使い方の詳細を知りたいとき：API リファレンス
サンプルノートブックで API のだいたいの使い方はわかったけど、他にはどんなオプションがあるの？などの詳細を知りたい場合は、API リファレンスを参照します。
Boto3 (AWS SDK for Python) の API について知りたい場合は [こちら](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model_package) を、Amazon SageMaker Python SDK の API について知りたい場合は [こちら](https://sagemaker.readthedocs.io/en/stable/) を参照します。自分がどちらを使っているのかわからない！という方、ざっくり言うと、学習ジョブを立ち上げる際に create_training_job 関数を呼んでいれば AWS SDK for Python で、fit 関数を呼んでいれば Amazon SageMaker Python SDK を使っています。
<img width="1061" alt="スクリーンショット 2020-01-03 16.23.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315319/1f2b7cdf-2c49-9274-3a96-e06ef656dbe2.png">

その他の言語で SageMaker を使う場合は、以下を参照します。

* [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-model-package.html)
* [AWS SDK for .NET](https://docs.aws.amazon.com/goto/DotNetSDKV3/sagemaker-2017-07-24/CreateModelPackage)
* [AWS SDK for C++](https://docs.aws.amazon.com/goto/SdkForCpp/sagemaker-2017-07-24/CreateModelPackage)
* [AWS SDK for Go](https://docs.aws.amazon.com/goto/SdkForGoV1/sagemaker-2017-07-24/CreateModelPackage)
* [AWS SDK for Java](https://docs.aws.amazon.com/goto/SdkForJava/sagemaker-2017-07-24/CreateModelPackage)
* [AWS SDK for JavaScript](https://docs.aws.amazon.com/goto/AWSJavaScriptSDK/sagemaker-2017-07-24/CreateModelPackage)
* [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/sagemaker-2017-07-24/CreateModelPackage)
* [AWS SDK for Ruby V2](https://docs.aws.amazon.com/goto/SdkForRubyV2/sagemaker-2017-07-24/CreateModelPackage)

## 謎のエラーがでたとき：Amazon SageMaker Discussion Forums
SageMaker をある程度使っていて、初めて遭遇したエラーが出たとき、[Amazon SageMaker Discussion Forums](https://forums.aws.amazon.com/forum.jspa?forumID=285) でエラーメッセージで検索したり、機能や API 名で検索すると、ヒントが見つかるかもしれません。また、Forum で質問をすることで、解決策が見つかるかもしれません。
<img width="987" alt="スクリーンショット 2020-01-03 16.22.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315319/686228d4-52ed-8527-4727-44a2e3dd5ae9.png">

## 新しい機能を知りたいとき：AWS ブログ
新しい機能がリリースされると、[AWS ブログ（日本語）](https://aws.amazon.com/jp/blogs/news/category/artificial-intelligence/sagemaker/) や [AWS ブログ（英語）](https://aws.amazon.com/jp/blogs/aws/category/artificial-intelligence/sagemaker/) で紹介されます。日本語の方にしかない記事や、英語の方にしかない記事もありますが、新しい機能の紹介だけでなく、SageMaker の便利な使い方の紹介の記事もあります。<img width="1178" alt="スクリーンショット 2020-01-03 19.33.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315319/15f92d04-447e-ea74-f95b-7e598571a57f.png">

## その他便利情報：ノートブックインスタンスの Lifecycle 設定のサンプル
様々な Lifecycle 設定のサンプルがこちらで公開されています。任意の時間使用していないノートブックインスタンスを自動で停止させるなどのサンプルがあります。
https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples

# まとめ
情報が散らばっていて、欲しい情報になかなかたどり着けないことがあるかもしれません。
そういうときに、この記事がお役に立てば幸いです。