0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GCPでGPU借りてKaggle環境構築

Last updated at Posted at 2025-03-06

はじめに

こんにちは、私は国立大学院生で、現在は研究で3Dセンサを用いた物体認識をしています。普段はありがたいことに研究室にGPUを4台積んだサーバPCがあり、ローカルで深層学習をすることができます。なのでクラウド環境を研究で使うことはないのですが、ふとクラウド環境でGPU使った学習をするときはどのように設定すればいいんだろうと思い、今回はGoogle Cloudでkaggleコンペに取り組める環境を0から構築しました。

本記事の流れ

  1. GCP側でGPUが入ったインスタンスを作成
  2. SSH接続してローカル(VSCode)で作業できるようにする。

参考記事

基本的にこちらの記事を参考に環境をつくらせていただきました。

GCPでGPUが入ったインスタンスを作成

ここからはGCPに登録していて、プロジェクトを作っている前提で進めていきます。まだプロジェクトを作っていない人は新規プロジェクトを作成しておいてください。

1. VMインスタンスを作成

左上のナビゲーションメニューからComputer Engine -> VMインスタンスに遷移し、インスタンス作成ボタンを押してください。

スクリーンショット 2025-03-06 3.12.13.png

そうすると上のような画面が開くと思います。GPUを選択して所望のGPUのタイプ、GPUの数を選んでください。
今回は簡単のため、一旦以下の設定にしています。ご自身のタスクに応じた設定にしてください。

構成要素 選択
GPU NVIDIA T4
リージョン 東京
VMプロヴィジョニングモデル(高度な構成) スポット
メモリ ハイメモリ

メモリはCPUメモリのことです。標準(1コア4GB)だとモデルのロードすらできずプロセスが強制終了します。4コア16GB以上を選択しておきましょう。

続いて、左側のOSとストレージ設定を押して、インスタンスのOSとストレージを決める画面が出てきます。

スクリーンショット 2025-03-06 3.13.07.png

今回は以下の設定です。ストレージは200GB程度にしておくと、後述のKaggle環境のDockerイメージを引っ張るのに十分です。

構成要素 選択
OS Ubuntu 20.04
サイズ 200GB

ここまで設定したら作成を押しましょう。

GPU割当上限の設定

VMインスタンスを作成すると、以下のようなエラーマークが出ると思います。これはGPUの利用上限がデフォルトでは0なので、インスタンスを作成できないというエラーです。

スクリーンショット 2025-03-06 3.37.15.png

エラーマークをクリックして割り当てリクエストを行い、自身の設定したGPU数以上をリクエストしましょう。

体感10分以内にはGoogleから承認メールが届くと思います。しかし、GCP上での反映には少し時間がかかる場合もあるので、承認されたのにインスタンスが起動されていないという場合はしばらく待って開いてみてください。

ローカル(VSCode)からGPUインスタンスに接続し、AIをフル活用

ここからは、ローカルでGPUインスタンスに接続し、VSCodeで直感的に機械学習する設定をしていきます。

1. ローカルでSSHキーを作成

以下のコマンドでローカルにSSHキーを作成します。

KEY_FILENAME ・・・自分がわかりやすい名前
-C・・・コメント、gcpに登録しているメールアドレスを入力しておく。

ssh-keygen -t ed25519 -f ~/.ssh/KEY_FILENAME -C "your_email@example.com"

すると、秘密鍵KEY_FILENAMEと公開鍵KEY_FILENAME.pubが~/.sshの配下に作成されていると思います。

次に公開鍵をGCPに登録するので、catコマンドで公開鍵情報を確認してください。
私の場合は以下のようになっています。このssh~から最後までをコピペしておいてください。

図1.png

2. GCPインスタンスに公開鍵を設定

先ほどの公開鍵を作成したインスタンスに登録します。VMインスタンス -> 編集 -> SSH認証鍵で、項目を追加します。設定は

ssh-ed25519 AA**************K USERNAME

です。追加したら設定を反映させてください。USERNAMEの部分は登録しているGmailアドレスの@の前まででいいはずです。
(参考)VMにSSH認証鍵を追加

3. ローカルのSSH-設定

ローカルの~/.ssh/configに以下を追加しましょう。Hostの名前は個人で分かりやすいように変更してください。

HostName ・・・VMインスタンスの外部IP
User・・・VMインスタンスのユーザ名。基本的に登録メールアドレスの@前までだと思います。
IdentityFile・・・先ほど作成した秘密鍵のパス

Host gcp-gpu
    HostName xxx.xxx.xx.xx
    User hoge
    Port 22
    IdentityFile ~/.ssh/[秘密鍵ファイル名]

ここまでできたらターミナルで

ssh gcp-gpu

を実行すると、GCPインスタンスに接続できるはずです。

4. VSCodeの設定

VSCodeにはssh接続やコンテナ接続に便利な拡張機能があります。
それがこちらです。

スクリーンショット 2025-03-06 16.35.09.png

これをインストールするとサイドバーにPCウィンドウのようなものが現れます。開くと、自身が設定したホストが表示されます。(私は趣味で色々いじっているのでたくさんあります。。。)

スクリーンショット 2025-03-06 16.43.56.png

GCPのホストを選択して起動し、ウィンドウ左下が画像のようになっていればVSCodeからの接続完了です。
最後は、Dockerを使って最速でGPUを使えるようにしましょう。

スクリーンショット 2025-03-06 17.22.03.png

Kaggle環境をDocker構築

最後にKaggle環境の構築です。せっかくGPUを借りたのでGPUを使えるようにする必要はありますが、ドライバインストールしてCUDAとcudnnインストールしてと、普通はかなり手間がかかります。Dockerを使うと幾分かマシになるので今回はその方法を説明します。

1. NVIDIAドライバーのインストール

今回はこちらのコマンドでインストールしました。

sudo apt update
sudo apt install -y nvidia-driver-535

nvidia-smiを実行して、GPU情報が表示されたらOKです。

2. Dockerのインストール

curl https://get.docker.com | sh
systemctl start docker && sudo systemctl enable docker

3. NVIDIA Container Toolkitのインストール

NVIDIA Container Toolkitのインストール方法は以下に記載されています。
InstallationとConfigurationまで手順に従ってください。

ここまででDockerでGPUを使える準備が整いました!次にKaggle公式のDocker ImageをPullします。

4. Kaggleイメージのビルド

docker pull gcr.io/kaggle-gpu-images/python:latest

少し時間がかかります。Pullできたら、コンテナを起動しましょう。
ENV_NAMEはわかりやすい名前に適宜してください。私は kaggle-gpu-containerとしました。

docker run --gpus all -itd --rm -v /home:/home --name ENV_NAME gcr.io/kaggle-gpu-images/python /bin/bash

問題なく立ち上がれば、あとはVSCodeからコンテナに接続するだけです!

5. VSCodeからコンテナ接続

前項で説明したように、VSCodeでVMインスタンスに接続した状態では以下のような画面になっていると思われます。
この状態で黄色い部分をクリックしてください。

スクリーンショット 2025-03-06 17.22.03.png

そうすると実行中のコンテナにアタッチというメニューがあります。そこをクリックすると、先ほど起動したコンテナを選択できるはずなので、そちらを選択すると、VSCodeからコンテナ環境に接続できます。
VSCodeのGUIでファイルを作ったり、スクリプト編集ができ、かつKaggleのPython環境が備わっているので、インタプリタを設定すればちゃんとハイライトもつきます。

VSCodeで接続したコンテナには当然ローカルの拡張機能は存在しません。PythonやJupyter、フォーマッタ系の拡張機能は適宜インストールしてください。

スクリーンショット 2025-03-06 17.54.14.png

cudaもしっかり認識しているので問題なさそうですね!

おわりに

今回はGCPでGPUインスタンスを借りてKaggle環境構築するやり方を説明しました。
GCPは$300程度の無料クレジットがあるので、これからなるべく使い回していこうと思います。参考にされる方は、くれぐれも高額請求にならないように支払いアラートを設定しておいてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?