Start typing and press Enter to search

受託の価値をSaaSへ、高速化の専門家が「GENESIS」で創る未来

AI用の専用チップが登場し、IoT向けにいくつものデバイスが登場する現代。フィックスターズは、それぞれのデバイスに自動でアプリを最適化して性能を比較できるサービスを開発しました。開発責任者の飯塚拓郎氏に、開発に至った経緯をお聞きした。

飯塚拓郎、Fixstars Solutions CTO
飯塚拓郎、Fixstars Solutions CTO
2009年フィックスターズに入社。GPGPUによるソフトウェア高速化案件やコンパイラ開発などに従事。最近は息子とマウンテンバイクでトレイルを走るのが趣味。

――「GENESIS DevEnv」とは、どのようなサービスでしょうか。

飯塚:チップごとにアプリを高速化した上で比較し、開発したいアプリに適したデバイスが分かるサービスです。これまでフィックスターズが受託案件で引き受けていたような、特定ユースケースでの性能比較をツールの力で自動化しました。

 何千、何万台と使うようなエッジデバイスは、わずかでも効率化できればレバレッジが効いて大きな効果が得られます。GENESISはデバイスの特性に合わせた高速化を自動で実現し、デバイス選びや高速化を安価で素早く提供します。これまで初期コストを理由に実用が見送られていたエッジ上のシステムも高速化し、エッジデバイスを活用するハードルを下げます。

――なぜGENESISを開発しようと考えたのですか。

飯塚:原点は受託開発の経験です。お客様と直接コミュニケーションを取り、目標を達成すれば喜んでもらえる受託の案件は楽しい仕事ですが、「同じ課題を抱えている人は世の中にたくさんいるはずだ」とも感じていました。

 受託開発で10倍の人に価値を提供するには、10倍の人員が必要です。事業としても、人を増やさないとスケールしない人月への収益依存が課題でした。案件ごとに似ている作業を繰り返すたびに、「もっと効率よくコンピューターを操れないか」「今より10倍、100倍の効率化はできないか」と考えていました。

 ソフトウェアを高速化するタスクには、「もっと効率よくできるはず」だという感覚もありました。ハードウェアやユースケースごとの違いに合わせるために手作業が必要だったものの、やっている処理内容はよく似ていたからです。GENESISのサービスは、いわば受託で提供していた価値の一部をネットサービスに置き換えたものと言っていいでしょう。

――受託の案件は幅広くありますが、GENESISでは「エッジデバイス」と「ビジョンAI」に特化していますね。

飯塚:GENESISが特化しているのには、需要的理由と技術的理由があります。

 需要的理由は、コンピュータシステムの中でエネルギー効率が特にシビアなのがエッジだからです。プロセッサの性能が昔ほど伸びづらくなった現代、増え続ける計算ニーズに対してエネルギー効率が課題になっています。特にエッジデバイスでは潤沢な電力供給が難しいケースが多く、少しでも効率化しようと専用デバイスがいくつも登場しています。

 ビジョンAIのような画像処理技術の普及もエッジでのソフトウェア高速化ニーズを高めています。5Gの普及などが期待されるものの、通信の物理的限界やコストといった課題から画像データが産まれるエッジ側で処理をしたいニーズは根強いからです。

 技術的な理由としては、こうした画像処理系のタスクが類型化できる算段があったからです。

 ソフト高速化でハードの種類ごとに手作業が必要だったのは、抽象化ができていなかったからです。一方、デバイスを完全に隠してしまうような抽象化では、ハード側に近い処理を操作しきれずに高速化が難しくなるジレンマがありました。

 もし高速化したいタスクが類型化できれば、そのタスクに限定されるものの抽象化とハード種類ごとの高速化を両立しやすくなります。エッジデバイスのアプリに着目することで、アプリに必要なタスクを類型化できる算段が付きました。

 例えば、GENESISでは「Halide(ハライド)」というDSL(ドメイン志向言語)を使っていて、これが画像処理などのタスクで抽象化と高速化を両立するコア技術になっています。AIで注目が高まっているDNN(ディープニューラルネットワーク)には、NVIDIAが公開する「TensorRT」など、デバイスに合わせた処理の最適化ができる開発キットを使っています。

 GENESISではHalideで作られた機能やDNNなど、機能ごとにタスクを「ビルディングブロック」と呼ぶ単位で予め用意しています。ブロックをつなげてアプリの機能を設計すると、デバイスごとにアプリを自動で最適化できるサービスです。デバイスごとに適した最適化手法も自動で選択されるため、利用者はHalideを使うべきか開発キットを使うべきかなどを意識する必要はありません。

――いつからGENESISの開発が始まっていたのでしょうか。

飯塚:具体的なサービス開発が始まったのは最近ですが、元になる構想は2012年の夏頃からありました。

 当時、光線をシミュレートして3D描写するレンダリングソフト用のコンパイラ開発に関わっていました。そのレンダリングソフトは光線の描画を記述する専用の言語を組み込んでいて、得意とする処理内容であればシンプルな記述で定義できるように抽象化できていたのです。このコンパイラ開発をきっかけにDSLに関心を持ち、画像処理向けのDSL開発に着手していました。

 元々、私は「もっとコンピュータをうまく操りたい」という思いを持っていて、学生のころからインターフェースに興味をもっていました。コンピュータを操るという意味では、プログラミング言語もある種のインターフェースだと言えます。ハードウェアインターフェースよりも自由度が高いこともあり、ソフトウェアによるインターフェースとしてDSLに可能性を感じたのです。

 途中で別の案件を担当するなどしてDSL開発は中断してしまいましたが、個人的にチップベンダーのイベントに参加するなど情報収集を続けていました。Halideを知ったときは、「あのときのプロトタイプが“モノ”になった姿だ」と感じるほど、自分がやりたかったこととコンセプトが一致していました。

――Genesisが現在のサービスコンセプトに至った経緯を教えて下さい。

飯塚:当初は、HalideをCPUやGPUだけでなく、FPGAなどでも使えるようにするバックエンドのツールを開発して販売することも考えていました。しかし、開発ツールの販売だけでは利用者が限られてしまう懸念があり、サービスとしてより価値を高めようとの方針を立てました。

 その頃、ディープニューラルネットワーク(DNN)が再注目され、AI専用のチップも登場しだしました。ハードウェアベンダーは自社のデバイス向けにDNNの処理を最適化する開発キット提供にも乗り出していて、これらを組み合わせればエッジデバイスで求められがちなタスクの多くを自動で最適化できるのではないかと考えたのです。こうして、「エッジデバイスでAIを使うためのサービス」という方針が見いだされました。

 開発者にとってはアプリが高効率に実行できることが重要で、Halideを使うのか開発キットを使うのかといった選択は手段に過ぎません。GENESISでは、デバイスごとの最適化手法も自動で選択したり、それぞれの手法での最適化結果を比較できるようにしています。アプリの内容だけを考えれば、最適なデバイスと最適化済みのプログラムが手に入るサービスを目指しています。

――GENESISの目指している将来像をもう少し教えて下さい。

飯塚:多くの企業がエッジデバイスを気軽に使えるようになってほしいと思っています。これまでは本当に大規模にデバイスを量産する場合しかベンチ―マークをしてデバイスを選んだり高速化したりできませんでした。

 ソフト高速化が自動化できれば、量産の規模がそれほど大きくないケースでも最適なデバイス選びができ、ソフト高速化に着手できます。スモールスタートしたIoTシステムも、スケールさせやすくもなるはずです。

 世の中には10倍、100倍と効率化できるのに、その高速化をする作業コストが大きすぎて放置されていたり実用が諦められているシステムがたくさんあるはずです。こうしたIoTシステムが安価で素早く高速化され、世の中に普及するといいと思っています。

 個人的な願望を言えば、「ほしいアプリ」だけを考えればハードもソフトも最適なものが手に入る未来が来てほしいと思っています。ハードを選ぶのもソフトを高速化するのも、全ては「ほしいアプリ」を実現するためですから。

アバター

nozomuhirota