トピック

インテルの各種プロセッサを生かして推論アプリケーションの開発を手軽に始められる「OpenVINO」

~Intelがなぜデータセンターで強いのか? その包括的な製品群を徹底解剖!

OpenVINOに用意されているデモプログラム、これらのデモプログラムのコードを利用して開発を始めることができる(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

 マシンラーニング/ディープラーニングを利用したAIの開発は、現在のところ多くのITで最もホットなトピックと言っていいだろう。AIのアプリケーションは今や、PCやスマートフォンといったトラディショナルなIT機器だけでなく、自動車やIoT(Internet of Things、インターネットへのアクセスが可能な組み込み機器)にも広がっており、データセンターやエッジサーバーといった環境でもAIの推論を実現するニーズは高まり続けている。

 そうしたデータセンターやエッジサーバー環境のAI推論処理で一般的に利用されているのが、IA(Intel Architecture、x86とも呼ばれる)プロセッサだ。AI推論処理で、IAプロセッサの代表格であるIntelのXeon Scalable Processorsがどのように使われているのかは、前回の記事で解説した通りだが、本記事ではその開発環境について具体的に紹介していきたい。

 現在IntelはAIアプリケーションの開発向けにはさまざまな開発環境を用意している。その中の代表的なものの1つがoneAPI(ワンエーピーアイ)で、もう1つがOpenVINOツールキット(オープンビーノ・ツールキット、以下、OpenVINO)だ。このうち主に推論処理に利用されるのがOpenVINOで、Intelが提供する各種のプロセッサ(CPU、GPU、FPGA、VPUなど)に、簡単に最適化可能になっている。

主に学習向けのoneAPIと、主に推論向けと位置づけられる2つのAI向け開発環境

 Intelは近年、CPUだけを重視する従来の戦略から脱却し、複数種類のプロセッサの中から、処理のニーズにあったプロセッサを利用して演算する“XPU”戦略をとっている。

 CPUはレイテンシが少なく、データを処理していく場合の処理に向いているし、GPUは小型のプロセッサが多数内蔵されているため、大量のデータを並列して処理するのに向いている。FPGAはプログラマブルで、CPUにもGPUにもはまらない特定の処理をさせるのに向いているし、VPUは低消費電力で、画像認識などの推論処理を行われることに向いている。

 ハードウェア的にも、クライアントPCであれば、CPUとGPUなどは一体のSoCとして提供されているし、データセンターのサーバーであれば、筐体の中にCPU、GPU、FPGAなどが一体に搭載されており、筐体レベルで1つのプロセッサとして利用できる。そうしたことを総称してXPU(X Processing Unit、Xは「すべて」の意味で、XPUとはさまざまな種類のプロセッサの総称)と呼んでいるわけだ。

IntelのXPU戦略、CPU、GPU、VPU、FPGAなどを異種混合で利用する(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

 そうした異種混合(英語ではヘテロジニアスと呼ぶ)のXPU環境では、ソフトウェアの開発が複雑になりがちだ。というのも、従来であればCPUやせいぜいGPU程度を意識していればよかったのが、FPGA、VPU、さらには専用のアクセラレータまで登場しており、それらすべての特長や機能をプログラマーが把握してプログラムを書くというのは、もはや難しいレベルになっている。

 そこでIntelなどの半導体メーカーは、ハードウェアを抽象化して、統一された開発ツール、プログラミング言語、APIでさまざまなプロセッサ向けプログラムを作成できる開発環境を提供している。それによりプログラマーは、プロセッサというハードウェアに対して深い知識がなくても、ハードウェアに対して最適化したソフトウェアコードを作成することが可能になっているのだ。

CPUがどんなAIの機能を持つかは製品によって異なっている、それを把握するだけでも大変(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)
Intelが昨年発表した第11世代CoreプロセッサではGPU性能が引き上げられており、CPUとGPUをうまく組み合わせて使うことで、推論性能を引き上げることができる(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)
組み込み機器にもIAは使われている(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

 IntelがそうしたAIを開発するプログラマーに対して提供している開発キットのうち、代表的なものが2種類がある。1つはoneAPIで、もう1つがOpenVINOだ。インテル株式会社 IoTG テクニカル・セールス・チーム コンピューター・ビジョン・スペシャリスト 志村泰規氏によれば、「大きく言うとoneAPIは学習に向けたツールを多く持つ開発環境であり、OpenVINOは推論に特化した開発環境となる」というのが大分類になる。

oneAPIとOpenVINO(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

 oneAPIは、Intelが2018年の末に行ったイベント「Intel Architecture Day」の中で発表した構想で、CPUやGPUなどの異種混合のプロセッサを抽象化し、複数の種類のプロセッサを使ってより大規模な演算を行うという仕組みだ。その中心となっているのはデータ並列C++コンパイラー(DPC++)で、DPC++を利用すると、複数のプロセッサを並列に利用して演算することが容易になる。また、NVIDIAのCUDAのような従来のプログラミングモデルからの移行にも対応しており、CUDA・DPC++変換ツールを利用することで、既存のCUDAコードをさまざまなプロセッサで実行することも可能となる。

 このoneAPIには、HPC向け、IoT向け、レンダリング向けなど、ドメインスペシフィック(特定用途向け)のツールキットが用意されており、それらを利用すると、CPU、GPU、それにFPGAなどを利用して、XPU環境で効率よく演算するアプリケーションを作成できる。このためAIに利用する場合には、データサイエンティストやAIモデルの開発者といった、大量のデータを平行して処理する「学習」に力を発揮する。もちろん推論に使えないというわけではなく、推論用のソフトウェアをoneAPIで作ることも可能ではあるが、Intelの場合、推論は次に紹介するOpenVINOでの開発を奨励している。

OpenVINOの特長は、高効率でスケーラブルな推論エンジンであること、メモリ利用量も小さく組み込み向けにも最適

 インテルの志村氏は、そのOpenVINOの特長について「OpenVINOは推論に特化した、高効率でスケーラブルな推論エンジンになっている。これだけで完結している小型のパッケージになっているため、依存関係も少なく必要となるメモリのフットプリントも小さく、小型の組み込み機器などにも利用可能だ」と説明する。

 例えば、IntelはIoT向けに、組込型のCoreプロセッサやAtomプロセッサを提供しているが、それらはSoC(System on a Chip)となっており、1つのチップの中にCPU、GPU、そしてAIアクセラレータなどが同居しているものもある。OpenVINOを使わない場合、SoCに内蔵されているそれぞれのプロセッサに対して、複数の開発環境やプログラミング言語をを使いわけながら開発を行う必要がある。しかしOpenVINOを利用すれば、そうしたハードウェアへの最適化はOpenVINOがほぼ自動で行ってくれるし、かつそのエンジンのメモリフットプリントは小さいので、組み込み機器にありがちな小さな容量のメモリ環境でも軽々と動かすことができる。

 また、対応しているのはそうした組み込み機器だけでなく、データセンターのサーバー上に置かれる推論アプリケーションや、PCのローカルアプリケーションの推論アプリなどを開発することも可能。PC向けのアプリケーションでも、OpenVINOを利用してAIの推論機能を利用したものが増えてきている。

いま、ここにあるエッジAI
https://pc.watch.impress.co.jp/docs/column/edge_ai/

OpenVINOツールキットの特長(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

 志村氏によれば、OpenVINOが提供する推論エンジン(Inference Engine)は、推論リクエストの実行を非同期に行い待ち時間を削減する「推論の非同期実行」や、デバイスをストリームに分割することで効率よく並列実行処理を行いスループットを最大化する「ストリームとスループット・モード(CPU/GPU)」、FP16/BF16/INT8などの短いデータ長に対応、といった特徴を備えており、前述の通り少ないメモリでも高効率に推論処理を行うことが可能になっているという。

OpenVINOの推論エンジン(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

 また、「Intel Open Model Zoo」という学習済みのAIモデルが提供されている。Intelのデータセットやモデルを用いて最適化・軽量化された学習済みのモデルと、一般的な学習済みモデルが提供され、それらを利用してOpenVINOで推論を行うことができる。

 この学習済みモデルは名前を選んでダウンロードするだけで利用できるため、大規模なモデル学習環境を用意できないような中小の開発者であっても、こうした学習済みモデルを利用することで、手軽にAIを構築することができる。これも、OpenVINOの魅力の1つと言えるだろう。

Intel Open Model Zoo(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

標準ツールだけでなく追加ツールも充実、豊富なデモプログラムなどで開発を低いハードルで始められる

 OpenVINOのもう1つの特長は、Intelが豊富に用意しているツール群を活用して、開発をさらに加速できることだ。志村氏によれば、「OpenVINOをダウンロードしてインストールするだけで、付属するツール群がインストールされる。さらに別途提供されているAdd-on toolを導入すれば、必要に応じて拡張も可能だ」との通りで、OpenVINOをインストールしただけでも、プログラミングをより容易にするツール群が導入されるが、そこに追加のツール群も導入できるわけだ。

OpenVINOで開発に利用できるツール群(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

 例えば、Model Optimizer、POT(Post-training Optimization Tool)、DL Streamer、IE(Inference Engine)などは標準でインストールされる。これに対してCVAT(Computer Vision Annotation Tool)、NNCF(Neural Network Compression Framework)、OVMS(OpenVINO Model Server)、OVTF(OpenVINO integration with TensorFlow)などのツールは、Add-on toolとして提供される。

 標準コンポーネントのPOTでは、データの精度をFP32/16からINT8に変換する。それにより演算時のスループットを引き上げることが可能になる。またDL Streamerでは、ストリーミングデータを解析し、動画や音声データを利用した推論をgstreamerのメディアパイプライン中で行うことが可能だ。

量子化ツール(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)
DLワークベンチ(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

 Add-on toolのCVATは、画像認識のためのアノテーション(データに注釈をつけて教師データを作り出すこと)を行うためのツールで、AIが自動でラベル付けや領域の指定などが可能になっている。このCVATは、Dockerファイル形式による簡単な導入が可能で、より容易に使えるように配慮されている。

 またはOVMSは、コンテナ化されたマイクロサービスとして推論を提供するエンジン。OVTFは、TensorFlowのコードに数行の変更を加えることでOpenVINOをバックエンド推論エンジンとして利用できるようにするもので、MOによるモデル変換を行う必要がなくTensorFlowのコードのままOpenVINOによるパフォーマンス向上やCPU以外のアクセラレータの活用などの恩恵を受けることが可能となる。

CVAT(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)
さまざまなツール群(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

 このほかにも、OpenVINOには、音声認識や姿勢推定、視線推定などさまざまなデモプログラムが同梱されている。志村氏によれば「実際にそうしたデモプログラムのコードを利用して開発を始めたという事例もあり、実践的な内容になっている」との通りで、入門編として、こうしたデモプログラムのコードから推論アプリケーションの開発を始めるというのもありだろう。

 このように、さまざまなツール群がOpenVINOには用意されており、これらを導入することで、より簡単に、かつ高効率に推論を行うプログラムを作成することができるようになるのだ。

最新のバージョンでバンドルされた新しいデモ(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

OpenVINOは無償で利用でき、ハードウェア環境がなければDevCloudを利用して検証することも可能

 このようなOpenVINOだが、志村氏が「OpenVINOは無償でかつオープンソースで提供している。Intelのサイトからプラットフォームを選んでダウンロードして導入することも可能だし、Dockerのような形式でも導入できる。また、オープンソースであるためソースコードも提供されており、そこから自分でビルドして利用することも可能だ」と述べる通り、OpenVINOは開発に利用するプラットフォーム(Linux、macOS、Windows 10)を問わず、Dockerなどのさまざまな形式でインストールして利用することが可能だし、何より無償で利用できる。

OpenVINOは無償でかつ、さまざまなプラットフォームで利用できる(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

 また、アップデートは年に3~4回(つまり四半期に一度程度)行われるが、エンタープライズなどで長期に同じバージョンを利用したいというユーザー向けには、2年間同じバージョンが利用できるLTS(Long Term Support)が用意されている。このLTSは、その年に3~4回提供される標準リリース版のうちの1つが長期サポートバージョンとして提供されるもので、1年目は脆弱性と機能追加に対する修正が提供され、2年目は脆弱性の修正が提供される仕組みになっている。LTSは、1年に一度新バージョンが提供され、提供時点から2年間バージョンを固定して利用できる。

LTSにも対応(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

 また、OpenVINOがIA環境での推論アプリケーションの構築には便利なことがわかったが、自分のところにはXeon SPなどのサーバー向けプロセッサやGPUなどはないよ、という開発者向けには、「Intel DevCloud for the Edge」が用意されている。

 DevCloud for the Edgeは簡単に言えば、Intelの各種プロセッサ(Core、Xeon SP、Atom、Movidiu VPU、Iris XeなどのGPU、ArriaなどのFPGA)をクラウドベースで提供する仕組み。自分のローカル環境にはそうしたプロセッサは持っていないので、実際のハードウェアでは試しようがないという悩みを抱えているプログラマーに、クラウド経由でアプリケーションをテストしてチューニングする環境となる。

Intel DevCloud for the Edge(出典:高速エッジ推論ソリューション OpenVINOツールキット 最新アップデート、インテル株式会社/志村泰規)

 このように、OpenVINOは、IntelのCPU(Core、Xeon SP、Atom)、GPU(Iris XeやUHD Graphics)、Movidiu VPU、FPGAなどのIntelプロセッサを活用し、高効率で高性能な推論アプリケーションを構築する目的には、最も近道と言っていいだろう。