Google Colaboratoryの仕組みって?

f:id:ts0818:20210222190641j:plain

monoist.atmarkit.co.jp

エイシングは2020年12月15日、新たなエッジAI(人工知能アルゴリズム「MST(Memory Saving Tree)」を開発したと発表した。エイシングがこれまでに発表した「DBT(Deep Binary Tree)」や「SARF(Self Adaptive Random Forest)」などのエッジAIアルゴリズムと比べて使用するメモリを大幅に削減できるため、フラッシュメモリSRAMの容量がKBレベルの小型マイコンにも実装でき、エッジAIの処理速度や精度も従来アルゴリズムと同等とする。MSTは2021年1月から提供を開始する予定だ。

リアルタイムに学習できるエッジAIが進化、メモリがKBレベルのマイコンにも対応:人工知能ニュース - MONOist

 同社は、AI技術として広く知られているディープラーニング(深層学習)とは異なる、木(Tree)構造のAIアルゴリズム「AiiR(AI in Real-time)シリーズ」を展開している。AIの学習に高性能のCPUやGPUアクセラレーターなどを用いた大規模な計算環境が必要となるディープラーニングに対して、AiiRシリーズはArmの「Cortex-Aシリーズ」などを搭載するプロセッサでリアルタイムにエッジ側で学習を行えることが特徴だ。2019年1月に発表したDBTは、「Raspberry Pi Zero」に実装して、学習は50μ~200μs、推論は1μ~5μsで応答可能としていた。

リアルタイムに学習できるエッジAIが進化、メモリがKBレベルのマイコンにも対応:人工知能ニュース - MONOist

⇧「エッジAI(人工知能アルゴリズム」なるものが存在することを最近知りました、どうもボクです。

ちょっと旧い情報になりますが、

ledge.ai

岩手大学発のAIスタートアップ エイシングが、独自の機械学習アルゴリズムディープバイナリーツリー(DBT)」を用いたエッジAIチップを発表しました。

ディープラーニングではなくDBT。岩手大学発スタートアップ エイシングがエッジAIチップを発表 | Ledge.ai

⇧「DBT(Deep Binary Tree)」は「機械学習アルゴリズム」の1種と言われてるようなので、「機械学習」の分野の話ってことですかね。 

ledge.ai

⇧「深層学習(DL:Deep Learning)」との違いは、上記の様になっているようです。

というわけで、ローカル環境で環境構築せずともPythonによる機械学習のコーディングや実行とかができるという「Google Colaboratory」について調べてみました。

レッツトライ~。

 

Google Colaboratoryって何?

公式のドキュメントによりますと、 

colab.research.google.com

Colaboratory(略称: Colab)は、ブラウザから Python を記述、実行できるサービスです。次の特長を備えています。

  • 環境構築が不要
  • GPU への無料アクセス
  • 簡単に共有

https://colab.research.google.com/notebooks/intro.ipynb?hl=ja#scrollTo=GJBs_flRovLc

⇧ ローカル環境で、PythonのコードをGPUで実行しようと思うと、環境構築に時間がかかると思われますが、「Google Colabolatory」を使えば、煩わしい環境構築が不要ですと。

どういう仕組みなのか?

Google Colaboratory」の「FAQ(Frequently Asked Questions)」のページを見ると、

research.google.com

Colab の使用量上限とは何ですか?

Colab では、状況によって変動する動的な使用制限を設け、無制限のリソース提供やリソースの保証を行わないことによって、無料でのリソース提供を実現しています。つまり、全体の使用量の上限、VM の最大存続時間、利用できる GPU タイプなどの要素は、今後変更される可能性があります。Colab では、変更が頻繁に起きる可能性があることから、これらの上限を公開していません。

https://research.google.com/colaboratory/faq.html?hl=ja

⇧ 何か、「VM仮想マシン)」をGoogleが用意してくれてるみたいね。

www.atmarkit.co.jp

 Colabは非常に簡単に使えるのが特徴だ。Colabノートブックにアクセスすると、バックエンドでグーグルが管理する大量のVM仮想マシン)の一つに自動的に接続される(図4のPre-warmed VMs)。無料にも関わらず、(通常は「CPUを使うVM」だが)必要に応じてGPUやTPUが使えるVMも利用できる。また、Python環境だけでなく、GPUディープラーニングするためのCUDAやTensorFlowを含めて人気ライブラリ数百種類がインストール済みなので(Pre-installed packaged)、すぐに機械学習ディープラーニングの作業を開始できる。

Colab Pro登場と、Google ColabユーザーのためのTipsトップ10:気になるニュース&ネット記事 - @IT

⇧「Pre-warmed VMs」っていう、Googleが管理してる「VM仮想マシン)」群の中から自動的に接続されるみたいね。

ちなみに、2021年2月22日(月)時点では、「Google Colaboratory」のVM仮想マシン)の情報を確認してみたところ、

Ubuntu 18.04.5 LTS \n \l

f:id:ts0818:20210222140344j:plain

⇧ という感じで、「Ubuntu 18.04.5 LTS」が利用されておりました。
 

Google Colaboratory」の利用時の全体概要イメージ図については、

medium.com

⇧ 上記サイト様のイメージ図が分かりやすいです。

Google Drive」に「拡張子」が「.ipynb」のファイルをアップすることで、「Google Drive」上でPythonのプログラムを実行できるようになるようです。

「拡張子」が「.ipynb」のファイルは、

ipython.org

The IPython Notebook is now known as the Jupyter Notebook. It is an interactive computational environment, in which you can combine code execution, rich text, mathematics, plots and rich media. For more details on the Jupyter Notebook, please see the Jupyter website.

https://ipython.org/notebook.html

⇧ おそらく「Jupyter Notebook」が「IPython Notebook」と呼ばれてた時代の名残りということですかね?

ファイルの拡張子「.ipynb」については、「IPython Notebook」の頭文字を取ってるんじゃないのかな~って気がしますが、推測です。

「Jupyter Nootbook」の後継と注目されてる「Jupyter Lab」とかも同じく「.ipynb」って拡張子で保存されるっぽいんだけど、

jupyter.readthedocs.io

This section focuses on IPython and kernels. When we discuss IPython, we talk about two fundamental roles:

  • Terminal IPython as the familiar REPL

  • The IPython kernel that provides computation and communication with the frontend interfaces, like the notebook

https://jupyter.readthedocs.io/en/latest/projects/architecture/content-architecture.html#ipython-kernel

⇧ おそらく「IPython Kernel」ってのが、「notebook」のようなフロント側のインターフェースを提供してるってあるので、「IPython Kernel」を使ってるんであれば、「.ipynb」って拡張子のファイルに対応してるんじゃないかと推測されます、多分。

脱線しましたが、つまり、「Googleアカウント」さえあれば、 「Google Colabolatory」は使えるようです。(「.ipynb」形式のファイルは、 「Google Colabolatory」上で作成できるので。)

ただし、

qiita.com

⇧ 上記サイト様にありますように、「Googleドライブ」に配置してる「画像」や「CSVファイル」なんかを読み込みたい場合は、「Googleドライブ」から読み込むのコーディングが必要みたいです。

 

インストールしたパッケージとかはどこにある?

Python に限らず、コーディングしていて標準機能だけじゃなくて外部ライブラリをインストールしたいな、って時があるとインストールすると思うのですが、「Google Colabolatory」を使ってる場合、インストールしたライブラリとかってどうなってるのか?

www.kabuku.co.jp

 Google Colaboratory(以降、Colaboratory)というサービスをご存知でしょうか。このサービスはGoogle Driveなどを通じてJupyter Notebooksのような環境を管理することができるサービスになります。iPython Notebook(以降ipynb)上のセルを実行するとデフォルトでGoogleが提供してくれているサーバー上で動くことになりますが、今回は手元のPCやリモートサーバ上でColaboratoryを実行していきたいとおもいます。

Google Colaboratory を自分のマシンで走らせる | Kabuku Developers Blog

⇧ 上記サイト様によりますと、デフォルトだと「Google Colabolatory」は「Google」が管理してるサーバー上で動くようなので、インストールしたライブラリなんかも「Google」が管理してるサーバー上に配置される感じのようです。

つまり、デフォルトの状態だと、 インストールしたライブラリなども時間が経つと、消されてしまうと思われます。

というのも、おそらく、

qiita.com

⇧「90分と12時間っていう2種類の時間制限ルール」があることから、「Google Colaboratory」 の仕組みってのは「サーバレス」のような感じで、使ってない場合は「Google」が管理してるサーバー内で起動されてるだろう「仮想マシン」自体を削除してるんではないかと。(公式のドキュメントでアーキテクト図とか公開されてないみたいなので、あくまで推測です)

 

CSVファイルなんかはどこに出力される?

CSVファイルに限らず、プログラミングしてると、ファイル出力とかすること多いと思います。

このあたりの出力ファイルなんかについても、インストールしたライブラリなんかと同様で、デフォルトの状態だとGoogleが管理してるサーバー上に配置されると思うので、自分のローカル環境なんかにダウンロードする必要があるらしく、

⇧ 上記サイト様によりますと、「CUI」「GUI」のどちらのダウンロード方法にも対応してるっぽい。

当然のことながら、

prob.space

筆者は以下のようにしてローカル環境にダウンロードした。

#submitはラベルと予測結果をまとめたpd.DataFrame
submit.to_csv('submission.csv',index=False)

from google.colab import files
files.download('submission.csv')

Google ColaboratoryのGPUを使っている参加者の方は、このコードを実行してcsvファイルがダウンロードされていることを確認してほしい。

Google Colabで作成したcsvファイルのダウンロードの仕方 | ProbSpace

⇧ 上記サイト様のように、ダウンロードする前に、事前にファイルを出力している必要はあります。(上記サイト様の例ですと、「to_csv()」メソッドを使用して「submission.csv」ファイルを事前に出力している感じですね。)

まぁ、何が言いたいかというと、デフォルトの状態で「Google Colaboratory」上でPythonのコーディングなんかをコーディングしていてファイル出力したとしても、出力先が「Google」のサーバー上に配置されるようになってる場合は、出力したファイルはローカル環境にはダウンロードされないので、気をつけましょう。

Google Colaboratory」の詳細なアーキテクト図なんかを公開してくれてれば、モヤモヤ感が多少は改善されるとは思うんですがね...

 

今回はこのへんで。