非GUIのマシンでGoogleDriveをマウントする

A8バナー広告

Quick summary

  • CUIだけの環境でGoogle Driveをマウントする。
つまり、こういうネットワークを作る

なんでGoogle Driveをマウントする?

そもそも、どうしてGoogle Driveをマウントする必要があるのか?

それはColabを使いたいから。ColabはGoogle Driveをストレージとして利用する(方法が一般的)

でも、Colabは長時間の実行が不可能(最大1日)。

ぼくのケースでは、データ生成とデータ管理のために1日を超える計算時間が必要。internal networkに存在するCPUマシンを利用している。

似たような状況はフリーランサーのエンジニアが遭遇するかもしれない。例えば、メイン開発環境がAWSのマシン(CPU)。深層学習のためにColabを使いたい、と言ったケースだ。

internal networkのCPUマシンからColabへどうやってデータ転送するか?

例えば、scpを経由してラップトップにデータダウンロードして、Google Driveへ手動アップロードする?ご冗談を。

google-drive-ocamlfuse

google-drive-ocamlfuse (ocamlfuse)っていうライブラリが存在してる。

ocamlfuseはLinuxマシンがGoogle Driveのマウントを可能にする。コマンドラインでGoogle Driveへアクセスできることはとても嬉しい。

でも、ocamlfuseの最大の問題点はGUI環境が不可欠なこと。というのも、Google DriveへのアクセスAuthotization(Authentificationではない要注意)の際にWebブラウザが必要になるからだ。

じゃあ、どうするか?

GCPで独自のAuthorizationアプリを作る

すでに答えが出ている。このリンクの通りにすれば成功した。

ちょっと複雑なケース

ぼくが構築したネットワークはもう少し複雑。

ぼくはColabの利用料金を自分のクレジットカードで支払ってる。なので、自分のメインGmailアカウントでColabを使ってる。当然ながら、Google Driveは自分のもの。個人的なデータもたくさん入ってる。

で、問題はここから。ぼくの使ってるCPUサーバーは「共有」である。誰でもsudoを使えてしまう環境。

もし、このCPUサーバーでocamlfuseを個人Google Driveに対してマウントしたら・・・ぼくの個人データがサーバーユーザーにアクセス可能になってしまう。それはマズイ。極めてマズイ。

なので、図のようなネットワークにした。ocamlfuseがマウントするGoogle Driveは「仕事用」のデータだけが存在するDrive。個人Google Driveが仕事用Google Driveをデータ共有する。

これでColabは仕事用Driveへアクセスできる。