ディープラーニングや推論エンジンも「インテル、やってる!」 『OpenVINO™ ツールキット』に注力するインテルの真意とは?
インテルが提供する『OpenVINO™ ツールキット』は、ディープラーニングやAIモデルの最適化に加え、推論エンジンを使用した高性能なソフトウェアの開発を実現する無償ツール。GPUを内蔵したインテル® CPUやFPGA、VPUなどを使用して高速に動作するAIをシンプルなコードで記述できるのが特徴です。
モデルやドキュメント、サンプル類が豊富に揃っているなど環境が整備されていることもあって、手軽にディープラーニング技術に触れられるツールキットとして注目を集めています。機械学習への理解を深めたいエンジニアに最適なSDKのひとつです。2022年9月30日までお得で楽しいキャンペーンも開催されていますので、興味のある方は今のうちにダウンロードしてみてはいかがでしょうか?
▼OpenVINO™ ツールキット・ダウンロード・キャンペーン
https://www.intel.co.jp/content/www/jp/ja/now/openvino-download-campaign.html
今回は、インテル株式会社のコンピューター・ビジョン・スペシャリストである志村泰規氏にQiita株式会社のWebアプリケーションエンジニア大東が『OpenVINO™ ツールキット』の特徴や活用のポイントなどを伺いました。
目次
プロフィール
IoTG BU Sales コンピューター・ビジョン・スペシャリスト
SaaS開発チーム Webアプリケーションエンジニア
計算機資源に対して最大限のパフォーマンスを発揮する『OpenVINO™ ツールキット』
――『OpenVINO™ ツールキット』のアウトライン
大東 祐太(以下、大東) : はじめに『OpenVINO™ ツールキット(以下、OpenVINO™)』がどのようなものか教えてください。
志村 泰規氏(以下、志村):OpenVINO™はSDK(Software Development Kit)の一種で、画像や音声などを使ったディープラーニングの様々な推論ができるパッケージです。これには開発に使用するディープラーニング推論用の汎用の推論エンジンライブラリーをはじめ、オープン・スタンダードの画像処理ライブラリーOpenCVやサポートツールなど多様なツール・ライブラリーのセットが含まれています。オープンソースで無償提供しているので、使い方や動き方、あるいはAPIのパラメーターがどう使われているのかといった内容も、ソースコードを参照することで知ることができます。
インテルが開発していますので、当然ですが最新のインテル® CPUやGPUの機能・命令にもいち早く対応しています。またインテルのCPUだけではなく、内蔵GPUも推論に使えるのが特徴です。FPGAや外付けのディープラーニングのアクセラレーターVPU : Vision Processing Unit、CPUに内蔵されている小さなアクセラレーターGNA : Gaussian & Neural Acceleratorといったアクセラレーターにも、年3回から4回アップデートをしてキメ細かくサポートし続けています。
そして、OpenVINO™では学習済みモデルを提供しています。学習環境がなかったり、学習が難しかったり、データセットがないといった方でもモデルをダウンロードしてすぐに推論エンジンを実行できるのがメリットです。プログラミング言語としてはC、C++、Pythonが使えます。
現在ではディープラーニング推論で常識ともいえるint8化、int8推論にも対応しました。データ、ウエイトのサイズが小さくなること以上にCPU、GPUのアクセラレーションが効くこともありOpenVINO™では非常に高速に推論できます。
加えてGStreamerのH.264やMPEG4といったメディアのパイプラインの中で推論を同時に実行するためのエレメントDL streamerも提供しています。これにより、カメラから画像を取り込んで推論して顔のフレームを描き、MPEGで圧縮してできた成果物をネットワーク・ストリームで流すパイプラインを作るといったような処理を行うことができます。
ディープラーニングのフレームワークは、TensorFlow、Caffe、MxNet、Kaldiモデルに対応しています。モデル・フォーマットとしてONNXにも対応していますので、例えばPyTorchで学習させてONNXで出力し、それをOpenVINO™で使うといったことも可能です。
――数多くのディープラーニング・フレームワークに柔軟に対応している
大東:OpenVINO™では学習環境は提供していないのですか?
志村:OpenVINO™は推論に特化した学習環境に縛られないライブラリーですので学習環境は提供していません。そのかわり、幅広いフレームワークに対応しました。ユーザーは使い慣れた好きな環境でモデルの学習をして、出来上がったモデルをOpenVINO™に任せて高速に推論するという使い方を想定しています。
大東:すでにTensorFlowやCaffeを使って学習しているところでの推論をOpenVINO™に置き換えると、推論が最適化されて高速になるといったイメージで使うことができるのですね。
志村:そうです。インテルとして強調したいのは、OpenVINO™は限られた計算機資源に対して最大限のパフォーマンスが発揮できるということです。本当のCPUのパフォーマンス、本当のGPUのパフォーマンスを引き出すことができるツールになっています。一概にはいえませんが、推論部分をOpenVINO™にすることで、それまでの3倍~5倍、あるいは10倍を超えるようなパフォーマンスゲインが得られることも珍しくありません。
OpenVINO™は他ライブラリーへの依存がないのも大きな特徴の一つです。面倒な依存問題を引き起こす可能性を減らせます。本体ライブラリーだけだと100MBいかないコンパクトなライブラリーのため、組込み用途にも最適です。
大東:推論部分をOpenVINO™に置き換えるだけで、かなり恩恵が得られるというイメージが湧いてきました。
OpenVINO™ の大きなアドバンテージは「気軽にすぐ試せる」こと
――OpenVINO™ のデモンストレーションを実行してみる
大東:実際にmacOS環境にOpenVINO™ をインストールして体験してみました。動作させたのは、事前に共有してもらったデモのrepositoryから「視線の検知」「手書き文字認識」「物体検出」そして「画像補完」の4つです。インストールしたら、あとはリポジトリー固有で使っているパッケージを入れるだけですぐに準備が終わり、手軽で良かったです。試すだけでもかなり面白いと思いました。
特に「視線の検出」は動画を社内で共有したところ、かなり好評でした。リモートワークをしている都合上、複数人で試すことが出来なかったのは残念ですが。
志村:それは良かったです。ぜひ今度は複数の人で実行して視線がバチバチ出るところを試してみてください。
大東:他にも「手書き文字認識」などのデモでも機械学習の価値が感じられて、どのように応用できるかわかる上に、使って楽しいサンプルでした。「物体検出」デモでは境界線をくぐると「いらっしゃいませ」「ありがとうございました」と流れて、店舗で使われるイメージが湧きます。
エリアの侵入検知も、侵入してはいけないエリアに入るとアラート音が鳴るサンプルになっていて、実用イメージを明確に掴むことができました。
志村:デモアプリは、機械学習が何の役に立つのか、何の得があるのか具体的な使用例が想像しやすくなるように作っています。OpenVINO™ではコマンドをいくつか打つだけで、いろいろ実用的なサンプルを実行できる環境を整えました。
大東:実行環境についてですが、OpenVINO™のインストール・ガイドを見ると非常に多くのOSに対応していることがわかります。気になったのはRaspbian(Raspberry Pi OS)にも対応していることでした。OpenVINO™は今後も幅広いOSで動作環境を用意していく方針なのでしょうか?
志村:はい。サポートしている代表的なOSはまずLinux、具体的にはubuntuとcentOSです。また、Windows10やMacOSはもちろんのこと、他のOSもカバーしています。ご指摘のようにRaspberry Pi用もあるのですが、現時点では自分でビルドしないと使えません。
Raspberry Piについて、CPU、GPUでの推論はできませんが、インテルのNCS(Neural Compute Stick)をUSBで接続するとアクセラレーターを使った推論ができるようになります。どのプロセッサーと比べるのかという話ではありますが、基本的にIntel Atom® プロセッサーより高速にRaspberry Piでも実用的なレベルの推論をすることが可能です。
大東:これはすごいですね!OpenVINO™は軽量なのでRaspberry Pi上で実行しやすいことも影響していますか?
志村:そうですね。実際にRaspberry PiでOpenVINO™が活用されているケースは多いです。例えば家の何らかの監視モニターを作るとき、手軽に使えて低消費電力なRaspberry Pi上で環境を構築して人が来たら検知するような用途で使われています。インテルとしてもそういった使われ方をさらに広くカバーしていきたいと考えているところです。
――汎用ディープラーニング・エンジンとして進化するOpenVINO™
大東:たしかにRaspberry Piは常時稼働の用途と相性がいいと思います。OpenVINO™の学習済みモデルにもコンピューター・ビジョン関連の推論モデルが多いと感じたのですが、やはりコンピューター・ビジョン系の機械学習をメインターゲットにしているのでしょうか?
志村:そう感じる方も多いようですが、OpenVINO™は必ずしもビジョン系に特化したものではないです。たしかに、中にはOpenCVが入っていますし、OpenVINO™の名前「VINO」は「Vision Inference Neural network Optimization」を略したもので、初期は画像推論の用途が中心でした。しかし、中核となっているのは「Inference Engine」、つまり汎用のディープラーニング・エンジンなのです。
例えば、OpenVINO™で単に数値を計算していくネットワーク・モデルを実行することもできますし、音声データを認識するような1次元の入力を取るものなど一般的な機械学習のアクセラレーション等もできます。ディープラーニング、TensorFlowで走らせられるモデルであれば大体なんでも実行できるわけです。
大東:OpenVINO™を使うと、コンピューター・ビジョン・画像関係に限らず自然言語処理や音声処理など、どんなディープラーニング・モデルでも推論を最適化していけるのですね。
志村:はい。実際にモーターの軸の振動情報から故障時期を予測するといった振動解析の用途で使われているケースもあります。音声認識、音声合成、文章要約や質問に対する回答選択といった、いわゆるNLP(Natural Language Processing:自然言語処理)の用途で使うことも可能です。この領域でのモデルも提供しています。ちなみに今では、インテルの専門チームが追加したモデルを200以上提供しています。
――事業課題を解決する場面でのOpenVINO™ の活用可能性は?
大東:OpenVINO™を実際に何らかのサービスに組み込んだり、事業課題を解決したりするために使うポイントを教えてください。
志村:実はインテルが提供するモデルをそのまま製品やサービスで使いたいといった要望は多いです。例えば自動車の検知があります。ロック板がないコインパーキングでナンバーを見て車を認識して課金するようなソリューションです。OpenVINO™は商用で使用することも出来ますので、このようにビジネスの現場で採用していただける機会が増えています。
この中では「ヒューマンポーズ・エスティメーション」というモデルが人気です。これは人の骨格を検知するモデルです。侵入検知や異常行動検知、リハビリ・トレーニングやスポーツの運動解析などといった用途で幅広く活用されています。
大東:今提供している学習済みモデルが、そのまま現実の課題に対して応用できるのですね。
志村:そのまま使ってもらうこともありますが、課題に合わせてモデルを修正したいという要望も多いです。モデルに転移学習させたり、再学習させたりしたいとの要望に対して、インテルはトレーニング・エクステンションを提供して再学習や転移学習ができるようにしています。OpenVINO™は学習環境を提供していないので、TensorFlowやPyTorch、MxNetを使って再学習するために必要なスクリプトやデータを提供しているのです。OpenVINO™自身は推論のツールですが、推論だけではなくEnd to Endでデータセットの生成から学習、推論まで様々なソリューションをアドオンパッケージとして提供しています。
推論エンジンとして見たOpenVINO™の「強み」
――強み:xPU
大東:OpenVINO™の他にもTensorFlowなど機械学習のツールキットがありますが、それらに対する“強み”や“訴求ポイント”を教えてください。
志村:まず、インテルとして強調したいのは「xPU」に対応していることです。インテルでは実世界の様々な課題に対応できるよう、様々なアーキテクチャーや特性のプロセッサーを提供しています。それら、CPU, GPU, VPUなどをまとめてxPUと呼んでいます。OpenVINO™はxPU対応として、同一ツール、同一APIでこれらのプロセッサーを簡単に切り替えて利用できるようになっています。
現在のインテル® プロセッサーには様々なプロセッサーが入っていますが、最後の1トランジスターまで性能を絞り切って使う、絞り出して使うことがしやすくなっています。OpenVINO™の非常に大きなアドバンテージはハードウェアを活かし切ることができる点にあると考えています。
志村:例えばPythonで画像分類するコードであれば、このload_networkというAPIのところでデバイスネームが「CPU」になっていますが、ここを「GPU」に書き換えるだけでデバイスが切り替わります。
大東:おぉ!1行どころか「C」から「G」に1文字、書き変えるだけで済んでしまうのですね。
志村:例えばここに与えるストリングをif文で変えるだけでデバイスを切り替えられるなど、環境に応じて柔軟な対応ができます。
――強み:充実した周辺ツール
志村:OpenVINO™は先ほども話したように周辺ツールが多く充実しているため、「やりたいことができなくて困る」ということはあまりないと思います。ツールの多くはCUIベースですが、「DLワークベンチ」というウェブUIラッパーを提供しているため、ブラウザーベースのアプリケーションのように使うことができます。チュートリアルやドキュメントを用意したり、ツールを充実させたりして使いやすいツールとして成長させていこうとしています。
大東:たしかに、私も触ってみて圧倒的な試しやすさ、使いやすさを感じました。
――強み:パフォーマンスの高さ
志村:OpenVINO™はパフォーマンスが非常に高いのもアドバンテージになっています。プロセッサーの中を知り尽くしているインテルが手掛けて最適化していますから、パフォーマンスは最速レベルです。特にユーザーが最適化を気にせずに作ったモデルやダウンロードしてきたモデルを使っていたケースでは、OpenVINO™を使うだけで推論が数倍速くなるのは珍しくないことです。インテルの最適化されたライブラリーを使って手間なく、本来のハードウェアのパフォーマンスを発揮させてほしいと願っています。
大東:なるほど。推論のパフォーマンスを上げたいと思ったらマシンを良いものにするより先に、まずOpenVINO™で最適化して結果を見てからの方が賢い選択といえそうですね。
志村:OpenVINO™を活用して、最後の1トランジスターまでパフォーマンスを絞り切ってマシン本来のパフォーマンスを発揮してもらいたいです。
――顧客の利用事例は多い
大東:実際にOpenVINO™を実務や製品、サービスなどに導入したり活用したりしている事例はありますか?
志村:さきほどの例にもあった工場の製品検査や工場のワーカー管理などにもよく使われています。面白い事例に、OpenVINO™を使って製品の組み立て作業をしているワーカーを骨格検知して、あらかじめ不良が出た場合のデータと相関を取っておき、不良が出やすい動きを検知してワーカーに対して注意を促したり、改善指示を出したりできるシステムがあります。
またメディカル関係では、CT、MRIやX線を使って医療画像判断するアプリケーションにOpenVINO™が使われている事例があります。例えば、脳のCTスキャンの映像から脳腫瘍の位置をセグメンテーションで見つけて医師に情報提供するアシストツールでこのような応用例は多いです。福祉関係では、歩行リハビリの訓練などでも骨格検知が使われています。医療画像の診断については、OpenVINO™を使って30倍レベルで高速化できたケースもありました。
OpenVINO™の今後の開発方針、サービス展開はどうなっていく?
――OpenVINO™ の活用範囲を広げるoneAPI
大東:今後のOpenVINO™の展開をどのように考えていますか?展望などを教えてください。
志村:OpenVINO™は成熟してきたとの見方もできますが、新しいプロセッサーのサポートを含めて機能の向上を続けていき、より使いやすくしていこうと考えています。ここで強調しておきたいのは、インテルがoneAPIというxPU戦略に対応する開発ツールも提供していることです。
なぜそれを強調したいかというと、oneAPIを活用するとOpenVINO™が補完され、AI推論以外のワークロードもxPU対応させることが可能になるためです。oneAPIはDPC++(Data Parallel C++)言語で書き、CやC++、FortranのコンパイラーやxPU対応したライブラリー・ツールも入っておりxPU戦略に幅広く対応しています。
大東:oneAPIを一緒に使うことでxPUの幅が一気に広がっていくのですね。
志村:そうです。OpenVINO™ではディープラーニングの推論部分だけがxPUになりますが、oneAPIを使うことでPre ProcessingやPost Processing部分までxPUでサポートできるようになります。
――OpenVINO™を活用してもらいたい対象は?
大東:OpenVINO™を活用してほしいユーザー像のイメージがあったら教えてください。
志村:ISV(Independent Software Vendor)やサービス・プロバイダーなどのソフトウェア・エンジニアの皆さんにOpenVINO™を広く使っていただきたいと思っています。OpenVINO™化することでパッケージをコンパクトにしたり、対応できるデバイスを増やしたり、これまで外付けGPUがないとどうにもならなかったソリューションをPCだけで動くように開発できるようになるので、ソフトウェアを開発されている方々にぜひ活用していただきたいですね。
インテルは昔からソフトウェアに力を入れOSSにも貢献してきました。インテルが新機能を追加しても、それをきちんと活用してくれるソフトウェアがなければ意味がありません。ユーザーの方々が新機能を活用できるよう、OSSコミュニティーやISV, OSVの皆様と協調していきたいと考えています。ハードウェア上のパフォーマンスを使い切ってほしいという気持ちを込めて活動しています。
大東:話を聞いて、ハードウェアを活かし切るインテルの観点を知るためにOpenVINO™を使ってみるのも良いと思いました。
――Qiita読者にメッセージ
大東:最後に読者の皆さんにメッセージをお願いします。
志村:インテルは今後もソフトウェアに力を入れていきます。インテルのプロセッサー、ハードウェアの機能を最大限活用して楽しいソリューションを作っていただけるように今後も努力していきますので、OpenVINO™をぜひ試してみてほしいです。そして、フィードバックをどんどんお寄せください!
【注目】OpenVINO™ダウンロード・キャンペーン 開催中!(~9/30)
2022年9月30日まで、AIアプリ開発のためのライブラリー・スイートである OpenVINO™ ツールキットをダウンロードまたは、コードでプログラムに導入していただくと、お好きなスイーツの商品を自由に選べるギフト「Giftee* Sweets Box 500 円分(デジタルギフト)」 をプレゼント。
※お天気キャスター貴島明日香さんがOpenVINO™を実際に触って体験した動画を公開中です。
第 4 回 OpenVINO™ ツールキットを使用した開発コンテスト
2022年2月14日まで、「第 4 回 OpenVINO™ ツールキットを使用した開発コンテスト」において、アプリのアイデアから実装、開発までの 3 つのルートで AI のソリューションを募集しています。
編集後記
インテルがプロセッサーやハードウェアを「活かし切る」ソフトウェアを開発する理由を伺うことができて、とても興味深いトークセッションでした。
それにしても推論エンジンをOpenVINO™に変えるだけで、2~3倍、場合によっては30倍も速度が上がり、GPUなしで推論できることには驚きました。ディープラーニングに関わっているエンジニアの方は、まず、この話が本当かどうか試してみてはいかがでしょうか? ハードウェアの変更なしに速度が上がるならコスト面で考えても有利なはずです。
「インテルはソフトウェアもガンガンにやっている!」ことが伝わってきて、今後インテルがどんなソフトウェアを展開していくか注目していきたいと思いました。
文:神田 富士晴