本連載では、AWS社が公開するチュートリアル「機械学習モデルを自動的に作成する」に沿って、以下の流れで解説を進めています。
工程 | ステップ | 実施内容 | 連載回 |
---|---|---|---|
準備 | 1 | AWSアカウントを今すぐ無料で作成 | 第10回 |
開発 | 2 | Amazon SageMaker Studioをセットアップする | 第10回 |
3 | データセットをダウンロードする | 第11回 | |
学習 | 4 | SageMaker Autopilot実験を作成する | 第11回 |
5 | SageMaker Autopilot実験のさまざまなステージを調べる | 第11回 | |
推論 | 6 | 最適なモデルをデプロイする | 第12回 |
7 | モデルを使用して予測を行う | 第12回 | |
8 | クリーンアップ | 第12回 |
前回は、ステップ2の「Amazon SageMaker Studio」をセットアップするところまで行いました。今回は「Amazon SageMaker Autopilot」を使って機械学習モデルの構築を行っていきます。
ステップ 3:データセットをダウンロードする
「SageMaker Studio コントロールパネル」で「Studioを開く」を選択します。
1分程度待つと、以下のような画面に遷移します。これがAmazon SageMaker StudioのLauncherの画面となります。
「Select a SageMaker Image」で「Data Science」を選択し、「Notebook」を選択します。
すると、「JupyterLab」の画面に遷移します。これが「Amazon SageMaker Notebooks」となります。
Amazon SageMaker Notebooksは、Amazon SageMaker Studioに統合されたJupyterLabのノートブック環境です。ダークテーマとなっていますが、本連載の第6回で紹介したJupyterLabと同等です。なお、ノートブックの右上の赤枠が「Unknown」となっている場合は、Amazon SageMaker Notebooksの背後で稼働するインスタンスが停止状態にあるため、これを選択します。
今回のチュートリアルでは小さいインスタンスで十分なので、汎用(General purpose)の「ml.t3.medium」を選択して、「Save and continue」を選択します。
インスタンスの起動に成功すると、「Unknown」が選択したインスタンスタイプのvCPUとメモリサイズが表示が変わります。「ml.t3.medium」の場合は、「2 vCPU + 4 GiB」と表示されます。
OSのコマンドを実行する
ノートブックのセルに下記のコードをコピー&ペーストして実行してください。ノートブック上部にある三角形の矢印アイコンか、「Shift」+「Enter」キーで実行できます。
%%sh
apt-get install -y unzip
wget https://sagemaker-sample-data-us-west-2.s3-us-west-2.amazonaws.com/autopilot/direct_marketing/bank-additional.zip
unzip -o bank-additional.zip
次のように出力され、左側に「bank-additional」というフォルダが作成されれば成功です。
上述のコードでは、マジックコマンド(%%sh)を使ってOSのコマンドを実行しています。ここでは、次の3つの処理が行われています。
- ZIPファイルを解凍するための unzip のパッケージのダウンロード
- チュートリアルで利用する「ポルトガル銀行のダイレクトマーケティングのデータ」(ZIP形式)のダウンロード
- ダウンロードしたデータの解凍(unzip)
データを読み込み、10行出力する
ノートブックのセルに下記のコードをコピー&ペーストして実行してください。このコードでは、Pandasのread_csv関数を使って、ダウンロードしたCSV形式のデータをDataFrameに読み込み、最初の10行を出力します。
import pandas as pd
data = pd.read_csv('./bank-additional/bank-additional-full.csv')
data[:10]
以下のように表形式でデータが表示されれば成功です。
S3バケットにデータセットをアップロードする
ノートブックのセルに下記のコードをコピー&ペーストして実行してください。このコードでは、Amazon SageMaker Python SDKのupload_dataメソッドを利用して、S3バケットにデータセットをアップロードします。
import sagemaker
prefix = 'sagemaker/tutorial-autopilot/input'
sess = sagemaker.Session()
uri = sess.upload_data(path="./bank-additional/bank-additional-full.csv", key_prefix=prefix)
print(uri)
次のようにS3バケットのURIが表示されれば成功です。
s3://sagemaker-ap-northeast-1-ACCOUNT_NUMBER/sagemaker/tutorial-autopilot/input/bank-additional-full.csv
「ACCOUNT_NUMBER」はご自身のAWSアカウントの12ケタの数字に読み替えてください。このURIは、次のステップ4で利用します。
ステップ 4:SageMaker Autopilot実験を作成する
ステップ3までで環境構築とデータの準備が終わりました。ここからは、Amazon SageMaker Autopilotの設定を行っていきます。
Amazon SageMaker Autopilotでは、表形式(CSV形式)の学習データから前処理/学習アルゴリズムの選択/学習/ハイパーパラメータの最適化を自動で行います。これは背後で、Amazon SageMaker Experimentsと連携して実現されています。チュートリアルの本文に「Experiment」や「実験」という単語が出てきますが、これに由来すると考えられます。
なお、実験の完了までに2時間程度かかる点に注意してください。途中経過を観察する必要はありませんが、放置が許されない場合もあると思うので、時間に余裕を持って実施してください。
左側のナビゲーションペインで、下図に示す三角形のアイコンを選択します。続けて、「Project」と表示されているプルダウンメニューから、「Experiments and trials」を選択します。
続けて、「Create Experiment」を選択します。
「AUTOPILOT EXPERIMENT SETTINGS」で実験の設定を行います。
今回は簡単なチュートリアルなので、原則としてデフォルト値を設定します。各設定値の説明を簡単にまとめたので、実際の業務で利用する際は参考にしてください。
分類 | 設定値名 | 説明 | デフォルト値 |
---|---|---|---|
AUTOPILOT EXPERIMENT SETTINGS | Experiment name | 実験の名称を設定する。最大63文字まで設定可能であり、英数字もしくはハイフン(-)の利用が可能。1つのAWSリージョンのアカウント内で一意である必要がある | なし(今回は「tutorial-autopilot」を設定) |
TAGS - Optional | 実験に付与するタグをキーバリュー形式で設定する。オプション設定であるため、必要に応じて設定する | なし | |
Project - Optional | 既存のプロジェクトを利用する場合にプロジェクトを設定する。オプション設定であるため、必要に応じて設定する | なし | |
CONNECT YOUR DATA | 学習データが格納されているS3バケットとファイル名を指定する。S3バケットは同一リージョンに存在する必要があり、ファイルは CSV形式で500行以上である必要がある ・FindS3bucket: バケット名とファイル名をプルダウンから選択する ・EnterS3bucket location: 「s3://」から始まるURI形式でファイル名を指定する |
EnterS3bucket location(今回はステップ3で確認したS3のURIを指定) | |
Is yourS3input a manifest file? | S3バケットに格納したファイルがマニフェストファイルである場合に有効化する。マニフェストファイルは、入力となる学習データとメタデータ(データの格納場所などの属性情報) が含まれる | 無効 | |
Target | 推論の対象となる正解データが格納されている列名 | なし(今回は「y」を設定) | |
Output data location (S3 bucket) | 機械学習モデルなどの出力ファイルを出力するS3バケットを指定する。設定値の意味は「CONNECT YOUR DATA」と同じ | FindS3bucket(今回はステップ 3で確認したS3バケットを設定) | |
Select the machine learning problem type | 実験で扱う機械学習の問題を下記の中から設定する ・Auto: 自動 ・Binary classification: 二値分類 ・Regression: 回帰 ・Multiclass classification: 多値分類 |
Auto | |
ADVANCED SETTINGS - Optional | Do you want to run a complete experiment? | Amazon SageMaker Autopilotによる実験のうち、4つのステップを全てを行うか、ステップ2の「Candidate Definitions Generated」までに留めるかを選択する ・Yes ・No, run a pilot to create a notebook with candidate definitions |
Yes |
IAM role | Amazon SageMaker Autopilotに付与するAWSリソースの操作権限を設定したIAMロールを指定する | Default SageMaker Role | |
Encryption key - Optional | AWS Key Management Service(KMS)によるデータの暗号化を実施する場合に暗号鍵を指定する | なし | |
Virtual private cloud (VPC) - Optional | セキュリティ要件などでインスタンスをユーザー管理のVPC内に配置する必要がある場合に設定する | なし | |
Max trial runtime in seconds | 試行(学習ジョブ)の完了を待機する実行時間(秒)を設定する | 0(設定しない) | |
Max job runtime in seconds | ジョブ(AutoMLジョブ)の完了を待機する実行時間(秒)を設定する | 0(設定しない) | |
Max candidates | 試行の実行回数(複数の試行を実行して機械学習モデルの候補を多数生成する。そのなかから最終的に1つに絞って推論エンドポイントとしてデプロイする)を設定する | 0(設定しない) |
入力が終わったら、「Create Experiment」を選択します。以下のような画面に遷移すれば成功です。
画面に記載されているように、デフォルトでは250回の試行(250個のジョブ)が実行され、全て完了するまでには2時間程度かかります。ただし、「stop the experiment」をクリックすれば、途中で停止させることも可能です。
ステップ 5:SageMaker Autopilot実験のさまざまなステージを調べる
Amazon SageMaker Autopilotが次の4つのタスクを自動で実行します。
- Pre-processing (前処理)
- Candidate Definitions Generated (候補定義生成)
- Feature Engineering (特徴エンジニアリング)
- Model Tuning (モデルチューニング)
2まで完了すると、画面の右上に2つのボタンが登場します。これを選択すると、2つのノートブックを参照することができます。
これらのノートブックには、学習データの分析結果やそれを踏まえてAmazon SageMaker Autopilotが判断した内容が記録されます。一般に、このような自動化の仕組みは中身のブラックボックス化が問題、もしくは課題となる場合がありますが、判断内容が利用者に公開されて透明性が確保されることはAmazon SageMaker Autopilotの特徴の1つです。
それぞれのノートブックの概要は以下の通りです。
◆Data Exploration Notebook(データ探索ノートブック)
学習データの分析結果として下記を提示する。
- データセットのサンプル
- カラムごとの分析結果
- 欠損値の割合
- 値の種類
- 統計情報 (最大/最小値、平均値、中央値)
◆Candidate Generation Notebook(候補生成ノートブック)
Amazon SageMaker Autopilotが判断した次の内容が示される。
- 前処理と機械学習アルゴリズムの組み合わせ
- ハイパーパラメータ最適化の手法や探索範囲
- 上記の実行方法
これらのノートブックは、ダウンロード/編集して再利用することもできます。
なお、ステップ4の設定で「Do you want to run a complete experiment?」の設定値に「Yes」を選択しましたが、ここで「No, run a pilot to create a notebook with candidate definitions」を選択した場合は、ノートブックの生成後に処理が停止します。この仕組みを使って、Amazon SageMaker Autopilotをデータ分析や採用すべき手法の判断材料を得る手段として利用しても良いでしょう。
実験が完了すると、以下のようにアニメーションが消えて、結果の表示のみとなります。
デフォルトの精度指標値はF1値となります。F1値が最大の試行(機械学習モデル)に「Best」という印がつきます。
インスタンスの停止方法
ここで作業を中断する場合は、下記の手順で「インスタンスの停止」もしくは「停止」を確認してください。背後でインスタンスが稼働している場合は、課金対象になります。
まず、左側のナビゲーションペインで、赤枠内の「■」を選択します。
「RUNNING INSTANCES」の横の「×」を選択します。
「Shut Down All」を選択します。
「RUNNING INSTANCES」以下に稼働しているコンポーネントがないことを確認します。念のため、右上のリフレッシュボタンを選択しても何もコンポーネントが現れないことを確認してください。
* * *
今回はAmazon SageMaker Autopilotを使って機械学習モデルの構築を行いました。次回は、機械学習モデルを推論エンドポイントとしてデプロイし、精度検証を行っていきます。
著者紹介
菊地 貴彰 (KIKUCHI Takaaki) - 株式会社NTTデータ
システム技術本部 デジタル技術部
Agile プロフェッショナル担当
大学・大学院では、機械学習を専攻。ベイズ的枠組みを用いて、複数の遺伝子のデータから遺伝子どうしの相互作用ネットワークの推定に関する研究を行った。
株式会社NTTデータに入社後は、法人や金融のシステム開発のシステム基盤担当としてキャリアを積み、現在はデジタル技術やAgile開発を専門に扱う組織でシステム開発全般を担当する。
2019, 2020 APN AWS Top Engineers, Japan APN Ambassador 2020に選出に選出。
本連載の内容に対するご意見・ご質問はtwitter: @kikuchitk7まで。