(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-08
(45)【発行日】2024-07-17
(54)【発明の名称】システム、方法およびプログラム
(51)【国際特許分類】
G06N 3/082 20230101AFI20240709BHJP
G06N 3/0464 20230101ALI20240709BHJP
【FI】
G06N3/082
G06N3/0464
(21)【出願番号】P 2022556657
(86)(22)【出願日】2020-03-24
(86)【国際出願番号】 JP2020013041
(87)【国際公開番号】W WO2021192041
(87)【国際公開日】2021-09-30
【審査請求日】2022-09-20
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103894
【氏名又は名称】家入 健
(72)【発明者】
【氏名】バギャニー ダーシット
【審査官】渡辺 順哉
(56)【参考文献】
【文献】特開2018-195231(JP,A)
【文献】XIE, Saining et al.,Aggregated Residual Transformations for Deep Neural Networks,arXiv[online],2017年04月11日,[retrieved on 2020.08.28], Retrieved from the Internet: <URL: https://arxiv.org/pdf/1611.05431v2.pdf>
【文献】HOWARD, Andrew et al.,Searching for MobileNetV3,arXiv[online],2019年11月20日,[retrieved on 2020.08.28], Retrieved from the Internet: <URL: https://arxiv.org/pdf/1905.02244v5.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
データのサイズを変更し、そのデータに対して第1の畳み込みNNモデルに含まれる畳み込みNN操作を実行する実行手段と、
前記データに対して前記畳み込みNN操作を行う場合に、推定時間と関連づけてデータのサイズを管理する管理手段と、
前記第1の畳み込みNNモデルにおいて、推定時間に基づいて、タイリング操作と連結操作の少なくとも1つが
導入されるタイミングを決定する決定手段と、
決定されたタイミングでタイリング操作と連結操作の少なくとも1つを
導入することによって、第2の畳み込みNNモデルを生成する生成手段と、を備えるシステム。
【請求項2】
前記実行手段は、前記データの高さ、幅、チャネルの少なくとも1つを変更することによって畳み込みNN操作を実行するように構成され、前記管理手段は、前記データの高さ、幅、チャネルの少なくとも1つを前記推定時間に関連付けて管理するように構成される、請求項1に記載のシステム。
【請求項3】
前記決定手段は、前記推定時間の変化量および前記データのサイズの変化量に基づいて、タイリング操作および連結操作の少なくとも1つが
導入されるタイミングを決定するように構成される、請求項1に記載のシステム。
【請求項4】
前記決定手段は、前記第1の畳み込みNNモデルに含まれるすべての畳み込みNN操作が実行された場合に、前記推定時間を短縮するために、タイリング操作および連結操作の少なくとも1つが
導入されるタイミングを決定するように構成されている、請求項1に記載のシステム。
【請求項5】
前記実行手段は、ブラックボックスデバイス内の前記データに対して畳み込みNN操作を実行するように構成され、前記ブラックボックスデバイスのハードウェア内部情報は、不明である、請求項1に記載のシステム。
【請求項6】
データのサイズを変更し、そのデータに対して第1の畳み込みNNモデルに含まれる畳み込みNN操作を実行し、
前記データに対して前記畳み込みNN操作を行う場合に、推定時間と関連づけてデータのサイズを管理し、
前記第1の畳み込みNNモデルにおいて、推定時間に基づいて、タイリング操作と連結操作の少なくとも1つが
導入されるタイミングを決定し、
決定されたタイミングでタイリング操作と連結操作の少なくとも1つを
導入することによって、第2の畳み込みNNモデルを生成する、方法。
【請求項7】
データのサイズを変更し、そのデータに対して第1の畳み込みNNモデルに含まれる畳み込みNN操作を実行し、
前記データに対して前記畳み込みNN操作を行う場合に、推定時間と関連づけてデータのサイズを管理し、
前記第1の畳み込みNNモデルにおいて、推定時間に基づいて、タイリング操作と連結操作の少なくとも1つが
導入されるタイミングを決定し、
決定されたタイミングでタイリング操作と連結操作の少なくとも1つを
導入することによって、第2の畳み込みNNモデルを生成する、ことをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ブラックボックスハードウェアを対象としたタイリングベースの畳み込みNNモデルに最適化監視、特に、性能を改善し、精度劣化を引き起こすことがなく、ブラックボックスハードウェア上の畳み込みNNモデルの推定時間としても知られる実行時間を短縮することができるシステムに関する。
【背景技術】
【0002】
EDGEデバイスシステム上の畳み込みNN (neural network)の例が、非特許文献1に記述されている。非特許文献1で提案されたAngel Eyeシステムは、畳み込みNNの効率的な実行を目的としており、畳み込みNNにおいてタイリングベースの最適化(tiling based optimization)を行うコンパイラを含んでいる。非特許文献1には、その提案がタイリング操作を実行するための内部入力、出力、およびウェイトバッファサイズ(weight buffer size)などのハードウェア情報に完全に依存しているという制限がある。しかし、急速に成長しているEDGEテクノロジーにおいて、EDGEデバイスは、一般的にブラックボックスとして顧客に販売されている。主な理由は、ハードウェアベンダーがハードウェアの内部情報を公開することに消極的であることである。EDGEデバイスシステム上で畳み込みNNを効率的に実行する別の例は、非特許文献2で説明されている。非特許文献2では、タイリングベースの最適化が提案されている。ただし、非特許文献2にも同様の制限があり、その提案は、対象とするハードウェアの1stレベルのキャッシュサイズなどの内部ハードウェア情報に依存している。このため、非特許文献2は非特許文献1と同じ問題に直面する。EDGEデバイスシステム上で畳み込みNNを効率的に実行する別の例は、非特許文献3で説明されている。非特許文献3は、FPGAベースのハードウェアのみを対象とし、タイリングベースの最適化を実行する。FPGAでは、コンピューティングリソースの再構成が可能である。このような柔軟性と再構成されたリソースの情報を活用して、非特許文献3はタイリングベースの最適化を示している。ただし、ハードウェアベンダーがハードウェア内部情報の公開に消極的であるため、このような再構成の柔軟性と内部コンピューティングリソース情報はすべてのEDGEデバイスで利用できるわけではない。また、EDGEデバイスシステム上で畳み込みNNを効率的に実行する別の例が特許文献1に記載されている。特許文献1では、処理ユニットの数、処理ユニット内のコンボルバ(convolver)の数、各コンボルバのサイズなどの内部ハードウェア情報を使用して、タイリングベースの最適化を行っている。しかし、特許文献1には、非特許文献1と同様の制限、すなわち、ベンダーによるハードウェアの内部情報の非開示がある。
【先行技術文献】
【特許文献】
【0003】
【文献】米国特許出願公開番号US2018/0046894
【非特許文献】
【0004】
【文献】“Angel-Eye: A Complete Design Flow for Mapping CNN Onto Embedded FPGA”-Kaiyuan Guo, Lingzhi Sui, Jiantao Qiu, Jincheng Yu, Junbin Wang, Song Yao, Song Han, Yu Wang, and Huazhong Yang, IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS, VOL.37, NO.1, JANUARY 2018
【0005】
【文献】“Glow: Graph Lowering Compiler Techniques for Neural Networks”-Nadav Rotem, Jordan Fix, Saleem Abdulrasool, Garret Catron, Summer Deng, Roman Dzhabarov, Nick Gibson, James Hegeman, Meghan Lele, Roman Levenstein, Jack Montgomery, Bert Maher, Satish Nadathur, Jakob Olesen, Jongsoo Park, Artem Rakhov, Misha Smelyanskiy, Man Wang, Computing Research Repository, arxiv.org, 2018.
【0006】
【文献】“TGPA: Tile-Grained Pipeline Architecture for Low Latency CNN Inference”-Xuechao Wei, Yun Liang, Xiuhong Li, Cody Hao Yu, Peng Zhang and Jason Cong, ICCAD '18, November 5-8, 2018, San Diego, CA, USA
【発明の概要】
【発明が解決しようとする課題】
【0007】
第一の問題は、現在の畳み込みNNモデルは、サイズが大きくリソースに制約のあるハードウェア上で効率的に実行されないいくつかのレイヤがあることである。大きなレイヤ(ビッグレイヤ)とは、大きな高さまたは/および大きな幅または/および大きなチャネルサイズを持つレイヤを意味する。第一の問題の原因は、EDGEデバイスシステムにおける制限された処理ユニット(processing units:PEs)、メモリサイズ、帯域幅などのリソースの制約にある。さらなるソフトウェア制限として、非効率なモデル最適化コンパイラは、EDGEデバイスシステムで実行される高度に最適化された畳み込みNNモデルを生成しない。
【0008】
本発明の第一の目的は、ブラックボックスハードウェア用のタイリングベースの畳み込みNNモデル最適化システムを提供することである。また、そのシステムは、ビッグレイヤ上で効率的なタイリングによる最適化を行うことで、ビッグレイヤの非効率な実行を解決することができる。
【課題を解決するための手段】
【0009】
第1の例として、システムは、データのサイズを変更し、そのデータに対して第1の畳み込みNNモデルに含まれる畳み込みNN操作を実行する実行手段と、前記データに対して前記畳み込みNN操作を行う場合に、推定時間と関連づけてデータのサイズを管理する管理手段と、前記第1の畳み込みNNモデルにおいて、推定時間に基づいて、タイリング操作と連結操作の少なくとも1つが実行されるタイミングを決定する決定手段と、決定されたタイミングでタイリング操作と連結操作の少なくとも1つを追加することによって、第2の畳み込みNNモデルを生成する生成手段と、を含む。
【0010】
第2の例として、方法は、データのサイズを変更し、そのデータに対して第1の畳み込みNNモデルに含まれる畳み込みNN操作を実行し、前記データに対して前記畳み込みNN操作を行う場合に、推定時間と関連づけてデータのサイズを管理し、前記第1の畳み込みNNモデルにおいて、推定時間に基づいて、タイリング操作と連結操作の少なくとも1つが実行されるタイミングを決定し、決定されたタイミングでタイリング操作と連結操作の少なくとも1つを追加することによって、第2の畳み込みNNモデルを生成することを含む。
【0011】
第3の例として、非一時的なコンピュータ可読媒体は、データのサイズを変更し、そのデータに対して第1の畳み込みNNモデルに含まれる畳み込みNN操作を実行し、前記データに対して前記畳み込みNN操作を行う場合に、推定時間と関連づけてデータのサイズを管理し、前記第1の畳み込みNNモデルにおいて、推定時間に基づいて、タイリング操作と連結操作の少なくとも1つが実行されるタイミングを決定し、決定されたタイミングでタイリング操作と連結操作の少なくとも1つを追加することによって、第2の畳み込みNNモデルを生成する、ことをコンピュータに実行させるプログラムを格納する。
【発明の効果】
【0012】
本開示により、ブラックボックスハードウェア上でも効果的に実行されるように、ビッグレイヤが効率的にタイル化されるという効果がある。
【図面の簡単な説明】
【0013】
【
図1】
図1は、ブラックボックスハードウェア108用のタイリングベースの畳み込みNNモデル最適化システム100の図である。
【
図2】
図2は、特性化モード(characterization mode)を示す図であり、ブラックボックスハードウェアキャラクタライザ部101と閾値サイズ抽出部109が共同して、与えられたブラックボックスハードウェア部 108の閾値サイズを抽出する。
【
図3】
図3はモデル修正モード(model modification mode)を示す図であり、修正された畳み込みNNモデル105が閾値サイズを使用して生成され、ブラックボックスハードウェア部 108に展開される。
【
図4】
図4は、単純な畳み込みNNモデル106aのアーキテクチャを示す図である。
【
図5】
図5は、畳み込みオートエンコーダNNモデル106bとして知られる特殊なタイプの畳み込みneural networkのアーキテクチャを示す図である。
【
図6】
図6は、各レイヤ次元とともに様々な演算レイヤを含む単純な畳み込みNNモデル106aの表である。
【
図7】
図7は、それぞれのレイヤ次元とともに様々な演算レイヤを含む単純な畳み込みオートエンコーダNNモデル106bの表である。
【
図8】
図8は修正された単純な畳み込みNNモデル106aを示す図である。
【
図9】
図9は修正された単純な畳み込みNNモデル106aの表である。
【
図10】
図10は修正された畳み込みオートエンコーダNNモデル106bを示す図である。
【
図11】
図11は、修正された畳み込みオートエンコーダNNモデル106bの表である。
【
図12】
図12は、レイヤ上で幅、高さ、チャネルに沿って実行されるタイリング操作と連結(concatenation)操作の例であり、任意の2つまたはすべてをいくつかのタイルで組み合わせたものである;
【
図13】
図13は、ブラックボックスハードウェアキャラクタライザ部101が実行する一連の動作を示すフローチャートである。
【
図14】
図14は、ブラックボックスハードウェアキャラクタライザ部101によって生成された特性化データベース103の例を示す図である。
【
図15】
図15は、閾値サイズ抽出部109によって実行される操作のシーケンスを示すフローチャートである。
【
図16】
図16は、閾値サイズ抽出部109が生成する閾値サイズデータベース104の例を示す図である。
【
図17】
図17はタイリング最適化部102を示す図であり、入力された畳み込みNNモデル106をブラックボックスハードウェア部108上でより良い性能を持つ修正畳み込みNNモデル105に修正する。
【
図18】
図18は、関数最適化部110で、タイリング操作と連結操作を導入したレイヤの範囲を最適化し、最小の総実行時間を実現する最適化方程式を示した図である。
【
図19】
図19は、畳み込み演算を行う単一のレイヤモデルの例である。
【
図20】
図20は、単純な畳み込みNNモデル106aのtile
heightリスト、tile
widthリストおよびtile
channelリストの例である。
【
図21】
図21は、畳み込みオートエンコーダNNモデル106bのtile
heightリスト、tile
widthリストおよびtile
channelリストの例である。
【
図22】
図22は、機能最適化部110によって作成されたtile
heightリスト、tile
widthリストおよびtile
channelリストのすべての値の例である。
【
図23】
図23は、タイリング実行時間の表である。データベース117と連結実行時間データベース118;
【発明を実施するための形態】
【0014】
第1の実施形態
以下、添付図面を参照して本開示の実施の形態を詳細に説明する。本開示の第一の実施の形態による最適化システム10の構成例を
図24を参照して説明する。最適化システム10は、実行部11、管理部12、決定部13、及び生成部14を含む。
【0015】
最適化システム10は、コンピュータ装置20として構成されてもよい。コンピュータ装置20は、メモリに格納されたプログラムをプロセッサが実行すると動作する。コンピュータ装置20は、実行部11、管理中部12、決定中部13、生成中部14を含んでもよい。
【0016】
実行部11、管理部12、決定部13、生成部14はソフトウェアでもモジュールでもよく、その処理はメモリに格納されたプログラムをプロセッサが実行すると実行される。あるいは、実行部11、管理部12、決定部13、生成部14は、回路やチップなどのハードウェアであってもよい。
【0017】
または、最適化システムは、複数のコンピュータデバイスとして構成されてもよい。たとえば、管理部12、決定部13、および生成部14がコンピュータデバイス20を構成し、実行部11が別のコンピュータデバイス21を構成してもよい。
【0018】
実行部11は、データのサイズを変更し、そのデータに対して第一の畳み込みNNモデルに含まれる畳み込みNN演算を実行するように構成される。管理部12は、そのデータに対して畳み込みNN操作が行われたとき、推定時間に関連するデータのサイズを管理するように構成されている。決定部13は、推定時間に基づいて、第一の畳み込みNNモデルにおいて、少なくとも一つのタイリング操作と連結操作が実行されるタイミングを決定するように構成される。生成部14は、決定されたタイミングで、タイリング操作と連結操作の少なくとも一つを加えることによって、第二の畳み込みNNモデルを生成するように構成される。
【0019】
第2の実施形態
タイリングベースの畳み込みNNモデル最適化を実行する具体化システム100のブロック図を
図1に示す。具体化システム100は、畳み込みNNモデル106を入力とし、修正された畳み込みNNモデル105を出力する。修正された畳み込みNNモデル105は、入力された畳み込みNNモデル106と比較して、ブラックボックスハードウェア部108上で、性能を改善し、精度劣化を引き起こすことなく推定時間を短縮する。
【0020】
具体化システム100は、ブラックボックスハードウェアキャラクタライザ(characterizer)部101、閾値サイズ抽出部109、タイリング最適化部102、モデルオプティマイザ(optimizer)+導入ツール部107、ブラックボックスハードウェア部108で構成される。
【0021】
モデルオプティマイザ+導入ツール部107は、
図1の実行部11に対応する。ブラックボックスハードウェアキャラクタライザ部101は、
図1の管理部12に相当する。タイリング最適化部102は、決定部13と生成部14に対応する。
【0022】
ブラックボックスハードウェア部108は、メモリに格納されたプログラムをプロセッサが実行したときに動作するコンピュータデバイスであってもよい。
【0023】
ブラックボックスハードウェアキャラクタライザ部101、閾値サイズ抽出部 109、タイリング最適化部 102、モデルオプティマイザ+導入ツール部107は、ソフトウェアまたはモジュールであってもよく、その処理はメモリに格納されたプログラムをプロセッサが実行したときに実行される。あるいは、ブラックボックスハードウェアキャラクタライザ部101、閾値サイズ抽出部109、タイリング最適化部102、モデルオプティマイザ+導入ツール部107は、回路やチップなどのハードウェアであってもよい。
【0024】
ブラックボックスハードウェアキャラクタライザ部101は、入力された畳み込みNNモデル106内のすべての畳み込みNN操作について、対象のブラックボックスハードウェア部108をキャラクタライズ(特性化)するタスクを実行する。閾値サイズ抽出部109は、特性化結果103を分析し、閾値サイズ104を生成するタスクを実行する。タイリング最適化部102の機能は、入力された畳み込みNNモデル106において、様々なレイヤでタイリング操作(tiling operation)と連結操作(concatenation operation)を導入することにより、入力された畳み込みNNモデル106を修正することである。次に、タイリング最適化部102は修正された畳み込みNNモデル105を生成する。モデルオプティマイザ+導入ツール部107は、修正された畳み込みNNモデル105のコンパイルを実行し、ブラックボックスハードウェア部108上にコンパイルされたモデルを導入(deploy)する。モデルオプティマイザ+導入ツール部107は、一般にブラックボックスハードウェア部108とともにそれぞれのベンダーから提供される。ブラックボックスハードウェア部108は、導入された畳み込みNNモデルを実行するタスクを実行する。
【0025】
具体化システム100は二つのモードで動作する。
図2に特性化モード(characterization mode)113、
図3にモデル修正モード(model modification mode)114を示す。特性化モード113は入力として畳み込みNNモデル106を用いて、二つのデータベースを生成する。二つのデータベースは特性化データベース103と閾値サイズデータベース104とを含む。特性化モード113では、ブラックボックスハードウェアキャラクタライザ部101、閾値サイズ抽出部109、モデルオプティマイザ+導入ツール部107、ブラックボックスハードウェア部108が動作する。モデル修正モード114では、タイリング最適化部102は、特性化データベース103及び閾値サイズデータベース104からデータを取得し、さらに畳み込みNNモデル106を入力とする。モデル修正モード114は、修正された畳み込みNNモデル105を生成する。モデルオプティマイザ+導入ツール部107は、修正された畳み込みNNモデル105のコンパイルを実行し、ブラックボックスハードウェア部108上にコンパイルされたモデルを導入する。モデル修正モード114では、タイリング最適化部102、モデルオプティマイザ+導入ツール部107、及びブラックボックスハードウェア部108が動作する。特性化モード113は一度だけ実行される。ただし、ターゲットのブラックボックスハードウェア部108が変更された場合は、特性化モード113が再実行される。さらに、畳み込みNNモデル106の操作レイヤの一部または全部が変化した場合、特性化モード113も同様に再実行される。
【0026】
図2は特性化モード113を示す図である。はじめに、特性化モード113で畳み込みNNモデル106を入力とする。単純な(simple)畳み込みNNモデル106aの例を
図4に示す。単純な畳み込みNNモデル106aは入力として画像を使用し、その画像に対して複数の畳み込みNN操作を逐次実行する。畳み込みNN操作の例としては、畳み込み、relu、batchnorm、プーリング(pooling)などがある。単純な畳み込みNNモデル106aでは、
図4に示すように、ストライドサイズ(stride size)、カーネルサイズ、出力チャネル数などの操作パラメータに応じて、中間レイヤのサイズが常に変化する。
図4の畳み込みNNモデル106aに関する表を
図6に示す。
図6に示される表では、レイヤ番号C101の列は各レイヤのシーケンシャルインデックスを示している。レイヤタイプC102は、それぞれのレイヤで実行される操作のタイプを示す。Input HeightC103、Input WidthC104、およびInput ChannelC105という名前の列は、それぞれの入力レイヤの高さ(height)、幅(width)、およびチャネルサイズ(channel size)を表す。Output Height C106、Output Width C107、およびOutput Channel C108という名前の列は、それぞれの出力レイヤの高さ、幅、およびチャネルサイズを表す。畳み込みNNモデルには多くのバリエーションがある。このようなモデルの特別なタイプの一つは、
図5に示される畳み込みオートエンコーダ(convolutional autoencoder : CAE)NNモデル106bである。畳み込みオートエンコーダNNモデル106bは、実装システム100にも入力され得る。一般に、畳み込みオートエンコーダNNモデル106bでは、出力画像サイズは入力画像サイズと等しいか、それに近い。単純な畳み込みNNモデル106aと比較して、畳み込みオートエンコーダNNモデル106bは、アップサンプリング(upsampling)、デコンボリューション(deconvolution)などのいくつかの追加の畳み込みNN操作を使用している。一例として畳み込みオートエンコーダNNモデル106bの表を
図7に示す。
【0027】
ブラックボックスハードウェアキャラクタライザ部101は、特性化モード113の入力として畳み込みNNモデル106を使用する。ブラックボックスハードウェアキャラクタライザ部101のフローチャートを
図13に示す。最初に、ステップS002で、ブラックボックスハードウェアキャラクタライザ部101が畳み込みNNモデル106を解析(parse)する。畳み込み、relu、アップサンプリング、デコンボリューションなど、ここではOOI(operations of interest)とも呼ばれるすべての畳み込みNN操作を
図14に列挙する。OOIとともに、対応する入力レイヤサイズと出力レイヤサイズもステップS002で解析される。次に、ブラックボックスハードウェアキャラクタライザ部101は、ステップS003でOOIから1番目の操作を選択し、またステップS004で{高さ、幅、チャネル}のうちの一つの軸「A」を選択する。次に、ブラックボックスハードウェアキャラクタライザ部101は、ステップS005で、入力レイヤに対して選択された操作を実行する多数の単一レイヤモデル(single layer model)を自動生成する。
図19は、入力レイヤに対して単一の畳み込み操作を実行する単一のレイヤモデル116の例を示している。すべての単一レイヤモデル116は、入力された畳み込みNNモデル106の最小実現可能値から実際の「A」サイズまでを範囲とする可変(variable)「A」サイズを持つことになる。他の二つの軸は入力された畳み込みNNモデル106の軸「A」と同じサイズになる。その後、ベンダーが提供するモデルオプティマイザ+導入ツール107を使用して、ブラックボックスハードウェア部108上で単一のレイヤモデル116のすべてが順次実行される。ステップS006で、ブラックボックスハードウェア部108上のすべての単一レイヤモデル116の推定時間がブラックボックスハードウェアキャラクタライザ部101にフィードバックされる。この場合、推定時間はモデルオプティマイザ+導入部107によって計算される。このような場合、モデルオプティマイザ+導入部107から出力される推定時間がフィードバックとして用いられる。ステップS006では、
図14に示される特性化データベース103と呼ばれるデータベースに、それぞれの操作名、「A」軸名、「A」軸値とともに推定時間が格納される。その後、ステップS007で{高さ、幅、チャネル}の次の軸「A」を選択し、単一レイヤモデルの生成、単一レイヤモデルの実行、それぞれの推定時間、操作名、軸名、軸値の格納という同様の処理を繰り返す。すべての軸が、1番目の操作においてカバーされるか選択されると、ステップS008で次の操作が選択される。ここでも、単一のレイヤモデルの生成、単一のレイヤモデルの実行、および推定時間、操作名、軸名、軸値の格納というプロセスが、すべての軸に対して繰り返される。このような特性化操作は、すべてのOOIに対して実行される。ここで、いくつかの操作は畳み込みNNモデル106で繰り返されるが、入力サイズは異なる。時々、入力された畳み込みNNモデル106で繰り返される操作があるかもしれない。たとえば、入力された畳み込みNNモデル106には複数の畳み込み演算が存在する可能性がある。このような場合、繰り返し操作では、すべての入力軸サイズが前に実行された同じ操作の入力軸サイズより小さい場合、そのような繰り返し操作はスキップされる。入力軸のサイズのいずれかが大きい場合、単一のレイヤモデルの生成、単一のレイヤモデルの実行、および推定時間、操作名、軸名、軸値の格納というプロセスがそれぞれの軸に対して繰り返される。ただし、最小軸サイズから開始するのではなく、同じ操作の以前の反復における試行で使用された最大軸サイズから反復を開始することができる。すべてのOOIをカバーまたは選択した後、ブラックボックスハードウェアキャラクタライザ部101は、ステップS009で、特性化データベース103と呼ばれる生成されたデータベースを出力する。
【0028】
生成された特性化データベース103の例を
図14に示す。特性化データベース103には、OOI、Axis、Axis size、およびInference time (seconds) の4つのカラムがある。1番目のカラムC201は、入力レイヤに対して実行される操作のタイプを表す。2番目と3番目のカラムC202とC203は、入力レイヤの軸名とその軸名に対応する軸サイズを表す。4番目カラムC204は、ブラックボックスハードウェア部108が入力レイヤに対して操作を実行するのに必要な推定時間を表す。特性化データベース103のエントリ数は、OOIの操作数、軸数(すなわち3)、および各軸の可変軸サイズの数の積に等しくなる。特性化データベース103は、特性化モード113で生成される二つの出力されるデータベースのうちの一つである。
【0029】
特性化データベース103は閾値サイズ抽出部109に入力される。閾値サイズ抽出部109のフローチャートを
図15に示す。最初に、ステップS010で、閾値サイズ抽出部109は、特性化データベース103を畳み込みデータベース、reluデータベースなどの固有の操作ベースのミニデータベースに分割する。ステップS011で、閾値サイズ抽出部109は、さらに、各ミニデータベースを畳み込み-高さデータベース、畳み込み-幅データベース、畳み込み-チャネルデータベースなどの軸ベースのマイクロデータベースに分割する。各マイクロデータベースは、固有の操作軸ペアを持つ。次に、ステップS012で、閾値サイズ抽出部109は、すべてのマイクロデータベースを軸サイズの昇順にソートする。ただし、単一レイヤのモデル116はすでに軸サイズの昇順を実行しているため、通常は、ソートステップS012はスキップされる。次に、ステップS013で、すべてのマイクロデータベースのすべての連続するエントリ間の傾き(Δinference time/Δaxis-size、すなわち、推定時間の差と軸サイズの差の比)を計算する。連続するすべてのエントリのΔaxis-sizeは互いに同じ(この場合は1)であるため、Δinference timeの計算のみを実行する必要がある。マイクロデータベースのNエントリの場合、N-1軸サイズのペアが存在する。次に、閾値サイズ抽出部109は、マイクロデータベース内で最も高い傾きを検索する。最も傾きの大きい軸サイズのペアから、ステップS014で軸サイズのペアのうち大きい軸サイズを決定するが、これを以下では閾値サイズと呼ぶ。このような閾値サイズは、すべてのマイクロデータベースごとに決定される。ステップS015では、閾値サイズデータベース104と呼ばれる別のデータベースに、すべての閾値サイズと対応する操作名および軸名とが格納される。
【0030】
閾値サイズデータベース104の例を
図16に示す。1番目の列C201は操作の種類(タイプ)を表し、2番目の列C202は軸名を表し、3番目の列C205は操作軸(operation-axis)ペアの閾値サイズを表す。閾値サイズデータベース104内のエントリ数は、OOI内の一意の操作の数と軸の数(すなわち3)の積に等しくなる。閾値サイズデータベース104は、特性化モード113で生成される二つの出力されるデータベースのうちの一つである。なお、ブラックボックスハードウェア部108の内部情報は使用されない。また、モデルオプティマイザ+導入ツール107の内部機能に関する情報は使用されない。したがって、ブラックボックスハードウェア部108とモデルオプティマイザ+導入ツール107はブラックボックスとして扱われる。次に、
図3はモデル修正モード114を示す図である。モデル修正モード114では、タイリング最適化部102は、入力された畳み込みNNモデル106、特性化データベース103および閾値サイズデータベース104を入力とする。モデル修正モード114は、修正された畳み込みNNモデル105を生成し、モデルオプティマイザ+導入ツール部107は修正された畳み込みNNモデル105をブラックボックスハードウェア部108に導入する。モデル修正モード114では、タイリング最適化部 102、モデルオプティマイザ+導入ツール部107、ブラックボックスハードウェア部108が動作する。
【0031】
タイリング最適化部 102は入力された畳み込みNNモデル106、特性化データベース103、および閾値サイズデータベース104を入力とする。タイリング最適化部102の内部ブロック図を
図17に示す。タイリング最適化部102の機能は、入力された畳み込みNNモデル106において、様々なレイヤでタイリング操作と連結操作を実行することにより、入力された畳み込みNNモデル106を修正することである。タイリング操作と連結操作を追加した入力された畳み込みNNモデル106は、修正された畳み込みNNモデル105と呼ばれる。
図12に示されるように、レイヤ1201でのタイリング操作は、レイヤを複数の小さなタイル1202、1203、1204、および1205に分割する。タイリング操作は、軸に沿って行うことも、
図12に示す二つまたはすべての軸の組み合わせで行うこともできる。タイリング操作はメモリ操作である。タイリング操作の実行に必要な実行時間は、一般に入力レイヤから形成されるタイルの数に依存し、入力レイヤのサイズにも依存する。連結操作は、機能的にはタイリング操作と正反対である。連結操作では、入力レイヤは複数のタイル1202、1203、1204、および1205を持ち、
図12に示すように、単一のタイルレイヤ1201を生成するために連結される。
【0032】
タイリング最適化部102は、モデルパーサ(Model parser)ブロック112、関数最適化部110、モデル修飾部111の三つのブロックで構成される。モデルパーサブロック112は入力として畳み込みNNモデル106を使用する。モデルパーサブロック112は、
図6a及び6bと同じ方法でモデルを解析するタスクを実行する。モデルパーサブロック112の機能は、ブラックボックスハードウェアキャラクタライザ部101がステップS002で使用した解析と同じである。したがって、モデルパーサブロック112とブラックボックスハードウェアキャラクタライザ部101によってステップS002で使用される解析も共有することができる。モデルパーサブロック112によるモデル情報は、関数最適化部110およびモデル修飾部111への入力として与えられる。
【0033】
関数最適化部110は、モデルパーサブロック112からモデル情報を、閾値サイズ抽出部109から閾値サイズデータベース104を、ブラックボックスハードウェアキャラクタライザ部101から特性化データベース103を取得する。関数最適化部110は、タイリング操作と連結操作が導入された、入力された畳み込みNNモデル106において、レイヤの最適範囲を決定するための最適化を実行する。タイリング操作と連結操作を追加した、入力された畳み込みNNモデル106は、修正された畳み込みNNモデル105と呼ばれる。修正された畳み込みNNモデル105は、ブラックボックスハードウェア部108に対する、入力された畳み込みNNモデル106と比較して、より良い性能を持つ。関数最適化部110は、レイヤの最適範囲を決定するための最適化を四つのステップで実行する。1番目のステップでは、入力された畳み込みNNモデル106のすべての個々のレイヤについて、すべての軸に沿ったタイルの最小数が計算される。レイヤについての軸に沿った最小タイル数とは、入力された畳み込みNNモデル106のそれぞれのレイヤでのタイル操作の導入後に形成されるべき小さなタイル(small tile)の最小数を意味する。タイル操作と連結操作の導入後、入力された畳み込みNNモデル106の各レイヤは、それぞれの軸に沿ったそれぞれの最小タイル数以上の小さなタイルの数を確実に持つことになる。2番目のステップでは、
図23に示すように、タイリング実行時間データベース117が生成される。3番目のステップでは、
図23に示すように、連結実行時刻データベース118が生成される。最後に、4番目のステップでは、最小タイル数、タイル実行時間データベース117及び連結実行時間データベース118を伴う特性化データベース103を用いて目的関数F(L)を解く。関数F(L)は畳み込みNNモデル106におけるレイヤの範囲を出力し、ここでタイリング操作と連結操作を導入して修正された畳み込みNNモデル105を生成する。
【0034】
最初に、1番目のステップでは、関数最適化部110は、入力された畳み込みNNモデル106のすべての個々のレイヤについて、3つの軸のすべてに沿ったタイルの最小数を含む3つのリストを作成する。高さ、幅、チャネルの3つの軸があるため、3つの別々のリストが作成され、それぞれtile
heightリスト、tile
widthリスト、tile
channelリストと呼ばれる。高さ軸に沿ったレイヤの最小タイル数を計算するために、機能最適化部110は、モデルパーサブロック112と入力レイヤの高さからレイヤでの操作のタイプを決定する。次に、機能最適化部110は、それぞれの操作の高さに沿った閾値サイズを閾値サイズデータベース104から取得する。最後に、関数最適化部110は、高さに沿った、入力レイヤの高さと閾値サイズの比率を計算する。結果の比率が整数で、tile
heightリストにまだ存在しない場合は、結果の比率がtile
heightリストに追加される。結果の比率が小数の場合、結果の比率は最も近い、小数よりも大きい整数に近似される。次に、近似された比率がtile
heightリストに存在しない場合、近似された結果の比率がtile
heightリストに追加される。同様に、幅とチャネルに沿ったタイルの最小数も計算され、tile
widthとtile
channelリストが作成される。たとえば、単純な畳み込みNNモデル106 aで畳み込み操作を持つレイヤ1の高さ軸のタイルの最小数は、
図16からの高さ992に沿った畳み込み操作の閾値サイズに対する
図6からの入力高さ1980の比率になる。最も近いより大きな整数に比率が近似された後、近似された比率は2になる。単純な畳み込みNNモデル106aと畳み込みオートエンコーダNNモデル106bのこのような最小タイル数の例を
図20と
図21に示す。
図22は、tile
heightリスト、tile
widthリスト、tile
channelリストにおける高さ、幅、チャネルに沿ったタイルの最小数のリストをそれぞれ示している。
2番目のステップでは、入力された畳み込みNNモデル106内のすべての個別レイヤ上の軸に沿ったタイリング操作がブラックボックスハードウェア部108上で実行および評価され、タイリング実行時間データベース117と呼ばれる新しいデータベースが作成される。タイリング実行時間データベース117を作成するには、まず、入力された畳み込みNNモデル106における1番目レイヤのサイズと入力レイヤサイズが等しい単一レイヤモデルがブラックボックスハードウェア部108上で評価され、軸名、入力サイズ、タイル数に加えて実行時間をタイリング実行時間データベース117と呼ばれるデータベースに格納する。タイリング操作は、形成されるタイルの数がtile
heightリストの最初の値と等しくなるように、高さに沿って実行される。入力された畳み込みNNモデル106の1番目のレイヤのサイズと等しい入力レイヤサイズを持つ単一レイヤモデルの同様の評価とタイリング操作は、
図22のtile
heightリストの残りの値に対して実行される。したがって、タイル実行時間データベース117のエントリ数は、tile
heightリストのエントリ数と等しくなる。このような特性化は、次に他の2つの軸、すなわち幅とチャネルに対して行われる。幅軸とチャネル軸に沿った特性化では、
図22にそれぞれ示されているtile
widthとtile
channelのリストからタイルの数を選択する。このような入力された畳み込みNNモデルにおける全レイヤに対するタイリング操作の特性化によって生成されるデータベースをタイリング実行時間データベース117と呼ぶ。tile
heightリスト、tile
widthリスト、tile
channelリストからのすべての軸に沿ったタイルの数はそれぞれ異なる。
【0035】
3番目のステップでは、機能最適化部110が連結操作の特性化を実行して連結実行時間データベース118を生成する。連結操作は、機能的にはタイリング操作と正反対である。2番目のステップのタイリング操作の特性化中に、タイリング操作の出力として生成されるすべての可変サイズと可変数のタイルは、連結操作の特性化でレイヤ入力される。このような複数タイルレイヤの連結操作の出力は、タイル操作の特性化で使用されるそれぞれの入力レイヤと等しくなる。連結操作はメモリ操作である。連結操作の特性化によって生成されるデータベースを連結実行時間データベース118と呼ぶ。連結実行時間データベース118とタイリング実行時間データベース117のサイズは等しい。
【0036】
最後に、4番目のステップで、関数最適化部110は、
図18に示されている目的関数F(L)を解く。機能最適化部110は、タイリング実行時間データベース117、連結実行時間データベース118、特性化データベース103、最小タイル数を使用して式を解く。目的関数F(L)を解くと、入力された畳み込みNNモデル106に追加のタイリング操作または連結操作を導入した後に得られる修正されたモデルがブラックボックスハードウェア部108上でより良い性能を持つように、タイリング操作または連結操作を導入したLレイヤの範囲が得られる。目的関数F(L)はブラックボックスハードウェア部108上の入力された畳み込みNNモデル106の総実行時間を最小化する。合計実行時間は、入力された畳み込みNNモデル106における各レイヤ (Execi) の実行時間と、もしあれば各レイヤで高さ (Overheadi, height) 、幅 (Overheadi, width) およびチャネル (Overheadi, channel)軸に沿った追加のタイリングまたは連結操作を実行するためのオーバーヘッド時間の合計に等しい。レイヤ (Execi) の実行時間は、レイヤ内のすべてのタイルの合計実行時間に等しい。入力された畳み込みNNモデルにおける全てのレイヤの全ての軸に沿って導入されたタイリングと連結操作の全ての組み合わせが網羅的に評価される。組み合わせの1つが最小合計実行時間を持ち、最終結果として選択される。任意のレイヤで導入された高さに沿ったタイリング操作は、高さに沿って形成されるタイルの数がtile
heightリストのエントリの1つと等しくなるように実行される。これは、幅とチャネル軸の操作にも適用される。tile
heightリスト、tile
widthリスト、tile
channelリストのエントリ数は限られているため、評価される網羅的な組み合わせの数は、すべての異なるタイル数について、すべての軸に沿ったさまざまなレイヤでのタイル操作と連結操作を導入するための網羅的な組み合わせの数に比べて非常に少ない。そこで、目的関数F(L)を解くことで、タイリング操作と連結操作が導入されているLレイヤの範囲、導入されているならば導入されているタイリングもしくは連結操作等の各レイヤでの操作タイプ、タイリング操作や連結操作が導入された軸名、各レイヤでのタイリング操作によって形成されるタイルの数、連結操作によって連結されるタイルの数といった情報が、機能最適化部110によって出力される。
【0037】
機能最適化部110からの情報とモデルパーサ112からのモデルの解析情報を使用して、モデル修飾部111は修正された畳み込みNNモデル105を作成する。修正された畳み込みNNモデル105は、さまざまなレイヤで導入されたタイリング操作と連結操作とを追加した、入力された畳み込みNNモデル106と類似する。修正された畳み込みNNモデル105はタイリング最適化部102の最終出力である。
【0038】
タイリング操作と連結操作が導入されているレイヤの一部または全部を持つ単純な畳み込みNNモデル106aと畳み込みオートエンコーダNNモデル106bとは、それぞれ修正された単純な畳み込みNNモデル115aと修正された畳み込みオートエンコーダNNモデル115bと呼ばれる。修正された単純な畳み込みNNモデル115aの例を、
図4の単純な畳み込みNNモデル106aのいくつかのレイヤに、付加的なタイリング操作と連結操作を導入して得た
図8に示す。修正された単純な畳み込みNNモデル115aのレイヤワイズ(layer wise)な描写を
図9に示す。単純な畳み込みNNモデル106aの1番目のレイヤでは、
図8に示すように、高さと幅に沿ったタイリング操作が導入されている。連結演操作は、2番目のレイヤで導入されている。単純な畳み込みNNモデル106aの1番目のレイヤは、4つのタイルにタイル化されている。1番目のレイヤの4つのタイルすべての軸に沿ったサイズを
図9に示す。
図5の畳み込みオートエンコーダNNモデル106bの一部のレイヤに追加のタイリング操作を導入して得られた畳み込みタイル型オートエンコーダNNモデル115bの例を
図10に示す。修正された畳み込み自動エンコーダNNモデル115bのレイヤワイズな描写を
図11に示す。
図8に示すようにタイリング操作を高さと幅に沿って導入された畳み込みオートエンコーダNNモデル106bのレイヤ数N-1とNを
図11に示す。畳み込みオートエンコーダNNモデル106bのN-1番目のレイヤは、4つのタイルにタイル化されている。同様にN番目のレイヤも16タイルにタイル化されている。N番目のレイヤの全軸に沿ったサイズを
図11に示す。
【0039】
修正された畳み込みNNモデル105はモデルオプティマイザ+導入ツール107に供給される。モデルオプティマイザ+導入ツール107は、修正された畳み込みNNモデル105のコンパイルを実行し、ブラックボックスハードウェア部108に導入する。モデルオプティマイザ+導入ツール107は、一般にハードウェアベンダーによって提供される。モデルオプティマイザ+導入ツール107の詳細な内部機能は、ベンダーによって明らかにされていない。したがって、モデルオプティマイザ+導入ツール107は、ユーザーにとってブラックボックスである。したがって、モデルオプティマイザ+導入ツール107の詳細な説明は、実施例の範囲を超えている。
【0040】
次に、本実施形態の効果について説明する。
【0041】
第1の効果は、ブラックボックスハードウェア上でも効果的に実行されるように、ビッグレイヤが効率的にタイル化されることができることである。
【0042】
効果の理由は、実施形態のシステムがブラックボックス特性化を実行し、畳み込みNNモデル106のすべての操作レイヤについてレイヤ軸上の閾値サイズを特定するためである。
【0043】
第2の効果は、ビッグレイヤのタイリング操作時間のオーバーヘッドを排除または削減することである。
【0044】
本実施の形態は、ブラックボックスとして扱うターゲットハードウェアを特性化するように構成され、入力された畳み込みNNモデルにおけるすべての操作レイヤの閾値サイズを取得する。そして、最適化を実行して、タイリング操作と連結操作が導入される畳み込みNNモデルのレイヤの範囲を決定する。このような最適化により、ビッグレイヤをハードウェアで効率的に実行するように変換することが可能である。また、実施の形態では、小レイヤをタイリングできるように構成しているため、ビッグレイヤのタイリングや、それに伴う実行時のタイリング操作のオーバーヘッドを回避することができる。さらに、本実施の形態では、Lレイヤの範囲を決定する際に、タイリング操作のオーバーヘッドと連結操作のオーバーヘッドも考慮して、タイリング操作と連結操作が追加されるように構成している。このような最適化により、タイリング操作と連結操作を追加した修正された畳み込みNNモデルが性能を向上させ、精度劣化を引き起こすことなく推定時間を短縮するように、入力された畳み込みNNモデルを修正することができる。
【0045】
さらに、本開示は、ブラックボックスハードウェア108の特性化を実行し、その後、タイリングベースモデルの最適化を実行して、精度劣化を引き起こすことなく推定時間を短縮することにより、畳み込みNNに対してハードウェア最適化を実行するシステムを提供することができる。
【0046】
以上の複数の実施例で説明したコンピュータ装置20および21の構成例を
図25を参照して以下に説明する。
図25は、コンピュータ装置20および21の構成例を示すブロック図である。
図25を参照すると、コンピュータ装置20および21は、ネットワークインターフェース1301、プロセッサ1302、およびメモリ1303を含む。ネットワークインターフェース1301は、通信システムを構成する他のネットワークノードとの通信に使用される。ネットワークインターフェース1301には、たとえばIEEE 802.3シリーズに準拠したネットワークインターフェースカード (NIC) を含んでもよい。
【0047】
プロセッサ1302は、メモリ1303からソフトウェア (コンピュータプログラム) を読み出して実行することで、上述の実施形態においてシーケンス図やフローチャートを用いて説明されたコンピュータ装置20および21の処理を実行する。プロセッサ1302は、例えば、マイクロプロセッサ、MPU(Micro Processing Unit)、CPU(Central Processing Unit)であってもよい。プロセッサ1302は、複数のプロセッサを含んでもよい。
【0048】
メモリ1303は、揮発性メモリ及び不揮発性メモリの組み合わせである。メモリ1303には、プロセッサ1302から離れて配置されたストレージを含んでもよい。この場合、プロセッサ1302は、図示されていないI/Oインターフェースを介してメモリ1303にアクセスしてもよい。
【0049】
図25の例では、メモリ1303はソフトウェアモジュール群を格納するために使用される。プロセッサ1302は、メモリ1303からこれらのソフトウェアモジュール群を読みだして実行することにより、上述の実施形態において説明されたコンピュータ装置20および21の処理を行う。
【0050】
図25を参照して説明したように、コンピュータ装置20および21に含まれるプロセッサの各々は、図面を用いて説明されたアルゴリズムをコンピュータに実行させるための命令群を含む一つまたは複数のプログラムを実行する。
【0051】
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0052】
なお、本開示は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【0053】
本発明は、その実施形態を参照して特に示され説明されているが、本発明は、これらの実施形態に限定されない。請求項に定義された本発明の精神および範囲から逸脱することなく、形態および詳細に様々な変更を加えることができることは、当業者には理解されるであろう。
【符号の説明】
【0054】
11 実行部
12 管理部
13 決定部
14 生成部
100 ブラックボックスハードウェア用のタイリングベースの畳み込みNNモデル最適化システム
101 ブラックボックスハードウェアキャラクタライザ部
102 タイリング最適化部
103 特性化データベース
104 閾値サイズデータベース
105 修正された畳み込みNNモデル
106 畳み込みNNモデル
106 a 単純な畳み込みNNモデル
106 b 畳み込みオートエンコーダNNモデル
107 モデルオプティマイザ+導入ツール部
108 ブラックボックスハードウェア
109 閾値サイズ抽出部
110 関数最適化
111 モデル修飾部
112 モデルパーサーブロック
113 特性化モード
114 モデル修正モード
115 a タイリング単純畳み込みNNモデル
115 b タイリング畳み込みオートエンコーダーNNモデル
116 シングルレイヤモデル
117 タイリング実行時間データベース
118 連結実行時刻データベース
1201 畳み込みNN レイヤ
1202 高さ軸に沿ったタイリング畳み込みNN レイヤ
1203 幅軸に沿ったタイリング畳み込みNN レイヤ
1204 チャネル軸に沿ったタイリング畳み込みNN レイヤ
1205 2軸または全軸の組み合わせに沿ったタイリング畳み込みNN レイヤ
1301 ネットワークインターフェース
1302 プロセッサ
1303 メモリ