Dragon Arrow written by Tatsuya Nakaji, all rights reserved animated-dragon-image-0164

Google Cloud Platform (GCP) の deep learnig VM で機械学習

イメージ
Jan 24, 2020

Google Cloud Platform の deep learnig VM で機械学習


Google Cloed Platform とは


Google Cloud Platform(GCP) とは、Google がクラウド上で提供するサービス群の総称です。
Google 社内で使われているものと同じテクノロジーやインフラを使用して、お客様のインフラ環境をクラウド化できます。
基本的な構成要素が初めから各種サービスとして用意されているため、それらを使用してすばやく開発を行うことができます。


Deep Learning VM とは


AI Platform Deep Learning VM Image は、データサイエンスや機械学習タスク用に最適化された Debian 9 ベースの Compute Engine 仮想マシンイメージのセットです。すべてのイメージに主要な ML フレームワークとツールがプリインストールされています。また、GPU を持つインスタンスですぐに使用でき、データ処理タスクを高速化できます。


筆者の経緯


kaggleなどのコンペや大量のデータを扱う研究では、Google Colaboratoryやkaggleのコンソールではメモリーが足りなくなります。

Google Colaboratoryはとても優れたサービスで、GPUやTPUまで無料でつけられますが、筆者はRAMが不足してしまったがためにコードを実行できなくなったので、必要に応じてGPUやマシンタイプを変更できる、GCP にたどり着きました。(AWSやmicrosoft Azureもあります)


他のVMと何が違うの??


このVMでなくても実行環境を作ることはできますが、インスタンスを起動する前の初期設定が、ある程度機械学習向けに設定されており、主要な ML フレームワークとツールがプリインストールされています。

GPUやメモリをどう設定していけばいいか、細かい設定をどうするかにあまり悩まされない分、機械学習目的のユーザーにおすすめです。


手順


はじめに、Google Cloud SDK の導入が必要です。Google Cloud SDKを導入していない人は先に以下の記事から準備を済ませてください。

Google Cloud SDK の導入


手順1. deep learning VMをデプロイする


Compute Engineのマーケットプレイスからdeep learning VMで検索



COMPUTE ENGINEで起動をクリック



必要に応じて変える




デプロイして無事に起動すれば手順1は終了

うまくいかない場合は、だいたい IAMの管理->割り当て でGPUの上限数が選択した個数より低くなっている。

割り当てを一切触っていないユーザーは、全て割り当ての上限は0になっているはず。

上限をあげて、デプロイする。


手順2. Compute Engineのメタデータからキーと値を保存


以下の画像のように書き込んで保存する





手順3. deep learning VMにライブラリやデータなど必要なものを入れる


3-1. はじめにローカルのパソコンからSSH接続でインスタンスの中に入る

$ gcloud compute ssh [vmの名前] --zone=[vmのゾーン]  -- -L 8888:localhost:8888


3-2. anacondaの導入

https://repo.anaconda.com/archive/ から最新のanacondaを探す

xxxxxx:~$ wget https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh
xxxxxx:~$ bash Anaconda3-2019.03-Linux-x86_64.sh

Do you accept the license terms? [yes|no]
[no] >>> yes
Anaconda3 will now be installed into this location:
/home/aaa@gmail.com/anaconda3


  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below


[/home/aaa@gmail.com/anaconda3] >>> 
PREFIX=/home/aaa@gmail.com/anaconda3
xxxxxx


.bashrcの内容を保存

$ source ~/.bashrc


バージョン確認

$ conda -V
conda 4.6.11

-bash: conda: command not found と出る場合はpathが通ってないだけなので、以下のようにする

パスが通ってないみたい

$ export PATH=/home/aaa@gmail.com/anaconda3/bin:$PATH (これは自分の設定するパス)


conda自体を更新

$ conda update -n base -c defaults conda


仮想環境を構築

pythonバージョン

(base) aaa_gmail_com@xxxx-vm:~$ python --version
Python 3.7.3

仮想環境を例えば、kaggle_envという名前で構築

$ conda create --name kaggle_env python=3.6
(base) aaa_gmail_com@xxxx-vm:~$ conda activate kaggle_env
(kaggle_env) aaa_gmail_com@xxxx-vm:~$


仮想環境に変わったのでpythonの環境も3.6になっている

(kaggle_env) aaa_gmail_com@xxxxx-vm:~$ python --version
Python 3.6.10 :: Anaconda, Inc.


ちなみに、$ conda deactivate で仮想環境無効化できる。sshから抜けてもdeactivateした状態(base)に戻るので、sshした際はactivateコマンドを再度行う


infoコマンドで作成済の仮想環境一覧を確認

(kaggle_env) aaa_gmail_com@xxxxx-vm:~$ conda info -e


Jupyter Notebookをインストール

(kaggle_env) aaa_gmail_com@xxxxx-vm conda install jupyter

jupyterにパスワードまで設定したい人は以下を参照

筆者は、めんどくさいのでやってないですが、時間があればやろうかと思います。

https://qiita.com/hiro0822/items/44717858462366eda957


手順4. jupyterの起動


以下のコマンドでjupyter notebookが起動する

細かいオプションは各自好みに調整

(kaggle_env) aaa_gmail_com@xxxxx-vm:~$ jupyter notebook \
  --NotebookApp.allow_origin='https://colab.research.google.com' \
  --port=8888 \
  --NotebookApp.port_retries=0 \
  --no-browser


最後に


自分のファイルを実行するのに必要なライブラリをインストール

追加で必要なライブラリを揃える

  • pandas
(kaggle_env) aaa_gmail_com@xxxxx-vm:~$conda install pandas -y
  • seaborn
(kaggle_env) aaa_gmail_com@xxxxx-vm:~$conda install seaborn
  • numpy
(kaggle_env) aaa_gmail_com@xxxxx-vm:~$conda install  numpy
  • keras
(kaggle_env) aaa_gmail_com@xxxxx-vm:~$conda install keras
  • tensorflow
(kaggle_env) aaa_gmail_com@xxxxx-vm:~$conda install tensorflow
  • xgboost
(kaggle_env) aaa_gmail_com@xxxxx-vm:~$conda install -c anaconda py-xgboost
  • lightgbm
(kaggle_env) aaa_gmail_com@xxxxx-vm:~$conda install -c conda-forge lightgbm
  • tqdm
(kaggle_env) aaa_gmail_com@xxxxx-vm:~$conda install -c conda-forge tqdm


おまけ

また、以下のように設定すればGoogle Colaboratoryと接続できます。

https://research.google.com/colaboratory/local-runtimes.html

(kaggle_env) aaa_gmail_com@xxxxx-vm:~$ pip install jupyter_http_over_ws
(kaggle_env) aaa_gmail_com@xxxxx-vm:~$ jupyter serverextension enable --py jupyter_http_over_ws
(kaggle_env) aaa_gmail_com@xxxxx-vm:~$ jupyter notebook \
  --NotebookApp.allow_origin='https://colab.research.google.com' \
  --port=8888 \
  --NotebookApp.port_retries=0 \
  --no-browser