こんにちは。
最近Deep Learningを学び始めて、友人と週末に2時間くらい勉強会をやっています
その時にColaboratoryの無料版を利用しているのですが、スペックが少しキツくなってきたのでPro版を検討してみたのですが、スポットでしか利用しないので月額1000円くらい払うのはお得なのか?割高なのか微妙なとことろでした。
そこで色々と調べてみたところ、AWS EC2を使って接続した方が費用感的にも良さそうだったので、ちょっとした遊び感覚でやってみたので備忘として残すことにしました
対象
-
- Colaboratory Proの約月額1000円を払いたくなくて、少しでも安く済ませたい人(AWSの基本的な知識は必須)
- ローカル端末のスペックがそこまで高くなくて、一時的にハイスペックな環境を利用したい人
扱わないこと
- AWS EC2インスタンスの立ち上げや停止
環境
パソコン
Apple Mac mini(2018)
macOS Big Sur
AWS
Amazon Linux 2 AMI (HVM), SSD Volume Type
※インスタンスサイズなどその他の条件は任意
アプリ
Python 3.7.9
pip 20.2.2
jupyter core : 4.7.1
jupyter-notebook : 6.4.0
qtconsole : not installed
ipython : 7.24.1
ipykernel : 5.5.5
jupyter client : 6.1.12
jupyter lab : 3.0.16
nbconvert : 6.0.7
ipywidgets : not installed
nbformat : 5.1.3
traitlets : 5.0.5
流れ
EC2インスタンスを立ち上げる
チュートリアル: Amazon EC2 Linux インスタンスの開始方法 などを参照してインスタンスを立ち上げてください。
ここで必要なものは次の2つです。
-
- pemファイル
- インスタンスへ接続用のSSHコマンド
ポートフォワードしてSSHを接続
ご自身の端末から次のSSHコマンドを実行してポート8888をフォワードしてインスタンスに接続してください。
その際、インスタンスを作成した時に出力されたpemファイルが必要になりますので、手元に用意してから対応するとスムーズです。
ssh -L 8888:localhost:8888 ec2-user@ec2-x-xxx-xxx-xxx.ap-xxxxxxx-x.compute.amazonaws.com -i "xxxxx.pem"
Jupyterをインストール
公式サイトの手順に従ってJupyterをインストールしてください。
インストールが完了したら、次のコマンドを実行して正常に起動するか確認してください。
jupyter notebook
下記のようにlocalhostのURLが表示されたら成功です
$ jupyter notebook
~~省略~~
To access the notebook, open this file in a browser:
file:///home/ec2-user/.local/share/jupyter/runtime/nbserver-3650-open.html
Or copy and paste one of these URLs:
http://localhost:8888/?token={{実際はここにトークンが表示されています}}
or http://127.0.0.1:8888/?token={{実際はここにトークンが表示されています}}
※一部表記を省略しています
接続が確認できたら、Colaboratoryに接続するためにいくつかオプションの指定が必要なので、Jupyter Notebookを1度終了します。
Colaboratoryで接続するようにオプションを指定してJupyter Notebookを起動
Colaboratoryの公式サイト の手順に従って起動しましょう。
いくつか重要そうな部分だけピックアップしています
新しいノートブック サーバーを通常どおり起動します。ただし、Colaboratory フロントエンドからの WebSocket 接続を明示的に信頼するフラグを設定する必要があります。
〜〜省略〜〜
ノートブックを他のユーザーと共有しても、ローカルマシン上のランタイムは共有されません。共有したノートブックを開いたユーザーはデフォルトでは標準のクラウド ランタイムに接続されます。
jupyter notebook \
--NotebookApp.allow_origin='https://colab.research.google.com' \
--port=8888 \
--NotebookApp.port_retries=0
Colaboratoryで接続先情報を入力
バックエンドURLの入力項目にコマンドライン上で表示されたhttp://localhost~~~~~のアドレスを入力して[接続]を押下する
接続に成功したら次の画像のように接続済み(ローカル)と表示されます
最後に
そこそこ時間がかかるので、お金は惜しいが時間には余裕がある人向けかもしれません