Google Cloud Platform (GCP)
https://cloud.google.com/?hl=ja
はじめに
GCPでGPUありDeepLearning学習環境を構築し、
ローカルでJupterからGPUに接続をしたときの手順メモです。
GPUを使うための設定が少し面倒でした。
※注記
以下は Ubuntu14.04 + CUDA 8.0のインストール方法です。
CUDA 9.1バージョン向けは以下が参考になります。
https://qiita.com/yukoba/items/3692f1cb677b2383c983
前提条件
GCPの無料トライアルから有料アカウントに切換えが必要となります。
クレジットカードの登録が必要ですが、切換え時に300ドルのクレジットがつくので、GPUありで使用していてもしばらくの間はタダで使えます。
ただしGPUの請求個数は1個まで、それ以上は別請求されました。
GPU割り当て申請
GCPのGoogle Compute Engine(GCE)もしくはDatalabでGPUを使うには、初回にGPU割り当て申請を行います。
GCPのコンソール画面を開く
メニュ⇒[IAMと管理]を開く
メニューバーから[割り当て]を選択
指標フィルタの[なし]を選択してフィルタをクリアし、NVIDIA P100またはK80を選択。GPU割り当ての一覧が絞り込み表示される。
リージョンを選択。以下ではasia-east1を選択し、割り当てを編集をクリック。
変更の部分に使用したいGPU数の上限を指定。ここでは「1個」と選択
電話番号と理由を記入して申請する。数分で承認のメールが届く。
Google Cloud SDKのインストール
GCP上でCloud Datalabを実行すると、ローカルPCとの時間のかかるデータやり取りなしに、グラフィカルに結果を見ることができる。
右上のボタンから[Google Cloud Shell]を起動
環境変数を作成
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
- Cloud SDK の配布 URI をパッケージ ソースとして追加
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
- Google Cloud の公開鍵をインポート
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
- Cloud SDK を更新してインストール
sudo apt-get update && sudo apt-get install google-cloud-sdk
- Datalabのインストール
sudo apt-get install google-cloud-sdk-datalab
- gcloud初期化
gcloud init
1⇒1⇒yを選択
- インストールできたか確認
gcloud components list
- プロジェクトリストを確認
gcloud projects list
詳細手順は以下を参照
https://cloud.google.com/sdk/downloads?hl=ja
インスタンスを作成
[VMインスタンス]でインスタンスを作成
ゾーンを先ほどGPU割り当てを行ったゾーンに設定。こここでは[asia-east1-a]を指定。GPUがないゾーンもあるので注意。
ブートディスクを指定。ここでは[Ubuntu 16.06 LTS]を指定。
IDとAPIへのアクセスは[すべてのCloud APIに完全アクセス権を許可]を選択
ファイアウォールの許可は両方ともチェックON
[管理]を選択して詳細を表示し、プリエンプティブを[オン]に設定。これは必須ではないが低コストとなる
VMインスタンスが作成される
インスタンスにログイン
- GCPの右上のボタンから[Google Cloud Shell]を有効にする
- 以下コマンドで作成したインスタンスにログインする
例えば、プロジェクトIDがthematic-mapper-190607、ゾーンがasia-east1-aでインスタンス名がinstance-1の場合は以下のようになる。
gcloud compute --project "thematic-mapper-190607" ssh --zone "asia-east1-a" "instance-1"
*** インスタンスを停止
$ gcloud compute instances stop instance-4 --zone asia-east1-a
NVIDIAドライバインストール
事前にNVIDIA Develpperの登録を済ませて置く。
https://developer.nvidia.com/developer-program
- 古いドライバの削除
dpkg -l | grep nvidia
dpkg -l | grep cuda
sudo apt-get --purge remove nvidia-*
sudo apt-get --purge remove cuda-*
- NVIDIAドライバーをインストール
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
apt-cache search 'nvidia-[0-9]+$'
sudo apt install nvidia-384
reboot
- CUDA 8.0を入れる
CUDA Toolkit Archive から CUDA Toolkit 8.0 をダウンロードする。install では cuda-8.0 を指定。
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda-8-0
- cuDNN Download から Download cuDNN v6.0 (April 27, 2017), for CUDA 8.0 をダウンロードする
tar xfvz cudnn-8.0-linux-x64-v6.0.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64/
sudo chmod a+r /usr/local/cuda-8.0/lib64/libcudnn*
- .bashrc でパスの設定を行う
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
必要ライブラリインストール
- Anaconda環境インストール
wget http://repo.continuum.io/archive/Anaconda3-4.0.0-Linux-x86_64.sh
bash Anaconda3-4.0.0-Linux-x86_64.sh
source ~/.bashrc
- Anacondaバージョン確認
conda -V
- 仮想環境作成
conda create -n py36 python=3.6
source activate py36
- cupyのインストール(必ずNVIDIAドライバの後に実行)
pip install cupy
- 必要ライブラリのインストール
chainerインストールの一例
pip install chainer
conda install -c https://conda.anaconda.org/menpo opencv3
pip install -U numpy
pip install matplotlib
pip install pillow
sudo apt-get install zip unzip
sudo apt-get -y install imagemagick
データをGoogle Cloud Storageとやり取りする
ローカルPCとインスタンスとの間でデータのやり取りを行いたいときは、Google Cloud Storage経由で行う。
メニューから[Storage]⇒[ブラウザ]を選択
バケットがなければ作成。Multi-Regionalで場所はどこでもよい。
バケットを選択するとファイル一覧が見られる。ファイル名をクリックするとダウンロード可能。
ファイルをインスタンスからStorageへコピー
gsutil cp ./filepath gs://thematic-mapper-190607/download
- ファイルをStorageからインスタンスへコピー
gsutil cp gs://thematic-mapper-190607/filepath ~/download
ローカルのJupyterでGCPに接続
以下を参考にしたらできました。
http://bfin.sakura.ne.jp/?p=923