ホーム > HPC・DL・AI > 導入事例 > HPC・Deep Learning・AI > 東京工科大学 石畑 宏明 様

東京工科大学
石畑 宏明

"第26回目のインタビューは、東京工科大学 コンピュータサイエンス学部 システムアーキテクチャ研究室 教授でいらっしゃる石畑 宏明先生にお話をお伺いしました。
石畑研究室では、コンピュータを高速にするための並列分散処理技術や、超並列計算機用通信アルゴリズムの可視化技術の研究をされています。
また、最近では並列計算機の取り扱いを教えるための講義支援システムFEHA(Front-end Environment or Hands-on Activities)を開発され、講義に活用されています。"

本日はどうぞよろしくお願いします。早速ですが石畑研究室についてご紹介いただけますか?

 どのようなものか見てもらうのがきっとわかりやすいと思います。私は学部3年生向けの「並列分散処理」と、修士1年生向けの「並列プログラミング」の講義を行っていますが、聴くだけの講義では学生も嫌になってしまいますので、できるだけ演習を入れるようにしています。最近ではGPUを使った並列処理にも取り組んでいますが、セットアップが非常に大変です。学生の所有するパソコンには、GPUが入っているものもあれば、そうでないものもあります。入っていたとしてもNVIDIAのGPUの人もいればAMD Radeonの人もおり、なかなか統一した環境でできないという課題があります。またMPIを使った分散型の並列処理などもやらせようと思うのですが、MPIをインストールするだけで終わってしまい、全然演習の時間をとることができないのです。通常は計算機センターにユーザーを作り、学生にログインさせてバッチジョブに依頼して実行させるということをやっているのですが、それはそれでそこそこの能力や知識がないとなかなかついていけないということになります。

特に学部3年生向きの並列処理となるとそこまで深いところまでとてもできないので、Hello world(ハロー・ワールド)に毛が生えたくらいのものをやらせたいのです。とりあえずやってみるということが学生にとってはいい経験になるのかなと思っています。そういうことが簡単にできるようにと思い作ってみました。
 例えばこのような感じでC(言語)だとMPIを使うケースやOpenMPIを使うケースOpenACCやCUDAを使ってみるケースがあるのですが、例えばOpenMPだと、その 「サンプル(OpenMP)を使う」 というのを選択するとOpenMPのサンプルが出てきて、実行できます。(サンプルなので実行できるに決まっているのですが(笑))
 もともとの構成は、フロントエンドがあり、ログインサーバーがあり、実行マシンがあり…フロントエンドでエディターを動かして、ログインサーバーでコンパイルして、実行マシンで実行させるということをやっています。

 このような感じで(今回は約17秒で)実行結果が見られます。サンプルなので動くかどうかだけの確認になりますが、OpenACCやCUDAやOpenMPやMPIがすぐに確認できるようになっています。面白いのが、このサンプルは全てできているプログラムなのですが、これ以外にもいくつかのテンプレートがあり、講義ではこれを使います。どのようになっているかというと、プログラムのほとんどのところが書いてあり、肝心な部分のみ空行になっているものです。例えば、OpenMPなら、プログラム中にプラグマを入れないと並列化されないので、それを入れて実行させると早くなったことがわかるというのをやってみるとか、pthreadもやっていますが、これも肝心な所を空きにしておいてそこに何か自分で入れてやってみるとわかる…というようなことができます。

 色々なテクノロジーはバックエンドさえあれば(それぞれカスタマイズはしますが)入り口はこのような感じで同じで何でもできてしまうので、講義にはとてもいいかなと思ってこれからもう少しやっていこうと思っています。
 例えば私は、現在論理設計といういわゆるハードウェアの設計に関する講義もやっています。ハードウェア設計は、昔は回路図を書いていたのですが、最近は「ハードウェア記述言語」というのがあり、C言語やJAVA言語のような形のプログラム風にハードウェアに書いて、それをシミュレーションして確認がとれたらハードウェアに焼き込むというやり方になっています。Verilog(ヴェリログ)という専用の言語があるのですが、それについても同じようにできます。(サンプルを使って画面上で実行しています。)
 また論理合成という技術があります。それはVerilogで記述された設計を回路に自動変換するというものです。これもここで実験的に使えるようになっています。
 他にも、NAMDなどの分子動力学のアプリケーションなども実際にやらせてみるのとやらせてみないのとではぜんぜん違うので、そのようなものもソースの一部を入力させてやらせてみることもできるので、ちょっとやってみるというのにはとてもいい環境だと思って使っています。言語も幅広く対応しています。
 企業の展示会などに行くと並列計算系などのツールがたくさんありますが、そのような場に持っていくとすぐに使えるので重宝するのではないかと思っています。

商用化を目指していらっしゃるのでしょうか。

 このシステムは、一橋大学情報基盤センターの矢崎俊志先生と共同開発しています。商用可は考えていないのですが、そのうちオープンソースにしたいと思っています。

GPUのコーディングは大変ですよね?

 そうですよね。例えばCUDAでやってみると、簡単なことをやろうとしても、とてもコードが長くなってしまいます。一番かんたんなものをもってきたのですが、それでもとても長くて…これを入れてみろと言うと学生はきっと嫌になってしまい、ただコピペするだけになってしまうと思います。
そうではなくて、肝心な所のみ空欄にしておいてそこに何が入るのかというのを課題にするだけでもだいぶ(学生にとって)印象が違うかなと思っています。

そのような高速化させるためのコードを差し込む際の重要な場所を空欄にするというものも先生自身が作られていらっしゃるのでしょうか?

 もちろんです。もともと作っておいて、講義で「こういうふうにやるのですよ。」と説明し、そのポイントとなるところのみ隠したものにしておくというやり方です。

先生の研究室の学生さんは、プログラミング言語は特定の言語に絞っているのでそうか?もしくは、自由に学びたい言語を習得するのでしょうか?

 皆、バラバラです。十人以上いますが、大学自体では、まずJAVAを教え、その後の選択でJAVAかC言語をやるのですが、大抵の子たちはJAVA言語をやりますね。組込系をやる子はCをやります。最近多くなってきたのはPython(パイソン)を使って何かをやろうという子ですね。これも教えようと思っています。
 今年9月に納品して頂いたマシンを使ってニューラルネットワークにもチャレンジしています。今は学生と一緒に勉強しているような状態なのですが、ニューラルネットワークのシステムをこの環境にくっつけてなにかできれば良いなと思っています。
 Pythonも色々書かなければいけないので、途中の構成のところだけ入れるような感じでやってみたり、パラメータのところだけ入れるようにしてみたりできると良いなと思っています。パラメータだけファイルにして実行させると、何をやっているかわからなくなるので、ソースが出ていて、ある箇所だけを変えてやってみるというのが学生にとっては学ぶのには良いかなと思っています。

先生のご研究のテーマに並列分散処理技術、可視化技術がありますが、どのようなきっかけでご研究を始められたのですか?

 私はもともと富士通に所属していたのですが、京コンピュータの初期設計の際に一緒にやっていました。それからこちらに移ってきてからも、委託研究として、京でのAll-to-all(全対全通信アルゴリズム)の開発を行いました。All-to-all通信は、これは「10人いた場合、全員(10人)が他の9人にそれぞれ個別のデータを送るということを同時にやる」もので、非常に通信ネットワークへの負荷の高いものです。それをTofuネットワーク(京のインターコネクト)の上でどのようにやったらよいかというアルゴリズムを研究していました。それをやるにあたってどのようにネットワークがどのように動いているのかというのを理解する必要があるので、ビデオとして保存してあります。
 ネットワークのリンクの状況や使用率や待ち時間など、赤や青の色で表しています。
それにより、混雑する経路を見極められ、効率の良いルートがわかるのです。混んでいるところはリンク使用率が高いとか低いとかひと目でわかります。このようなことをやって、これは小さくてシンプルな例なのですが、これを大きなもの(Tofuネットワーク)に変えてやります。このような可視化するようなツールを使って研究を進めています。

 Tofuネットワークは、このような12個をメッシュ状につくったものを三次元上に並べて、これをどんどん大きくしていったような構成になっています。全部で8万2千944ノードになります。1つのノードが他のノードに送り、別のノードも他のノードへ…という通信をやっています。(All-to-allアルゴリズム)
 混んでいる場所や空いている場所・待ち時間などがよくわかります。
 このTofu専用のアルゴリズムを作ったAll-to-allとOpenMPのAll-to-allを同時に動かし、どのようになるのかを比べてみました。Tofuの方はほとんどのリンクを同時に使っているので赤い所(待ち時間)が多いのですが、OpenMPの方はほとんど青か白で、時間も8倍長くかかりました。

先生が並列プログラミング、スパコンそのものに興味を持たれたきっかけというのはどのような時ですか?

 きっかけは、1985年くらいから富士通で並列コンピュータの研究をしていて、正式には富士通研究所というというところに所属していまして、画像処理用の並列コンピュータを作ってそれから汎用の方に行きました。
 昔作ったAP1000というのがあるのですが、それは大御所になっている並列処理の先生方なら皆ご存知かと思います。

富士通研究所様にご所属されていた頃はずっと並列計算されていたのでしょうか?

 研究所にいた頃、並列計算をして、それを商用化しようということで事業部に行き、ワークステーションクラスタというのが流行っていたのですが、Sunのワークステーションをクラスタにし、製品化して出していました。その後、InfiniBandの開発をして、京コンピュータの初期検討までやり、大学に来ました。

我々がご提供しているそのものの開発をされていたのですね。InfiniBandの開発にも携われていたのですか?

 はい。HCA(Host Channel Adapter)やスイッチなどを作っていました。その頃はIBMやIntelもつくっていましたが、Mellanoxが一番頑張っていましたね。

研究室の学生さんは現在何名くらいいらっしゃるのですか?

 学部生が17人~18人います。就職はIT企業やSEが多いですね。

学生さんの研究テーマは並列処理などのプログラミングに統一されているのですか?

 いえ、まったくそんなことはなく、テーマは好きなことを選んでいいと言っています。その中でも並列処理などに興味がある子もいて、今年の学生ですとCUDAを使って並列処理している子もいます。OpenACCのチューニングのパラメータをどうしたらよいかを研究している子もいます。

GPUのプログラミングというのはすごく需要がありそうですね。

 そうですね。需要があるにはあるのですが、CUDAは難しすぎて期間が短い学部生には到底できないのです。彼らにCUDAのプログラムで何かさせるとしたら、初めから色々教えたりしなくていけないので、やはり時間が足りないですね。
 それに対してニューラルネットワーク等ではPythonのライブラリであるNumPyを通してCUDAを使います。簡単に扱えて、しかも速くなりますので、あの考え方はとても良いなと思っています。学部生も使っています。

先生がコンピュータシミュレーションをされる際、重要視されているところはどのようなところですか?

 シミュレーションは何でもできてしまうので、本当にそれが現実的な設定なのかどうかというのを気にしないといけないところだと思っています。どんな設定でも出来てしまうので普通に考えてありえないような設定ではダメですよね…(笑)

ご研究の中でやりがいを感じる時はどのような時ですか?

 やはり論文が通った時ですね(笑)論文が通って海外に発表しにいくチャンスがあるといいですね。
また、ニューラルネットワークが今一番面白いと思っています。ずっとスーパーコンピュータの世界で研究していたのですが、やはりあれは財力と人力がないとなかなか成果が出せません。一番大きなマシンで動かしてなんぼの世界なので、難しいです。それでニューラルネットワークでディープラーニングはとても話題になっていますし、ディープラーニングの細かい理論的な背景などは置いておいてどのようなところに応用したらよいかというアイディア勝負の面があると思っています。
同じ土俵で戦っても仕方なく、誰もやっていないようなことをやれば面白いとか、学生にもできるのではないか?というのもあり、そこを開拓し始めていますが、そこがとても面白いです。

システムアーキテクチャの開発をされていますが、ディープラーニングへの応用は検討されていますか?

 そうですね、そういう意味ですと「ディープラーニング専用マシンのアーキテクチャー」には興味がありますね。
そういう意味ではみんな今はGPUを使ってしまっているので、「こういうのはどうですか?」と新しいものを出しても、よっぽどその性能がずば抜けて良くない限り使ってくれないと思っています。
新しいものを作りたいけど現実的にはなかなか難しいというところです。
FPGA(Field Programmable Gate Array)とかに焼き込むとか、そのあたりはとても面白いと思っています。

今後インテルからFPGAが統合されたプロセッサーが出て来ると伺っております

 開発ツールがどうなっているのか気になりますね。C言語でそのまま書けるというイメージなのですが、効率的なものに仕上がるのはまだまだ先になりそうですね。

学生さんでもできるような(ディープラーニングの)新しいテーマとしてどのようなことをさせていますか?

 今学生にやらせているのは、「写真の手ブレ画像からニューラルネットワークで元の画像を推定してみなさい」というものです。
それで、ブレ画像を戻すというのは画像処理の範囲では随分研究されていて、理論的には、ブレたカーネルがわかっていれば元の形に戻せるます。実際にはこの逆フィルタは不安定でノイズがたくさんのってしまい、なかなか決定版は無いようです。色々研究されて年々新たな技術が開発されていますが、まずはたくさんの写真を見せて、「これの正解はこれだよ」という風に、ビフォーアフターを見せ、どこまでできるのかをやってみよう!という風に進めています。元の画像に対して何画素かずらしたカーネルをコンボリューションしてブレた画像を作し、それから元の画像を推定させる作業なのですが、やはり不安定なのでなかなかうまくいかないんですよ。これをなんとかならないかと試行錯誤したのですが、このようなところまでいきました。

研究テーマは毎回先生が考えて学生に提案するのですか?

 そうですね。私が考えて学生を指名してやってみようかと声をかけています。他には迷路を解いてみようとか…。
 例えば迷路の例ですと、迷路を作ってディープラーニングで解かせようとすると、何となくそれに近いところを探しているような感じになるのですが、近いところも行っていますが、全く関係ないところも行っていたり、なかなか学習率も上がらず、やり方が悪いなと思っていて、どうしようかなと思っているところです。

先生は画像処理を専門にやっていらしたのですよね?弊社のお客様においても外観検査装置や画像処理装置を製造されているお客様からディープラーニングシステムの引き合いを沢山いただいています。

 画像処理は昔やっていました。ディープラーニングの問題は、なんでそれなのか?というリーズニングができないことが問題なんですよね。未だに信頼がおけないと思っている人もいるので、そこが今後の課題だと思いますね。
 また、データ量をどれくらい与えられるかというのがとても大事で、ちまたにデータがあるかというとなかなか十分なものはなく、あるとしたらGoogleとかが持っているわけで、そこで勝負ができるわけではありません。先程の迷路もブレ画像もそうなのですが、入力データと正解データをコンピュータで生成できるような応用が手っ取り早くて、学生にやらせるにはいいテーマなのではないかと思っています。

ディープラーニングは学生さん向けに主要な取り組みとして良さそうですか?

 そうですね、どうでしょう(笑)学生個々でやる子とやらない子と…取り組み方も違いますからね。
 講義での様子を見ていると、やる気のある子はいるのですが、そういう子が研究室に入ってくれるといいのですが、実際はなかなか来ないもので(笑)

数ある研究室の中でも先生の研究テーマは学生さんにとっては難しそうですね?やはり男子学生が多いのですか?

 プログラムをやるってだけで嫌がる子もいますからね(笑)
そうですね、これまでずっと男子学生ばかりで、来年の4年生の中には女子学生が2人います。

今後の課題はございますか?

 今年から取り組んでいるpythonを皆が使えるようにしたいということと、来年はもう少しディープラーニングをやらせたいですね。今教えているのが5,6人なのですが、実質動いているのは3名程度なので、もう少しグループで取り組ませるようなテーマを与えたり…やってみたいことはたくさんありますね。

ご研究に行き詰まった時のリフレッシュ方法があれば教えて下さい

 散歩ですね。散歩に出かけてポケモンを獲ったりします(笑)あとは旅行が好きなので、できるだけヨーロッパの学会を探して行くようにしています。

弊社からご導入頂いたコンピュータをどのように活用されていますか?

 マシン環境としては、8coreのマシンが4台、24coreが1台、ログインサーバーが8core、ここに先日購入したマシン(2coreのGPUマシン)が6台というのをInfiniBandで繋いでMPIをここでやったり、OpenMPをやったり(24coreのマシンで)…という感じで先程の画像処理などのディープラーニングには新しいマシンを活用しています。

 今までは他のメーカーからサーバーのみ購入して、設定は自分で行っていましたが、今回システムインテグレーションパックで購入したので、その設定がなくすぐに使い始められるというのはとても楽で良かったです。アップグレードなどが少し心配ですが、その際はまたご相談させて下さい。

もちろんです。引き続きご支援させていただきます。
 我々のシステムインテグレーションパックは、すぐに使える点で研究者の皆様に喜んでいただいておりますが、近年では同様のサービスを提供する競合が増え、サービス自体がコモディティ化しつつあります。
 今後はご研究にもっと踏み込んだサービスを提供していきたいと思います。そういった意味で、今回ご紹介いただいた先生の取り組みは大変刺激になりました。「FEHA」をオープンソース化されたらぜひWebサイトでも紹介させてください。

 はい、喜んで。まだどれぐらい先になるかわかりませんけど(笑)デモに使いたいのであればぜひ言ってください。

最後に、学生さん向けに何かメッセージなどあればぜひお願いします。

 やる気さえあればなんでもやりたいことができる研究室です。組込系をやっている学生もいれば、星の写真を撮るのが好きな学生がいまして、その写真から星のデータベースを引っ張ってきて、星を特定するということをしている子もいます。ドローンを使って道案内をさせるという研究をしている子もいます。学生には何でもチャレンジしてもらいたいです。

大変興味深いお話、ありがとうございました。

石畑 宏明 先生のプロフィール

  • 研究者紹介:
    東京工科大学
    大学院 コンピュータサイエンス学部
    コンピュータサイエンス学科
    システムアーキテクチャ研究室(石畑研究室)教授
  • 研究テーマ:
    ・コンピュータをより高速にするための技術
    ・数百万台のコンピュータを使用して並列処理を行うための技術
    ・マルチコアのプロセッサをよりうまく利用するための技術
    ・コンピュータの処理性能を活かした人間が使いやすいシステム
    ・複雑なシステムの振る舞いを人間に分かりやすく提示する可視化技術
  • キャンペーン情報
    現在開催されているお得なキャンペーン情報はこちらから。
    詳細
  • ご購入前のお問合せ
    フォームにご入力いただければ後ほど営業よりご連絡させていただきます。
    詳細
  • 見積り依頼
    フォームにご入力いただければ後ほど営業よりご連絡させていただきます。
    詳細
Contact

お問い合わせ

お客様に最適な製品をご提案いたします。まずは気軽にお問い合わせ下さい。
03-5446-5531

平日9:30~17:30 (土曜日、日曜日、祝祭日、年末年始、夏期休暇は、休日とさせていただきます。)