📒

面倒な分析はGoogle Colabにやらせよう

2024/07/25に公開

これはなに?

ちょっとした分析の用事で久しぶりにGoogle Colaboratory (以下 Colab) を触ったら結構良くなってました。Cursorでコード書くのも快適だけど、面倒なデータ分析やるならやっぱColabの方が便利だなぁと再認識しました。

そこで、最近Colabに追加されて便利になったと思う機能を簡単にまとめてみました。(見てわかる通りタイトルはもちろん話題のあの本のオマージュです😇)

最近のColab便利機能を使おう

粒度まちまちですがざーっと書いていきます。「最近」の定義は曖昧なのでご容赦ください。

Github Copilot的なコード補完を使おう

Github Copilotみたいなコード補完機能がついにColabに搭載されました。↓のように補完してくれます。

VS CodeでもCursorでも一緒やん、って思われるかもしれませんが、Colabのような多機能Notebook上で使えるとやっぱ便利なんですわ。あとは無料版のColabで使えるのも嬉しいポイントです😇

Geminiにコードを生成してもらおう

以下の3ステップでGeminiにコードを書いてもらえます。コードを生成してセルに代入してくれるのが想像してたより便利なのでぜひ百聞は一見にしかずで試して見てください。


generateを押すと


テキストボックスが出てくるので


質問を書くと生成したコードをセルに入れてくれる

自分で設定しないといけないパラメータを右半分にフォームとして表示してくれるのが気が利いてて便利だなと思ったのですが、これフォーム機能っていうColabの機能なんですね。今まで知りませんでしたが、コード生成機能と組み合わさると便利だな〜、と思って感心してました。

ちょっと込み入ったコード生成はまだ厳しい印象ですが、↑のようなちょっと面倒な権限設定コードとか、matplotlibでのグラフ描画コードとかの実装は格段に楽になって感動しました😇

エラー原因はGeminiに聞こう

サイドパネルからGeminiとチャットをすることも可能になりました。普通にチャットしてもいいのですが、セルの実行がエラーになった場合に「Explain error」ボタンを押してエラーメッセージを直接投げるのがとても便利になっています。

動きがちょっと遅いのと、比較的簡単な質問でもたまに答えられないこともあるのが改善の伸び代かなぁという点でした。チャットとしてはmatplotlibの日本語の文字化け直せなかったやり取りなどがあり、もうちょっと頑張って欲しいかなと思いました。

API_KeyはSecret機能で管理しよう

↓の記事に詳しいですが、ColabにAPI_KeyなどのSecretを登録することが可能になっています。誰かに共有するNotebookにAPI_Keyなどを入れたい場合でもこの機能を用いれば共有した相手にSecretが漏れる心配がありません。

https://qiita.com/suzuki_sh/items/4817e3423f2989bbb9ed

共有してもらったColabにopenaiのキーの消し忘れとかが稀によくあるけど、この機能で呼び出すようにしておけば安心です😇

バックエンドは好きな構成のGCEを使おう

Colab ProとかPro+もいいのですが、会社がお金を出してくれる (or 十分な金銭的な余裕がある) ならCustom GCEで好きなスペックのVMを立ててそれをColabのバックエンドとして利用するのが快適だと思います。端的にいうと、好きな構成でたてたインスタンスの上でColabを動かす感じです。

A100や大容量メモリがお手軽()に利用可能になるので、重いデータでモデルを学習させる時とかはこの方法が便利で気に入ってます。

英語ですが↓の動画の説明が簡潔でわかりやすいと思います。

https://youtu.be/ieLpZ4wnb4A?si=nI1_Ck4YCiSx6Fuo&t=387

データの入出力はGoogle Driveマウント機能を使おう

これはかなり前からある機能ですが、Google Driveをローカルディスクのようにマウント(接続)できます。

マウント方法いつも忘れて毎回調べていたのですが、Geminiのコード生成で一発で出せるようになったのでより一層気軽に使えるようになって嬉しいです😇

Colabの中でもPandas Profilingを使おう

これはColabそのもの機能でもなんでもないのですが、以下の記事に沿って実行すれば Pandas Profiling を使えます。

https://python.plainenglish.io/how-to-use-pandas-profiling-on-google-colab-e34f34ff1c9f

なんだかんだテーブルデータをまず俯瞰するときはPandas Profilingを使いたいのでColab内で使えるのが地味に便利です。(めちゃくちゃ遅いのが玉に瑕ですが…)

大きなデータはcuDFを使おう

個人的には最近触ることがあまりないのですが、昔は四苦八苦してcolabにいれる必要があったcuDFが、なんと今なら標準サポートされています。(最近はでかいファイル触るならPolarsやろ常考?知らない子ですね…。)

https://developer.nvidia.com/blog/rapids-cudf-instantly-accelerates-pandas-up-to-50x-on-google-colab/?ncid=so-link-767320&=&linkId=100000261128919

雑多なデータ処理はGoogleSpreadsheet連携機能を使おう

ツイートに書いたやつです。クソデカデータでは使えないと思いますが、小さなデータに雑多な処理するときはSpreadsheet連携機能を呼び出してVLOOKUPなりなんなりするのが楽なんじゃないかなと思います。

https://x.com/MLBear2/status/1815524162913661206

連携機能その2でGoogleSpreadsheetからデータを持ってこよう

個人的には使ったことがないですが、触っているSpreadsheetのデータをColabですぐにpandas dfで開くことが可能なコードを生成する機能もあるそうです。

BigQueryからGoogle Spreadsheetにエクスポートしてそこでデータ整形したものをColabに読み込む時とかは便利かな?

おわり

雑多な感じになってしまいましたが、比較的最近のColabの便利機能を紹介してみました。
最近触られてない方は久しぶりに触ってみるといいことあるかもですね。それではまた!

Discussion