Help us understand the problem. What is going on with this article?

Kaggle用のGCP環境を手軽に構築

GCPでkaggle用の環境を作るのに苦労した

こんにちは、Qiita初投稿のhiromuです。

最近、KaggleのJigsaw Unintended Bias in Toxicityc Classificationに参加し、3位入賞を果たすことができました。
その際に、必要に駆られてGCPを使ったのですが、意外とつまずくポイントが多かったです。
なので、自分へのメモ用もかねてこの記事を書いています。

Compute Engineのデプロイまで

@lain21さんの記事の「GCEインスタンスの作成」がとても丁寧でわかりやすいです。
ただ、コメント欄で紹介されているように、事前にGPUの割り当てを行なっておく必要があります。

やり方は以下の通りです。
スクリーンショット 2019-08-09 0.23.46.png
1.コンソールのIAMと管理->割り当てをクリック
2.指標のチェックボックスでGPUs(all regions)にチェックをつける
スクリーンショット 2019-08-09 0.27.14.png
3.横の四角にチェックをつけ、割り当てを編集をクリック
4.必要な情報を入力し、送信
5.承認されるまで少し時間がかかるので、気長に待ちましょう

記事の通り進んでいくと、ここでCloud SDKインストールするのですが、僕はここでつまずいてしまったので別の方法を後で紹介します。

Dockerは取っつきづらいので手打ちで解決

僕は、Docker fileなんじゃそれ状態だったので紹介されているfileの中身を手打ちすることにしました。

ここから実際に環境を構築していきます。
GCEをデプロイしたら、VMインスタンスに作ったインスタンスが表示されるはずです。
そこで、接続という文字の下にあるSSHを押してみましょう。
ターミナルのようなものが立ち上がるはずです。
まずは、以下のコマンドを打ってみてください。
sudo apt-get update
sudo apt-get upgrade
sudo apt install git wget make nano vim gcc build-essential tmux htop

3行目の部分はお好みで。emacsを入れるのもありです。

Anacondaのインストール

AnacondaからLinuxバージョンのpython3.7をダウンロードします。
wget https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh
bash Anaconda3-2019.07-Linux-x86_64.sh
source ~/.bashrc

これは、2019年8月8日時点で最新のバージョンをダウンロードするコマンドです。
AnacondaのダウンロードボタンのURLをwgetの後ろにつければいつでも最新版をダウンロードできます。

Jupyter Notebookを使えるようにする

ここが、最大のつまづきポイントでした。
Cloud SDKなしで実行する際に、とても参考になる@tk_01さんの記事を置いておきます。
vimを使ってconfigファイルに書き込む作業は、臆することなく下までスクロールして数行を書き足すだけなので安心してください。

必要なライブラリを入れる

ここは、参加するコンペによって変わってくると思います。
Jigsaw Unintended Bias in Toxicityc Classificationの場合は、以下のようにしました。

・PyTorch
conda install pytorch torchvision cudatoolkit=10.0 -c pytorch
公式ホームページから簡単にコマンド生成できます。

・Apex
GPUのメモリ使用量を下げたり、計算時間を短くしてくれる優れものです。
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

・Bert (PyTorch ver)
コンペ時から改良がなされ、コマンドが変わっていますが、pipインストールだけですぐ使えます。
pytorch-transformers
pip install pytorch-transformers

・その他
実際に回したいコードを回して、エラーが出たらその都度入れていきましょう。

コンペに使うデータの読み込み方

これは、ベストな方法ではないと思いますが、簡単にできます。
1. Kaggleから使いたいデータセットをダウンロードします。
2. GCPのStorageにアップロードします。
3. インスタンスのターミナルで次のコマンドを打ち込むだけです。
mkdir input
gsutil -m cp -r gs://バケット名/フォルダ名/ファイル名 input/

上のコマンドは一例なのでデータの構造によって若干異なると思います。
tkm2261さんの詳しい解説がYouTubeにあるのでぜひ参考にしてください。

終わりに

多分、上記の流れで基本的な計算環境は整うはずです。
僕自身もGCPはなかなか使い方がわからず、敬遠しがちでした。
なので、この記事を読んでやってみようと思ってくれる方がいたらとても嬉しいです。
何かわからないところや間違っているところがあったら、ぜひ教えてください!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away