Udacity向けAWS GPUインスタンスの作り方(学生なら$100貰えるよ)

初心者向けに、Amazon Web Service上でGPUインスタンスを作るやり方をスクリーンショット多めでまとめました。

この記事は[Udacityの自動運転ナノデグリー(Self-Driving Car Engineer Nanodegree)](https://www.udacity.com/course/self-driving-car-engineer-nanodegree--nd013)受講者向けに執筆したため、
 <ドンピシャで役立つ読者>
・Udacityの自動運転ナノデグリーを受講している
・GPU付きPCを持ってない or 非力なPCしか持ってない

ですが基本的な操作は一緒なので、
<まあまあ役立つ読者>
・最近よく聞くAWSだかEC2だかを使ってクラウドPCを借りてみたい
・学校用メアドを持っている(学生特典\$100/\$40分が貰える)

となります。


# 目的

この記事で達成する事は、

(0. 学生特典を申請し)

1. AWSアカウントを新規作成して
2. 学生特典の\$100/\$40を獲得し
3. AWS上にGPUインスタンス(≒仮装クラウドPC)を立ち上げ
4. AWS上でjupyter notebookを起動し
5. 自分のPCのブラウザを通してプログラミングする

です。


Udacityの自動運転ナノデグリーを進めるにあたって、ディープラーニングのソースコードをGPUで試したくなります。そこでGPU付きPCを新たに買ったり自作したりするのではなく、AWS上にあるGPUインスタンス(≒仮装クラウドPC)を借りてやってみようという記事です。AWSでGPUインスタンス(≒仮装クラウドPC)作る利点は、

* 数万円レベルの初期投資がかからない
* ネット環境がさえあれば既に持ってるノートPCのスペックがカスでも大丈夫
* つまりカフェとかでもUdacityできる
* 現代っぽい

です。

更にこの記事でもやり方紹介しますが、学生なら\$100/\$40分貰えるのでUdacity自動運転ナノデグリーのTerm1の間くらいなら無料でAWS GPUインスタンスを使えるのではないでしょうか。\$100 or \$40の違いは、自分の所属してる学校等がAWSの加盟校なのかによります。ちなみに先生など教える側であれば、\$200/\$75らしいです(2017年9月現在)。


# 0. 学生特典を申請

※ ~~@〇〇.ac.jp で終わるような学校用メアドを持っていないと\$100/\$40は貰えないので、持ってない方は [1. AWSアカウントを新規作成](https://qiita.com/Hotsuyuki/items/0da1719fe9db3c149796#1-aws%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%82%92%E6%96%B0%E8%A6%8F%E4%BD%9C%E6%88%90)まで読み飛ばしてください。

### *0-1. aws educateに申請*

[aws educate](https://www.awseducate.com/registration?refid=0ut2khdPC5Ljlw6mgkdQIr1Cj1SKTePY)で必要事項を入力し、

![1'. normal aws educate.png](https://qiita-image-store.s3.amazonaws.com/0/207119/d143f75c-35ec-d5f4-41b0-5aa4cf862cac.png)

必要事項を入力したら(Promo Codeはとりあえず今は空欄でOKです)、

![2'. normal aws educate 2.png](https://qiita-image-store.s3.amazonaws.com/0/207119/a61916a5-7b67-1772-e665-57207615fa05.png)

AWSアカウントID(12桁)を求められるので、AWSアカウントを持ってない人はここで[他の一般の人と同じやり方](https://aws.amazon.com/jp/register-flow/)で新規作成します。もちろん既にAWSアカウントを持っている人は自分のAWSアカウントID(12桁)を入力すればOKです。

![3'. normal aws educate 3.png](https://qiita-image-store.s3.amazonaws.com/0/207119/bb10dcb3-40ed-24cd-304c-0ba6070a7054.png)

この画面は後でまた使うため、タブは**<font color="Red">消さずに取っておいて</font>**下さい！！もし消してしまったら、恐らく大学名から入力し直しです。

※ ASW学生特典申請には2種類あって、①普通の一般的なAWSアカウントを後から「このアカウントは学生です」って申請する方法(to enter an AWS Account ID)と、②もう最初っから「AWS学生用アカウント下さい！」って申請する方法(to select an AWS Educate Starter Account)があります。どっちを選ぶべきかというと、クレカを持ってれば①、持ってなければ②、です。①は最大限の特典を貰えかつ卒業後も引続き同じアカウントを使い続けることができる代わりにクレカを必要とし、②は特典のお得感は少し減るし卒業すると使えなくなるがクレカを必要としません。


# 1. AWSアカウントを新規作成

AWS自体のアカウントを作ります。

### *1-1. Amazon.co.jpとは別の、AWS用アカウントを作成*

`新規作成`を選択し、

![6. Create a new AWS account.png](https://qiita-image-store.s3.amazonaws.com/0/207119/dcaa3108-a001-a5a2-85dc-d0c40a98ddf7.png)

もし日本のAmazon.co.jpのアカウントしか持ってない方は上の`私は新規ユーザーです。`で新しくAWS用のアカウントを作成します。もし米国のAmazon.comのアカウントを持っている方は同じアカウントをAWS用としても流用できるので、下の`私は既存のユーザーです`を選び、いつもと同じパスワードを入力します。

※ ここで使用するメアドはAWS自体のアカウント用なので、aws educateに申請した学校用メアド**じゃなくても大丈夫**です。

![7. Sign in to Amazon.com(American account).png](https://qiita-image-store.s3.amazonaws.com/0/207119/0eab5839-bcc1-b921-45b7-76db629f5026.png)


### *1-2. AWSアカウント用の必要事項を入力*

次に、AWSを使用するにあたっての追加の必要事項を入力します。このステップでクレカ情報等を入力します。[Amazon公式のページに登録の流れ](https://aws.amazon.com/jp/register-flow/)がスクショ付きで解説されています。

![8. input personal account.png](https://qiita-image-store.s3.amazonaws.com/0/207119/7cfcc91e-3981-fc9a-4897-677142156ac5.png)

また途中で本人確認のため、[電話機に自動音声の電話](https://aws.amazon.com/jp/register-flow/#ステップ_4:_日本語自動音声電話によるアカウント認証)がかかってきます。したがってご自身の携帯電話もしくは固定電話をご用意ください。

![9. Launch Management Console.png](https://qiita-image-store.s3.amazonaws.com/0/207119/c0a367fc-fbc2-52c4-735c-e716097ffe14.png)

これでAWSアカウント自体は登録完了です。早速AWSのトップページ、[マネージメントコンソール](https://console.aws.amazon.com/console)を開いてみましょう。

# 2. 学生特典の$100/$40を獲得

[*0-1. aws educateに申請*](https://qiita.com/Hotsuyuki/items/0da1719fe9db3c149796#0-1-aws-educate%E3%81%AB%E7%94%B3%E8%AB%8B)での画面に戻って、途中だったaws educateの申請を完了させます。

### *2-1. AWSアカウントID(12桁)の取得と入力*

[マイアカウント](https://console.aws.amazon.com/billing/home?#/account)へ進み、

![10. login to AWS console.png](https://qiita-image-store.s3.amazonaws.com/0/207119/468672d1-e897-f190-ff03-84aad551f114.png)

AWSアカウントID(12桁)の数字をコピーし、

![11. AWS my account.png](https://qiita-image-store.s3.amazonaws.com/0/207119/643e4825-d405-ec99-572b-5b692cc53d63.png)

[*0-1. aws educateに申請*](https://qiita.com/Hotsuyuki/items/0da1719fe9db3c149796#0-1-aws-educate%E3%81%AB%E7%94%B3%E8%AB%8B)での画面に戻って、AWSアカウントID(12桁)の数字を貼り付けます。

![11'. Input the AWS Account ID.png](https://qiita-image-store.s3.amazonaws.com/0/207119/6747a6ef-f50c-6800-5861-5c4df0eed556.png)

### *2-2. メアド認証をして、Promo Codeを入力*

aws educateに登録した**学校用メアド**の方に以下のようなメールが届き、メール本文にある数字でメアドの認証を行います。

![12. Email Verification - AWS Educate Application.png](https://qiita-image-store.s3.amazonaws.com/0/207119/a4d3f392-fab9-cdab-f0c8-8cbcbba9ab36.png)

メアド認証後、これで無事aws educateへの申請が完了です。

![13. Complete applying AWS educate.png](https://qiita-image-store.s3.amazonaws.com/0/207119/d634ee0a-1dcf-5dca-689c-2b7bf6ea1256.png)

数日後Promo Codeを記載したメールが届くので、[AWSコンソールのクレジット](https://console.aws.amazon.com/billing/home#/credits)画面にてそのPromo Codeを入力すると、学生特典の\$100/\$40が貰えます！

# 3. AWS上にGPUインスタンスを立ち上げ

※ ここら辺から、Udacity色が強くなってきます。

いよいよAWS上にGPUインスタンスを立ち上げます。インスタンスっていう言葉は簡単にいうと、クラウド(AWS)上にある仮装PCのことです。AWSにはGPU特化型インスタンス(≒仮装クラウドPC)の他にも、[様々なタイプ](https://aws.amazon.com/jp/ec2/instance-types/)のが用意されています。

### *3-1. GPUインスタンスのリミット数を上げてもらう*

AWSアカウント作成とase educateへの申請を無事終えた訳ですが、なぜか初期状態ではGPUインスタンスをすぐには作れません。AWS側で特殊な準備が必要なのかわかりませんが、「GPUインスタンス使わせてくれ〜」という申請をわざわざしなければいけません。

[AWSコンソールのリミット](https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#Limits:)画面へ行き、`Request limit increase(リミット増加リクエスト)`をクリックします。

![16. Instance limits.png](https://qiita-image-store.s3.amazonaws.com/0/207119/753c6ed9-e901-aaf1-808e-4102014f2a27.png)

ここでは、2017年9月現在最新GPUインスタンスであるg3系、の中でも最安プランの`g3.4xlarge`インスタンスを選択してますが、g2系かg3系なら何でも良いと思います。`g3.`の後に続く数字が大きくなればなるほどスペックは高くなりますが、当然お値段も上がります。Udacityの自動運転ナノデグリーのTerm1では一世代前の`g2.2xlarge`を例に解説していたので、g3系最安プランの`g3.4xlarge`でも性能は十分だと思われます。

次に必要事項を入力します。

* `Region(地域)`：自分の使いたいGPUインスタンスがある地域
* `Limit(リミット)`:"Increase Limit"を選択
* `New limit value(リミット数)`:作りたいGPUインスタンス個数を好きなだけ申請
* `Use Case Description(使用目的)`："I would like to use GPU instances for deep learning."の一言で十分

![17. Submit a Limit Increase Request.png](https://qiita-image-store.s3.amazonaws.com/0/207119/e8049731-597a-70e6-bab4-aaecc396176d.png)

申請すると、以下のような確認画面が出てきます。

![18. comfirmation of Submit a Limit Increase Request.png](https://qiita-image-store.s3.amazonaws.com/0/207119/5491d5df-bd00-79ec-0030-97b084dfdc61.png)

そして1分後には申請が降りました（笑）

![19. approved Limit Increase Request.png](https://qiita-image-store.s3.amazonaws.com/0/207119/3bea5826-5fd0-bb39-7edd-5875ef868cf5.png)

### *3-2. GPUインスタンスを作る*

今までは下準備で、ここからが本作業です。

![20. Services ---> EC2.png](https://qiita-image-store.s3.amazonaws.com/0/207119/2c62645d-6890-2a99-982b-4fcb733fa878.png)

[EC2 ダッシュボード](https://console.aws.amazon.com/ec2/v2/home)へ行き、`Launch Instance(インスタンス作成)`をクリックします。

![21. EC2 Dashboard ---> Launch Instance.png](https://qiita-image-store.s3.amazonaws.com/0/207119/893dc1f9-f1e5-706c-1e32-8333faacabb9.png)

まず最初に画面右上から`Region(地域)`を選択してください。自分の住んでいる場所に近い方が好ましいです。条件は、
・g2系もしくはg3系インスタンスがある
・"udacity-carnd"という名前のコミュニティAMI(≒OS)がある
です。ちなみに"Asia Pacific (Tokyo)"なら上記全ての条件を満たしています。

`Region(地域)`を選択したら、画面左側から`Community AMIs(コミュニティ版 AMI)`を選択して"udacity-carnd"と検索します。

AMIは簡単にいうとインスタンス(≒仮装クラウドPC)に入れるOSのことで、例えばWindows ServerやAmazonオリジナルのLinuxが用意されています。ここでは、Udacity側が自動運転ナノデグリー用に特別に作成したAMIを使わせて頂くことにします。そういったAMIは、`Community AMIs(コミュニティ版 AMI)`の中から検索して見つけます。

![22. Change the reagion ---> Community AMIs ---> udacity-carnd.png](https://qiita-image-store.s3.amazonaws.com/0/207119/7b9f4ef9-e772-0d59-b13c-6410809e5286.png)

[*3-1. GPUインスタンスのリミット数を上げてもらう*](https://qiita.com/Hotsuyuki/items/0da1719fe9db3c149796#3-1-gpu%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%AE%E3%83%AA%E3%83%9F%E3%83%83%E3%83%88%E6%95%B0%E3%82%92%E4%B8%8A%E3%81%92%E3%81%A6%E3%82%82%E3%82%89%E3%81%86)で申請したGPUインスタンスを探して選択し、`Review and Launch(レビュー)`をクリックします(Launchと書いてありますが、まだ起動しないので大丈夫です)。

![23. GPU graphics ---> g3.4xlarge.png](https://qiita-image-store.s3.amazonaws.com/0/207119/97abab28-74a2-a056-48cc-8e29ac0ced39.png)

GPUインスタンスの詳細情報確認の画面に移るので、"Security Groups"欄の`Edit security groups(セキュリティグループの編集)`をクリックしてセキュリティについて設定します。

![25. Security Groups ---> Edit security groups.png](https://qiita-image-store.s3.amazonaws.com/0/207119/4e94c5cc-980d-2c06-bef3-4f71c76f3aaa.png)

* `Assign a security group(セキュリテイグループの割り当て)`："Create a new security group(セキュリティグループの新規作成)"を選択
* `Security group name(セキュリティグループの名前)`：適当にわかりやすい名前
* `Type(タイプ)`："Custom TCP Rule(カスタムTCP)"を選択
* `Port Range(ポート番号)`："8888"
* `Source(ソース)`："Anywhere(どこからでも)"を選択

※ `Port Range(ポート番号)`はjupyter notebookの場合、一般的に"8888"がよく使われます。

※　Udacityの例では`Source(ソース)`に"Anywhere(どこからでも)"を選択してますが、外部の変な人から自分のAWSにアクセスされるのが怖い方は違うのを選択しても大丈夫だと思われます。

そして`Review and Launch(レビュー)`をクリックします。

![26. Create a new security group ---> Custom TCP Rule ---> 8888 ---> Anywhere.png](https://qiita-image-store.s3.amazonaws.com/0/207119/e0c15a78-cbd3-cb24-fb6f-bfb77a9d3b55.png)

これで設定はほぼ完了です。設定項目を確認したら、画面右下の`Launch(立ち上げ)`をクリックします。

![28. Review Instance Launch (after setting security groupes).png](https://qiita-image-store.s3.amazonaws.com/0/207119/395bee2c-b949-cd06-eb8a-62ab99127319.png)

普通はここで[sshする為の公開鍵と秘密鍵](https://qiita.com/kenju/items/b09199c4b3e7203a2867)の設定をするのですが、Udacityが自動運転ナノデグリー用に作成したAMI(≒OS)では授業中に配布されたパスワードを入力してログインする為、鍵は必要ありません。なので`Proceed without a key pair(鍵の設定なしで進む)`を選択し、`I acknowledge that...(私はこのAMIのパスワードを知らない限りログインできないことを承知しています)`にチェックマークを入れ、`Launch Instance(インスタンス立ち上げ)`をクリックします。

![31. Proceed without a key pair ---> I acknowledge that.png](https://qiita-image-store.s3.amazonaws.com/0/207119/a682b6a1-5935-3f6b-2578-7b5a05ace697.png)

これで遂にやっとGPUインスタンスが作れました！

![32. Launch Status.png](https://qiita-image-store.s3.amazonaws.com/0/207119/815e30ad-0b81-f5f1-f65c-f4ea3486b1f9.png)

* `Instance Status(インスタンスステータス)`が "pending" から→ "running" に
* `Status Checks(ステータスチェック)`が "Initializing" から→ "2/2 checks..." に

なるまで数分間待ちます。

![33. Instance State = pending.png](https://qiita-image-store.s3.amazonaws.com/0/207119/aa0e97df-2101-c2e0-8423-69d1cd1fcad4.png)

### *3-3. 間違って消してしまわないよう設定する*

さてこれで晴れてGPUインスタンスを使えるようになったのですが、使い始める前に大事な設定を一つしておきましょう。

インスタンスを終了するには`Stop`と`Terminate`の2種類の方法があります。

* `Stop`：いわゆる普通のシャットダウンに当たるので普段はこっちを選ぶ
* `Terminate`：インスタンス(≒仮装クラウドPC)ごと削除、つまり**<font color="Red">データが吹っ飛びます</font>**

なので間違えて`Terminate`しないように、「`Terminate`前に今一度確認の警告を鳴らす」という設定をします。なぜかデフォルトでONじゃないんですよねこれが。
(僕は間違えて`Terminate`してしまったので最初から作り直しました…その残骸がスクショに写ってますね汗)

設定したいインスタンスを右クリックし、`Instance Setting(インスタンスの設定)`→`Change Termination Protection(ターミネートプロテクションの設定)`へ進みます。

![35. Instance Settings ---> Change Termination Protection.png](https://qiita-image-store.s3.amazonaws.com/0/207119/8c9e205a-9fdf-fedc-2596-fde6ebc3bdad.png)

`Yes, Enable(はい、有効化します)`をクリックして、設定完了です。

![36. Yes, Enable.png](https://qiita-image-store.s3.amazonaws.com/0/207119/fe9be09a-8348-1293-7f09-b6e2dc51fc2c.png)

もし間違って`Terminate`しようとすると、以下の画面で`Yes`が押せなくなります。もし本当に`Terminate`したくなった場合は、同じやり方で今度はプロテクションを`Disable(無効化します)`にして外してあげる必要があります。

![36'. Terminate protection.PNG](https://qiita-image-store.s3.amazonaws.com/0/207119/342b6cef-1e38-e2cf-7faf-9ab990b643dc.png)

※ `Stop`すれば基本機能が止まるので時間制で加算される使用料金も止まりますが、ストレージは止まらない為[ストレージ(ディスク容量)代が微量ですがかかる](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html#instance-stop-start)らしいです。`Terminate`すればストレージ(ディスク容量)代はかかりませんが、その代わり**<font color="Red">データが吹っ飛びます</font>**。

※ 使ってない間ストレージ(ディスク容量)代もかけたくないし & データも消されたくないという方は、毎回作業終わりに[scp](https://qiita.com/katsukii/items/225cd3de6d3d06a9abcb)とかでAWS上のデータを自分のPCにダウンロードして`Terminate`する→[*3-2. GPUインスタンスを作る*](https://qiita.com/Hotsuyuki/items/0da1719fe9db3c149796#3-2-gpu%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%82%92%E4%BD%9C%E3%82%8B)からやり直す→また[scp](https://qiita.com/katsukii/items/225cd3de6d3d06a9abcb)とかで今度は自分のPCからAWS上にデータをアップロードして作業開始、という作戦が良いのではないでしょうか。


# 4. AWS上でjupyter notebookを起動

sshで自分のPCから→AWSのインスタンス(≒仮装クラウドPC)に接続し、AWS上でjupyter notebook本体を起動させます。jupyter notebookとは、ブラウザ上でPython等の出力結果を逐一確認しながらプログラミングできる便利ツールです。

### *4-1. sshで自分のPCから→AWSに接続する*

**自分のPC**でターミナルを起動し、

```
自分のPC名: $ ssh carnd@〇〇.〇〇.〇〇.〇〇(インスタンスのIPv4 Public IP)
```

と入力し、何か聞かれたら`yes`と入力してエンターを押します。

![37'. IPv4 Public IP.png](https://qiita-image-store.s3.amazonaws.com/0/207119/109d15a3-41cd-5c25-61c5-f3d7fb8f35d4.png)

※ `〇〇.〇〇.〇〇.〇〇(インスタンスのIPv4 Public IP)`はインスタンスを起動するたびに変わります。

![37. ssh carnd@IP address.png](https://qiita-image-store.s3.amazonaws.com/0/207119/384b4869-c761-3c54-ff6e-e93a19679cbd.png)

授業中に配布されたパスワードを入力し、以下のように

```
carnd@ip-〇〇.〇〇.〇〇.〇〇: $ 
```

と表示されてコマンド入力待ちの状態になったら接続成功です。

![38. ssh successfully.png](https://qiita-image-store.s3.amazonaws.com/0/207119/a3980c11-f4c1-4d19-af4f-9ad0e2b9b419.png)

ここから先のコマンドは、**AWSのインスタンス上**でのコマンドです。

### *4-2. 自動運転ナノデグリーに必要な物をコピーしてくる*

AWSの動作確認用として、LeNetプログラムを動かしてみたいと思います。**AWSのインスタンス上**で以下のようにコマンドを入力してGitHubからコピーしてきます。

```
carnd@ip-〇〇.〇〇.〇〇.〇〇: $ git clone https://github.com/udacity/CarND-LeNet-Lab.git
```

![39. git clone.png](https://qiita-image-store.s3.amazonaws.com/0/207119/0a1ce424-5a7b-7559-e63e-df0ef3147fc7.png)

次に、自動で作成されたフォルダに移動します。

```
carnd@ip-〇〇.〇〇.〇〇.〇〇: $ cd CarND-LeNet-Lab/
```

![39'. cd.png](https://qiita-image-store.s3.amazonaws.com/0/207119/f25d9205-461e-9578-1a94-d86e7fe32f36.png)

### *4-3. AWS上で jupyter notebook本体を起動する*

**AWSのインスタンス上**で以下のようにコマンドを入力します。

```
carnd@ip-〇〇.〇〇.〇〇.〇〇: $ source activate carnd-term1
```

![40. source.png](https://qiita-image-store.s3.amazonaws.com/0/207119/44f74272-ff49-b9d6-1078-678760b71b35.png)

すると、`carnd@ip-〇〇.〇〇.〇〇.〇〇: $`の前に`(carnd-term1)`と付きます。
ちゃんとファイルがあるか確認し、

```
carnd@ip-〇〇.〇〇.〇〇.〇〇: $ ls
```

![40'. ls.png](https://qiita-image-store.s3.amazonaws.com/0/207119/f54a94c6-d87c-0a7f-0962-23bfbb5c1b55.png)

いざ、**AWSのインスタンス上**でjuypter notebookを起動します！
(Udacity側が気を利かせて独自AMIに最初からjupyter notebookをインストールしてくれてます)

```
carnd@ip-〇〇.〇〇.〇〇.〇〇: $ juypter notebook LeNet-Lab-Solution.ipynb
```

![40''. jupyter notebook.png](https://qiita-image-store.s3.amazonaws.com/0/207119/b14baa0b-32bd-ec0e-85bb-ea15b380d277.png)

出力画面の最後の方で「起動できるブラウザが見つからなかったよ」っと怒られてますが、大丈夫です。AWSのインスタンスは液晶ディスプレイのないPCのようなものであり、そんなPCにWebブラウザなんてインストールされていなくてもおかしくありません。


# 5. 自分のPCのブラウザを通してプログラミング

とは言えjupyter notebookってのはWebブラウザ上で使用するものですし、じゃあどうするのかというと、**自分のPC**のWebブラウザから**AWSのインスタンス上**で起動したjupyter notebookを使用します。

### *5-1. 自分のPCからAWS上のjupyter notebookにアクセス*

**自分のPC**でWebブラウザを立ち上げ、URLバーに`〇〇.〇〇.〇〇.〇〇(インスタンスのIPv4 Public IP):8888`と入力します。

![41. access the jupyter notebook from web browser on local PC.png](https://qiita-image-store.s3.amazonaws.com/0/207119/b29e8532-d525-a647-d0e7-7ec2d8aefef7.png)

`〇〇.〇〇.〇〇.〇〇(インスタンスのIPv4 Public IP)`がAWSのインスタンス(≒仮装クラウドPC)の住所で、`:8888`はその中のjupyter notebookの部屋番号を示しています。

以下のように**自分のPC**のWebブラウザで(AWSのインスタンス上で起動してる)jupyte notebookの画面が表示されたら成功です。
`LeNet-Lab-Solution.ipynb`をクリックして、

![42. access the jupyter notebook successfully & run LeNet-Lab-solution.ipynb.png](https://qiita-image-store.s3.amazonaws.com/0/207119/aefb566d-bd06-da31-f2c9-030dfede2def.png)

画面上部の`Cell`→`Run all`をクリックしてPythonプログラムを走らせます。

![43. Cell ---> Run all .png](https://qiita-image-store.s3.amazonaws.com/0/207119/eda44eac-9f1f-1d5e-0702-c78d0ed8ce36.png)

以下のような結果が出力されれば、成功です！

![44. result of In[3].png](https://qiita-image-store.s3.amazonaws.com/0/207119/a7799832-b80c-6773-c955-2bcf527975cb.png)

![45. result of In[10].png](https://qiita-image-store.s3.amazonaws.com/0/207119/ee31f809-c96c-fc6d-4850-6f03285b6d36.png)

![46. result of In[11].png](https://qiita-image-store.s3.amazonaws.com/0/207119/67aaf4e4-1cf5-5e2c-a049-68488486092f.png)

### *5-2. AWS上のインスタンスを停止する*

最終出力を確認できたら、[*4-3. AWS上で jupyter notebook本体を起動する*](https://qiita.com/Hotsuyuki/items/0da1719fe9db3c149796#4-3-aws%E4%B8%8A%E3%81%A7-jupyter-notebook%E6%9C%AC%E4%BD%93%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B)で「起動できるブラウザが見つからなかったよ」とちょっと怒られたターミナル画面が残ってると思いますので、そこで`Ctrl + c`を同時に押して(AWSのインスタンス上で起動してる)jupyter notebookを停止します。

何か聞かれたら`y`と入力してエンターを押します。

![47. quit jupyter notebook.png](https://qiita-image-store.s3.amazonaws.com/0/207119/39bcfb41-ad27-b05d-8884-c2685ee2eecd.png)

次に**AWSのインスタンス上**で以下のコマンドを入力して、AWSへの接続を切ります。

```
carnd@ip-〇〇.〇〇.〇〇.〇〇: $ exit
```

![48. exit AWS instance.png](https://qiita-image-store.s3.amazonaws.com/0/207119/cab7a40a-eed5-a4d3-29c1-976d1d62b83f.png)

再度、

```
自分のPC名: $
```

のようにコマンド待ちの状態に戻ったら、AWSへの接続は遮断されています。最後に、AWSマネージメントコンソール上でインスタンスを`Stop`します(`Terminate`じゃないですよ！)

停止したいインスタンスを右クリックし、`Instance State`→`Stop`の順にクリックします。

![49. Instance State ---> Stop.png](https://qiita-image-store.s3.amazonaws.com/0/207119/a8ab229a-f4a0-bcde-797c-7778087aad5c.png)

`Instance State`が`stopped`になり、インスタンスは無事停止されます。

![50. Inctance stopped.png](https://qiita-image-store.s3.amazonaws.com/0/207119/779ee09a-fb53-f677-3141-cf75b8e565b5.png)

普通に使っている分にはちゃんとデータは保存されます。次回起動した際に前回jupyter notebookで編集したプログラムがなくなってる(汗)！ということは今の所起きたことがありません。

---
以上