Google Colaboratoryの使い方と、使用例(PyTorch×DCGAN)

##概要
こんにちは。最近（2020年3月現在）はコロナウイルスの影響で、自粛ムードが漂ってますね。
私自身も念のため、在宅での研究活動に励んでおりますが、さすがにここ1週間にわたりこもりっぱなしなので疲れてきました。
今回は息抜きもかねて、前々から気になっていたGoogle Colaboratoryを使って学習を回してみようと思います。
![キャプaaaaaチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583727/99cf0934-f355-28b7-b84c-b8e48bfa8b50.png)




Google Colaboratoryは、ネット上で使えるSaaS型のnotebookを扱える開発環境の一つで、Google Driveと同期可能な点や、無料でGPUが使用可能な点ですごく便利です。
普段個人で研究されている方は、あまりnotebook形式でのコーディングはメリットを感じない場合が多いと思いますが、コードの共有が頻繁に必要となるチーム単位での開発をされる方には、まさにGoogle Colaboratoryはもってこいなのではないでしょうか。

さて、今回の記事では、**Google Colaoratoryの導入から、基本的な使用方法、さらにGoogle Driveのマウント方法と、最後にDCGANを実装して実際にGPUを使った学習手順を紹介していきます。**


##Google Colaboratoryの使い方
まずは皆さんお持ちだと思いますが、googleアカウントでログインし、[google drive](https://www.google.com/intl/ja_ALL/drive/)に入ってください。

個人のDriveのページに入ったら、左のタブの「新規」→「その他」→「アプリを追加」をクリックしてください。
以下のような画面がでるので、Colaboratoryで検索してインストールしましょう。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583727/4797caa2-72f1-5e23-589b-71858bf62c4e.png)

これで準備は完了です。（はやい！）
マイドライブに戻り、右クリックをし、「その他」→「Colaboratory」を選択すると、以下のような画面が立ち上がります。
![キャプチャ2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583727/bdfeb2b4-e7e6-e4a5-0ad9-876c8d33150c.png)
直感的に操作可能なインタフェースとなっていますので、少しいじってみればすぐ理解できると思います。

![キャプチャ3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583727/a7344351-1431-73e5-4576-d6dda8432011.png)
立ち上がった状態そのままでコードを書くことができます。

![キャプチャ4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583727/29d6d9a9-da6f-0eab-1eb5-83c1831bda64.png)
左の再生ボタンを押すと、そのセルを実行できます。出力は、そのセルの下に表示されます。

![キャプチャ5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583727/cdf80d9b-d342-a342-b547-24ce9d3f7c7b.png)
上部の＋コード、＋テキストは、新しいセルの作成、テキストの挿入をすることができます。上の画像の例では、テキストを挿入してみた例です。markdown形式で記入することができます。

保存する際には、「ファイル」→「保存」から可能です。ドライブ上に保存されます。

##Google Driveのマウント方法(最新版)
いままではスクリプトを実行するなり、いろいろと手間がかかるものだったようですが、現在は簡単にマウント可能です。
![キャプチャ6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583727/4985dba6-419a-347c-6c6e-ff1507a86464.png)

左のタブの、ファイルっぽい形をしているところを開くと、「ドライブをマウント」があるので、そこを選択するだけです。マウント時に許可を求められますが、全部yesでOKです。
これでマウントが完了しました。

では、実際にGoogle Driveのファイルをコード上で参照してみましょう。
上記の方法を実行すると、./drive/My Drive上にマイドライブがマウントされます。
以下の画像は、マイドライブ上に置いた"a.png"を読んでprintさせた例です。

![キャプチャ7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583727/627383eb-0702-1b18-e7aa-60704a61a13f.png)

##GPUを使った学習例(DCGAN)
このままだと味気ないので、実際にGPUを使って学習をさせてみましょう。
まず、GPUを使用するのには、上のタブの「編集」→「ノートブックの設定」から、「ハードウェアアクセラレータ」のGPUを選択します。
![キャプチャ8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583727/0666ad20-d6ec-a642-5d22-96cc69ccc4b3.png)

DCGANを実装します。コードは[こちら](https://blog.shikoan.com/pytorch-dcgan/)をお借りしました。
上記のサイトのmnistの例を参考にします。
ひとつ注意べきは、保存先のディレクトリです。./drive/My Drive上にマイドライブがマウントされているので、必ず./drive/My Drive内を参照するように引数として渡す必要がありますね。

さて、コードをコピーし、ディレクトリ参照先を変更してから、再生ボタンを押して学習をさせてみます。
![キャプチャ9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583727/74dc918a-83b5-8fa9-10b7-2a39a2e2342d.png)
学習が進んでいきます。

完了後は、生成画像例が指定したディレクトリ上に保存されます。
![キャプチャ10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583727/894ee1e3-4906-81e1-07e4-812a037d1fb4.png)

##最後に
今回はGoogle Colaboratoryを使い、マウントの手順から、DCGANを実際に学習に用いてみました。
上記のDCGANのコードはConvolution層もあって、結構重たい処理で、スペック低いPCだと厳しいですね。
GPUを使った所感ですが、Nvidia K80が裏で回ってるみたいで、十分早いです。
ノートPC上で、しかも無料で使えると考えると、非常にありがたいですね。外出先などでも学習できそうです。
今後機会があればどんどん活用しようと思います。


##参考文献
https://qiita.com/shoji9x9/items/0ff0f6f603df18d631ab