(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024134549
(43)【公開日】2024-10-03
(54)【発明の名称】データ処理装置にニューラルネットワークを提供するための方法
(51)【国際特許分類】
G06N 3/06 20060101AFI20240926BHJP
【FI】
G06N3/06
【審査請求】未請求
【請求項の数】9
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024044199
(22)【出願日】2024-03-19
(31)【優先権主張番号】10 2023 202 443.8
(32)【優先日】2023-03-20
(33)【優先権主張国・地域又は機関】DE
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.PYTHON
(71)【出願人】
【識別番号】390023711
【氏名又は名称】ローベルト ボツシユ ゲゼルシヤフト ミツト ベシユレンクテル ハフツング
【氏名又は名称原語表記】ROBERT BOSCH GMBH
【住所又は居所原語表記】Stuttgart, Germany
(74)【代理人】
【識別番号】100114890
【弁理士】
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【弁理士】
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【弁理士】
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100134315
【弁理士】
【氏名又は名称】永島 秀郎
(74)【代理人】
【識別番号】100162880
【弁理士】
【氏名又は名称】上島 類
(72)【発明者】
【氏名】セバスチャン ボブレスト
(72)【発明者】
【氏名】ベンヤミン ワグナー
(72)【発明者】
【氏名】ズイ コイ ヴォー
(72)【発明者】
【氏名】ウルリク ヒョルト
(72)【発明者】
【氏名】デニス ゼバスティアン リーバー
(72)【発明者】
【氏名】ワリド フセイン
(57)【要約】 (修正有)
【課題】データ処理装置にニューラルネットワークを提供する方法を提供する。
【解決手段】方法は、ニューラルネットワーク103のセットから、ニューラルネットワークの複数の実装変形形態を有するサブセットを求める。ここで、サブセットは、作業用メモリ(105)需要、不揮発性メモリ(104)需要及びデータ処理装置(100)上で実行されるときの実行時間の何れにも関連せず、作業用メモリ需要、不揮発性メモリ需要及び実行時間の他の2つのうちの少なくとも1つを低下させることなく改善可能であり、また、作業用メモリ需要、不揮発性メモリ需要及びデータ処理装置上で実行されるときの実行時間の各々についてのサブセットは、最適である少なくとも1つの各実装変形形態を含む。方法はさらに、サブセットからの選択を指定するユーザ入力に従って、求められた実装変形形態の1つを選択し、選択した実装変形形態をデータ処理装置に格納する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
データ処理装置(100)上でニューラルネットワーク(103)を提供するための方法であって、前記方法は、
前記ニューラルネットワーク(103)の実装変形形態のセットから、前記ニューラルネットワーク(103)の複数の実装変形形態を有するサブセットを求めるステップであって、作業用メモリ需要、不揮発性メモリ需要、及び、前記データ処理装置(100)上で実行されるときの実行時間のいずれにも関連しない前記サブセットの各実装変形形態は、前記作業用メモリ需要、前記不揮発性メモリ需要及び前記実行時間の他の2つのうちの少なくとも1つを低下させることなく改善可能であり、さらに、前記作業用メモリ需要、前記不揮発性メモリ需要、及び、前記データ処理装置(100)上で実行されるときの前記実行時間の各々についての前記サブセットは、これに関して実装変形形態のセットのもとで最適である少なくとも1つの各実装変形形態を含む、ステップと、
前記サブセットからの選択を指定するユーザ入力に従って、求められた実装変形形態の1つを選択するステップと、
前記選択された実装変形形態を前記データ処理装置(100)に格納するステップと、を含む、方法。
【請求項2】
前記方法は、
前記ニューラルネットワークが基準実装に従って実装されるときに前記データ処理装置(100)上で前記ニューラルネットワーク(103)の他の層よりも長い実行時間を有する、前記ニューラルネットワーク(103)の層のセットを求めるステップと、
前記セットの各層について様々な層実装変形形態を求めるステップと、
前記求められた層実装変形形態を、前記ニューラルネットワーク(103)の実装変形形態に組み合わせることによって、前記ニューラルネットワーク(103)の実装変形形態を求めるステップであって、前記セットの一部ではない層については、それぞれ予め設定された基準実装が使用される、ステップと、
前記求められた実装変形形態の各々について、前記作業用メモリ需要、前記不揮発性メモリ需要及び前記実行時間を求めることにより、前記実装変形形態の前記サブセットを求めるステップと、
を含む、請求項1に記載の方法。
【請求項3】
前記ニューラルネットワークの入力層への同一の入力に対する実装変形形態のセットのすべての実装変形形態は、前記ニューラルネットワークの出力層に同一の出力を供給する、請求項1又は2に記載の方法。
【請求項4】
前記実装変形形態は、以下のうちの少なくとも1つ、すなわち、
同一の計算関数を用いて実装される層のセット、
入力変数、出力変数及び/又は層の1つ又は複数の量子化パラメータに適合化された各計算関数を用いて実装される層のセット、
重みを前記作業用メモリに格納するために用いられるデータタイプ、及び、
ルックアップテーブルを用いたそれらの計算に実装される層のセット
のうちの少なくとも1つにおいて異なる、請求項1乃至3のいずれか一項に記載の方法。
【請求項5】
前記方法は、
不揮発性メモリ及び作業用メモリのうちの少なくとも1つに関する前記データ処理装置(100)の制限の仕様を受信するステップと、
前記サブセットの前記実装変形形態が前記制限を遵守するように、前記実装変形形態の前記サブセットを求めるステップと、
を含む、請求項1乃至4のいずれか一項に記載の方法。
【請求項6】
前記方法は、
最大計算時間、不揮発性メモリ最大需要及び作業用メモリ最大需要のうちの少なくとも1つに関する適用要件の仕様を受信するステップと、
前記サブセットの前記実装変形形態が前記適用要件を満たすように、前記実装変形形態の前記サブセットを求めるステップと、
を含む、請求項1乃至5のいずれか一項に記載の方法。
【請求項7】
請求項1乃至6のいずれか一項に記載の方法を実施するように構成されたコンピュータシステム(101)。
【請求項8】
プロセッサによって実行されるときに、前記プロセッサに、請求項1乃至6のいずれか一項に記載の方法を実施させるための命令を含むコンピュータプログラム。
【請求項9】
プロセッサによって実行されるときに、前記プロセッサに、請求項1乃至6のいずれか一項に記載の方法を実施させるための命令が格納されているコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ処理装置にニューラルネットワークを提供するための方法に関する。
【背景技術】
【0002】
ニューラルネットワークは、多数のタスクのために、特に制御タスク、例えば、運転支援、ロボット制御、又は、あらゆる種類の機械のその他の制御のために使用することができる。ここでは、「同等の」ニューラルネットワークの実装(すなわち、同一の入力により同一の出力を提供する実装)が異なると、RAM、不揮発性メモリ及び実行時間に関して要件が大きく異なる可能性がある。用途及び利用可能なハードウェア、すなわち、ニューラルネットワークが実行されるデータ処理装置(例えば、マイクロコントローラ)に応じて、これらの要件は、多かれ少なかれ良好に満たされたり、用途に応じて多かれ少なかれ重要になったりする場合がある。それゆえ、ニューラルネットワークを所与のデータ処理装置に適当に提供することができるアプローチが望まれる。
【発明の概要】
【課題を解決するための手段】
【0003】
様々な実施形態によれば、データ処理装置上でニューラルネットワークを提供するための方法が提供され、本方法は、ニューラルネットワークの実装変形形態のセットから、ニューラルネットワークの複数の実装変形形態を有するサブセットを求めるステップを含み、ここで、作業用メモリ需要、不揮発性メモリ需要、及び、データ処理装置上で実行されるときの実行時間のいずれにも関連しない、サブセットの各実装変形形態は、作業用メモリ需要、不揮発性メモリ需要及び実行時間の他の2つのうちの少なくとも1つを低下させることなく改善可能であり、さらに、作業用メモリ需要、不揮発性メモリ需要、及び、データ処理装置上で実行されるときの実行時間の各々についてのサブセットは、これに関して実装変形形態のセットのもとで最適である少なくとも1つの各実装変形形態を含む。本方法は、さらに、サブセットからの選択を指定するユーザ入力に従って、求められた実装変形形態の1つを選択するステップと、選択された実装変形形態をデータ処理装置に格納するステップと、を含む。
【0004】
上述の方法は、データ処理装置及びそれぞれの用途(例えば、データ処理装置によって制御される装置)の技術的条件を考慮して、データ処理装置上でニューラルネットワークを効率的に提供することを可能にする。ユーザには、利用可能なデータ処理装置及びそれぞれの用途(並びに、その結果として生じる作業メモリ需要、不揮発性メモリ需要、及び、実行時間の優先順位付け)に関して、(算出精度又は利用可能な実装の枠内において)最適である実装変形形態を選択する手段が与えられる。
【0005】
データ処理装置は、例えば、制御タスク用のニューラルネットワーク、すなわち、例えばロボットなどの装置を制御するためのニューラルネットワークを使用する。
【0006】
以下においては、様々な実施例を示す。
【0007】
実施例1は、上述したようなニューラルネットワークを提供するための方法である。
【0008】
実施例2は、実施例1に記載の方法であり、当該方法は、ニューラルネットワークが基準実装に従って実装されるときにデータ処理装置上でニューラルネットワークの他の層よりも長い実行時間を有する、ニューラルネットワークの層のセットを求めるステップと、セットの各層について様々な層実装変形形態を求めるステップと、求められた層実装変形形態を、ニューラルネットワークの実装変形形態に組み合わせることによって、ニューラルネットワークの実装変形形態を求めるステップであって、セットの一部ではない層については、それぞれ予め設定された基準実装が使用される、ステップと、求められた実装変形形態の各々について、作業用メモリ需要、不揮発性メモリ需要及び実行時間を求めることにより、実装変形形態のサブセットを求めるステップと、(求められた実装変形形態をサブセットに追加し、それによって、サブセット又はそこに含まれる実装変形形態が上記の条件を満たすステップと、)を含む。
【0009】
このことは、特に、その実行時間(すなわち、計算コスト)が、例えば、予め設定された閾値(例えば、実行時間の1%~5%)を超えて総実行時間に最も寄与する層についての層実装変形形態のみを求めることによって、サブセットの効率的な算出を可能にする。例えば、実装変形形態のサブセット(又は、サブセット若しくはそれに含まれる実装変形形態が上記の条件を満たすようにサブセットに追加される実装変形形態のサブセットについての実装変形形態の少なくとも候補)を生成するために、メモリ需要、不揮発性メモリ需要及び実行時間の少なくとも1つに関してそれぞれ最適である層実装変形形態は、共に組み合わせることが可能である。メモリ需要、不揮発性メモリ需要及び実行時間を求めるために、これらの層は、求められた層実装に応じて実装される。
【0010】
実施例3は、実施例1又は2に記載の方法であり、ここで、ニューラルネットワークの入力層への同一の入力に対する実装変形形態のセットのすべての実装変形形態は、ニューラルネットワークの出力層に同一の出力を供給する(すなわち、数値的に同一)。
【0011】
これにより、上記方法に従ってニューラルネットワークの実装を最適化することによって精度が失われないことが保証される。
【0012】
実施例4は、実施例1から3までのいずれか1つに記載の方法であり、ここで、実装変形形態は、以下のうちの少なくとも1つ、すなわち、
・同一の計算関数を用いて実装される層のセット、
・入力変数、出力変数及び/又は層の1つ又は複数の量子化パラメータ、及び/又は、畳み込みの際のカーネル変数などのパラメータに適合化された各計算関数を用いて実装される層のセット、
・重みを作業用メモリに格納するために用いられるデータタイプ、及び、
・ルックアップテーブルを用いたそれらの計算に実装される層のセット
のうちの少なくとも1つにおいて異なる。
【0013】
これらのパラメータは、ニューラルネットワークの出力を変更することなく、メモリ需要、揮発性メモリ需要及び実行時間に効率的な作用を提供する。データタイプは、例えば、重みがより多くのメモリスペースを必要とするが、そのためのプロセッサへの直接のロードが可能かどうかについて決定を行う。
【0014】
実施例5は、実施例1から4までのいずれか1つに記載の方法であり、当該方法は、不揮発性メモリ及び作業用メモリのうちの少なくとも1つに関するデータ処理装置の制限の仕様を(例えば、対応するユーザ入力の受信によって)受信するステップと、サブセットの実装変形形態が制限を遵守するように、実装変形形態のサブセットを求めるステップと、を含む。
【0015】
これにより、選択が行われる実装変形形態がデータ処理装置の能力に対応することが保証可能になる。
【0016】
実施例6は、実施例1から5までのいずれか1つに記載の方法であり、当該方法は、最大計算時間、不揮発性メモリ最大需要及び作業用メモリ最大需要のうちの少なくとも1つに関する適用要件の仕様を(例えば、対応するユーザ入力の受信によって)受信するステップと、サブセットの実装変形形態が適用要件を満たすように、実装変形形態のサブセットを求めるステップと、を含む。
【0017】
これにより、選択が行われる実装変形形態がそれぞれの用途の要件(すなわち、ニューラルネットワークのそれぞれのタスク)に対応することが保証可能になる。
【0018】
実施例7は、実施例1から6までのいずれか1つに記載の方法を実施するように構成されたコンピュータシステムである。
【0019】
実施例8は、プロセッサによって実行されるときに、プロセッサに、実施例1から6までのいずれか1つに記載の方法を実施させるための命令を含むコンピュータプログラムである。
【0020】
実施例9は、プロセッサによって実行されるときに、プロセッサに、実施例1から6までのいずれか1つに記載の方法を実施させるための命令が格納されているコンピュータ可読媒体である。
【0021】
図面においては、同様の参照符号は、一般に、すべての様々な図面において同様の部分を指す。これらの図面は、必ずしも縮尺通りではなく、ここでは、その代わりに、一般的に本発明の原理の描写に重点が置かれている。以下の説明においては、様々な態様が、以下の図面を参照して説明される。
【図面の簡単な説明】
【0022】
【
図1】マイクロコントローラを備えた装置を示す図である。
【
図3】一実施形態によるデータ処理装置上にニューラルネットワークを提供するための方法を表すフローチャートである。
【発明を実施するための形態】
【0023】
以下の詳細な説明においては、本発明が実施可能である本開示の説明のために特定された詳細及び態様を示す添付の図面が参照される。本発明の保護範囲から逸脱することなく、他の態様が使用可能であり、さらに、構造的、論理的及び電気的変更も実施可能である。本開示のいくつかの態様は、新たな態様を構成するために、本開示の1つ又は複数の他の態様と組み合わせることができるため、本開示の様々な態様は、必ずしも相互に排他的なものではない。
【0024】
以下においては、様々な例をより正確に説明する。
【0025】
図1は、マイクロコントローラ102を備えた装置100を示している。
【0026】
装置100は、あらゆる種類のタイプのロボット装置及び/又は機械、例えば、車両、ロボットアーム、洗濯機、ドリルなどであるものとしてよい。マイクロコントローラ102は、そのような装置においてあらゆる制御タスク、例えば、ブレーキ、モータなどの制御を有し得る。
【0027】
マイクロコントローラ102は、この目的のために、ニューラルネットワーク103を使用する。これは、(ニューラルネットワークの仕様、特にその重みの形態で)マイクロコントローラ102の不揮発性メモリ104(例えば、フラッシュメモリ)に格納され、(例えば、装置がスイッチオンされたときの)実行のために、マイクロコントローラ102の作業用メモリ105(すなわち、RAM)にロードされ、プロセッサ106(これらは、複数の個別のプロセッサ又はプロセッサコアであるものとしてもよい)によって実行される。
【0028】
マイクロコントローラは、計算能力、フラッシュサイズ及びRAMサイズに関して性能スケールの下方端部にある。それゆえ、このハードウェア用のソフトウェアは、3つの方向に制限される。他の面においては、ニューラルネットワークは、計算量が多い。それらは格納すべきアクティベーションによって高い作業メモリ需要を有し、トレーニングされたパラメータによって高いフラッシュ需要を有する。マイクロコントローラ上でのそれらの使用は、層の数と層のサイズとに制限を課す。さらなる計算時間、RAM及びフラッシュを節約するために、多くの場合、float32ネットワークの代わりにint8量子化ネットワークが使用される。
【0029】
その上さらに、所与のニューラルネットワークを様々な方法により実装することも可能である。これらの実装は、数値結果に関してはビット精度で同一である(すなわち、同一の入力に対して同一の結果が供給される)が、計算時間、作業用メモリ需要及び不揮発性メモリ需要に関しては異なる。したがって、実装は、さらに、それぞれのシステム全体(ここでは装置100)の内部のニーズに適合化させることができる。様々な要件の例は、以下のとおりである。
・ニューラルネットワーク103は非常に頻繁に、例えば、穿孔機械又は洗濯機の回転ごとに1回呼び出される。この場合においては、計算時間が最も重要な基準になる。
・ニューラルネットワーク103は、例えば自己診断のために、装置100のスイッチオンの際に一度だけ必要となる。したがって、計算時間は重要ではなく、作業用メモリは二次的なものとなる。なぜなら、これは後で他の機能によって再び使用することができるからである。ただし、不揮発性メモリ需要は、他の機能のためのスペースを持つために、可及的に最小にすべきであろう。
・ニューラルネットワーク103は、動作時間中に非常に多くのデータを作業用メモリに保持する必要がある装置100に使用すべきである。したがって、作業用メモリ需要が一次的な基準となる。
・ニューラルネットワークは、可及的に効率的に稼働させるべきであるが、最大で20kBのフラッシュをそのために使用することができる。
【0030】
マイクロコントローラ用のニューラルネットワークの実装は、多くの場合、手動ではなく、この目的のために特別に開発されたツールを用いて行われるが、それらは、様々な実装を、計算時間、作業用メモリ需要及び不揮発性メモリ需要の間の異なる妥協点を用いて生成することができる状況にはない。ニューラルネットワークは量子化によって圧縮することができるが、これによって、ニューラルネットワークの数値結果が変化する。
【0031】
様々な実施形態によれば、ニューラルネットワークの様々な実装は、例えば、コンピュータシステム101によって自動的に生成される。量子化及び枝刈り技術とは対照的に、すべての実装は数値的に厳密に同一である(すなわち、同一の入力のもとで同一の出力を供給する)。ただし、それらは、必要な計算時間、作業用メモリ需要及び不揮発性メモリ需要において異なる。ここでは、可能なすべての実装のうち、パレートフロント(計算時間、メモリ需要及び不揮発性メモリ需要)にあるものが選択される。パレートフロント上の実装の数が過度に多い場合は、さらにこれらから非常に類似した実装が取り除かれる。
【0032】
結果として生じる実装のセットは、各ユーザに、計算時間、作業用メモリ需要及び不揮発性メモリ需要のリストアップとともに選択のために、例えば、コンピュータシステム101の画面108上に提供される。次いで、ユーザ入力に従って実装が選択され、マイクロコントローラ102にロードされることが可能になる(ケーブルを用いた接続、無線接続、USBスティックを用いた接続などにより)。
【0033】
例えば、コンピュータシステム101は、最終的に(選択された実装に従って)訓練されたニューラルネットワーク103をマイクロコントローラにインストールすることができるようにするために、ニューラルネットワーク103用のCコードを生成する。この場合、コンピュータシステム101は、一実施形態によれば、実装を生成するのではなく、パレートフロント(計算時間、メモリ需要及び不揮発性メモリ需要によって拡張される空間)上で数値的に同一の実装のセットを生成する。生成された実装について、プロパティ(計算時間、メモリ需要、不揮発性メモリ需要)がユーザにリストアップされ、及び/又は、パレートフロントがディスプレイ108上にグラフィカルに示される。
【0034】
図2は、そのようなパレートフロント200の概略図を示している。これらのパラメータは、計算時間、作業用メモリ需要及び不揮発性メモリ需要である。ここでは点線によって2次元的に簡略化して示されているパレート曲面上の実装が、選択のためにユーザに提案される。
【0035】
次いで、ユーザは、自身の要件(又は装置100の要件)に最良に対応する実装を選択することができる。様々な実装を生成するために可能な技法は、以下のとおりである。
・不揮発性メモリを節約するために、1つのタイプのすべての層(例えば、完全に接続された層又は畳み込み層)は、すべての層のために呼び出される1つの機能のみで実装することができ(例えば、ライブラリからの機能)
・不揮発性メモリ需要の負担によって計算時間を改善するために、1つのタイプのすべての層は、入力及び出力サイズ、量子化パラメータ、並びに、畳み込みの際のカーネルサイズなどのパラメータに適合化されたそれぞれ単一の最適化された機能により実装することができる。
・作業用メモリの負担によって計算時間を節約するために、特に計算に費やす層の重みを永続的に作業用メモリにロードし、それによって計算中にプロセッサ106により迅速に利用可能にすることができる。
・特定の層は、アルゴリズム方式による実装(長い計算時間、低い不揮発性メモリ需要)かルックアップテーブルを用いた実装(短い計算時間、高い不揮発性メモリ需要)のいずれかが可能である。
【0036】
様々な実装は、推論時間(すなわち、ニューラルネットワークによる順方向パスの実行時間)に関して層ごとに容易に分類することができ。不揮発性メモリ需要は、全体構成に依存するが、個々の層に必要なメモリ量は比較的一定であるため、比較的良好に推定することができる。(入力サイズと出力サイズとに合わせて高度に最適化された2つの異なる高密度実装は、コードの特定の部分を最適化することができない限り、不揮発性メモリ需要は、ほとんど同等である)。実装の作業用メモリ需要は、格納すべきアクティベーションの量から生じ、厳密に測定可能である。個々の層についての情報からは、可能な実装の様々なパラメータが決定可能であり、リストアップ可能である。
【0037】
上述したアプローチでは、様々な用途において多岐にわたる要件が考慮されており、以下のとおりである。
・選択すべき実装は、目標ハードウェアに依存する。様々なマイクロコントローラは、大幅に異なる量の不揮発性メモリ(例えば、フラッシュメモリ)を有し得る。
・一部の用途は、例えば、20kBまでのフラッシュメモリ制限又は6msの最大推論時間などの厳しい要件を有する。
・他の用途は、具体的な要件をそれほど有しているわけではなく、可及的に高速でかつ可及的に少ない不揮発性メモリを要する実装が必要とされる。十分な余裕度がまだ残存している場合には、必要に応じてより大きいニューラルネットワークを選択することができる。
【0038】
それゆえ他方では、コンパイラのように「コードサイズに関する最適化」や「速度に関する最適化」などの個々の目標変数に関する最適化では不十分である。他方において、上述したアプローチでは、パレート曲面(すなわち、パレートフロント)から実装を選択することができるようにすることよって、それぞれの実装を定義する多数の任意選択肢によるユーザの負担が回避されている。
【0039】
パレート曲面の決定は、例えば、以下の特性を考慮して行うことができる。
・ニューラルネットワーク103の実行(すなわち、ニューラルネットワークを用いた推論)の実行時間は、若干の偏差を除き、個々の層の実行時間の合計である。
・不揮発性メモリ総需要は、すべてのトレーニング済みパラメータ(典型的には重み)の不揮発性メモリ需要と、実装された機能(例えば、層操作)の不揮発性メモリ需要とで構成される。このことは、層が実装を分け合うか、又は、各層が固有の実装を有するかに依存しない。必要な不揮発性メモリの量は、パラメータのメモリ需要+必要な実装機能のメモリ需要として計算される。各層について固有の実装の場合、層ごとに1つの機能が生じ、そうでない場合は、複数の層について1つの機能が生じる。フラッシュ需要は、使用する機能及びパラメータから容易に求めることができる。例えば、ある実装においては、2つの層について1つの機能が存在し、他の実装においては、2つの機能が存在する場合、付加的なフラッシュ需要は、付加的な機能となる。作業用メモリ需要のように、ネットワークの他の層との相互作用は存在しない。
・作業用メモリ需要は、汎用プロパティである。メモリ領域は場合によっては他の層によって再利用される可能性があるため、個々の層の作業用メモリ需要の増加は、必ずしも全体の作業用メモリ需要を増加させるわけではない。
【0040】
コンピュータシステム101は、選択のためにユーザに提示される実装変形形態のサブセットを、例えば、以下のように決定する。
1.ニューラルネットワーク103の層は予想される計算需要に従って分類される。このことは、目標ハードウェア上(すなわち、マイクロコントローラ102上)の各層の基準実装の測定によって決定することができる。
2.コンピュータシステム101は、計算需要が最も高い層から始めて、ニューラルネットワーク103の様々な実装を層ごとに生成し、不揮発性メモリ需要、現在実装されている層のローカル作業用メモリ需要及び計算時間を測定又は計算する。すなわち、コンピュータシステム101は、各層について様々な実装を求める(本明細書においては、ニューラルネットワーク全体の実装と区別するために、層実装とも称する)。頻繁に発生する層構成について、これらの値はデータベースにファイルすることもできる。
3.計算需要全体に対する所定の限界(約1%~5%)未満にかかわる層については、コンピュータシステム101は、観察すべき層実装の数及びニューラルネットワークの実装の数が過度に多くならないようにするために、メモリ効率の高い基準実装(作業用メモリ及び不揮発性メモリ)を直接提示することができる。
4.コンピュータシステム101は、ここで、ニューラルネットワーク103の実装のために見つけた層実装を相互に組み合わせる。作業用メモリ需要を決定するために、各組合せ(すなわち、ニューラルネットワーク103の各実装)についてメモリ計画が計算される。
5.所定のトリプル(推論時間、作業用メモリ需要、不揮発性メモリ需要)から、コンピュータシステム101はパレートフロントを計算し、ユーザに、パレートフロント上の(ニューラルネットワークの)実装のみを(例えば、ディスプレイ108上での)選択のために与える。パレートフロントの計算は、標準ライブラリ、例えば、Python用のOApackageを用いて実施することができる。
【0041】
要約すると、様々な実施形態により、
図3に示されているような方法が提供される。
【0042】
図3は、一実施形態によるデータ処理装置上でニューラルネットワークを提供するための方法を表すフローチャート300を示している。
【0043】
ステップ301においては、ニューラルネットワークの実装変形形態のセットから、ニューラルネットワークの複数の実装変形形態を有するサブセットが求められる(すなわち、実装変形形態のセットのサブセット、したがって、サブセット自体が複数の実装変形形態を含み、上記の例においては、これらはパレートフロント上の実装変形形態である)。ここで、
・作業用メモリ需要(例えば、RAM需要)、不揮発性メモリ需要(例えば、フラッシュ需要)、及び、データ処理装置上で実行されるときの実行時間(すなわち、計算コスト、例えば、ニューラルネットワークによる順方向パスの実行時間、すなわち、ニューラルネットワークを用いた推論の実行時間)のいずれにも関連しない、サブセットの各実装変形形態は、作業用メモリ需要、不揮発性メモリ需要及び実行時間の他の2つのうちの少なくとも1つを低下させることなく改善可能である。
・作業用メモリ需要、不揮発性メモリ需要、及び、データ処理装置上で実行されるときの実行時間の各々についてのサブセットは、これに関して実装変形形態のセットのもとで最適である少なくとも1つの各実装変形形態を含む。
【0044】
ステップ302においては、サブセットからの選択を指定するユーザ入力(例えば、テキスト入力又は対応するディスプレイ要素上のクリック)に従って、求められた実装変形のうちの1つが選択される。
【0045】
ステップ303においては、選択された実装変形形態が、データ処理装置に格納される(それにより、これらはそこで実行することができ、例えば、それらは上記のステップを実施するコンピュータシステムからデータ処理装置に転送され、例えばフラッシュ過程によってそこに格納される)。
【0046】
データ処理装置上でニューラルネットワークを提供することは、様々な実施形態によれば、実装することを含み、又は、様々な実施形態において実装により与えられる(実装変形形態をデータ処理装置に格納することは、データ処理装置上で実装変形形態(若しくは実装変形例によるニューラルネットワーク)を提供すること、特に実装することとしてみなすこともできる)。
【0047】
サブセットは、様々な実施形態に従って、(例えば、可能な、利用可能な、又は、提供される)実装変形形態のセットにおいてパレート曲面を形成する。
【0048】
図3の方法は、1つ又は複数のデータ処理ユニットを備えた1つ又は複数のコンピュータによって実施することができる。「データ処理ユニット」との用語は、データ又は信号の処理を可能にする何らかのタイプの実体として理解することができ。データ又は信号は、例えば、データ処理ユニットによって実施される少なくとも1つの(すなわち、1つ又は複数の)特定の機能に従って処理することができる。データ処理ユニットは、アナログ回路、デジタル回路、論理回路、マイクロプロセッサ、マイクロコントローラ、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、プログラマブルゲートアレイの集積回路(FPGA)、又は、それらの何らかの組合せを含むものとしてよく又はそれらから構成されるものとしてよい。本明細書においてより詳細に説明されるそれぞれの機能を実装するための何らかの他の手法は、データ処理ユニット又は論理回路アセンブリとして理解することもできる。本明細書において詳細に説明される1つ又は複数の方法ステップは、データ処理ユニットにより、自身によって実施される1つ又は複数の特定の機能によって実行(例えば、実装)可能である。
【0049】
すなわち、本方法は、様々な実施形態に従って、特にコンピュータによって実施される。
【0050】
図3のアプローチは、データ処理装置上でニューラルネットワークを提供するために用いられ、したがって、データ処理装置はそれを実行し、例えば、ニューラルネットワークの出力(例えば、物体検知)に基づいてロボット装置用の制御信号を生成する。「ロボット装置」との用語は、例えば、コンピュータ制御された機械、車両、家庭用電化製品、電動工具、製造機械、パーソナルアシスタント、又は、アクセス制御システムなど(その動作が制御される機械部品を備えた)何らかの技術システムを指すものとして理解することができる。そこでは、この技術システムの制御ルールが学習された後、それに応じてこの技術システムが制御される。
【0051】
ニューラルネットワークは、例えば、制御すべきシステム(例えば、ロボットやその環境内の物体)の状態に関するセンサデータを取得するために、例えば、ビデオ、レーダ、LiDARなどの様々なセンサからの、例えば、センサ信号、超音波、モーション、熱画像などを処理することができる。センサデータの処理は、例えば、(センサデータが取得された環境における)物体の存在を検出するために、例えば、センサデータの分類又はセンサデータにおけるセマンティックセグメンテーションの実施を含み得る。したがって、例えば、様々なシナリオのもとで様々な操作タスクを達成するために、ニューラルネットワークを用いて例えばロボットを制御することができる。特に、これらの実施形態は、例えば、組立ラインにおける操作タスクの実行の制御及び監視に適用可能である。
【外国語明細書】