【入門】機械学習に1時間でコードレベルまで入門する方法 #Keras #SageMakerStudio
皆さん、こんにちは。コンサル部のテウです。
2020年もあっという間に2ヶ月が経ちました。新年目標の達成進捗率はいかがでしょうか?
今年こそ機械学習に入門しようぜ!!って決心された方もいらっしゃると思います。なので、今回は機械学習に 爆速 で入門できる方法をご紹介させて頂きたいと思います。
本記事の手順通り、ランチタイム等の時間を活かして、手軽に入門してみてください。
目次
始める前に
皆さんのご存知の通り、機械学習を一瞬でマスターすることは不可能だと思います。ですが、手を動かして、可能な限りより早く技術を体験することはとても大事だと思います。技術を実際に体験して、何ができるかを確実に把握することにより、次のステップへのチャレンジのハードルも下がりますね。
本記事は、今まで SageMaker インスタンスを一度も起動してみたことがなかった方を対象として書かれております。この機会に是非SageMakerで機械学習に入門してみて頂ければ幸いです。
SageMaker Studio とは
本記事では AWS re:Invent 2019 に新しく発表されました SageMaker Studio を使って機械学習に入門します。SageMaker Studioの詳細については弊社の川原が書いた記事を読んでみてください。
[レポート] 初!機械学習のためのIDE、Amazon SageMaker Studio の紹介 #AIM214 #reInvent
本記事では、SageMakerの多様な機能を使うより、単純にかっこいいサービスを使ってみたいという気持ちでJupyter Notebookしか利用しないので、SageMakerの普通のNotebookインスタンスを使っても問題ないです。
やってみる
Amazon SageMaker から SageMaker Studioを起動する(Ohio リージョン)
1. AWSマネコンに接続し、SageMakerをクリックします
今回はせっかくなので、最近出たばかりのSageMaker Studioを使ってみたいと思いました。SageMaker Studioは、現状、Ohio リージョンのみ Previewとして提供されています。
Amazon SageMakerリンクはこちら
2. SageMaker Studio をクリックします
SageMaker Studio をクリックすると、↑のようなGetting Started画面が出てきます。
3. Quick Startを選択します
Username は適当に指定して、Roleは新しく作ります。
4. デフォルトのままRoleを作ります
3番ステップから Create a new role を選択すると、↑のような画面が出てきますが、そのまま Create Role ボタンをクリックしてRoleを作ります。
5. Submit ボタンをクリックして環境を作ります
6. ResourceLimitExceeded エラーが出た場合
具体的な原因は不明ですが、おそらくPreviewのため出て来るメッセージだと思われますので、無視しても良いです。 SageMaker Studioでの動作には影響が与えられませんでした。
7. SageMaker Studio を開きます
5分〜10分ほど待ってたら正常に環境が作られました。Open Studio をクリックすると以下のようなローディングページにリダイレクトされます。
ローディングは30秒〜1分ほどかかります。
8. Create a notebook をクリックします
9. Python 3 (Base Python) を選択します
最初は Python 3 (Data Science) になっていますが、デフォルトでインストールされてある TensorFlow のバージョンが本チュートリアルの TensorFlow のバージョンと異なりますので、今回は Base Python に変更して Select ボタンをクリックしてください。
これで、Jupyter Notebook の準備は終わりました!
はじめてのニューラルネットワーク:分類問題
1. TensorFlow 公式ページのKerasチュートリアルページを開きます
TensorFlow はじめてのニューラルネットワーク:分類問題の初歩ページ
言語設定は右上の日本語を選択すると日本語で表示されます。
TensorFlowはローレベルの(ニューラル)ネットワークを作成する時によく使われる一方、Keras は TensorFlowをハイレベルから手軽に使えるライブラリーです。本記事では入門の目的のため、Keras を使ってチュートリアルをやってみます。
2. 説明通り進めます
あとはチュートリアルサイトの説明通り手を動かしてSageMaker Studio上でやってみてください。説明が理解できなくても大丈夫です。とりあえず何が実現できるかをコードの実行結果をみてから Top-Down アプローチで学習することが大事です。
以下はJupyter Notebookを初めて使う方のための補足になります。
3. SageMaker Studio からコードを実行します
↑の赤色のところに、まず最新バージョンのTensorFlowをインストールするためのコードを書きます。
!pip install tensorflow
コードの実行方法は↑のボタンをクリックするや、Macですと Option + Enter です。
コード実行中の際は、コードCellに * マークが表示されています。あと、Kernelの丸印も中身が詰まっている丸印に表示されることが分かります。
実行後は実行順番が表示されます。今回は初めての実行だったので [1] って書いてありますね。
!pip install matplotlib
あと、もう必要なライブラリが一つありますので、インストールしてください。
4. チュートリアルをやってみる
あとはチュートリアルの順番通りコードを書いて実行します。もし、コード実行中にエラーが発生した場合は、エラー内容に従って修正し、実行し直せばと思います。
他のチュートリアルもやってみましょう
SageMakerとTensorFlowのサンプルコードを使うと簡単に機械学習にコードレベルで入門できることが分かりました。TensorFlow の公式サイトでは様々な他のチュートリアルコードも提供していますので、他のチュートリアルも是非やってみてください。
SageMakerを推奨する理由について
SageMakerなんかよりローカル環境で良いんじゃない?
この記事を読まれている皆様は、おそらく機械学習の入門者だという前提があります。ローカル環境に機械学習の学習のために環境を構築することは、機械学習の入門までのハードルを上げる要因になると思います。機械学習に爆速で入門するためには、環境構築に時間を使うことより、すぐ手を動かせる環境を用意することが大事ですね。SageMakerはボタンをクリックするだけで機械学習の環境が構築できるサービスなので、この観点からみると、すごくありがたいサービスだと思います。
その理由なら Google Colab 使ったら良いんじゃない?
そうですね。流石に Google Colab ってインスタンスを起動する必要もないし、サンプルコードの全体的な流れに集中できるし、なかなか良いツールだと思います。ですが、機械学習を勉強するなら、コードをみるだけではなく、データセット、モデル、パラメーター等を視覚化して、分析して、もっと深く理解するために手を動かす努力をしなければならないです。その観点からみると、Google Colab よりは SageMakerの方がよりフレキシブルに使えます。起動も比較的に簡単ですし、Google Colabと比べると、手を動かして分析したり、視覚化したりすることが楽なためです。
あと、学習したモデルをデプロイするためにも、SageMakerでは学習したモデルをアベイラビリティー・スケーラビリティーが備わった サービスですし、他のAWSのリソースに連携もすぐできます。あと、IAMを生かしたセキュリティー面も安全なサービスだと思います。
費用について
SageMaker Studio は現状 Preview なので、無料で使えます。あと、AWSでは機械学習に初めて入門した方のため、2ヶ月間無料で使えるサービスを提供しています。詳細はこちらのページをご覧になってください。
この後は?
「コードは大体分かった。この後は何を勉強すれば良いの?」と思った方の為に他の記事も書いておきました。全てのことを一つの記事にまとめるのは無理ですが、機械学習のいろんなトピックを紹介するだけでも、勉強には役に立つと思いました。興味ある方は是非読んでいただければと思います。
最後に
私は2015年の一年間、韓国の大学院でコンピュータービジョンと機械学習の研究実でトランスファーラーニングのモデルを研究しましたが、その時は TensorFlow もなかったし、機械学習の学習リソースも今と比べると圧倒的に少なかったです。その時はこんなに楽に機械学習に入門するなんて、全然思えなかったですね。でも、クラウドサービスと機械学習フレームワークの発展により、今は爆速で入門することができると思います。なので、今が機械学習に入門する最高のチャンスだと思います。私も今年は色んな機械学習モデルを手を動かして勉強したい気持ちですと宣言することで、本記事をまとめたいと思います。
以上、コンサル部のテウでした。