AI半導体におけるNVIDIAの強み

 AIエンジニアの間ではGPUの製造メーカーとして良く知られているNVIDIAであるが、投資家の間では、四半期ごとに発表される業績が注目されており、NVIDIAの業績によって米国の株式市場の株価の傾向だけでなく、日本をはじめとする世界中の株価の傾向を左右する状態になっている。

 今でこそ、GPUといえばNVIDIA、NDIVAといえばGPUというように、AIに利用されるGPUの代表的なサプライヤーになっているが、私がデータセンター事業会社で執行役員をしていた10年前はNVIDIAのGPUはオンラインゲームで利用されるコンピュータ向けのデバイスとして認識されていた。ディープラーニングの研究目的で、当時でそれなりにハイスペックのGPUを搭載したタワー型PCを1台だけ自作コンピュータ販売会社にネットで注文したところ、先方の法人営業担当から直接会いたいという連絡があり、面談することになった。今思えば、当時はガチャを中心としたスマホゲームが伸び盛りだったためデータセンター事業会社がGPUを購入するということは何かゲームビジネスのネタがあり、もっと大量発注が控えているかもしれないという想像をしていたのかもしれない。面談では営業担当だけでなく部長クラスの方も同席されており、一通りのアイスブレイクの会話の後、GPUの利用目的を質問された。私は「ディープラーニングの学習で使うので」と回答した。しかし、先方は怪訝な顔をされ、「社内教育向けですか・・・」と言われたので、「そっか、これはきちんと説明をしないと理解してもらえないと考え、20分ぐらいかけて、人工知能の概要と、当時の技術トレンド、なぜディープラーニングが注目されているのか、なぜGPUが必要なのかというのを簡単に説明した。反応は、「そうなんですね、いやーそんなものにGPUが使われるとは全然知りませんでした。その分野の研究機関への販売の可能性についても検討していきます。」と言われていたのを記憶している。その後、2016年になるとAI向けサーバDGX-1がNVIDIAから発売され、さらにハードウェアだけではなく、AIに関するソフトウェアを数多く無料提供することでNVIDIAは2014年ごろから始まるAIブームを牽引していくことになっている。

 AMDやIntelなど別メーカーからもGPUが販売されているが、なぜAI利用となるとNVIDIAが選ばれるのか?というと、それはCUDA(Compute Unified Device Architecture)という汎用並列コンピューティングプラットフォーム(並列コンピューティングアーキテクチャ)およびプログラミングモデルが存在するからである。簡単にいうとCUDAはアプリケーションから簡単にGPUを使うためのツールである。現在のAI/機械学習に関する研究開発環境はarXiv,githubに公開された研究結果、プログラムを参照して追加、改善するというサイクルになっているため、基本的にそれらが動作する環境に依存する。したがって、元々の環境がCUDAでGPUを使う環境であれば、その環境を求めるという流れである。学習効率を上げるには、CUDAが使えれば高性能なGPUに変えるだけでAIアプリケーションとしてはそのままでなにもせず対応できるためAIエンジニアとしてはNVIDIAのGPU一択となっている。

ビジネスとして他のメーカーのGPUを選択する際のネックになるのが、既存のAIアプリケーションを動作させるためのCUDA互換性の有無である。昨今のネット記事にあるようにAIアプリでのデータセンター利用増加により電力利用増加が予測されるため、省電力化というのが課題になるのだが、NVIDIAよりも省電力な環境を採用したとしてもその上で動作するアプリケーションがない、もしくは動作環境移行コストがかかるのは魅力的に見えないというのが問題である。

 このたぐいで似たような話は以前からあり、PCのOSでWindowsを利用するよりもLinux系のOSを利用した方がコスト的にもセキュリティ的にも安価で済むが、Office製品やその他業務系アプリで多くの人が慣れているアプリがLinux系OSでは使えないためいまだにWindowsのシェアが大きいという例が代表的なものである。

 この状況を変えていくには、Googleがクラウドで提供しているAI開発環境 ColaboratryでTensorFLow+TPU(Tensor Processing Unit)を使えばCUDAは必要なくなるというように、NVIDIA以外のAI半導体会社もしくは、そこと協業する会社がソフトウェア開発ルーツに投資をしっかりしてCUDA依存しないAIアプリケーションを開発する必要がある。もしくは、CUDA互換がある開発ツールを提供することで現状のNVIDIA優位な状況を変えることは可能かと考える。

JAXAのプログラミング教材(ロケット編)

先日の記事で、NASAのJPL(ジェット推進研究所)がSTEM教育向け教材を提供していることを書いたが、日本のJAXAでも宇宙教育センターが作成した子供向けのプログラミング教材を公開している。宇宙教育センターは、プログラミング教材以外にも子供向けに科学が身近に感じられる教材を多数公開している。

プログラミング教材は、小学校でのプログラミング教育の開始に伴い2020年に作成され、ロケット編、はやぶさ2編、人工衛星編、地球観測編、HTV-X編の5つが公開されている。
https://edu.jaxa.jp/materialDB/contents/search/result.html#/kw=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0

ロケット編の説明資料は、
1.JAXAについて
2.ロケットについて
3.Scratchでロケット打上げゲームを作ろう!
で構成されている。

ロケットについては、ロケットの役割と、ロケットとプログラムの関係が簡単に説明されている。もう少し説明した方が、次のゲームの流れが理解できて良いと感じるが、そのあたりについては教師に任されているようである。

ロケット打ち上げゲームについては、地球からロケットが打ち上げられ、ロケットの第一段を切り離す高度、第二段を切り離す高度、フェアリングを切り離す高度でプレイヤーがタイミングを合わせてキー操作をすると、切り離しが成功し、最終的に背景が地球全体に切り替わり人工衛星が周回軌道を回り続けるという流れで進むものである。キー操作のタイミングが合わないと、人工衛星は周回軌道に投入されずに画面に「失敗」の文字が表示される。

プログラムについては配布されたScratch向けプログラムファイルをScratchで読み込むことで開始できるようになっている。ロケットゲーム用のオリジナルのロケットスプライトや人工衛星スプライト、地球背景が含まれており、ブロックを組み合わせるだけでプログラムを作成することができる。基本的に資料に沿ってブロックを配置していけばゲームができるように資料は作成されているが、なぜそうするか?などの細部の解説はなく授業の自由度が高いため教師が補足説明する必要があると考える。

学習指導案をみると、ロケット打ち上げについて学習しようという教材にしては説明が少し物足りない。また、ロケット打ち上げを題材としたゲームをプログラミングしようというには生徒に考えさせる場面が少ないと考える。

実際にこの教材をつかってゲームを作成させるには、最初にゲームの内容を伝え、そのために必要なスプライトの動作のフローや操作入力によるスプライトの反応を考えるといった、全体の流れを論理的に考えさせべきかと考える。その後、その論理を実現するための細部の実装を考えさせたほうが、子供にとってもScratchのブロックの配置についてよく理解できるのではないかと考える。

小学生向けオンラインプログラミングスクール ミライ・Codeはこちら(https://www.mirai-code.com/)

NASAが提供するSTEM教育

以前、有料動画配信サイトで「人工衛星を制御せよ! 〜“宇宙キッズ”のひと夏〜」というNHK-BSで放送された世界のドキュメンタリー番組を視聴した(現在は配信されていないようである、残念!!)。それはとても興味深い内容であった。原題:Zero Gravity(アメリカ 2021年)という3年前にアメリカで制作されたドキュメンタリーである。以下にそのあらすじを紹介する。(以前の記憶で記載するので細部の違いについてはご容赦ねがいます)

あらすじ————–毎年夏にNASA JPL(ジェット推進研究所)とMITが子ども向けにワークショップを実施している。それは、全米から数千人が参加し、5週間かけてコンピュータープログラミング、ロボットや宇宙のことを学んだ上で人工衛星を制御するプログラムを作成するものである。このドキュメンタリーの題材となっているプログラムは、ある条件下で目的を達成したことで得られる合計得点を競い合う1対1の対戦型ゲームの戦略を自動実行する人工衛星の制御プログラムである。ゲームに関するプログラミングはScratchで作成できるように拡張されている。ゲーム上で人工衛星はプログラムにしたがって自動で制御されるため、ゲームの勝敗はどういう場面でどう動かすかという事前に立案する戦略に依存する。

参加者は小学校単位で参加グループが構成されワークショップに参加する。プログラムは提出期限までに作成され、提出後の変更は不可能である。その後、作成されたプログラムによって各州でトーナメント方式で対戦が行われて各州の代表チームが選抜される。各州の代表チーム選抜後はNASA JPLに集まり州代表対抗のトーナメントが実施される。各州のトーナメントでは人工衛星や宇宙空間などのゲーム環境はコンピュータ・シミュレーション上で実現されるが、最後のJPLでのステージではゲームの舞台は宇宙空間にあるISS(国際宇宙ステーション)内部で現実のマイクロ衛星を制御して対戦が行われる。

プログラム作成にはメンターとして、事前にJPLでセミナーを受講した小学校の教師が参加する。教師はあくまでもメンターとしての参加であり、戦略立案は生徒が話し合って決めていく。このドキュメンタリーでは、JPLの地元であるカルフォルニア州のある小学校を舞台に、メンターである先生がJPLのセミナーを受講しグループメンバーを募集するところから始まる。7,8名で構成されるグループメンバーから3名の小学生にスポットを当て、その小学生の家庭環境、将来の夢、このワークショップに参加したことによって将来へのモチベーションがどう変化したか等を中心にインタビュー形式で取材していく。スポットがあてられた生徒たちは、家庭が裕福であるとか、両親が教育に熱心であるとか、高学歴であるとかではなく、移民系であったりなどむしろアメリカの多様性がある社会を反映した家庭環境である。生徒自身も特に宇宙やプログラミングに興味を持っているというわけでもなく、生物学や経済に興味を持っていて、勉強も遊びも普通の子どもたちと同じように楽しんでいる。そんな生徒たちが、5週間のワークショップに参加し、先生の指導を受けながらプログラムを開発し、最終ステージでは宇宙飛行士が見守る中、目的を達成する早さと精度を競う。参加した3人の子どもを追い、自らの可能性に目覚めて更なるチャレンジに意欲を燃やす姿を描くというストーリーである。———————————-

NASAのJPLというのは、主に惑星探査を中心に研究をしている研究所であり、日本のJAXAでいえば相模原の研究所に相当する。こちらは毎年、小学生向けでなく中学生、高校生、大学生向に様々なSTEM教育の教材を公開・提供している。近年ではJAXAも小学生のプログラミング教育向けに宇宙を題材としたSTEM教育教材を公開しており。このような教材がもっと広まって今以上に科学に興味を持つ生徒たちが増えていけば良いと考えている。このブログでもそのような教材を紹介することで、そのような動きを促進することに協力していきたい。

小学生向けオンラインプログラミングスクール ミライ・Codeはこちら(https://www.mirai-code.com/)