【ML初心者が】Amazon SageMaker Studio Lab をやってみた

# はじめに

先日行われたAWS re:Invent 2021において機械学習初学者向けに機械学習をブラウザ上で無料で試せる Amazon SageMaker Studio Labなるサービスが発表されました。今回は機械学習やったことない歴=年齢の私がこちらを使って優勝していこうと思います。

[［速報］AWS、JupyterLab IDEベースの新サービス「SageMaker Studio Lab」無料提供を発表、ブラウザで機械学習を学び試せる。AWS re:Invent 2021](https://www.publickey1.jp/blog/21/awsjupyterlab_idesagemaker_studio_labaws_reinvent_2021.html)

# Amazon SageMaker Studio Lab でできること

ほぼはじめの記事をまとめただけになりますが

- 機械学習に必要な実行環境をブラウザ上で実行できる
- Git連携やターミナルも備わっている
- PyTorchやTensorFlowなど様々な機械学習ライブラリを試せる
- セッションあたり12時間分のCPUもしくは4時間分のGPUにあたる計算リソースと16GBメモリ、プロジェクトあたり15GB分のストレージが付属
- しかもクレジットカード登録が不要

これはもうやるしかない！

# まずは専用アカウントを作る

まず、***Amazon SageMaker Studio LabはAWSアカウントでは利用できません。***AWSアカウントとは別に[こちら](https://studiolab.sagemaker.aws)から専用のアカウントをまず作る必要があります。2021年12月7日現在ではウェイトリストへの登録ができるだけで、すぐにアカウントが発行されるわけではありませんでしたので、どうしてもすぐ試したいと思っている人は注意しましょう。私の場合は数日でアカウントが発行されました。

# アカウントができたら

こんな画面が出てくるのでランタイムを起動して、とりあえず初めはLearn and experimentのDive into Deep Learningに手をつけてみることにしました。(注意。Safari使ってる人はChromeじゃないと見た目が正しくロードされませんでした。)

![スクリーンショット 2021-12-12 11.23.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893208/b350745a-5cb0-54ae-5133-5bd617d46990.png)

でもって「Copy to project」から自分のプロジェクトにこのD2LとやらをCopyします。
![スクリーンショット 2021-12-12 12.22.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893208/d9e68509-868b-f341-026f-fa9602c09349.png)

自分のプロジェクトを開いてあげるとこんな感じでGetting Started.ipynbがお出迎えしてくれます。チュートリアルをやってみたかった今回の私はこのファイルの中で紹介されていた`SageMaker Studio Lab example notebooks`なるrepoをCloneして1つ試してみることにしました。
![スクリーンショット 2021-12-12 12.25.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893208/4c8e0c25-9e37-6323-ffc9-67daaa66bec9.png)

Cloneが成功すると以下のように`studio-lab-examples`なるディレクトリが出てきます。今回はこの配下にある`computer-vision/kmnist`を試してみようと思います。どうやらこちらはPyTorchを使った画像認識に関するチュートリアルのようです。
![スクリーンショット 2021-12-12 12.28.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893208/e42767f9-fc8d-70d7-61d0-70e654d172c6.png)

# このチュートリアルの背景

やや本題からは逸れますが、今回やってみるPyTorchを用いた画像認識(正確には画像の分類と書かれていましたが)の背景がREADME的なファイルで説明されており初心者の私にはなかなか面白い内容だったのでDeepLによる和訳を載せておきます。

```
画像分類（または画像認識）とは、コンピュータビジョンの一分野であり、アルゴリズムが画像を見て、事前に学習させたタグやカテゴリーのコレクションからタグを割り当てることです。

視覚は、私たちが世界を認識する際の80〜85％を占めており、私たち人間は、目にしたあらゆるデータに対して、分類を日常的に行っています。

したがって、ニューラルネットワークを使って分類タスクをエミュレートすることは、研究者が考えたコンピュータビジョンの最初の用途の1つです。
```
思わず「へぇ〜」と口に出してしまいました。画像認識という言葉を「画像に対するタグやカテゴリの割り当て」という形で簡単に定義してくれていますし、なぜニューラルネットワークと画像認識との相性が良いのかも説明されていてこれだけでも十分勉強になります。

# チュートリアルの流れ

ライブラリのインストールなどの細かい必要な作業は省いた全体の流れはこんな感じです。

## 必要なデータセットを読み込む。

ここでは[KMINST](https://atmarkit.itmedia.co.jp/ait/articles/2001/22/news012.html)という様々な手書きの文字を含んだデータセットを読み込んで学習させるようです。その中でも今回は以下のような様々なひらがなを含んだデータセットを採用しています。見ればわかりますが横の列は全て同じひらがなで一番左以外はかなりきつめに字体が崩されているものもあります。

![スクリーンショット 2021-12-16 10.46.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893208/72f86063-4b63-ad0b-4d34-fc0d77e19a5d.png)

## 読み込んだデータセットを用いてデータローダを作成する。

マシンに学習させたいデータセットを与えるときにはデータセットごとに作成したデータローダを使うようですね。このデータローダ作成時におなじみPyTorchが使われていました。データセットを用意->データセットを使ってデータローダを作成->データローダを使って学習という流れですね。

## ひらがなを1文字表示する

先程作ったデータローダを用いて学習させて、ひらがなを1文字表示させるとこんな感じになりました。普段メディアが取り上げるような「レベルの高い」MLではありませんが、機械が文字を認識していること自体凄いことです。
![スクリーンショット 2021-12-16 11.12.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893208/7056bf50-ee81-ee2c-8bef-3467474a9fef.png)

## NNモデルを使ってみる

NNモデルというのはNeural Networkモデルの略で人間の脳を模したモデルのようです。PyTorchの機能を用いてNNモデルの構築や最適化が行えるとチュートリアルにはありました。...がNNモデルに関しては「PyTorchを用いてモデルをトレーニング」して、「モデルをテスト」し「トレーニングやテストの際に発生した無駄のメトリクスをグラフに出力する」という説明しかされておらず詳しい中身に関しては分かりませんでした。

ここでは最後に出力できた***「トレーニングやテストの際に発生した無駄のメトリクスをグラフに出力する」***の部分の結果をお見せします。個人的には青い折れ線グラフ(トレーニングの無駄)がV字になっているのが興味深いです。沢山トレーニングさせれば良いというものでも無いのですね。この辺りはもし詳しい方がこの記事をご覧になっていたらご意見をくださると嬉しいです。

![スクリーンショット 2021-12-16 11.27.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893208/c3218e0f-4c59-33f0-9281-403398fe4777.png)


# おわりに

MLはどんどん身近に、そして(当然ものによりますが)昔より入口は簡単になっています。そしてMLエンジニアになるわけではなくとも今回MLを分かった気になれたことで自分の中でMLへのハードルが下がったと感じています。各種クラウドが提供しているMLのチュートリアルや簡単なサービスを使ってみるのも面白いでしょう。今回使ってみたAmazon SageMaker Studio Labは画像認識以外にも様々な分野のMLのチュートリアルを無料で揃えています。気になった方はぜひ試してみてくださいね。もしこの記事が良いなと思った方はLGTMをお願いします！

# 参考

[Amazon Sagemaker Studio Lab で無料で機械学習を学んでみよう！ #reinvent](https://dev.classmethod.jp/articles/sagemaker-studio-lab-free/)