Amazon SageMaker Studio の導入と Autopilot について＃１

# Amazon SageMaker Studio とは？
AWS re:Invent 2019で発表された機械学習のための統合開発環境です。詳しくはこちらでも紹介しています。

- [AWS re:Invent 2019で発表【Amazon SageMaker Studio】](https://qiita.com/JJ33/items/6526f574b369aee31df4)
- [Amazon SageMaker Studio: 機械学習のための初の統合開発環境](https://aws.amazon.com/jp/blogs/news/amazon-sagemaker-studio-the-first-fully-integrated-development-environment-for-machine-learning/)

# 早速やってみた

AWSマネジメントコーンソールからSageMakerを開き、SageMaker Studio を起動するをクリックします。SageMaker Studioは米国東部（オハイオ）us-east-2から利用できます。
![studio01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/ca3a0913-8813-8e3c-e27b-5460172ebbf8.png)

SSOがサポートされていない場合は「IAM で開始する」をクリックし、
![studio02.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/fb78aef5-b15e-c447-4e5f-2f55b97a8e27.png)

IAMロールを設定、
![studio05.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/efbc7df0-d61a-3cee-8fda-a4af97e81bbd.png)

「送信」をクリックします。
![studio06.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/d587db75-80e8-a4c3-f22a-0472c6f3552c.png)

Amazon SageMaker Studio domain ID が作成されるまで待ちます。
![studio07.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/e74fff2b-52d2-81f1-cdf9-28a5d1659ea6.png)

「InService」になりました。
![studio08.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/7338474d-0c32-1115-8711-3aa5affd856a.png)

ユーザープロファイルを作成します。
![studio09.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/ed566ccc-35ca-71de-4652-04d96b969504.png)

作成したユーザープロファイルを選び、「Amazon SageMaker Studioを開く」をクリックすることで、新しいタブで起動します。
![studio11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/b0f2079b-dac8-5b77-b64d-9dc46aabd62c.png)

「Create a Notebook」でNotebookを新規作成しましょう。
![studio13.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/dc97bd7a-59aa-aa17-254f-40cbd99dc603.png)

Python 3（Data Science）を選んでください！sagemakerやboto3がインポートできるのはこれだけのようです。
![studio15 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/80fa838f-700f-1504-8fa8-7252550a859e.png)

こんな感じで、Notebookを始める準備ができました。
![studio17.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/bc23548e-6300-23ae-112c-ecbc63242ce6.png)

左側のメニューは下記のようになっています。

- ファイルブラウザ
- 起動中のターミナルとカーネル一覧
- Git
- コマンド一覧
- SageMakerの実験一覧
- Notebookのツール
- エンドポイント
- タブ一覧

# SageMaker AutoPilot 
[Amazon SageMaker Studio - Amazon SageMaker AutoPilot (part 1)](https://www.youtube.com/watch?v=qMEtqJPhqpA)を参考に試してみました。

1．データセットのダウンロード

~~~python
%%sh
wget -N https://archive.ics.uci.edu/ml/machine-learning-databases/00222/bank-additional.zip
unzip -o bank-additional.zip
~~~

~~~
Archive:  bank-additional.zip
   creating: bank-additional/
  inflating: bank-additional/.DS_Store  
   creating: __MACOSX/
   creating: __MACOSX/bank-additional/
  inflating: __MACOSX/bank-additional/._.DS_Store  
  inflating: bank-additional/.Rhistory  
  inflating: bank-additional/bank-additional-full.csv  
  inflating: bank-additional/bank-additional-names.txt  
  inflating: bank-additional/bank-additional.csv  
  inflating: __MACOSX/._bank-additional  
--2019-12-16 05:53:18--  https://archive.ics.uci.edu/ml/machine-learning-databases/00222/bank-additional.zip
Resolving archive.ics.uci.edu (archive.ics.uci.edu)... 128.195.10.252
Connecting to archive.ics.uci.edu (archive.ics.uci.edu)|128.195.10.252|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 444572 (434K) [application/x-httpd-php]
Saving to: ‘bank-additional.zip’

     0K .......... .......... .......... .......... .......... 11%  419K 1s
    50K .......... .......... .......... .......... .......... 23%  821K 1s
   100K .......... .......... .......... .......... .......... 34% 44.8M 0s
   150K .......... .......... .......... .......... .......... 46%  838K 0s
   200K .......... .......... .......... .......... .......... 57% 50.7M 0s
   250K .......... .......... .......... .......... .......... 69% 71.1M 0s
   300K .......... .......... .......... .......... .......... 80% 70.8M 0s
   350K .......... .......... .......... .......... .......... 92% 81.1M 0s
   400K .......... .......... .......... ....                 100%  580K=0.3s

2019-12-16 05:53:19 (1.40 MB/s) - ‘bank-additional.zip’ saved [444572/444572]
~~~

2．可視化

~~~python
import pandas as pd

data = pd.read_csv('./bank-additional/bank-additional-full.csv', sep=';')
pd.set_option('display.max_columns', 500)     # Make sure we can see all of the columns
pd.set_option('display.max_rows', 50)         # Keep the output on one page
data[:10] # Show the first 10 lines
~~~

![studio22.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/b192fd95-1205-a46b-04db-ae08bcef0bf4.png)


3．データセットを学習とテストに分けて保存します。

~~~python
import numpy as np

train_data, test_data, _ = np.split(data.sample(frac=1, random_state=123), 
                                                  [int(0.95 * len(data)), int(len(data))])  

# Save to CSV files
train_data.to_csv('automl-train.csv', index=False, header=True, sep=',') # Need to keep column names
test_data.to_csv('automl-test.csv', index=False, header=True, sep=',')
~~~

~~~
%%sh

ls -l *.csv
~~~

~~~
-rw-r--r-- 1 root root  257339 Dec 16 05:53 automl-test.csv
-rw-r--r-- 1 root root 4889516 Dec 16 05:53 automl-train.csv
~~~


4．データセットをS3へアップロードします。

~~~python
import sagemaker

prefix = 'sagemaker/DEMO-automl-dm/input'
sess   = sagemaker.Session()

uri = sess.upload_data(path="automl-train.csv", key_prefix=prefix)
print(uri)
~~~

~~~
s3://sagemaker-us-east-2-xxxxxxxxxxxx/sagemaker/DEMO-automl-dm/input/automl-train.csv
~~~

5．アップロードしたデータセットのS3のパスをコピーしておき、Experiment Listタブへ移動します。「Create Experiment」をクリックし、各項目を入力します。

JOB SETTINGS

||||
|:--|:--|:--|
|Experiment Name|marketing-automl-demo|任意|
|S3 location of input data|s3://sagemaker-us-east-2-xxxxxxxxxxxx/sagemaker/DEMO-automl-dm/input/automl-train.csv|アップロードしたデータセットのS3パス|
|Target attribute name|y|推論対象|
|S3 location for output data|s3://sagemaker-us-east-2-xxxxxxxxxxxx/sagemaker/DEMO-automl-dm/output/|出力先のS3パス|
|Select the machine learning problem type|Auto|Binary ClassificationだがAutoに任せてみる|
|Do you want to run a complete experiment?|Yes||

「Create Experiment」をクリックし作成します。
![studio23.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/688ca9a3-7edd-0fc8-391c-26c8f29dfb94.png)

1回目はエラーで作れませんでした。JSONエラーも出るようになりました。。。
![studio24.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/c02c7d6b-4883-e249-bdfa-718d76bb1784.png)

一回閉じて再起動してやったら、問題なく動いているようです。
![studio25.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/15be2117-d387-1e90-6526-3e3611c4d21b.png)

# まとめ
Amazon SageMaker Studio を導入し、Autopilotを少し動かすところまでやりました。
次回は、Amazon SageMaker Studio - Amazon SageMaker AutoPilot （part 2～4）をやっていきたいと思います！