Harada-Osa-Kurose-Mukuta Lab.

MILJS

背景

このウェブサイトをご覧いただいている皆さんは,**Deep Learning(ディープラーニング,深層学習)**という言葉を 耳にされたことがあるのではないかと思います.これは,「機械学習」と言われる手法の一つで,コンピュータの性能の向上に伴い, 大きな成果を上げています.

そもそも機械学習は,音声や画像などの認識をコンピュータに行わせる手法のことを言います. 例えば,デジタル写真のデータを入れると,その写真に写っているものが何なのかを識別してくれるように,コンピュータに学習させるのです. 近年では,「自動運転」などが応用先として注目されています. Deep Learningは機械学習の一種で,従来の方法では人間があらかじめ教えていた 「画像からどのような特徴を取り出すか」という部分も含めて,機械に学習させてしまおうという方法です. たくさんの層がある,つまり「深い」ネットワークを使うのが一般的なので,「Deep」と呼びます. コンピュータが扱うべき情報が多いため,コンピュータの性能が高くなってきた近年になって花開いた手法です. Deep Learningはたくさんの計算を必要とする技術で,高性能なコンピュータをたくさん並べた「データセンター」で扱うのが一般的です. 一台で計算させるだけではなく,複数のコンピュータに計算を分担させることでより高い性能を出す「分散計算」を行うのです. しかし,そもそも一台一台が高価なものなので購入するのも大変ですし,もちろん管理をするのも大変なので,小さな会社や研究室, 個人にとってはハードルが高くなってしまいます.外部のデータセンターを借りるという方法もありますが, 個人情報など外部に出せないデータではそうすることもできません.

そこで,「たくさんの高性能な計算機を使うのではなく,高性能ではないものも集めて, 大きな計算リソース(計算する能力)を得よう」というアプローチがあります.それをするためのプロジェクトが,我々の「MILJS」なのです.

MILJSとは

「MILJS」の「JS」は,「JavaScript」というプログラミング言語を表しています.JavaScriptはウェブブラウザで動作させられる言語で, 近年は様々なウェブブラウザが高い性能でJavaScriptを実行させられるようになっています.

ウェブブラウザは当然インターネットとの通信を行うことができるので,JavaScriptで手元のコンピュータやスマートフォンの計算能力を使い, それをインターネットとやり取りさせることができるのです.これを使えば,分散計算が手軽にできるのではないでしょうか? ウェブブラウザは大抵の端末に入っているので,特別なソフトウェアのインストールが要りません. しかも,いろいろな端末で同じように動かすことができるのです.

個人で使うコンピュータやスマートフォンの性能は近年ますます向上しており,むしろ能力が余ってしまうほどになっています. 窓口の事務用のコンピュータなど,使われている時間帯が限定されているものもあります.こうした余った計算リソースを寄せ集めることで, Deep Learningを誰でも使えるものにするというのが「MILJS」の目的です.

関連研究

分散計算が有名になったきっかけとして,SETI@homeというプロジェクトがあります. 米カリフォルニア大学バークレー校のプロジェクトで,専用の計算ソフトをダウンロードすれことで, 誰でも「地球外知的生命体探査」のために計算リソースを提供できるというものです. 我々の目指すところもこれに近く,しかも専用のソフトウェアのダウンロードは不要になります. Deep Learningのための分散計算について,JavaScriptを使っているものは他にもあるのですが, 我々の特徴は「速度にこだわっている」ところにあります. プログラミング言語には「速度の違い」があり,同じコンピュータで使ってもどれだけコンピュータの性能を引き出せるのかなどが違ってきます. JavaScriptはあまり「速い」言語ではないのですが,我々はDeep Learningによく使われている「GPU」という計算ユニット をJavaScriptから使えるようにすることで,ブラウザ上で動作するJavaScriptがコンピュータの性能を使いきれるようにしようとしています.

MILJSならではの取り組み,そして目標

先にも述べたように,「JavaScriptで分散計算をする」という取り組みは唯一のものではありませんが,かなり珍しいものであるのは確かです. しかも,特定の用途にしか使えないものを作っているわけではなく,比較的汎用的なものを作っています. 行列計算をするためのライブラリ(ソフトウェアの一種)など,Deep Learning以外の用途に広く使えるものもありますので, 例えば「ウェブブラウザ上で動くゲームの中で複雑な処理をさせる」ことにも使えるかもしれません. 基本的に,MILJSは公開して,誰でも使えるようにします.ユーザーとのインタラクションも取って,改良に繋げていければと思います. MILJSを使うことで,いろいろな方が気軽にDeep Learningを使えるようになり,その方々とのインタラクションの中でMILJSがさらに進化していく……そんなエコシステムを作るのが目標です.

リンク