😊

GoogleColabのGPUをCursorで使えるようにしよう!

2024/04/22に公開

はじめに

GoogleColabでコードを書いていると、やっぱりCursorのあの快適な環境でコードを書きたくなりますよね。でも、機械学習のタスクではGPUを使いたい。そんな葛藤を抱えている人も多いのではないでしょうか。
そんな中、私はこの記事を見つけました。

https://note.com/sakamoto0812/n/n5644f97a158c

この記事のおかげで、あっさりとCursorからColabに接続することができました。めちゃくちゃ助かりました。
でも、ipynbファイルでコードを実行しようとすると、なぜかできない。「カーネルを選べ」と言われてしまいます。
そう、実行するランタイムがないとPythonも動かないんですよね。
じゃあ、カーネルを選んでみようか。
確かに実行するランタイムがないとPythonも動かないよな!選ぼうか!
んーーーー、どうやるんだ...SSH接続したはいいけど、ipynbで使えるカーネルがない...
ここで力尽きそうになりました。

結論、「Cursorのターミナル上で実行できれば問題ないんじゃない?」と。
ColabにSSH接続した段階で、CursorのターミナルもColabにつながってます。
そうすると、Cursorの恩恵を受けながら.pyで書いて、Cursorで開いたターミナルで実行することでColabのGPUを使えるというわけです。
最高です。
今回はその覚書を書いています。(ipynbでも使える方法を知っている人は教えてください。)

GoogleColabはSSH接続を禁止しているか?

まずは解説の前に兎にも角にも、規約を確認しておきましょう。
GoogleColabは一時期SSH接続を禁止していたり、していなかったりしているようで、その時々で制限は変わっているようです。
なのでSSH接続していいのかどうかは接続する前に確認しておきましょう!

まず結論から言うと2024/4/21現在では、課金すれば制限は解除されると記載があります。

Colab のコンピューティング単位数の残量がプラスでない場合に料金なしで実行する Colab のマネージド ランタイムでは、以下の行為は禁止されており、警告なしでいつでも強制終了される可能性があります。
SSH シェル、リモート デスクトップなどのリモート コントロール
ノートブック UI をバイパスした、主にウェブ UI を介したやり取り
チェスのトレーニング
分散コンピューティング ワーカーの実行
こちらからいずれかの有料プランを購入し、コンピューティング単位数の残量をプラスに維持すると、これらの制限を解除できます。これらの説明に一致するすべてのランタイムが強制終了されるわけではありません。
https://research.google.com/colaboratory/faq.html#disallowed-activities

無料のままSSH接続を実行するのは禁止されているのでやめておきましょう!
Proにしても月額1179円で、GPUいっぱい使えるので安いです!Proにしましょう!
https://colab.research.google.com/signup?utm_source=faq&utm_medium=link&utm_campaign=disallowed-activities

CursorでColabにSSHする。

では実際に解説していきます。
基本は以下のnoteがわかりやすいです。私の書いたやつを見るより、こっち見た方がいいです。
https://note.com/sakamoto0812/n/n5644f97a158c
このnoteを読んですでにSSHできてるよ!って方はこの章はスキップして、次見てください。
Cursorはbuild-inでRemote-SSHが入ってるので、インストールする必要はありません。

1. Cloudflaredをインストールする

私はMacを使っているので以下のコマンドでインストールします。

brew install cloudflared

その他を使っている方は以下から適したものをinstallしてください。
https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/

以下のコマンドでCloudflaredの場所を確認してください。次のSSHの設定の際に使用します。

which cloudflared

2. CursorでSSH接続の設定を準備する。

まずコマンドパレットを開いて、Remote-SSH: Open SSH Configuration File...をクリックしてください!

そしたら.ssh/configのファイルが開かれると思うので、以下を書き込んでください。

Host *.trycloudflare.com
    HostName %h
    User root
    Port 22
    ProxyCommand <whichコマンドで出力されたcloudflaredのパス> access ssh --hostname %h

3. Google Colabの設定

GoogleColabを開いて、以下を実行してください。

# ローカルに繋げたい人はここ書かなくてもいいです。
from google.colab import drive
drive.mount('/content/gdrive')

!pip install colab_ssh --upgrade

from colab_ssh import launch_ssh_cloudflared
launch_ssh_cloudflared(password="<パスワード>")

上記コードを実行すると以下のように表示されるので赤枠のhostnameをコピーしておきましょう。

4. CursorでSSH接続する。

コマンドパレットを開いて、Remote-SSH:Connect to Host...をクリックして、コピーしたhostnameを入力しましょう。

あとはパスワードを入力すると接続できます!

※たまに接続に失敗してしまうようなので、3からやり直してみてください。

CursorでGPUを使えるようにする

SSH接続してもipynbファイルだとカーネルの選択がうまくできず、GPUがつかえません(使い方わかる方いたら教えてください。お願いします🙇)
Colab上には(当たり前ですが)CUDAがインストールされていますが、パスは通っていません。
なので今回は、Cursorでターミナルを開いて、その上でGPUを使うためにCUDAのパスを通すことにしましょう。
そうするとGPUが使える状態になります。

以下を実行しましょう。毎回実行することになるのでファイルにまとめて実行できるようにしておくと便利です。

export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

実行したら、ちゃんと使えるようになっているかを以下のコマンドで確認しましょう。

nvcc -V

こんな感じになっていればパスが通っていると思います。

~# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Aug_15_22:02:13_PDT_2023
Cuda compilation tools, release 12.2, V12.2.140
Build cuda_12.2.r12.2/compiler.33191640_0

これでGPUが使える状態になりました。ぜひいろいろ試してみてください。

最後に

Xやってるのでぜひフォローお願いします。
@hudebakonosoto

https://twitter.com/hudebakonosoto

Discussion