GoogleColabにトンネルを掘る

こんにちは、エンジニアのwadaです。

この記事は、ギークフィードアドベントカレンダー2024の10日目の記事です。

ギークフィードの有志が毎日ブログを投稿しているので是非チェックしてみてください。

今回はGoogleColabにトンネルを掘って自分のターミナルからインスタンスにアクセスする方法を共有します。この方法を使うことでGoogleColabが提供するウェブサイト上のターミナルを回避して、自分の好きなターミナルからGoogleColabにアクセスでき、数百GBのマシンや高級なGPUが自分のものになっているような気分になれます。

やることは以下です

  1. Googleコラボでインスタンスを手動で起動
  2. トンネルの設定
  3. GoogleColabでインスタンスを起動
  4. ターミナルからコラボのインスタンスにアクセス

 

トンネルを設定

 

まず、localtonetというサービスにアクセスして以下を行います。

  • APIキーの取得
  • トンネルの作成

リバーストンネルはインターネットからアクセスできるサーバーを持っていれば作れますが、

このサービスを使えば、手間のかかるサーバーの設定を特にしなくてもクリックするだけでトンネルを作成できます。

(ngrokやlocaltunnelなども使ってみましたが、localtonetはtcp, udpトンネルも簡単に設定できるのでお勧めです)

まず、ダッシュボートでAuthTokenを取得しておきます。(図の赤線部)

 

 

次に以下のように「TCP-UDP」メニューにアクセスし、localtonet経由でGoogleColabインスタンスのlocalhost:22ポートにアクセスできるように設定します。

 

 

別のトンネルの情報が見えてますが、再接続するたびにURLが変わるので問題ないです。

 

GoogleColabでインスタンスを起動

 

次にインスタンスを起動します。

GoogleColabにアクセスし、以下の設定をした後Colabに貼り付けて実行してください。

  • 自分のsshの公開鍵を<YOUR PUBKEY>に設定する
  • localtonetで取得したAuthTokenを<YOUR TOKEN>に設定する

やっていることは、sshサーバーの起動とlocaltonetの起動ですが、

ちょっと工夫している点として、環境変数PID1のプロセスの環境変数を.bashrcに書き込んでいます。

GoogleColabのインスタンスはコンテナとして起動されているらしく、コンテナ起動時に環境変数が外から設定されており、設定ファイルがインスタンス内になさそうだったのでこの方法を使っています。

これをしないとGPUのライブラリが正常に読み込まれません。

 

トンネル起動

 

localtonetに戻って作ったトンネルを起動します。

作成したトンネルのACTIONの欄にあるボタンを押すと接続され、接続に成功するとSuccessが表示されます。

 

ターミナルから接続

自分の好きなターミナルを使ってトンネルのSERVER DOMAINにrootユーザーでアクセスするとコラボのインスタンス内に入れます。

見てください、メモリが300GB以上あります。

環境変数設定やってるのでちゃんとGPUも認識されています。

 

まとめ

 

今回は、GoogleColabにトンネルを掘って自分の好きなターミナルからアクセスしてみました。

あんまりこんなことをやる人はいないかもしれませんが、ためにしにちょっと大きめの生成AIを実行したいときに、設定ファイルをshellから送れるのでちょっと便利です。

やってないのですが、同じ方法でgithub-actionsのコンテナとかにも入れると思うので、暇があれば、入って中がどんな風に設定されているのかを見るのも面白いかもしれません。

 

この記事が気に入ったら
いいね ! しよう

Twitter で
The following two tabs change content below.
アバター
wada
YouWireという商品の開発にかかわっています。 数学と工学が好きです。ソフトウェアと工学を組み合わせて様々なものの自動化をしたいと考えています。今の興味は植物の栽培で、個人で野菜の栽培を自動化できたら楽しいと思っています。

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ