学生がいつでもどこでも豊富な計算資源にアクセスできる環境を
以前、大学生の買うべきPCという記事を書きました。
あの記事はもうだいぶ古くて参考にならないと思います。あれから、ミドルクラス(RAM:8G、CPU:i5以上)のノートパソコンはかなり値段が下がりましたし、いろいろな機種が選択できるようになりました。
普通に、レポートを書いたり、発表資料を作成する分には上に上げたようなスペックのノートパソコンを10万ちょっとで買って使えばいいです。
でも、研究室に配属されると研究内容によっては、もっと高いスペックのPCが必要になることがあります。
既に、「うちはプログラムは全部AWSのVMで回してるよ!」ってところもあると思いますが、現状そういう場合は研究室単位で業務用のPCの販売業者からそこそこのスペックのデスクトップPC(ワークステーション的な)を買うなり、リース契約するなりして学生に割り当てるということをしているのではないでしょうか?
自分がいた研究室はそうでした。脳神経回路のシミュレーションをやっていたのですが、プログラムを実行するのはとにかく時間がかかる。
で、GPUを使って並列計算をさせたりするのですが、GPUのスペックが低すぎてGPUのメモリにデータが全部乗らずにプログラムが落ちるということが結構ありました。
そのたびに研究室では新しいPCやGPUを購入しないか?という話になるのですが、機種の選定をして、業者に注文をし、届いたものをセットアップするのは結構時間がとられるんですよね。
研究に遅れが出るのは避けたいので、すぐにでも新しい環境を試したいですが、これだと数週間はかかってしまいます。
しかも、いざ動かしてみると実はマシンのスペック以外のところで問題が見つかったりするのです。
で、大学(院)を卒業し業務で毎日クラウド上のVMを触っているのですが、わざわざPCを買わずにAWSやAzureから研究テーマごとにあったインスタンスを借りてくればいいじゃん!って思うようになりました。
まぁ、そういう話がなかったわけじゃなくて、後輩で試験的にAWSでプログラムを回してた人もいたし、僕が知らないだけで母校でもクラウド上の計算資源をバリバリ使っていた研究室もあったのかもしれません。
ただ、少なくとも当時の僕は「現物が目の前にあったほうがいいよねー・・・」って思っていてクラウドサービスに手を出すことができませんでした。
GPUの性能は日進月歩
ムーアの法則に従ってCPUの性能が時間がたつごとに倍になるなんてことは、最近言われなくなってきました。
一方でGPUの性能はここ数年で格段に上がりました(ついでに値段も上がった)。
1年たつと前よりももっといい環境が手に入るわけです。
下の表ですが、各世代におけるNVIDIA製のGPUのスペックと発売時の販売価格を表にまとめました。
発売年 | 動作クロック | コア数 | メモリ | 定価(発売時) | |
GTX 680 | 2012 | 1006MHz | 1536 | 2GB | 6万円前後 |
GTX 780 Ti | 2013 | 875MHz | 2880 | 3GB | 8万円前後 |
GTX 980 | 2014 | 1000MHz | 2816 | 6GB | 10万円前後 |
GTX 1080 Ti | 2017 | 1480MHz | 3584 | 11GB | 12万円前後 |
RTX 2080 Ti | 2018 | 1350MHz | 4352 | 11GB | 17万円前後 |
RTX 3090 | 2020 | 1400MHz | 10496 | 24GB | 18万円前後 |
K80 | 2014 | 499MHz | 4992 | 12~24GB | 70万円 |
P100 | 2016 | 1189MHz | 3,584 | 16GB | 90万円 |
V100 | 2017 | 1370MHz ? | 5,120 | 16~32GB | 100万円前後 |
参考:https://www.pc-koubou.jp/magazine/5838
すべてまとまっているサイトがなく、適当のソースから引っ張て来たので正確かどうかはわかりません。比較対象はそのシリーズの型番を持った上位モデル(特別仕様は除外)を適当に選んでいます。
こう見ると動作クロック数も向上しましたが、コア数やメモリはこの8年間で10倍近く向上しました。特にメモリの大きさはメモリ不足だとプログラムが実行できなくなりますし、あればあるほど同時に計算できるデータ量を増やせるので重要です。
ちなみに、僕は研究室にいた2年前に、研究室の5年前のGPUを積んだワークステーションでプログラムを回していたので、今流通しているGPUの10分の1しかない計算資源を使って「あ~実行が終わんないなぁ~」と嘆いたわけです(そりゃ終わらんわな・・・)。
まぁ、一般的な研究室が一年に購入できるPCなんて限られていますし、いいPCは先生や先輩が使うものなので当然ですが・・・。
しかも、こういう計算資源を大量に使いたいときって学会や卒論、修論の提出前なので、大体みんな使いたいと思っています。そうなると共同で一つのPCを使うというわけにもいかないです。
プログラムを回している時間だけクラウド上のVMを起動していればそれほどお金はかからない
AWSといったクラウドサービスで借りているVMに課金されるのは起動している時間のみです。
上の表で70万円したK80を搭載しているAWSのインスタンス(p2.xlarge)は一時間0.9ドルで利用することが可能です。V100でも一時間3ドル程度です(p3.2xlarge)。
p2.xlargeで10時間ぶっ通しでプログラムを動かしたとしてもコストは1000円で済むわけです。
まぁK80で済むなら、GPU自体は2021年現在10万円以下で買えるので適当に自分でPCを組めばいいじゃんってなるかもしれませんが、上の価格はGPUだけではなくPC本体を借りる時の値段です。
自分で組むとしても、もともと積まれているPC(サーバー)をリースするとしてもセットアップして保守するのは自分です。
それを、クラウドサービスに委託してポチポチwebサイトの画面を操作するだけで手に入れられるのは、自分の時間的リソースを節約するという観点からも効率的と言えると思います。
まぁ、ここら辺のことは研究の進め方によって多少損得が分かれる所かもしれません。自分が学生の頃は、情報収集→理論的なことを詰める→プログラミング→シミュレーションというサイクルを延々と繰り返していたので、コードを書くところまでは手元のノートパソコンでやれば、VMを起動しているのは月に20時間もあれば十分でした。
それにプラス、既にドライバなどがインストールされているイメージを使えば環境構築や保守の手間も省けて、普段自分が使ている環境よりも格段に高性能な環境が使えるならクラウドを使わない手はなかったと思います。
研究室に所属しない学生にも無料のクラウド環境があれば学生時代にチャレンジできることがもっと増える
研究室に所属している学生は年間数十万円は自身の研究に使うことができるので、先生を説得してクラウド上でインスタンスを立てるのはそれほどハードルが高いことじゃないと思います。
ただ、研究室に所属していない学生は資金元がどこにもないのでクラウドサービスを利用する敷居は高いのではないでしょうか。
クラウド上に自分が自由に使うことができるVMがあることは計算資源を利用して機械学習に挑戦することもできますし、それだけじゃなくてwebサーバーとして運用することも可能です。
サーバーがあれば、webページを開設したり、ブログを始める他に、webアプリケーションを開発したり、学生同士でサービスを考えて公開することができます。
ちなみに、僕は学生時代自分で使えるサーバーが欲しくて自宅のipを公開してraspberry piでサーバーを運営していました。
ただ、サーバーとして機能させるのに精いっぱいでその先で何かするということができなかったんですよね。
おかげで随分ネット仕組みについては詳しくなりましたが、自宅のLANを使うということはそれだけセキュリティのリスクがありますし、時間も精神も消耗してしまいます。
もしも、学生が無料で使えるサーバーがあったら、きっとその先にチャレンジする人がもっと増えると思います。
欲を言えばドメインも付与されたらいいと思います(ないとTLSが使えない)。
まぁ、ちゃんとやりたいなら自分でお金を出してやればいいのですが、お試しに勉強がてらクラウド上のVMをいじってみるのはとても有意義なことだと思います。
学生全員にクラウド環境を用意するとお金が莫大にかかると思うので、授業でLinuxやサーバーについて学んだあとに希望者を募ってアカウントを付与すればいいと思います(課金額を制限する仕組みは必要かも)。
学生の皆さんは先生たちにお願いしてみては
もしかすると僕が知らないだけで、大学ではすでに学生用のクラウド環境があるのかもしれません。わからない方はとりあえず情報を収集してみましょう。
で、そんな環境はないってなったら先生たちに訴えてみるのはアリだと思います。きっと大学側もそういうことを考えてはいても、実際どんな学生がどんな用途で利用するのかわからないから手を出せないのかもしれません(きっとクラウドを運用している企業の営業は大学に来てる)。
クラウド環境は大学のLAN内や学生の自前のネット環境よりもずっと安全で(セキュリティを破られても盗まれる情報が少ない)、おかしくなったり、使わなくなったら解約してしまえばいいので、実はかなりハードルは低いと思います。
クラウドサービスにはサーバーを立てる以外にも便利な使い方がいろいろあって、ITの世界に就職するつもりなら、クラウドに関する知識は就活でも非常に有効だと思いますし、就職してから役に立ち続けると思います。
それでは。