2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
Google Colabとvscodeを用いたデータ分析環境運用Tips(全1記事)
リンクをコピー
記事をブックマーク
野澤哲照氏(以下、野澤):「Google ColabとVSCodeを用いたデータ分析環境運用Tips」ということで、野澤が発表します。
最初から免責で申し訳ないのですが、今日紹介する方法はGoogle側が推奨している方法ではないので、急に使えなくなる可能性もあります。そこだけご了承ください。
今日話す内容ですが、ざっくりGoogle Colab(Google Colaboratory)とVSCodeを紹介して、最終的にどういう環境が作れるかというところと、環境構築手順・運用時のポイントなどを話していければと思います。
私は、Twitterとかでは「たかぱい」というIDでやっています。コネヒト株式会社で、自然言語処理や推薦システムをメインにやりつつ、AWSを使って、機械学習基盤を作ったりしています。あと、週1でポッドキャストを友人と配信しているので、よければ聞いてみてください。
みなさん、ふだんどのような環境で機械学習の勉強をしていますか? コンペティションに参加していますか? という問いから始まるんですけれども。
いろいろと手段はあると思っていて、例えば自宅のマシン、クラウドの環境、Kaggle Notebookなどがあるのですが、今日は、このGoogle Colaboratoryのお話です。
今日は、実際に自分がこうやっていますよという方法を晒すのですが(笑)、ほかの方がどう使っているかもけっこう気になっているので、ぜひハッシュタグ#分析コンペLTで、私こうやって使ってますよとコメントをいただけると、すごくうれしいです。
ではまず、ColaboratoryとVSCodeを簡単に紹介します。知ってる方も多いと思うのですが、Colaboratoryは、ブラウザからPython等の処理を記述・実行できるサービスです。今月Pro+プランが出てきたので(※取材当時)、これでユーザーさんがけっこう増えるんじゃないかなと思っています。
VSCodeの説明ですが、これはMicrosoftが開発してるコードエディタです。使ったことがある方もたぶん多いと思うのですが、拡張機能がけっこう豊富です。今回は、「Remote - SSH」という拡張機能を使って環境を構築していきます。
まず、最終的にどういう環境になるか、イメージを共有したいと思います。これは、Google DriveとVScodeのエクスプローラーの画像ですが、Google Drive上の中身が、VSCodeから直接参照できるようになります。こうすることで、VSCode上でファイルを開いたり、編集したり、アップロードしたりができます。もちろん、VSCodeの中でnotebookのファイルもいじれます。
VSCodeの拡張機能も、お好きなものをインストールして使えます。例えば、Tabnineだったり、Docstring Generatorだったり。flake8をインストールすれば、Linterでのコードチェックも、この画像のようにできます。
ターミナルも、ある程度自分好みに設定できます。この下の画像、このzshの読み方、僕気になっているのですが、みなさんどう呼んでますかね?(笑)。僕は、ゼットシェルと呼んでいて、これをインストールした画像です。
さらに、GitHubでコード管理もできるので、ローカルで開発しているのとある程度同じ体験を、Colabのコンピュータリソースを用いて実現できるようになります。
では、環境構築手順に入っていきます。今日はちょっと、時間の関係もあるので、ここではざっくり紹介します。このあとのスライドのサンプルコードは、ブログにまとめたので、興味ある方はそちら覗いてみてください。
環境構築手順は、主に3つです。まず最初に、このngrok、読み方がちょっと分からないですが、こちらでアカウントを作成して認証キーを取得します。
このサービスが何をやってくれるのかというと、ローカルIPアドレスしか持たないホストに、外部のネットワークからアクセスできるようにしてくれるサービスです。
次に、Colab上でGPUに接続して、さらにGoogle Driveにも接続して、SSHサーバーの設定や起動を行うnotebookを実行します。これのイメージは、サーバー起動用のnotebookみたいなもの1つ用意しておいて、これの「すべてのセルを実行する」みたいなイメージです。
次に、VSCodeをローカルで立ち上げて、 Remote - SSHという拡張機能をインストールします。これは、初回だけで大丈夫です。
あとは、先ほどのサーバー起動用のnotebookで取得したホストとPort番号を、ローカルの.ssh/configに記述します。VSCodeの、先ほどインストールしたRemote - SSHの3番ですね、Connect to Hostボタンを押します。パスワードが聞かれるので、notebookから取得したパスワードを入れて、Colabのサーバーに接続します。そうすると、ColabのリソースがVSCodeから使えます。
僕が運用時に気にしてるポイントを今回4つ紹介します。
まず1つ目が、シンボリックリンクを作成するということです。Colab上であらかじめシンボリックリンク作成しておくと、VSCodeから接続した時に、Google Driveの中身が見えるようになるので、とても便利になります。
次に、zshなど使用したいものはColab上であらかじめインストールしておくと、とても使いやすいです。ふだん、zsh使っている人は、ローカルで使ってる設定ファイルなども一緒にコピーしておくと、ローカルとまったく同じターミナルの設定がVSCodeで使えるので、これもおすすめです。
3つ目が、setup.shスクリプトを作るということです。どういうものかというと、VSCodeの拡張機能や、pipでインストールしたいライブラリですね。Colabにあらかじめプリインストールされていないものをスクリプトにまとめておきます。そうすることで、VSCodeからSSH接続したあとに、このスクリプトを1個叩くと、VSCodeの拡張機能と使いたいPythonのライブラリが一括でインストールされるので、ある程度毎回同じ環境が作れるようになります。
このへんのサンプルコードも、ブログに書いてあります。
最後、4つ目です。Chromeの拡張機能でブラウザを自動更新するということで、Colab Proだと、確か24時間で切れるので、それはしょうがないのですが、ブラウザをちょっと放っておくと、セッションが切れてしまうと思います。
Chromeの拡張機能で、タブを自動で更新してくれるものがあるので、それをうまく使うことで、セッションを切れずに使うことができます。ずっとVSCodeでガチャガチャやっているだけでいいですというかたちになります。
最後に、kaggleで使う場合のTipsも紹介できればと思います。モデルは手元で学習させて、kaggle上では、その推論処理だけを行うという想定のコードコンペを例に、ちょっと紹介します。
Colab上で動かすスクリプトを書くのですが、その中に、そのスクリプトの本体と学習済みのモデルをkaggleのDatasetsにアップロードする処理を仕込んでおきます。
実際にコンペにsubmitしたい時は、この画像の1番右の例ですね、kaggleのnotebook上から、そのスクリプトを実行するだけで、submissionファイルが吐かれて、そこからsubmitできます。
こうしておくと、推論専用のnotebookをイチからゴニョゴニョ作らなくてよくなるし、推論もGitHub上で管理できるので、とても便利かなと思っています。
kaggleにアップロードする処理は、こんなイメージです。
あと1点、kaggleのnotebook上で推論処理をしたい場合、こんな感じでスクリプトの中で条件分岐をさせておくと、今回で言うとColab上では学習と推論の両方の処理を行ってくれて、実際kaggleのnotebook上で動かす時は、推論処理だけをすることができます。
最後に、ちょっとイマイチな点も最後に紹介しておきます。例えば、1度セッションが切れると、先ほどのサーバー接続用のnotebookをまた実行して、ホストとPort番号を再発行して、configファイルも更新して、VSCodeからもう1回接続しなければいけません。それが、ちょっとデメリットかなと思います。また、ターミナルが若干モッサリしてるので、ちょっとそこで「ぐぬぬ……」みたいな感じになることがあります。
とはいえ、許容できる範囲かなという感覚です。
ということで、今日はColabとVSCodeをうまく使うことで、ローカルで開発しているのと遜色ない開発体験がGPU環境で使えるようになりますよというお話をしました。
冒頭でも言いましたが、みなさんのColab Tipsもぜひ教えてもらえるとありがたいです。この発表が「Colabをうまく使いこなせないなぁ」と思っていた人の一助になっていればうれしいと思います。
参考資料は、以下のとおりです。ありがとうございました。
司会者:ありがとうございます。Twitterが「便利だ」と、盛り上がっていました。
野澤:本当ですか。
司会者:はい。たかぱいさんの使い方としては、VSCodeだと、スクリプトで動かすという感じなんですか?
野澤:そうですね。基本的に、スクリプトを書いているのですが、EDA(探索的データ解析)とかをする時は、notebookをVSCode上で開いて、ガチャガチャ編集しつつ、ある程度までいったらPythonのスクリプトの形式に移してやっていますね。
司会者:いいところというとどんなところなんですか? やはり、スクリプトにまとめられるとかですか?
野澤:そうですね。スクリプトにまとめておくと、コードのバージョン管理もしやすいです。あとnotebookだと、やはり実行順でいろいろとわけが分からなくなることもあると思うので。
司会者:確かに。ありますね。
野澤:そうですよね(笑)。ある程度スクリプトにまとめておいて、今回だと推論のコードもスクリプトにしちゃうことで、kaggleのコンペにsubmitする時も、わりと簡単にというか、この画像の例だと、kaggle上でnotebook起動して、!python3でスクリプト名みたいな、Datasetsにアップロードしたスクリプト名を入れるだけで、推論処理が回ってくれるので、けっこう便利です。
例えば、いろいろアンサンブルしたい時も、例えば、ここにはexp001.pyはありますが、002.pyと003.pyを用意しておいて、それぞれ実行しておくと、それぞれでsubmissionのCSVが吐かれるので、それを見込んでsubmitするのが、楽になるかなと思ています。
司会者:なるほど。そこまでやれると、本当にメッチャクチャ便利ですね。今質問で「Colabの利用規約とか、セキュリティ面とかで懸念事項はありますでしょうか?」と来ています。
野澤:Colabの利用規約や、よくある質問系も読んだのですが、正直わからないというのはあります(笑)。
司会者:(笑)。そんなガッチガチ書いてないですもんね、Colab(笑)。
野澤:そうですね。なので、急に使えなくなることは、普通にありえると思います。
司会者:そうですよね。最初にもお断りがあったので、今はこんな感じで使えますという紹介ということで。
野澤:そうですね。
司会者:使用時には自己責任みたいな感じでやってもらえれば。
野澤:そうですね、申し訳ないのですが。
司会者:これはすぐにやってみようかなと思いました。ありがとうございました。
野澤:ありがとうございました。
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05