このサイトは、お客様へのサービス向上などの用途でCookieを使用しております。
詳細はこちらをご参照ください。

Featuring Technology

  1. HOME
  2. Featuring Technology:SoftNeuro

ディープラーニング推論エンジン「SoftNeuro®」

画像処理の精鋭が生み出した世界基準のAI技術

川口、真島、黒田、西野、平賀、松尾、平崎、小川、栗原

世界最速級のディープラーニング推論エンジン「SoftNeuro®」は、主要なディープラーニング・フレームワークの学習結果を活用し、エッジデバイスを中心に様々な環境上で高速な処理を実現します。
開発チームで座談会を開催し、製品化までの道のりや将来的な方向性などについて本音で語り合いました。

開発背景や開発に至った経緯を教えて下さい。

平賀
シーン認識技術「Morpho Scene Classifier™」用に開発されていたDeep Learning推論用社内モジュール(ConvNet)のカスタマイズ性が低かったので、作りなおしたという経緯だったですよね?
黒田
たしかにあまり整理されていなかったというのは開発の動機の1つです。もう1つの動機としては、ConvNetは2014年-2016年に開発していたのですが、その最後あたりに室長からもう少し早くなるんじゃないかという指摘があり、手元で実験してみたところたしかに速くなるデータの構造がありました。
平賀
ConvNetは組み込み機器でDeep Learningができたらいいんじゃないかというモチベーションで実装されていたのですが、ソフトウェアアーキテクチャに課題がありましたね。
川口
その当時はC言語で実装されていましたか?学習側は?
黒田
C言語で実装されていました。学習側についてはdeepnet, Theano, Caffeなど。 deepnetはかなり初期からあったちょっとマイナーなフレームワークです。
平賀
当時の学習フレームワーク選びのセンスはあまりなかったかな。
西野
そもそも初期はCaffeがなかったですからね。

SoftNeuroの利点について教えて下さい。

平賀
お手軽に使えるというのと、どこでも使えるし速いという点です。何もDeep Learningのことを知らなくても使えるようなフレームワークです。学習フレームワークでいえばKeras的な物を目指していたし、そういうものが個人的には欲しかったんです。

あとは色々なフレームワークからインポートできて、実行の際には色々なアーキテクチャで高速に動くというのも利点ですね。

それと、SoftNeuroはレイヤとその実行パターンであるルーチンの概念が分離されていることで、柔軟性と高速性が両立できます。これは他の推論エンジンにはない特徴なので、新しいと思います。
西野
あとはチューニングとかもできますよね。

開発体制前期 (~2018)について教えて下さい。

松尾
OJTが終わってからの初仕事でした。
最初はVGGをメモリからロードして実行するぐらいしかできなかったですが、インポータや色んなレイヤなどを足すことでちゃんと動作するライブラリになっていきました。
当時は推論エンジンがほとんどなかったのですが、Intelの推論エンジンは高速でした。それに勝つためにアルゴリズムレベルやHWレベルの工夫を積み重ねることで、SoftNeuro全体を高速化することができて楽しかったです。
川口
端末単位でチューニングして高速化するというアイディアはどこから出てきましたか?
黒田
社長ですね。Convolutionのパターンを色々実装したので、最適な物を選ぶ機構が必要というのもありました。
西野
推論を端末単位で高速化したら特許取れるのでは?と言って実行したら本当に取れました。
川口
チューニングによる高速化を思いついたのは組み込みで色々な高速化をやってきてノウハウがあったからですか?
平賀
はい。並列粒度やキャッシュサイズを調整する効果などがあります。
黒田
依頼されたのでSoftNeuroのスマホデモを作成し、GTC Japan 2017での発表に使いました。国際画像機器展や翌年のEmbedded Vision Summitにも出展しました。2018年の展示会で他の企業もSegmentationを出していたのですが、スマホで動いていた所はなかったと思います。
平賀
栗原さんはどの辺が大変でした?
栗原
製品化作業やツールの提供などを一人でやってまして、ドキュメントとかコンバートツールが全然なくて、それらの作成や整理を頑張っていました。

社長のコードは読みやすかった&ドキュメントがあったので、コード量が多くてもなんとかなっていました。でも、OpenCL実装、FP16、量子化などがあり、どんどん製品化が難しくなってきていました。

現在の開発体制について教えて下さい。

真島
私がチームに加わった時、SoftNeuroの骨格は出来上がっていたけど、バリエーションが増えた過渡期であり、テストをちゃんと整理する必要がありました。
直近では、品質を担保しつつリリースの間隔を短くしていくのが課題です。
平崎
ユニットテストを充実させているのに加えて、Jenkinsを使ったCIの導入を行っています。

製品化で重たい部分は動的解析などだったけど、ユニットテストの導入などで一気にできるようになり効率化してきました。

ルーチンとかインポータとかが増えてきたけど、テストを充実させることで製品の品質の担保と向上に繋がると思っています。
平賀
ver4からライブラリと直結したpythonプラグインとpytestの導入で色々な物がやりやすくなったね。

まだ20万行ぐらいなので、Linuxとかに比べるとまだそこまで大規模ではないと思うよ。

SoftNeuroの適用事例について教えて下さい。

松尾
2018-2019年でDeep Learningを利用した自社製品が出揃ってきました。例えばSegmentation, Detection, Trackingなど。

さらに最近はTrackingを応用したTV関係向けの製品 (Face Trackerなど)など、実応用の方向性に軸足が移りつつあると思います。製品を介してSoftNeuroが拡大するフェーズに入ってきたかなという感じです。
平賀
ノートPCを使っていてGPUを使えない場合にも使えます。
西野
あとは、他社製品の中で使われていることもありますね。
川口
推論エンジンとインポータを両方とも作っているので、学習側と推論側の実装のサイクルを高速に回せるのがいいところだと思います。
平賀
推論側を意識して学習系を作ることにもメリットがありそうですね。
小川
SoftNeuroはエンジニア側からすると組み込みやすくて、実際Unityなどへの実装作業も楽でした。Pytorchでの最新研究が増えてきたのでONNXなどの変換をよりスムーズにできるようにすれば、さらに楽に使えるようになりそうですね。
川口
OJTでのVieurekaへの組み込みも、新入社員が2-3ヶ月程度でサラッと実装できていましたね。

SoftNeuroの将来的な方向性について教えて下さい。

松尾
最近は競合製品のスピードも改善してきたので、本格的にSoftNeuroの高速化に注力していきたいです。あとは、開発スピードを高速化する要素技術開発に関心があります。
川口
私はすべてのスマートフォンにSoftNeuroを載せたいです。推論スピードが圧倒的ならSoftNeuroを使うはず。色んなプロセッサーで動くように対応していくのが必要そうですね。
平賀
私はソフトウェアの開発者向けのライセンスができるようにしたいです。今はB2Bで出しているけど、B2Cへの進出などもやってみたい。例えば、WEBからダウンロードする仕組みなどを考えています。
小川
SoftNeuro本体以外にインポータなどの改良も普及のためには必要そうですね。モデルファイルのコンバートをしなくてもそのまま実行できるとか。
平崎
チューンが特色なので、それを拡張して実行時に勝手にやってくれる仕組みに興味があります。高速だけど精度が劣化する物があるので、速度を改善しつつ精度を担保する仕組みがあると良さそうですね。