#はじめに(この記事に書いていること)
データサイエンティスト?(自問)の私は、趣味でpythonの競馬予想プログラムを作成しています(自己紹介参照)。
プログラミングが未熟なせいもありますが、過去20年(現在約93万頭)のデータを用いてプログラムを実行すると、現在16GBの自前ローカルマシン(※)のメモリ使用率は99%になっており、将来の継続性に不安を感じるようになりました。
そうした中、クラウドサービスの高性能コンピュータを用いることが出来れば、将来の不安を取り除くことが出来ることから、Google Cloud Platform(GCP)の$300無料クレジット枠でpythonの実行環境を整えることにチャレンジしました。
なお、Google Colabの方が安価で手っ取り早いことが分かったのですが、そうしたコストパフォーマンスの記事は別に書きたいと思っています。
(※)ローカルマシンの環境:(OS)Windows10
この記事は以下の項目で整理しています。
- VMインスタンスの作成
- ssh-keyの作成と登録およびwindowsマシンからVMへの接続
- WindowsマシンからVMへのファイルの送受信とAnacondaのインストール
- pythonの実行
- イメージの保存
#VMインスタンスの作成
googleアカウントのGCP無料クレジット枠への登録は留意事項をよく読んで承認してください。
GCPへの登録が済みましたら、Compute Engineに入り、インスタンスの作成に進んでください。
次に設定は以下の通りです。
-
インスタンス名
任意に命名します。 -
リージョン:us-west1、us-central1、us-east1 のいずれか
(この3つのリージョンだとf1-microを無料クレジット枠が無くなっても無料で使えます。) -
マシンの構成: 8CPU以下のマシン (無料クレジットで選択できる上限)
(https://cloud.google.com/compute/vm-instance-pricing?hl=ja#general-purpose_machine_type_family)を参照してください。
このマシン構成はいつでも変更可能です。
以下の図で選択しているマシンは($0.10848/h 約12円/h)です。
-
ブートディスク
ここでの注意事項はこの容量を途中で変更はできないので、30GBを選択しておくのが無難です。30GB以下なら無料クレジット後も無料です。
マシンはデフォルトのDebian GNU/Linux 10 を選択します。
(Linuxに不慣れな方も以下の通り実行すれば大丈夫!)
以上を設定したら作成をクリックします。
「必ず無料トライアルクレジットが適用されているかを確認してください」
#ssh-keyの作成と登録およびwindowsマシンからVMへの接続
windowsマシンからVMインスタンス(以下VM)にはsshという方式で接続します。
その際に、誰でも固有のVMを操れるようでは問題なので、ローカルマシンで暗号鍵を作成し、VMに登録します。
Puttyのインストール
暗号鍵はPuTTyというアプリケーションで作成するので、まずはググってPuTTyをインストールしてください。
ssh-keyの作成
PuTTygenを起動させ、
1.generate
マウスをクルクル動かしてください。暗号key(ssh-key)が作成されます。
2.use-nameとパスワードの登録
ここでは<google.account>で登録する例を示します。
入力すると暗号keyの最後に=google.accountと追加されます。
その下に任意のパスワードをconfirmとともに入力してください。
3. 保存
ローカルマシンの適当なディレクトリに任意の名前で拡張子ppkのファイルを保存します。
4. keyのコピー
この後にVMに設定するためにkey全体をコピーします。
VMにssh-keyの登録
1.鍵の登録
GCPのCompute EngineのページでVMを編集から、下の方へ進み、
以下のSSH鍵のところを編集します。その際、先ほどコピーしたものをペーストします。
するとgoogle.accountが反映されるのが確認できます。
2.IPアドレスのコピー
VMの外部IPアドレスは起動のたびに割り当てられます。
現在のIPアドレスを次の接続用にコピーしておいてください。
####SSH接続
先ほどインストールしたPuTTyのファミリーからPuttyを起動させます。
1.IPアドレスの入力
google.account@コピーしたIPアドレス
2.SSH鍵のppkファイルを指定して接続
3.パスワードを入力してログイン
下のようなshellが現れ、PuTTygenで2回入力したパスワードを入力してログインします。
成功したら次のようなShellが現れます。
(画像では次のステップで行うAnacondaインストーラーをアップロードしている)
#WindowsマシンからVMへのファイルの送受信とAnacondaのインストール
ファイルの送受信方法は色々ありますが、Guiで分かりやすい、WinSCPを用いる方法がおすすめです。ですので、WinSCPをダウンロード、インストールしてください。
####WinSCPの設定
転送プロトコルにSCPを選択し、IPアドレス、google.account、上と同じパスワードを入力し、設定をクリックします。
次にppkファイルを指定して、ログインします。
成功するとVMインスタンスのhome/google.accountのディレクトリーが表示されます。
WinSCPはいろいろ試した中で、アップロードとダウンロードが最速で最も簡易にできると感じています。
####Linux用のAnacondaインストーラーをSCPでVMにアップロード
https://www.anaconda.com/products/individual
からLinux用のインストーラー(拡張子sh)をローカルマシンにダウンロードします。
ダウンロード後、先ほど設定したWinSCPからhome/google.accountにアップロードします。
####Anacondaのインストール
PuTTyのShellにて以下のコマンド(bash以下)を入力してください。
$** bash Anaconda3-2020.11-Linux-x86_64.sh**
(Anacondaのバージョンは適宜変更)
同意確認に入るので、しばらく[enter]を押してください(下にMOREと表示されます)
3回ほど、Yes/Noの入力要求があるので、すべてYesで入力します。
####VMインスタンスへの再ログイン
無事インストールが終了したら、Anaconda環境を起動させるためにVMを一度閉じて、再ログインします。
- shellにexitと入力して閉じる。
- PuTTyからVMに再度ログイン。
- Anacondaの仮想環境が(base)でログインされる。
**(base)**が表示されたらAnacondaがインストールされた証です。
(PuTTyの外観(カラーやフォント)はchenge settingから変更できます。)
####任意の仮想環境の設定とactivate
-
condaのupdateをしておく。
$conda update -n base -c defaults conda
と入力。 -
任意の仮想環境設定(例は任意の仮想環境「qiita」でpython3.7を用いる)
$conda create --name qiita python=3.7 -
任意の仮想環境に入る
$conda activate qiita -
(qiita)google.account@インスタンス名 になっているのを確認
#Pythonの実行
ローカル環境で作成したpythonファイル(sample.py)をWinSCPでVMにアップロードし、
$python3 sample.py
と入力すると実行できるはずです。
ただし、必要なモジュールをinstallする必要がありますので、エラーが出るたびにインストールされていないモジュールをinstallします。
例えば $conda install pandas
#イメージの保存
構築した環境はイメージで保存でき、次に作成するVMインスタンスに反映させることができます。
(このことを知らずに、しばらくVMインスタンスを削除した後、環境の再構築をしていました)
この後、jupyter notebookなども設定されると思いますが、そうした手間のかかった構築作業や作成したファイルも次のVMインスタンスに引き継ぐことができるので、環境が補強されるたびにイメージを保存しておくとよいです。
なお、イメージの保管にはギガベース当たり$0.8の費用が発生するので、サイズの大きなファイルはローカルマシンにダウンロードしておき、削除したほうが賢明に思われます。
また、VMインスタンスは都度シャットダウンか削除しておかないと、起動中は料金が発生します。無料クレジット枠は約30,000円分あり、承諾しない限りは課金モードに入らないので、知らずに課金されることはないと思いますが注意が必要です。
イメージファイルをうまく利用し、無駄な課金の抑制をすることで、健康なクラウドコンピューティングライフを楽しむことができると思います。
#あとがき
以上です。画像が入り乱れてしまっており、乱雑な記事で失礼します。
2021年のGWはクラウドコンピューティングのpython環境構築をマスターすることに明け暮れました。
記事はGCPですが、AWSでもほぼ同様にできることが分かりました。
記事にはしていないjupyter環境構築は、configファイルの編集とファイアーウォールの設定でつまずきましたが、いろいろな方のQiita記事の良いところを繋ぎ合わせて、達成出来ました。
将来の見晴らしがよくなり、非常に充実したGWになったのですが、家族には不評です・・・
皆様のクラウドコンピューティングライフを始める一助になればと思います。