AWS SageMakerで簡単!機械学習・データ分析環境構築

こんばんは。

本日はAWS Sage Makerで機械学習環境を構築したときの手順を整理しておこうと思います。

Contents

AWS Sage Makerとは?

データ分析から機械学習のモデル構築、デプロイまでの一連のプロセスに必要な環境・ツールが揃った環境を簡単に作れてしまうサービスです。

Sage Makerを使うと、Python, Rといった言語の準備、Tensor-FlowやScikit-Learnなどの機械学習ライブラリの準備、さらにはモデル構築のためのコーディングプロセスも不要にすることができてしまいます。

そして裏で動くのはEC2インスタンスなので、環境のスペックも柔軟に変更することができます。機械学習でネックになりやすいメモリのスペックも32GB, 64GBとかの環境がすぐに手に入ります。めっちゃ便利。。

ローカルマシンのスペックでは追いつかないような分析、モデリングをするときにはこのSage Makerを使うのがお薦めです。

こんな人にお薦め

機械学習のモデリングやPython/Rによるデータ分析を行う人で、

・ローカル環境のPCのスペックが低い人
・Pythonや、Jupyter、Anacondaなどの実行ライブラリ・環境が未インストールで、一からローカルに準備するのがめんどうくさい人、すぐに分析・モデリングを始めたい人

Sage Makerでの環境構築手順

今回のゴールはSage MakerでJupyter Notebookで自分でコーディングできる環境を作るところまでです。(用意されているアルゴリスムの利用などは、別の機会にご紹介できればと思います。)

ノートブックインスタンスの作成

をクリックします。ここでSage Makerの裏で動かすEC2インスタンスのスペックを決めます。

Sage Makerで指定できるML用インスタンスはCPU特化型やメモリ特化型などがあります。一覧と料金はこちらから確認できます。

https://aws.amazon.com/jp/sagemaker/pricing/instance-types/

感覚として、とにかくデータ分析やモデリングはメモリがネックになりやすいので、画像や音声などのデータを扱うときは最低でもメモリ16GB, CPU8コアは欲しいところです。また、テーブルデータ分析でも容量が数1GBなど容量が大容量になる場合は同様に標準以上のメモリ、CPUのものを選択しておきたいところです。

詳細で設定できることはさらにいくつかありますが、最短でJupyter環境が欲しい場合はとりあえすこのインスタンスタイプを指定するだけで十分です。

これでノートブックインスタンスが作成されました。

Jupyter/Jupyter Labの起動

ノートブックインスタンスができたら、インスタンスの詳細ページから”Open Jupyter”もしくは”Open Jupyter Lab”をクリックするだけ。

どちらでも機能は大きく変わらないですが、個人的にはJupyter Labが好みなのでいつも使っています。Jupyterと比較してJupyter Labの便利なところは以下のようなところかなと思っています。

・UIがコンパクトにまとまっている。(みやすい) (主観です)
・Lab Extensionsでいろいろな拡張機能がいれられる。(特に、目次表示ができるtocは大変重宝します。)
・複数のファイルをタブで行き来できす。

新しいNotebookの作成

Jupyterが起動したらNotebookの作成を行います。
Sage MakerのJupyterではデフォルトで様さまな環境が用意されています。Python2,3環境、Deep Learningなどを動かす人向けにはTensor Flow+Python環境など、これも用途に合わせて最適な環境を選択可能です。

これで準備がととのいました。
もう少し、実際にデータ分析・モデリングを行う際に知っておきたい手順を書いておこうと思います。

Jupyter Notebookでコーディングする際によく行うこと

追加ライブラリのインストール

デフォルトである程度の環境が用意されているとはいえ、中にはデフォルトではインストールされておらす、追加でインストールが必要なライブラリもあります。(たとえば、Light-GBMなど)

!pip install --upgrade pip
!pip install ライブラリ名 (例:Light-GBM)

最初にpipのUpgradeを行っているのは、デフォルトのバージョンが古いためです。最初にpip自体のアップデートを実施しておくと良いと思います。

S3ストレージのデータを読み込みたい

データ分析・モデリングを行うときには、大容量なデータを別に保持しておく必要があります。通常は利用するデータはS3上にアップロードしておきます。

Jupyterからは以下のコードで参照可能です。

df = pd.read_table('s3://バケット名/データ格納フォルダ/ファイル名',encoding='utf-8',delimiter=',')

read_tableの最初で指定しているURLは以下から確認できます。

S3ストレージにCSVデータを出力したい

これでできます。

from io import StringIO
import boto3

csv_buffer = StringIO()
df_submit.to_csv(csv_buffer,index=False)
s3_resource = boto3.resource('s3')
s3_resource.Object('datascience113', 'ieee-fraud-detection/submission.csv').put(Body=csv_buffer.getvalue())

本日はAWS Sage Makerというサービスを利用して、データ分析、機械学習のモデリングに必要な環境を一瞬で手に入れる方法を解説しました。少しでも参考になりましたら幸いです。

最後までご覧いただきありがとうごさいました!
おしまい

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。