Google Colaboratoryの無料GPU環境を使ってみた

Pocket

はじめに

皆様は機械学習やDeep Learningを行う際の実行環境には何をお使いでしょうか。Local PCでやりくり?AWS等のIaaS?それとも社内や自宅に専用機があったりするのでしょうか。機械学習やDeep Learningを快適に行うためにはそれなりのマシンスペックが必要になります。ある程度のメモリ容量はもちろん、GPUも必須といっていいレベルでしょう。

通常使用のPCでは、メモリが足りず処理できなかったり、1試行ごとに数十分~数時間待つことになったりということがあるのではないでしょうか。また、IaaSを用いれば高スペックな環境を手に入れることはできますが、コストもかかりますし、環境設定に翻弄されることも多いですよね。

実は上に挙げたものは私たちのチームが直面した問題でした。機械学習やDeep Learningを行う際、処理待ちや環境設定に時間を取られてしまい、本来行いたい、手法やモデルの試行錯誤のための充分な時間の確保に問題が生じたのです。

この問題をある程度解決しうる手段としてクラウド上のデータ分析基盤を用いるというのがあります。IBM CloudやAWS、Google等が提供しています。

今回はその中で最も導入が楽(そう)なGoogleのサービスを紹介します。

その名も、「Google Colaboratory」です!

Google Colaboratoryとは

Colaboratory は、機械学習/Deep Learningの教育や研究の促進を目的とした Google 研究プロジェクトです。完全にクラウドで実行される Jupyter ノートブック環境を特別な設定なしにご利用いただけます。

Colaboratory ノートブックは Google ドライブに保存され、Google ドキュメントや Google スプレッドシートと同じように共有できます。Colaboratory の利用は無料です。

Hello,Colaboratory(welcome.ipynb)より抜粋

Google Colaboratoryは、Jupyter Notebook (*1)をベースとした、Googleの仮想マシン上で動くPython実行環境です。無料であり、Googleアカウントさえあれば、インストール等の作業に手間を取られることなく、すぐにコードを実行することができます。

引用にも載っていますが、ソースコードや実行結果はGoogleドライブに保存されるため、編集権限を付与してチーム内で共有・同時編集することで、ペアプログラミング等も容易に行えます。また、GPUも無料で利用することができるので、GPUコンピューティングによる機械学習やDeep Learning等の処理の高速化も可能です。

(*1) Jupyter Notebook とは

The Jupyter Notebook

The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, data visualization, machine learning, and much more.

Jupyter Projectトップページ より抜粋

Google翻訳

Jupyterノートブックは、ライブコード、方程式、視覚化、物語テキストを含むドキュメントを作成して共有できるオープンソースのWebアプリケーションです。データの消去と変換、数値シミュレーション、統計モデリング、データの視覚化、機械学習などがそれに含まれます。

我々のチームでも、Pythonのインタラクティブな実行環境として用いています。Jupyter Notebookに処理内容と結果・Markdownでの文章も記載できるため、簡単な共有はこれで行えます。

Google Colaboratoryを使ってみる

Google Colaboratoryを使ってみるための手順はたったの3ステップです。

ステップ1:GoogleのColaboratoryページ にアクセス(導入ページにリダイレクトされます)

ステップ2:「ノートブックを新規作成」をクリックし、「PYTHON 3 の新しいノートブック」を選択

ステップ3:コードを入力し、Ctrl + Enter で実行!

print("hello colaboratory!")

入力欄(セル)の下に結果が表示されました!Pathを通したりといった面倒な作業なしにPythonの実行環境が手に入りましたね!

Google Colaboratoryの実行環境を確認する

さて、Google Colaboratoryが簡単に使えるからと言って、ライブラリを大量にインストールしなければいけなかったり、スペックが悪かったら使えるとは言えません。いくつか確認していきましょう。

事前準備を行う

GPUの情報もみたいのですが、実はそのまま起動するとGPUのない環境が立ち上がります。

「ランタイム」 → 「ランタイムのタイプを変更」から

「ハードウェアアクセラレータ」で「GPU」を選択して保存してください。

ライブラリを確認する

pipが使えるので簡単にライブラリを確認することができます。「+コード」を押して、入力欄を追加します。コードの先頭に「!」をつけることで、PythonではなくOSのコマンドラインに命令を送ることができます。

!pip list

ずらずら出てきました。かなり長いので、詳しく見たい場合は是非実行してみてください。

抜粋すると、よく使うであろう、matplotlib、pandas、numpy、scikit-learnや、Deep Learningに用いるtensorflow、keras等も入っていますね。個人的にはPillow、plotly、xgboostが入っているのも有難いです。目的によってはいくつかインストールしなければいけないでしょうが、大量のインストールを待つ必要はなさそうです。

スペックを確認する

どうやらOSはUbuntuらしいです。なんとapt-getが使えます!ということでハードウェア情報を収集するためにlshwをインストールし、実行します。

インストールが終わったら実行して結果を確認します。

重要そうな部分だけ抜粋すると以下のような構成のようです。

*-memory description: System memory physical id: 0 size: 12GiB
*
-cpu product: Intel(R) Xeon(R) CPU @ 2.30GHz vendor: Intel Corp. physical id: 1 bus info: cpu@0 width: 64 bits
*-display description: 3D controller product: GK210GL [Tesla K80]

どうやらメモリが12GB、GPUはTesla K80のようです。超一線級ではないとはいえTeslaが無料で使えるとはすばらしい。CPUはあまり詳しくないのですがこの分だと悪いものではなさそうです。

Google ColaboratoryのGPUを使ってMNISTを実行する

題材はDeep LearningのHello worldとも呼ばれるMNIST(*2)を利用しました。Kerasを用いて一般的な畳み込みモデルを学習させてみます。

(*2) MNISTとは
Modified National Institute of Standards and Technology の略称で、データセットを用いた手書き文字分類問題のこと。手書きの0~9の数字画像を対応する数字に分類する問題です。
Yann LeCunホームページより)

事前準備を行う

まずはGPUを認識しているかの確認を、backendのTensorFlowで行います。

結果

ちゃんと認識しているようです。自力でやろうとするとドライバを更新したりなんだり面倒なので、これだけでも感動しますね。

MNISTを実行する

ソースコードはKerasが公開しているチュートリアルコードを用いました。

keras-teamのGitHubリポジトリ

実行した2018/05/22 16:11時点のコードを引用します。

結果

1epoch 11秒ほど!GPU無しでやると160秒程度かかりますから1/16ほどの時間になってますね!素晴らしい時間短縮です。

参考:GPU無しでの実行結果(抜粋)

まとめ

いかがでしたでしょうか。GPU環境をこんなに簡単に使えるGoogle Colaboratoryは、これから始める際の第一手としてかなり有力です。また、今回は触れませんでしたが入力補助やショートカットも豊富なので、Google Colaboratoryを使いこなせればかなり強力だと思います!

強いて言うならRAMが少なめなので、データの読み方を考慮する必要があるかもしれません。TFRecord形式を用いて使用メモリ量を削減する方法は、下記の過去記事をご参照ください。

 

今後は、Google Colaboratoryの機能紹介を継続的に行っていく予定です!また、他のデータ分析SaaSの検証もご紹介する予定ですので、お楽しみに!

お問い合わせ先

執筆者プロフィール

Hibino Ichirou
Hibino Ichiroutdi IT技術推進部
入社して半年間ロボコン活動に専念。少しのJavaエンジニア期間を経てデータ分析や機械学習、Deep Learningをテーマに勤労しております。
昔取った杵柄を摩耗させつつ新たな支えを求めて試行錯誤中。
Pocket

関連記事