CONFIDENTIAL EXTENDED ABSTRACT.
DO NOT DISTRIBUTE ANYWHERE.

第 22 回 画像の認識・理解シンポジウム

ONNX2MPSNNGraph:モバイル深層学習
コードジェネレータの実装と評価
泉 裕貴1,a)

柳井 啓司1,b)

た．これにより，既存の数多くの深層学習フレームワーク

概要からの変換が可能になり，GPU を用いた実行で高速性を近年，モバイル端末の性能向上により，サーバーを介さない端末上での深層学習の実行が可能となり，実装を容易にするようなツールなども存在している．しかし，それらは実装がブラックボックス化され拡張が困難であるものや特定のフレームワークで学習したモデルしか対応してないもの保ちつつ，コードの修正や最適化を可能とした．

2. 実装方法
iPhone 上で深層学習の演算処理を行うモバイルアプリケーションを作成する実装方法は複数存在する．

であった．そこで本研究では，多数の深層学習フレームワー
クに対応し，アプリケーションの実装後の修正や最適化が可能な深層学習モデルコンバータ ONNX2MPSNNGraph

2.1 Metal Performance Shaders
Metal Performance Shaders (MPS) は，iOS9 で追加され iPhone に搭載されている GPU である Metal GPU を利を作成した．

用し，GPU 上で画像処理や行列演算などを実行させる計算

1. はじめにカーネルのライブラリである．MPS フレームワークを用

iPhone を始めとするモバイル端末の性能は年々向上し高い演算能力を持つようになったため，サーバーを介さない端いることで，Metal GPU を容易に利用できるようになっている．

末上での学習済みモデルを用いた深層学習の実行が可能と

MPS の中には，iOS11 で追加された MPSNNGraph となってきた．しかし，最新のネットワークは枝分かれのあるいうクラスがある．これを用いてニューラルネットワークものや非常に深い構造を持ったものなど複雑なものが多い．のグラフを構築することで，グラフ内のノードのうち出

このような複雑なネットワークを用いたアプリケーション力を得るために必要のないノードを無視するようになり，を開発しようとした場合，ネットワークの部分のみで数百ノード同士が内部で連結するといったことを自動的に行う行にも及ぶような長文且つ難解なコードを書く必要があり，ことによって，より高いパフォーマンスを見込めるものと人手で書くことは困難である．そこで，大変な作業量とななっている．

るコーディングやパラメータの受け渡しなどといった部分を自動的に行う CoreML*1 や Chainer2MPSNNGraph[2]2.2 CoreMLといったフレームワークやコンバータが存在する．しかCoreML は iOS11 から新しく追加された機械学習向けラ

し，CoreML は内部の実装をブラックボックス化している

イブラリであり，図 1 にあるように GPU を利用した高速ために拡張が困難であり，Chainer2MPSNNGraph[2] は利演算処理を実現する MPS と CPU 上でエネルギー効率の用できる学習済みモデルが Chainer[3] で学習されたものの高い計算を提供できるように最適化された Accelerate ライ

みで適応範囲が限られているといった問題がある．

ブラリのラッパーである．CoreML では，coremltools を

本 研 究 で は ，OpenNeuralchange(ONNX)*2 の モ デ ル か ら

Network

Ex-

用いて学習済みモデルを CoreML 用のモデルファイルに変MPSNNGraph API

換することで，それまでニューラルネットワークを MPSを用いたコードやパラメータファイルの生成を行う，深層などで実装する場合に数百行にも及ぶことがあるコーディ

学習モデルコンバータ ONNX2MPSNNGraph を作成しングを必要とせず，実装内でそのモデルファイルを読み込

1a)
b)
*1
*2

電気通信大学 大学院情報理工学研究科 情報学専攻
izumi-y@mm.inf.uec.ac.jp
yanai@cs.uec.ac.jp
https://developer.apple.com/documentation/coreml
https://onnx.ai

むのみで容易に深層学習を実装できるようになった．しかし，CoreML でどのような実装，処理を行っているかは不明であり，モデルファイル作成後に内部に手を加えることはできない．

1

第 22 回 画像の認識・理解シンポジウム

読み込んだモデルの graph コンポーネントの node プロパ
ティによってネットワーク構造の全体を参照することができる．また，graph コンポーネントの initializer プロパ
ティによって，重みやバイアス等のパラメータを取得することが可能である．ここで，ノードとパラメータを結びつけたリストを作成し，リストからアプリケーション作成に必要なコードを生成する．

3.2 アプリケーション作成の流れ
本研究で作成したコンバータ ONNX2MPSNNGrapghを用いた深層学習モバイルアプリケーションの作成は以下の手順で行い，図 2 に示す．また，Pytorch で実装した
図 1

CoreML の位置づけ

Resnet50[1] から ONNX のモデルを経由してコンバータを用いてモバイルアプリケーションを作成した時の，Pytorch

3. ONNX2MPSNNGraphのネットワークコードの一部とコンバータによって生成された MPSNNGraph のコードの一部を図 3 と図 4 に示す．

深層学習のアプリケーションを作成しようとした場合( 1 ) ONNX に対応した深層学習フレームワークを用いに，モデルネットワークによってはニューラルネットワーてネットワークを学習し，モデルファイルを作成クの部分のみで数百行のコーディングが必要であり，そ( 2 ) ツールを用いて ONNX モデルを作成の中でモデルパラメータの受け渡しやオプションの設定( 3 ) モデルファイルからネットワークの情報を取得なども必要であるため，非常に手間がかかる．そこで本研( 4 ) 取得した情報から MPSNNGraph API を用いたネッ

究では，その複雑な部分を自動的に生成するコンバータ

ONNX2MPSNNGraph を作成した．
ONNX2MPSNNGraph は，ONNX の学習済みモデルを用いてアプリケーション作成に必要なモデルのネッ

トワークコードを生成( 5 ) 取得した情報からパラメータファイルを生成( 6 ) 生成したコードと手書きの GUI コードを組み合わせてアプリケーションを作成

トワークコードとパラメータファイルを生成する．

Chainer2MPSNNGraph[2] では，対応している学習済みモデルは Chainer のみであったが，ONNX2MPSNNGraph
では，ONNX という Chainer[3] や Pytorch*3 などの深層学
習フレームワークの共通プラットフォームの学習済みモデルに対応することによって，多数のフレームワークで学習したモデルからモバイルアプリケーションを作成できる．

3.1 ONNX のネットワーク構造
Chainer2MPSNNGraph[2] では，Chainer で学習したモデルにしか対応していなかった．Chainer は，Define-by-

図 2

ONNX2MPSNNGraph のワークフロー

Run という特徴を持っている．これは，計算グラフの構築をデータを流しながら行うため，順伝搬計算を一度行いその出力結果から計算グラフを遡るかたちで重みなどのパラメータやネットワーク構造を取得し，コードを生成している．そのため，コンバータにはモデルファイルの他にネットワークファイルが必要である．
それに対し，ONNX は Define-and-Run の特徴を持った

Keras*4 などのフレームワークにも対応できるため，ONNXのモデルファイル自体にネットワーク構造を持っているため，モデルファイルのみでのコード生成が可能である．
*3*4

図 3 Pytorch の Resnet のコードの一部

https://pytorch.org
https://keras.io2

第 22 回 画像の認識・理解シンポジウム

字などの機能でしか Neural Engine を使用せず，ユーザーが Neural Engine を利用することはできなかった．しかし，

A12 Bionic 以降のチップセットでは，CoreML が NeuralEngine を利用することが可能となり，GPU のみによる演算処理と比較してより高速な演算処理が可能となっている．
しかし，A12 Bionic 以降のチップセットでも CoreML を用いた実装以外では Neural Engine を用いる API といっ
図 4 ONNX2MPSNNGraph を用いて生成した MPSNNGraph のコードの一部たものは公開されておらず，MPSNNGraph による実装では Neural Engine を用いない GPU のみの演算処理のため，これ程の差が生まれていると推測できる．

4. 実験

表 1 Resnet50[1] による物体認識の認識時間 [msec]
実装方法

MPSNNGraph

CoreML

iPhone886.0289.12装の速度比較の実験を行った．モデルは ResNet50[1] を用

iPhone8Plus86.0689.18

いて認識時間を測定し，20 回の平均時間を認識時間としiPhoneXs Max

81.33

23.90

iPad Pro 11inch (2018)

40.94

19.29

ONNX2MPSNNGraph による MPS 実装と CoreML 実

た．デバイスは以下のものを用いた．

• iPhone8: iOS11.4, A11 Bionic• iPhone8Plus: iOS12.3.1, A11 Bionic• iPhoneXs Max: iOS12.3.1, A12 Bionic• iPad Pro 11inch 2018: iOS12.3.1, A12X Bionic

5. おわりに深層学習フレームワークの共通フォーマットである

ONNX のモデルを用いて，深層学習モバイルアプリケー
4.1 結果
表 1 に各デバイスでの MPS 実装と CoreML 実装の認識時間の結果を示す．

ションを作成するために必要なモデルのネットワークコードやパラメータファイルを生成する深層学習モデルコン
バータ ONNX2MPSNNGraph を作成した．

iPhone8 と iPhone8Plus の結果を見ると，MPSNNGraph実験では，A11 Bionic が搭載されたデバイスでは，MP-と CoreML のどちらの実装方法においても同様の結果がSNNGraph を用いた実装の方が CoreML による実装よりも得られたことから，iOS11 と iOS12 のバージョンの違高速であり，A12 Bionic 以降のチップセットが搭載された

いによって認識速度は変化しないことがわかる．また，デバイスでは，Neural Engine の活用の差により CoreML にMPSNNGraph による実装と CoreML による実装では，よる実装のほうが高速であった．現状では，Neural Engine

MPSNNGraph による実装の方が CoreML による実装に比を利用するための API は公開されていないため CoreML

べて約 3[msec] 高速に認識しているという結果が得られた．

による実装が有用であるが，Neural Engine を利用できる

これは，図 1 にあるように CoreML が MPS のラッパーにようになれば，MPSNNGraph による実装の方が高速にな位置しているため，そこにオーバーヘッドが存在し，認識ると予想でき，作成したコンバータの有用性が見込める．

速度の差として出てきていると考えられる．

iPad Pro 11inch (2018) と他のデバイスの MPSNNGraphによる実装の認識速度を見ると，iPad Pro 11inch (2018)

参考文献[1]の速度は他のデバイスと比べて約 2.1 倍となっている．これは，A11 Bionic や A12 Bionic に比べて A12X Bionic のチップセットの主に GPU に関する性能が大幅に向上した[2]

ことによる速度向上であると考えられる．

iPhoneXs Max において，CoreML による実装の認識速度は，MPSNNGraph による実装に比べて約 3.7 倍高速になっている．また，iPad Pro 11inch (2018) においてもCoreML による実装の方が約 2.1 倍高速に認識可能であるという結果が得られた．これだけの速度差を生み出した要因は，チップセットに搭載されている Neural Engine によ[3]He, K., Zhang, X., Ren, S. and Sun, J.: Deep residual
learning for image recognition, Proceedings of the IEEE
conference on computer vision and pattern recognition,
pp. 770–778 (2016).
Izumi, Y., Horita, D., Tanno, R. and Yanai, K.: RealTime Image Classification and Transformation Apps on
iOS by ”Chainer2MPSNNGraph”, Proc. of NIPS WS on
Machine Learning on the Phone and other Consumer
Devices (MLPCD) (2018).
Tokui, S., Oono, K., Hido, S. and Clayton, J.: Chainer:a Next-Generation Open Source Framework for Deep
Learning, Proceedings of Workshop on Machine Learning Systems (LearningSys) in The Twenty-ninth Annual
Conference on Neural Information Processing Systems(NIPS) (2015).

るものだと考えられる．A11 Bionic のチップセットにもこの Neural Engine は搭載されているが，Face ID やアニ文3