この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
3月11日(米国時間、日本では12日)にTensorFlowのデベロッパーカンファレンス「TensorFlow Dev Summit 2020」がオンラインで開催された。本稿では、その中から、
というセッションの内容を紹介する。
このセッションでは、Google Colab(以下、Colab)ユーザーのためのTipsが紹介され、Google ColabのPro版が発表された。どちらも、@IT Deep Insiderの読者にとって有用な情報であるため、記事化して情報を共有することにした。登壇者はTim Novikoff氏である。
さっそく始めよう。Colabの概要と(セッションの後半で説明された)Colab Proから紹介していく。
Colabを知らない人向けに簡単に紹介すると、そもそもColab(Colaboratory、「コラボラトリー」と読む、直訳すると「共同実験室」)とは、ブラウザー上で任意のPythonコードを書いて実行できる「Jupyter Notebook」環境(※独自機能あり)である(図2)。グーグルがホストしており、Googleドライブ(無料)のアカウントがあればすぐに開始でき、しかも何と「無料」で全ての機能が提供されている。そのため、特に機械学習やディープラーニング、データサイエンス界わいでPythonを書く人に人気があり、利用者も多い。
Colabの詳細は、公式の「Colaboratory へようこそ」やこちらの記事を参考にしてほしい。
ここではColabについての歴史についても紹介しておこう。図3に示すように、Colabは2012年にグーグル社内のデータアナリスト向けに社内ツールとして開始され、2014年には社内でTensorFlowを最初に学ぶための「機械学習」短期集中コースで使われるようになり、2017年に社外にも公開された、とのことである。つまり、グーグル社員が使っているものと同じツールに、世界中の人がアクセスできるようになっている、ということだ。
Colabは非常に簡単に使えるのが特徴だ。Colabノートブックにアクセスすると、バックエンドでグーグルが管理する大量のVM(仮想マシン)の一つに自動的に接続される(図4のPre-warmed VMs)。無料にも関わらず、(通常は「CPUを使うVM」だが)必要に応じてGPUやTPUが使えるVMも利用できる。また、Python環境だけでなく、GPUでディープラーニングするためのCUDAやTensorFlowを含めて人気ライブラリ数百種類がインストール済みなので(Pre-installed packaged)、すぐに機械学習やディープラーニングの作業を開始できる。本当にメリットだらけなので、一回使い始めたら手放せなくなるツールだと思う(※実際に筆者がそうだ)。
ただし、欠点がないわけではない。具体的には、持続可能性を確保したり、乱用を防いだりするために、リソースに以下のような制限が設けられているのだ(Resource limits)。
実際にこれらの問い合わせが多いとのことである(図5)。
特に影響を受けやすいのが、2番目の実行時間である。例えば筆者の場合、1日中、作業していることはよくある。ところが頻繁に(体感的には数時間間隔、もしくは使っていないアイドルタイムが数十分程度)で突然リセットがかかって、最初から実行し直さなければならなくなることがよくあるのである。公式には「実行時間は最長12時間(アイドルタイムは最長90分)」とされているが、筆者の使用時はそれよりはるかに短い場合がよくあるのだ。ちなみにこの原因は、複数のノートブックを同時に開いて作業しているための影響(どれかのノートブックのアイドルタイムが90分を超えたなど)、あるいは限られたリソースが少数のユーザーに占有されないようにする制限(=直近のリソース使用量が少ないユーザーが優先される結果)などではないかと考えている。
それらの要望を聞き入れて提供開始されることになったのが「Colab Pro」(コラブプロ)である(図6)。
無償ユーザーに「NVIDIA Tesla K80」が割り当てられているときに、Proユーザーには優先的に「NVIDIA Tesla T4」や「NVIDIA Tesla P100」が割り当てられる。もちろん使用量には上限はある。だが無償版とPro版ではGPU/TPUの使用量上限に大きな違いがある、とのことである。
Pro版では、最長24時間の実行が可能である。また無償版では、使っていないアイドル状態になると(最長90分後に)自動的に接続が切断されるが、Pro版では、そのタイムアウトも生じにくくなっている、とのことである。
Colab Proユーザーには(無償ユーザーよりも)優先的に「ハイメモリ仮想マシン(High Memory VM)」(=RAM増量ランタイム)が割り当てられる。そのVMのメモリやCPUは、標準的なVMの2倍とのこと(具体例をTipsの3位で示す)。
この3点のメリットが得られて、月にたったの9.99米ドル(日本円で約1000円)である。Colabの利用頻度が高い人には「安い」と感じられるのではないだろうか。筆者のように頻繁に実行し直しているようであれば、「Colab Proで時間を買う」方が賢いだろう(と筆者は思う)。
なお、現時点では米国在住者のみが利用できる。状況を見て、日本を含む世界各国に広げられるだろう。
この他、Colab Proの詳細は、
を参照してほしい。
Colab ProによってColab無償版はなくなることはない、とのことだ。今後も、両方を改善していくと、登壇者のNovikoff氏は約束してくれた。
今後もフィードバックをユーザーの皆さんから募集しているとのことである。フィードバックは[ヘルプ]メニューから送信できる。また、Colabを使っていると、アンケートやフィードバックの入力画面が表示されることがあるので、そこでフィードバックを送ってもよいだろう(筆者もフィードバックを送ったことがある)。もしくはTwitterの@GoogleColabアカウントに送ってもよい。
さて、ここからは、セッションの前半にあったColab Tipsをスクリーンキャプチャ中心で紹介していく。
ちなみに筆者はColabを使い倒しているので、ほとんど知っていたが、5位と3位の機能は知らなかった。皆さんは全ての機能を知っているだろうか?
現状ではColabノートブックにデフォルトでインポートされるTensorFlowバージョンは1.xである。しかしTensorFlowの最新バージョンは2.xである。間もなく2.xをデフォルトにする予定とのことだが、現時点では%tensorflow_version 2.xマジックコマンドを最初に実行して、明示的にバージョン2.xを指定する必要がある。
なお。TensorFlow 1.xで動作する古いノートブックの場合は、%tensorflow_version 1.xと記述しておくことで、TensorFlow 2.xがデフォルトでインポートされるようになっても、バージョン1.xで動作し続ける、とのことである。
基本的にTensorBoardツールは、(学習結果の可視化などが行えるダッシュボードを)HTMLでレンダリングできる。この利点を生かして、Colabの出力セルにも出力できるように対応している。お勧めとのこと。
TensorFlow Liteは、モバイル端末上で実行できるTensorFlowである。そのTensorFlow LiteのモデルをColab上でトレーニングして、それをモバイル端末にデプロイして使うことは、問題なく可能である。実際これは人気があるやり方、とのことだ。
Colab上ではCPUだけでなくTPU/GPUも無料だ。しかもドロップダウンから選択するだけで、とても簡単にランタイムのタイプ(CPU)をTPU/GPUに変更できる。
必要であればローカル環境(ローカルPCやワークステーション、リモートサーバーなど)のランタイム(特にGPU)を使うことも可能だ。機械学習のためのランタイムにはローカルにある強力なハードウェアを使って、ユーザー操作のためのUIにはオンラインのColabを使う、ということである。これも簡単にできる。
筆者注記:ただし、欠点もある。ローカル環境にはJupyter Notebookをインストールする必要があり、各種ライブラリもローカル環境に自分で用意しなければならない。そのため「すぐに利用できる」というColabのメリットは消えてしまう。あくまで「ColabのUIや使い勝手が、Jupyter Notebookよりも好きだ」という人が活用すべき機能である。
Colabで新規にノートブックを作ると、「Untitled1.ipynb」などの名前が付けられてGoogleドライブに自動的に保存される。しかし「仮」でノートブックを新規に作ってPythonコードを書いて実行し、使い終わったらわざわざGoogleドライブを開いて(自動作成された)「Untitled1.ipynb」を手作業で消す、ということはよくあるのではないだろうか(※少なくとも筆者の場合はよくある)。ここでもし消し忘れると、「Untitled2.ipynb」「Untitled3.ipynb」と増えていってしまう。
そういう人にはこの機能が役立つ。下記のURLにアクセスすると、「scratchpad」というタイトルの、Googleドライブに自動的に保存されない特殊なColabノートブックが作成される。
ちょっとしたコードを試して捨てるといった「はぎ取り式メモ帳」(スクラッチパッド)的な使い方をする際にお勧めだ。
外部ストレージ上のデータを呼び出すよりも、いったん(例えばモデルを訓練する前に)ColabのVM上にデータをコピー&保存して、それを呼び出すようにした方がよい。こうすることで、たとえ1回しかデータを使わないケースでさえも、スピードアップが期待できる。
Colabを使っていてメモリ(RAM)不足に陥ったことがあれば、特別な「RAM増量ランタイム」へのアップグレード機能に気付いたかもしれない。ちなみに筆者が試したところ、図17のように、(現時点では)通常は12.72GBのメモリが、メモリ不足でセッションがクラッシュした後、[RAM増量ランタイムに切り替えますか?]ダイアログが表示され、それに「はい」と答えると、約2倍の25.51GBになった。
しかし増量しても約25GBを超えると再びリソース制限に達するので、最善の方法は、メモリ不足にならないようにすることである。作業時にはメモリに注意を払おう。
Copyright© Digital Advantage Corp. All Rights Reserved.