社長!AIエンジニア育成にこういうのはどうでしょう? Google Colaboratory の使い方 【社内エンジニア向け】

どうも!okajiと申します!

経済産業省は「IoTや人工知能(AI)を担う先端IT人材が2020 年に4万8000人不足する」と予測しています。
ならば、社内にいるエンジニアにAI開発の技術を学んでもらい、ソフトウェアへAIの組み込みや、
新入社員をAI人材に育成するために社内AIエンジニアがいればメンターとして活用することができる!
と思います。

しかし、エンジニア側では…

「訓練やモデル構築するのにローカルPCだと時間が掛かる」
「機械学習用にPCの環境構築したいけど、費用が高い」
「機械学習するのに色々ライブラリ、モジュール入れたいけど構築が面倒くさい」

このような事を思った事があるかもしれません。
僕自身、いくつかのPCに同じPython環境を組んだりしましたが、
環境構築の時間の所為で色々モデルを試す時間が無くなるなんてことも…

そんなエンジニアと企業の悩みを解決してくれるツール、Google Colaboratoryをご紹介します!
AIエンジニア界隈で話題となっているGoogle Colaboratory(以下 Google Colab)、
本記事ではGoogle Colabの基本的な使い方とメリット・デメリットについてまとめました!

Google Colaboratory とは?

Google Colabは、FirefoxやChrome等のブラウザ上で動作する機械学習の教育、研究を目的とした研究用ツールです。
Googleのサービスの一つであり、ノートブックと呼ばれるファイルにプログラムや説明の文章、
実行結果などをまとめて管理できるツールであるJupyter Notebookをベースとしています。

つまり、ブラウザとインターネットがあれば即機械学習が行えます

メリット・デメリット

Google Colabのメリット・デメリットについてまとめました!

・メリット

  • 環境構築がほぼ不要である
    Google Colab ではJupyter Notebookをクラウド上で動かしますが、言語のPythonや数値解析で用いられるNumpy、機械学習で使う scikit-learn,Tensorflow,Pytorch,chainer等のライブラリが既に構築されています。必要なのはブラウザのみであるため、すぐに機械学習を始めることが出来ます!
  • チーム内での共有が簡単
    Google Colabで書いたコードはGoogleドライブに保存されます。
    Googleドキュメントやスプレッドシートの様に共有することが出来ることや、権限管理を含めGoogle Drive上で行えるのでプロジェクト管理が容易です!
  • GPUが無料で利用可能
    これは他のブラウザ上で使用できるツールと異なる大きな点です。
    なんと、GPUが無料で使えます!機械学習では大規模なデータを高負荷の掛かる計算を行う事が多々あります。
    自身のPC上で処理を行った場合良くて一日以上なんてことも…
    しかし、Google ColabのGPU環境を使用して大幅な時間短縮が可能です!

以上3つのメリットを考えるなら、Google Colabを使わない理由がありません。

しかし、いくつかのデメリットがあります。

・デメリット

  • データの読み込みの処理を覚える必要がある。
    今までローカルで使用していたデータセット等を読み込む際に、マウントと呼ばれる処理を加える必要があります。
  • 使用時間制限がある
    Google Colabを使用するのに時間制限があります。以下の二つです。
    ・90分ルール
    ブラウザを閉じる、PCがスリープに入るなどして接続が切れてから90分たつ
    ・12時間ルール
    接続してから12時間たつ
    上記のルールにより、処理途中だとしても初期化されてしまいます
    しかし、このルールはモデル、訓練の保存をすることで、処理の途中からもう一度実行できるため、
    大きなデメリットとは言えません!
  • GPUの割り当てがある。
    Google Colabでは、Tesla K80とTesla T4の二つのGPUが使用できます。
    これは選べるわけでは無く、どのGPUに割り当てられるかある程度のルールがあると言われています。
    Google Colab Q&Aより以下の記述があります。

Q.T4 GPU などのハードウェア リソースを利用できないのはなぜですか?

A.最も利用しやすいハードウェアは、Colaboratory を長期間のコンピュータ処理ではなくインタラクティブに使用しているユーザーに優先的に割り当てられます。Colaboratory を長期間のコンピュータ処理に使用しているユーザーは、利用可能なハードウェアの種類やハードウェアの利用時間に関して、一時的に制限される場合があります。コンピュータ処理に特別なニーズがあるユーザーは、Colaboratory の UI をローカル ランタイムで使用することをおすすめします。
なお、Colaboratory を暗号通貨採掘に使用することは認められていません。Colab のご利用を全面的に禁止される可能性がありますので、ご注意ください。

つまり、常にGoogleのリソースを使用している場合Tesla T4ではなく、T4よりも性能の低いTesla K80に割り当てられるということですね!

自分のPCのリソースを使用するローカルランタイムとなると、通常のJupyter Notebookでも良いのではないかと思われるかもしれませんが、チーム内共有の利点があるため、ローカルランタイムでの使用も悪くはありません!
また、GPUを持ち合わせていない方にとって、ほしい環境であると言いきれますね!

実際にGoogle Colabを使ってみよう

早速Google Colabを使ってみましょう!
最初にGoogleアカウントにログインして、Google DriveにGooglecolab用の新規フォルダーを作成します!
[+新規] -> [新しいフォルダ]
または
[マイドライブ] -> [新しいフォルダ]
で作成できます。

次に、作成したGoogle Drive上のフォルダーとGoogle Colabの連携します。
フォルダ名のドロップダウンをクリックして[アプリで開く] -> [アプリを追加]をクリックしましょう。

アプリを検索をクリック後、表示される画面にある検索窓で「google colab」と調べると、
Google Colabのアプリが結果で絞り込みが可能です。
こちらの[接続]をクリックしましょう。
(下図内で[評価する]となってる部分です。)


これにて、Google DriveのフォルダーとGoogle Colabの連携が完了しました!

次に、Google Drive内にGoogle Colabで新しいノートブックを作成してみましょう!
[+新規] -> [その他] -> [Google Colaboratory]
これで立ち上げることが出来ます!


新規作成したノートブックですが、名前部分をクリックすることで変更することが出来ます。


次にGoogle Colabの基本的な操作方法について一緒にやっていきましょう!
Jupyter Notebookですが、セル単位でコーディングを行います。セルには主に「コード」と「テキスト」の二種類あります。
・赤枠コードボタン
ノートブック内にコードセルを作成する。
・緑枠テキストボタン
ノートブック内にテキストセルを作成する。

次に、実際に何かしらコードを書いて実行してみましょう!
今回は「Hello Colab」と表示させてみました。

図内ではコードセルとテキストセル両方あると思います。
コードセル実行には、黒枠にある実行ボタンを押すか、[SHIFT] + [ENTER] のショートカットで実行できます。
テキストセルにはチームメンバー内でコード共有する際に使用したり、自己学習においてのメモ等、
コードを見返した時にコードの内容を短時間でミスなく把握するために使用します。

GPUを使ってみよう

GPUとはGrapics Processing Unitの略で、3Dグラフィックスなどの画像描写を行う際に必要となる計算処理を行うプロセッサの事を言います。CPUよりも何倍~何百倍もの計算速度を出すことができ、多数のコアを搭載しているため機械学習などの大規模データで負荷の高い演算を行う際にも使われています。
他にも、暗号通貨のマイニングにも使用されていますね!

それでは、Google Colab目玉となるGPUを使ってみましょう!
Google Colabで使えるGPUですが、Nvidia社のTesla K80 GPU,Tesla T4 GPUが使用可能です!

ノートブックを立ち上げたデフォルトの設定ではCPUとなっています。
設定を変えなくてはGPUが使用できないので、変更してみましょう。

[ランタイム] -> [ランタイムのタイプを変更]
または
[編集] -> [ノートブックの設定]
より、下記の画面が表示されます。

[ハードウェアアクセラレータ] -> [GPU]を選択し、保存することで使用できるようになります!
そして、Google ColabではTPUまで無料で使うことが出来ます!

また新しい単語が出てきましたが簡潔に述べると、

Tensor processing uniの略で、機械学習で頻繁に行われる行列演算を高速に処理することを目的にGoogleが開発したハードウェアです。CPUやGPUの様に様々な用途に使用できる汎用プロセッサとして設計されていますが、TPUは行列演算に特化したプロセッサとなっています。

そのため、行列演算を多用する機械学習において、TPUは凄まじい効果が期待できますね!
しかし、TPUを使う場合はコードもTPU向けに書く必要があり、GPUと同じコードを実行するとGPUよりも遅くなるため注意が必要です!
TPUについてもっと詳しく知りたい方は、Google Cloud blogの記事に飛びましょう!

閑話休題!GPUの方に話を戻します!
本当にGPUが使用できているか、その使用状況やどのGPUに接続されているかを確認するために

「!nbidia-smi」を入力し実行します。


実際にGPUに接続していることが分かりましたね!
また、ノートブックを立ち上げた際のデフォルトはCPUのため、高負荷な処理などを行う際はGPUへ設定を変更してあげましょう。
画像内黄色枠の部分に繋いでいるGPUの種類が記載されているため、より良いGPUが使いたい場合は確認するようにすると、良いと思います!

最後に

いかがだったでしょうか?
今回は、Googleが無料提供している機械学習実行環境Google Colabについてご紹介しました。
Google Colabは、初期の環境設定の煩わしさが無いことや、チーム開発において便利な機能もありGPU環境を簡単に使用できます
また、いくつかのデメリットを回避するのが容易であるため、Google Colaboratoryは、これから始める際の第一手としてかなり有力です。

機械学習を始めようとしている人、チームで開発を行いたいという人には、とてもお勧めできるツールです!

他にも、下記のチュートリアルをGoogle Colabを使用して機械学習について学ぶことが出来ます。

TensorFlowのチュートリアル(英語版)
Preferred Networks社が出しているChainerのチュートリアル(日本語版)
Pytorchのチュートリアル(英語版)

Google Colabを使って機械学習の世界へ飛び込んでいきましょう!

関連記事一覧

  1. この記事へのコメントはありません。