(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-27
(45)【発行日】2024-06-04
(54)【発明の名称】ニューラルネットワークモデルを実行するデータ処理装置、方法及び関連製品
(51)【国際特許分類】
G06N 3/0464 20230101AFI20240528BHJP
G06F 18/10 20230101ALI20240528BHJP
G06N 3/063 20230101ALI20240528BHJP
【FI】
G06N3/0464
G06F18/10
G06N3/063
(21)【出願番号】P 2022581659
(86)(22)【出願日】2021-12-30
(86)【国際出願番号】 CN2021143160
(87)【国際公開番号】W WO2022143916
(87)【国際公開日】2022-07-07
【審査請求日】2022-12-28
(31)【優先権主張番号】202011631707.4
(32)【優先日】2020-12-31
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】202011624955.6
(32)【優先日】2020-12-31
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】202011631736.0
(32)【優先日】2020-12-31
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】520426003
【氏名又は名称】中科寒武紀科技股▲分▼有限公司
【氏名又は名称原語表記】CAMBRICON TECHNOLOGIES CORPORATION LIMITED
【住所又は居所原語表記】Room 1601, 16 / F, Block D, Zhizhen Building, No. 7, Zhichun Road, Haidian District Beijing 100191, China
(74)【代理人】
【識別番号】100146374
【氏名又は名称】有馬 百子
(72)【発明者】
【氏名】林 暁東
(72)【発明者】
【氏名】湯 正剛
(72)【発明者】
【氏名】焦 帥
(72)【発明者】
【氏名】羅 海▲ショウ▼
(72)【発明者】
【氏名】張 雄
【審査官】渡辺 一帆
(56)【参考文献】
【文献】特開2019-125351(JP,A)
【文献】特開2020-126597(JP,A)
【文献】特開2019-125352(JP,A)
【文献】特開2019-102082(JP,A)
【文献】平森 将裕 ほか,"組込み向けディープラーニングフレームワークの評価",情報処理学会研究報告 システムソフトウェアとオペレーティング・システム(OS),情報処理学会,2020年02月,第2020-OS-148巻, 第4号,pp. 1-6,ISSN 2188-8795
【文献】徐 宏傑 ほか,"部分積の効率的な累算によりメモリ容量を削減した畳み込み演算アクセラレータ",情報処理学会 DAシンポジウム2020論文集,情報処理学会,2020年08月,第2020巻,pp. 28-35
【文献】近藤 鯛貴 ほか,"Intel HD GraphicsにおけるResnet50の高速化",情報処理学会研究報告 ハイパフォーマンスコンピューティング(HPC),情報処理学会,2020年12月14日,第2020-HPC-177巻, 第2号,pp. 1-6,ISSN 2188-8841
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02-3/10
G06F 18/10-18/15
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークモデルを実行するためのデータ処理装置であって、
前記ニューラルネットワークモデルの畳み込み層の折り畳みフィルタを記憶するためのものとして配置される記憶回路であって、前記折り畳みフィルタは、元のフィルタに対して次元折り畳みを行うことで得られるものであり、ここで、前記次元折り畳みは、幅次元及び/又は高さ次元のデータを入力チャンネル次元に再配列することを含む記憶回路と、
入力特徴マップに対して前記次元折り畳みを行うことで、折り畳み特徴マップを得て、及び
前記折り畳みフィルタを利用して前記折り畳み特徴マップに対して畳み込み演算を実行することで、出力特徴マップを得るためのものとして配置される処理回路とを含
み、
前記元のフィルタの入力チャンネル次元サイズは、第一の閾値A1を超えず、前記折り畳みフィルタの入力チャンネル次元サイズは、第二の閾値Aciに等しく、ここで、第一の閾値A1は、第二の閾値Aciよりも小さい、ことを特徴とするデータ処理装置。
【請求項2】
前記処理回路は、
折り畳み待ち多次元データの入力チャンネル次元サイズCiと前記第二の閾値Aciに基づき、総折り畳み倍数N
totalを決定することと、
前記総折り畳み倍数N
totalを幅次元折り畳み倍数Nwと高さ次元折り畳み倍数Nhに分割することと、
Nw、Nh及び折り畳み待ち多次元データの幅次元サイズと高さ次元サイズに基づき、折り畳み後の多次元データの幅次元サイズと高さ次元サイズを決定することと、
Nw、Nh及び畳み込み演算の元の畳み込みステップ長に基づき、前記畳み込み演算の折り畳み後の畳み込みステップ長を決定することとの方式に応じて、前記次元折り畳みを実行するためのものとして配置される、請求項
1に記載のデータ処理装置。
【請求項3】
前記処理回路はさらに、
N
total=Aci/Ciaに応じて総折り畳み倍数N
totalを決定するためのものとして配置され、ここで、Ciaは、Ciが最も近いAci/2
nにアラインされる値であり、nは、自然数である、請求項
2に記載のデータ処理装置。
【請求項4】
前記処理回路はさらに、
幅次元に優先的に分割すること、
幅次元と高さ次元に平均に分割すること、
折り畳み倍数アラインによる補完量が最小となるように分割すること、又は
幅次元での畳み込みステップ長がこの幅次元の折り畳み倍数で割り切れるように分割することのうちのいずれか一つのルール又はルールの組み合わせに応じて、前記総折り畳み倍数N
totalを分割するためのものとして配置される、請求項
2又は
3に記載のデータ処理装置。
【請求項5】
前記処理回路はさらに、
k
w’= k
wa/Nw (7)
k
h’= k
ha/Nh (8)
に応じて折り畳み後の多次元データの幅次元サイズと高さ次元サイズを決定するためのものとして配置され、
ここで、k
w’、k
h’はそれぞれ折り畳み後の多次元データの幅次元サイズと高さ次元サイズであり、k
waは、折り畳み待ち多次元データの幅次元サイズk
wが最も近い幅次元折り畳み倍数Nwにアラインされる値であり、k
haは、折り畳み待ち多次元データの高さ次元サイズk
hが最も近い高さ次元折り畳み倍数Nhにアラインされる値である、請求項
2から
4のいずれか1項に記載のデータ処理装置。
【請求項6】
前記処理回路はさらに、
に応じて折り畳み後の多次元データの畳み込みステップ長を決定するためのものとして配置され、
ここで、S
x、S
yはそれぞれ畳み込み演算の元の幅次元の畳み込みステップ長と高さ次元の畳み込みステップ長であり、S
x’、S
y’はそれぞれ畳み込み演算の折り畳み後の幅次元の畳み込みステップ長と高さ次元の畳み込みステップ長である、請求項
2から
5のいずれか1項に記載のデータ処理装置。
【請求項7】
前記第二の閾値Aciは、命令アライン要求に基づいて決定されるものであり、そして前記第一の閾値A1≦Aci/2である、請求項
2から
6のいずれか1項に記載のデータ処理装置。
【請求項8】
前記処理回路はさらに、
次元再構築によって幅次元での前記次元折り畳みを実現し、及び/又は
次元転置によって高さ次元での前記次元折り畳みを実現するためのものとして配置される、請求項1から
7のいずれか1項に記載のデータ処理装置。
【請求項9】
前記元のフィルタの出力チャンネル次元サイズは、前記折り畳みフィルタの出力チャンネル次元サイズに等しい、請求項1から
8のいずれか1項に記載のデータ処理装置。
【請求項10】
前記折り畳みフィルタは、オフラインで生成されるものであるか又はオンラインで生成されるものである、請求項1から
9のいずれか1項に記載のデータ処理装置。
【請求項11】
請求項1から
10のいずれか1項に記載のデータ処理装置を含む、ことを特徴とするチップ。
【請求項12】
請求項
11に記載のチップを含む、ことを特徴とするボードカード。
【請求項13】
記憶回路と処理回路とを含むデータ処理装置によって実施されるニューラルネットワークモデルを実行するための方法であって、
前記処理回路が、入力特徴マップに対して次元折り畳みを行うことで、折り畳み特徴マップを得ることと、
前記処理回路が、前記記憶回路に記憶されている前記ニューラルネットワークモデルの畳み込み層の折り畳みフィルタを利用して前記折り畳み特徴マップに対して畳み込み演算を実行することで、出力特徴マップを得ることとを含み、
ここで、前記折り畳みフィルタは、元のフィルタに対して前記次元折り畳みを行うことで得られるものであり、そして前記次元折り畳みは、幅次元及び/又は高さ次元のデータを入力チャンネル次元に再配列することを含
み、
前記元のフィルタの入力チャンネル次元サイズは、第一の閾値A1を超えず、前記折り畳みフィルタの入力チャンネル次元サイズは、第二の閾値Aciに等しく、ここで、第一の閾値A1は、第二の閾値Aciよりも小さい、ことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、2020年12月31日に出願され、出願番号が2020116317360であり、名称が「ニューラルネットワークモデルを実行するデータ処理装置、方法及び関連製品」であり、2020年12月31日に出願され、出願番号が2020116317074であり、名称が「ニューラルネットワークモデルを実行するデータ処理装置、方法及び関連製品」であり、2020年12月31日に出願され、出願番号が2020116249556であり、名称が「ニューラルネットワークモデルを実行するデータ処理装置、方法及び関連製品」である中国特許出願の優先権を主張している。
【0002】
本開示は、一般的には、データ処理分野に関する。より具体的には、本開示は、ニューラルネットワークモデルを実行するためのデータ処理装置、データ処理方法、チップとボードカードに関する。
【背景技術】
【0003】
現在では、深層学習(Deep Learning)は、既に機械学習における重要な分岐となっており、人工知能(AI)の発展にも大いに寄与している。深層学習のコア技術であるディープニューラルネットワーク(DNN)は多くの業界において広く応用されている。
【0004】
畳み込み層は、ニューラルネットワークモデルにおける一般的な隠れ層の一つであり、それは、畳み込み演算によって入力データに対して特徴抽出を行う。ニューラルネットワークモデルには、大量の畳み込み演算が含まれ、畳み込み演算の計算性能は、ニューラルネットワークモデル全体の計算性能に極めて大きい影響を及ぼす。畳み込み演算において、畳み込み層のフィルタの各次元に対し、命令アラインの要求が存在するだけでなく、ハードウェア(例えば、並列演算器)アラインの要求も存在する。そのため、ニューラルネットワークモデルの実行の計算性能を向上させるために、畳み込み演算を最適化する必要がある。
【発明の概要】
【0005】
以上に言及された一つ又は複数の技術課題を少なくとも解決するために、本開示は、複数の態様において、ニューラルネットワークモデルを実行するためのデータ処理方案を提案し、それは、畳み込み層のフィルタに対して変換を行うことで、畳み込み演算の計算性能を効果的に向上させることができる。本開示の実施例のニューラルネットワークモデルは、様々な分野、例えば、画像処理、音声処理、テキスト処理などに応用可能であり、これらの処理は、例えば、識別と分類を含んでもよいが、それらに限らない。
【0006】
第一の態様では、本開示は、ニューラルネットワークモデルを実行するためのデータ処理装置を提供し、この装置は、前記ニューラルネットワークモデルの畳み込み層の折り畳みフィルタを記憶するためのものとして配置される記憶回路であって、前記折り畳みフィルタは、元のフィルタに対して次元折り畳みを行うことで得られるものであり、ここで、前記次元折り畳みは、幅次元及び/又は高さ次元のデータを入力チャンネル次元に再配列することを含む記憶回路と、入力特徴マップに対して前記次元折り畳みを行うことで、折り畳み特徴マップを得て、及び前記折り畳みフィルタを利用して前記折り畳み特徴マップに対して畳み込み演算を実行することで、出力特徴マップを得るためのものとして配置される処理回路とを含む。
【0007】
第二の態様では、本開示は、前記第一の態様のいずれか一つの実施例のデータ処理装置を含むチップを提供する。
【0008】
第三の態様では、本開示は、前記第二の態様のいずれか一つの実施例のチップを含むボードカードを提供する。
【0009】
第四の態様では、本開示は、記憶回路と処理回路とを含むデータ処理装置によって実施されるニューラルネットワークモデルを実行するための方法を提供し、前記方法は、前記処理回路が、入力特徴マップに対して次元折り畳みを行うことで、折り畳み特徴マップを得ることと、前記処理回路が、前記記憶回路に記憶されている前記ニューラルネットワークモデルの畳み込み層の折り畳みフィルタを利用して前記折り畳み特徴マップに対して畳み込み演算を実行することで、出力特徴マップを得ることとを含み、ここで、前記折り畳みフィルタは、元のフィルタに対して前記次元折り畳みを行うことで得られるものであり、そして前記次元折り畳みは、幅次元及び/又は高さ次元のデータを入力チャンネル次元に再配列することを含む。
【0010】
以上に提供されるデータ処理装置、チップ、ボードカード及びデータ処理装置によって実施されるデータ処理方法によって、本開示の方案は、折り畳みフィルタにより畳み込み演算を最適化する。本開示の実施例は、特に、元のフィルタの出力チャンネル次元サイズと入力チャンネル次元サイズがいずれも比較的に小さい場合に適用される。通常の畳み込み演算において、フィルタの出力チャンネル次元が比較的に小さい時、並列演算ユニット数のアラインの制限により、比較的に大きいリソース浪費を引き起こす。フィルタの入力チャンネル次元が比較的に小さい時、人工知能チップ命令セットのベクトル化アラインの制限により、比較的に多い冗長計算を引き起こす。一方では、本開示の実施例は、元のフィルタに対して第一の次元折り畳みを行うことで、畳み込みステップ長を複数回シフトした後に得られる複数の拡張フィルタを一つの折り畳みフィルタに合成することによって出力チャンネル次元を拡張することができ、それにより利用可能な並列演算ユニットを十分に利用することができる。他方では、本開示の実施例は、フィルタに対して第二の次元折り畳みを行うことで、畳み込みカーネルの幅次元及び/又は高さ次元のデータを入力チャンネル次元に折り畳んで命令アライン要求を満たすことができ、冗長計算を可能な限り減少させることができる。上記二つの方面をさらに併用してもよく、それにより演算リソースの浪費を最も効果的に回避し、ハードウェアアクセラレーション時の畳み込み演算の計算性能を向上させることができる。
【図面の簡単な説明】
【0011】
図面を参照しながら以下の詳細な記述を読むことで、本開示の例示的な実施形態の上記及び他の目的、特徴と利点は理解しやすくなる。図面において、制限的ではなく、例示的な形態で本開示のいくつかの実施形態を示しており、そして同じ又は対応する記号は、同じ又は対応する部分を表す。
【
図1】本開示の実施例のボードカードの構造図を示す。
【
図2】本開示の実施例の集積回路装置の構造図を示す。
【
図3】本開示の実施例のシングルコア計算装置の内部構造概略図を示す。
【
図4】本開示の実施例のマルチコア計算装置の内部構造概略図を示す。
【
図5】本開示の実施例のプロセッサコアの内部構造概略図を示す。
【
図6】本開示の実施例を応用できる例示的な畳み込み演算の例を示す。
【
図7】本開示の実施例の第一の次元折り畳みの例示的な原理図を示す。
【
図8】本開示の実施例によるより詳細な第一の次元折り畳みの概略図を示す。
【
図9】本開示の実施例による第一の次元折り畳み前後の計算プロセスの例示的な比較図を示す。
【
図10】本開示の実施例による次元転置の例示的な概略図を示す。
【
図11】本開示の実施例の第二の次元折り畳みの例示的な原理図を示す。
【
図12】本開示の実施例によるより詳細な第二の次元折り畳みの概略図を示す。
【
図13】本開示の実施例による畳み込みカーネルに対する折り畳み倍数補完の概略図を概略的に示す。
【
図14】本開示の実施例による畳み込みステップ長による有効倍数への影響の概略図を概略的に示す。
【
図15】本開示の実施例を実施できるデータ処理装置の概略的構造図を例示的に示す。
【
図16】本開示の実施例によるデータ処理方法の例示的なフローチャートを示す。
【発明を実施するための形態】
【0012】
以下は、本開示の実施例における図面を結び付けながら、本開示の実施例における技術案を明瞭且つ完全に記述する。明らかに、記述された実施例は、本開示の一部の実施例であり、全部の実施例ではない。本開示における実施例に基づき、当業者が創造的な労力を払わない前提で得られたすべての他の実施例は、いずれも本開示の保護範囲に属する。
【0013】
理解すべきこととして、本開示の特許請求の範囲、明細書及び図面において使用され得る用語である「第一」、「第二」と「第三」などは、異なる対象を区別するためのものであり、特定の順序を記述するためのものではない。本開示の明細書と特許請求の範囲において使用される用語である「含む」と「包含」は、記述された特徴、全体、ステップ、操作、要素及び/又はアセンブリの存在を示すが、一つ又は複数の他の特徴、全体、ステップ、操作、要素、アセンブリ及び/又はそれらの集合の存在又は追加を除外しない。
【0014】
さらに理解すべきこととして、ここで本開示の明細書において使用される用語は、特定の実施例を説明することのみを目的としており、本開示を限定することを意図するものではない。本開示の明細書と特許請求の範囲において使用されているように、文脈が他の状況を明確に示さない限り、単数形「一」、「一つ」及び「この」は複数形を含むことを意図している。またさらに理解すべきこととして、本開示の明細書と特許請求の範囲において使用される用語である「及び/又は」は、関連してリストされた項目のうちの一つ又は複数の任意の組み合わせ及びすべての可能な組み合わせを指し、そしてこれらの組み合わせを含む。
【0015】
本明細書及び特許請求の範囲において使用されているように、用語である「もし」は、文脈に応じて、「…時」又は「…すると」又は「決定に応答して」又は「検出に応答して」と解釈することができる。同様に、「決定される場合」又は「[記述された条件又はイベント]が検出される場合」というフレーズは、文脈に応じて、「決定されると」又は「決定に応答して」又は「[記述された条件又はイベント]が検出されると」又は「[記述された条件又はイベント]の検出に応答して」を意味すると解釈することができる。
【0016】
以下では、図面を結び付けながら、本開示の具体的な実施の形態を詳細に記述する。
【0017】
図1は、本開示の実施例のボードカード10の構造概略図を示す。
図1に示すように、ボードカード10は、チップ101を含み、それは、システムレベルチップ(System on Chip、SoC)であり、又はシステムオンチップと呼ばれ、一つ又は複数の組み合わせ処理装置が集積されており、組み合わせ処理装置は、人工知能演算ユニットであり、各類の深層学習と機械学習アルゴリズムをサポートし、コンピュータビジョン、音声、自然言語処理、データマイニングなどの分野の複雑なシナリオでのインテリジェント処理需要を満たすために用いられる。特に、深層学習技術のクラウドインテリジェント分野での応用が多く、クラウドインテリジェント応用の一つの顕著な特徴は、入力データ量が大きく、プラットフォームの記憶能力と計算能力に対する要求が非常に高いことであり、この実施例のボードカード10はクラウドインテリジェント応用に適しており、膨大なオフチップ記憶、オンチップ記憶と強い計算能力を有する。
【0018】
チップ101は、外部向けインターフェース装置102を介して外部機器103と接続される。外部機器103は、例えば、サーバ、コンピュータ、ウェブカメラ、ディスプレイ、マウス、キーボード、ネットワークカード又はwifiインターフェースなどである。処理すべきデータは、外部機器103によって外部向けインターフェース装置102を介してチップ101に伝達することができる。チップ101の計算結果は、外部向けインターフェース装置102を介して外部機器103に送り返すことができる。異なる応用シナリオに応じて、外部向けインターフェース装置102は、異なるインターフェース形式、例えば、PCIeインターフェースなどを有してもよい。
【0019】
ボードカード10は、データを記憶するための記憶デバイス104をさらに含み、それは、一つ又は複数の記憶ユニット105を含む。記憶デバイス104は、バスを介して制御素子106とチップ101との接続とデータ伝送を行う。ボードカード10における制御素子106は、チップ101の状態を調整制御するためのものとして配置される。このために、一つの応用シナリオにおいて、制御素子106は、マイクロコントローラーユニット(Micro Controller Unit、MCU)を含んでもよい。
【0020】
図2は、この実施例のチップ101における組み合わせ処理装置の構造図を示す。
図2に示すように、組み合わせ処理装置20は、計算装置201と、インターフェース装置202と、処理装置203と、DRAM 204とを含む。
【0021】
計算装置201は、ユーザによって指定される操作を実行するように配置され、主に、シングルコアインテリジェントプロセッサ又はマルチコアインテリジェントプロセッサとして実現され、深層学習又は機械学習の計算を実行するために用いられ、それは、インターフェース装置202を介して処理装置203とインタラクションを行い、ユーザによって指定される操作を共同で完了することができる。
【0022】
インターフェース装置202は、計算装置201と処理装置203との間で、データと制御命令を伝送するために用いられる。例えば、計算装置201は、インターフェース装置202を介して処理装置203から入力データを取得し、計算装置201のオンチップ記憶装置に書き込むことができる。さらに、計算装置201は、インターフェース装置202を介して処理装置203から制御命令を取得し、計算装置201のオンチップ制御バッファに書き込むことができる。代替的又は選択的に、インターフェース装置202は、計算装置201の記憶装置におけるデータを読み取って処理装置203に伝送してもよい。
【0023】
処理装置203は、汎用の処理装置として、基本的な制御を実行し、データの転送、計算装置201のオン及び/又はオフなどを含むが、それらに限らない。実現方式の違いによって、処理装置203は、中央プロセッサ(central processing unit、CPU)、グラフィックスプロセッサ(graphics processing unit、GPU)又は他の汎用及び/又は専用プロセッサのうちの一つ又は複数のタイプのプロセッサであってもよく、これらのプロセッサは、デジタルシグナルプロセッサ(digital signal processor、DSP)、専用集積回路(application specific integrated circuit、ASIC)、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)又は他のプログラマブル論理デバイス、ディスクリートゲート又はトランジスタ論理デバイス、ディスクリートハードウェアアセンブリなどを含むが、それらに限らない。そして、その数は、実際の需要に応じて決定されてもよい。前述したように、本開示の計算装置201のみについて、それは、シングルコア構造又はホモジニアスマルチコア構造を有するとみなされてもよい。しかしながら、計算装置201と処理装置203を整合して共同で考慮する時、両者は、ヘテロジニアスマルチコア構造を形成するとみなされる。
【0024】
DRAM 204は、処理すべきデータを記憶するためのものであり、DDRメモリであり、サイズが一般的に16G以上であり、計算装置201及び/又は処理装置203のデータを保存するために用いられる。
【0025】
図3は、計算装置201がシングルコアである場合の内部構造概略図を示す。シングルコア計算装置301は、コンピュータビジョン、音声、自然言語、データマイニングなどの入力データを処理するために用いられ、シングルコア計算装置301は、制御モジュール31、演算モジュール32及び記憶モジュール33という三つのモジュールを含む。
【0026】
制御モジュール31は、深層学習のタスクを完了するために、演算モジュール32と記憶モジュール33の作動を協調して制御するために用いられ、それは、命令フェッチユニット(instruction fetch unit、IFU)311と、命令復号化ユニット(instruction decode unit、IDU)312とを含む。命令フェッチユニット311は、処理装置203からの命令を取得するために用いられ、命令復号化ユニット312は、取得した命令を復号化し、復号化結果を制御情報として演算モジュール32と記憶モジュール33に送信する。
【0027】
演算モジュール32は、ベクトル演算ユニット321と、行列演算ユニット322とを含む。ベクトル演算ユニット321は、ベクトル演算を実行するために用いられ、ベクトルの乗算、加算、非線形変換などの複雑な演算をサポートすることができ、行列演算ユニット322は、深層学習アルゴリズムのコア計算、即ち行列乗算及び畳み込みを担う。
【0028】
記憶モジュール33は、関連データを記憶又は転送するために用いられ、ニューロン記憶ユニット(neuron RAM、NRAM)331と、パラメータ記憶ユニット(weight RAM、WRAM)332と、ダイレクトメモリアクセスモジュール(direct memory access、DMA)333とを含む。NRAM 331は、入力ニューロン、出力ニューロンと計算後の中間結果を記憶するために用いられ、WRAM 332は、深層学習ネットワークの畳み込みカーネル、即ち、重み値を記憶するために用いられ、DMA 333は、バス34を介してDRAM 204に接続され、シングルコア計算装置301とDRAM 204との間のデータ転送を担う。
【0029】
図4は、計算装置201がマルチコアである場合の内部構造概略図を示す。マルチコア計算装置41は、階層化構造設計を採用し、コア計算装置41は、一つのシステムオンチップとして、少なくとも一つのクラスタ(cluster)を含み、各クラスタはさらに、複数のプロセッサコアを含み、換言すれば、マルチコア計算装置41は、システムオンチップ-クラスタ-プロセッサコアの階層で構成される。
【0030】
システムオンチップの階層から見れば、
図4に示すように、マルチコア計算装置41は、外部記憶コントローラ401、外付け通信モジュール402、オンチップインターコネクトモジュール403、同期モジュール404及び複数のクラスタ405を含む。
【0031】
外部記憶コントローラ401は、複数であってもよく、図面において2つが例示的に示されており、それは、プロセッサコアから発信されるアクセス要求に応答し、外部記憶機器、例えば
図2におけるDRAM 204にアクセスすることによって、オフチップからデータを読み取るか又はデータを書き込むために用いられる。外付け通信モジュール402は、インターフェース装置202によって処理装置203からの制御信号を受信し、計算装置201を起動してタスクを実行するために用いられる。オンチップインターコネクトモジュール403は、外部記憶コントローラ401、外付け通信モジュール402及び複数のクラスタ405を接続し、各モジュールの間でデータと制御信号を伝送するために用いられる。同期モジュール404は、グローバル同期バリアコントローラ(global barrier controller、GBC)であり、各クラスタの作動進度を協調し、情報の同期を確保するために用いられる。複数のクラスタ405は、マルチコア計算装置41の計算コアであり、図面において4つが例示的に示されており、ハードウェアの発展に伴い、本開示のマルチコア計算装置41は、8個、16個、64個、ひいてはより多くのクラスタ405をさらに含んでもよい。クラスタ405は、深層学習アルゴリズムを効率的に実行するために用いられる。
【0032】
クラスタの階層から見れば、
図4に示すように、各クラスタ405は、複数のプロセッサコア(IPU core)406及び一つの記憶コア(MEM core)407を含む。
【0033】
プロセッサコア406は、図面において4つが例示的に示されており、本開示は、プロセッサコア406の数を制限しない。その内部アーキテクチャは、
図5に示すとおりである。各プロセッサコア406は、
図3のシングルコア計算装置301に類似しており、同様に、制御モジュール51、演算モジュール52及び記憶モジュール53という三つのモジュールを含む。制御モジュール51、演算モジュール52及び記憶モジュール53の効用及び構造は、制御モジュール31、演算モジュール32及び記憶モジュール33とほぼ同じであり、これ以上説明しない。特に説明すべきこととして、記憶モジュール53は、入力/出力ダイレクトメモリアクセスモジュール(input/output direct memory access、IODMA)533と、転送ダイレクトメモリアクセスモジュール(move direct memory access、MVDMA)534とを含む。IODMA 533は、ブロードキャストバス409によってNRAM 531/WRAM 532とDRAM 204とのメモリアクセスを制御し、MVDMA 534は、NRAM 531/WRAM 532と記憶ユニット(SRAM)408とのメモリアクセスを制御するために用いられる。
【0034】
図4に戻り、記憶コア407は、主に、記憶と通信、即ち、プロセッサコア406間の共有データ又は中間結果の記憶、及びクラスタ405とDRAM 204との間の通信、クラスタ405間の相互通信、プロセッサコア406間の相互通信の実行などに用いられる。他の実施例では、記憶コア407は、スカラー演算の能力を有し、スカラー演算を実行するために用いられる。
【0035】
記憶コア407は、SRAM 408と、ブロードキャストバス409、クラスタダイレクトメモリアクセスモジュール(cluster direct memory access、CDMA)410と、グローバルダイレクトメモリアクセスモジュール(global direct memory access、GDMA)411とを含む。SRAM 408は、高性能データ中継局の役割を果たし、同一のクラスタ405内に異なるプロセッサコア406の間で多重化されるデータがプロセッサコア406によってそれぞれDRAM 204から得られる必要がなく、SRAM 408によってプロセッサコア406間で中継され、記憶コア407は、多重化されるデータをSRAM 408から複数のプロセッサコア406に迅速に配信すればよく、それによりコア間の通信効率を向上させ、オンチップオフチップの入力/出力アクセスを大いに減少させる。
【0036】
ブロードキャストバス409、CDMA 410及びGDMA 411はそれぞれプロセッサコア406間の通信、クラスタ405間の通信及びクラスタ405とDRAM 204とのデータ伝送を実行するために用いられる。以下ではそれぞれ説明する。
【0037】
ブロードキャストバス409は、クラスタ405内の各プロセッサコア406間の高速通信を完了するために用いられ、この実施例のブロードキャストバス409によってサポートされるコア間通信方式は、ユニキャスト、マルチキャストとブロードキャストを含む。ユニキャストは、ポイントツーポイント(例えば、単一のプロセッサコアから単一のプロセッサコアへ)のデータ伝送を指し、マルチキャストは、データをSRAM 408から特定のいくつかのプロセッサコア406に伝送する通信方式であるが、ブロードキャストは、データをSRAM 408から全てのプロセッサコア406に伝送する通信方式であり、マルチキャストの一つの特例に属する。
【0038】
CDMA 410は、同一の計算装置201内の異なるクラスタ405間のSRAM 408のメモリアクセスを制御するために用いられる。
【0039】
GDMA 411は、外部記憶コントローラ401と協同し、クラスタ405のSRAM 408からDRAM 204へのメモリアクセスを制御し、又はデータをDRAM 204からSRAM 408に読み取るために用いられる。前述から分かるように、DRAM 204とNRAM 431又はWRAM 432との間の通信は、2つのルートを経由して実現されてもよい。一番目のルートは、IODAM 433によってDRAM 204とNRAM 431又はWRAM 432を直接に関連付けることであり、二番目のルートは、まずGDMA 411を経由してデータをDRAM 204とSRAM 408との間で伝送させ、さらにMVDMA 534によってデータをSRAM 408とNRAM 431又はWRAM 432との間で伝送させることである。一見すると、二番目のルートは、より多くの素子が関与することを必要とし、データストリームが比較的に長いが、実際に一部の実施例では、二番目のルートの帯域幅が一番目のルートよりもはるかに大きいため、DRAM 204とNRAM 431又はWRAM 432との間の通信は、二番目のルートによればより効率的である。本開示の実施例は、自体のハードウェア条件に基づいてデータ伝送ルートを選択してもよい。
【0040】
他の実施例では、GDMA 411の機能とIODMA 533の機能は、同一の部品に整合されてもよい。本開示では、記述の便宜上、GDMA 411とIODMA 533を異なる部品とみなし、当業者にとって、実現される機能及び達成する技術効果が本開示と類似すれば、本開示の保護範囲に属する。さらに、GDMA 411の機能、IODMA 533の機能、CDMA 410の機能、MVDMA 534の機能は、同一の部品によって実現されてもよい。
【0041】
ニューラルネットワークモデルは、一般的には、入力層、畳み込み層、活性化関数、プーリング層、全結合層などを含み、少なければ数層を有し、多い場合には百層を有し、層ごとに一つの演算子を実行し、例えば、畳み込み層は、畳み込み演算子を実行し、何層あれば何個の演算子を実行する必要がある。
【0042】
ニューラルネットワークモデルの訓練は、ニューラルネットワークモデルによって計算される結果が、実際の結果に可能な限り近くなるように、入力訓練サンプルによって各層のパラメータを調整することである。ニューラルネットワークモデルの訓練は、フォーワードプロパゲーションとバックワードプロパゲーションとを含み、フォーワードプロパゲーションは、従来のモデルに基づき、入力訓練サンプルをニューラルネットワークモデルの各層により計算し、入力される特徴マップを抽象特徴として逐次的に抽出することであり、バックワードプロパゲーションは、フォーワードプロパゲーション結果と実際の値に基づいて計算される損失関数に基づき、勾配降下法を採用して、チェーン法則によって各パラメータに対する損失関数の偏微分関数を計算し、パラメータを更新することである。さらに、更新されたパラメータを利用して訓練を行い、このように複数回繰り返し、最終的にフォーワードプロパゲーションの計算結果を期待通りにする。訓練されたニューラルネットワークモデルを使用して実際の環境の入力に対してフォーワード演算を行い、設定タスクを完了することは、ニューラルネットワークモデルの推理と呼ばれる。
【0043】
本開示の実施例は、前述したハードウェア環境に基づき、ニューラルネットワークモデルを実行するためのデータ処理方案を提供し、より具体的には、ニューラルネットワークモデルにおける畳み込み演算を最適化する方案を提供する。
【0044】
図6は、本開示の実施例を応用できる例示的な畳み込み演算の例を示す。図示されるように、ニューラルネットワークモデルにおける畳み込み層は、入力特徴マップに対してフィルタを応用して畳み込み処理を行うことによって、特徴抽出を行うことができる。
【0045】
図面においてサイズが6×6×3である入力特徴マップが例示的に示されており、それは、3つのサイズ6×6の特徴マップ(即ち、6×6×3の三次元行列)を表すことができ、それぞれ三つの異なる特徴を表す。この例では、特徴マップの幅Wは6であり、高さHも6である。入力特徴マップの数は、入力チャンネル数Ciと呼ばれてもよい。例えば、図面における例では、3つの特徴マップが入力されており、3つの特徴チャンネルとも呼ばれる。
【0046】
図面においてサイズが2×3×3×3であるフィルタがさらに例示的に示されており、それは、2つのサイズ3×3×3の畳み込みカーネル(即ち、2つの3×3×3の三次元行列)を表すことができ、各畳み込みカーネルはまた、3つの異なるサイズ3×3の畳み込みカーネルを有し、入力される3つの異なる特徴マップに対応する。立体畳み込みカーネルの数は出力チャンネル数Coと呼ばれてもよく、この例では2である。各立体畳み込みカーネルにおいて、二次元畳み込みカーネルの数は、入力チャンネル数Ciと呼ばれてもよく、それは、入力特徴マップのチャンネル数と一致する。各二次元畳み込みカーネルは、該当する幅Kwと高さKhを有し、この例では、KwとKhはいずれも3である。
【0047】
入力特徴マップとフィルタの畳み込み結果は、2つのサイズ4×4の特徴マップを出力する。ここで、入力特徴マップと上方の立体畳み込みカーネルの畳み込み結果により上方の1つの4×4の出力特徴マップを得て、入力特徴マップと下方の立体畳み込みカーネルの畳み込み結果により下方の1つの4×4の出力特徴マップを得る。出力特徴マップにおける各位置での値は、各入力特徴マップの対応するブロックと対応する畳み込みカーネルに対して二次元畳み込み演算を行った後に加算を行うことで得られる。例えば、図面において、上方の出力特徴マップにおける(0,0)位置の値について、入力特徴マップにおける黒色立方体で囲まれたブロックと上方の立体畳み込みカーネルに対して二次元畳み込み演算を行うことで3つの値を得て、さらに加算を行うことで最終値を得ることを示している。他の位置の出力を得るために、入力特徴マップ上で畳み込みカーネルの位置を移動してもよい。図面における例では、畳み込みステップ長(Sx,Sy)は(1,1)であり、横方向(幅方向)を右に、又は縦方向(高さ方向)を下に1マス移動した後に畳み込み演算を行うと、それぞれ上方の出力特徴マップにおける(0,1)又は(1,0)位置の値を得ることができる。
【0048】
以上の記述から分かるように、ニューラルネットワークの一つの畳み込み層において、計H×W×Ci個の情報を含む一組の入力特徴マップがあり、ここで、HとWはそれぞれ入力特徴マップの高さと幅であり、Ciは、入力特徴マップの数であり、入力チャンネル数とも呼ばれる。畳み込み層は、Ci×Co個のサイズKh×Kwの畳み込みカーネルを有し、ここで、Ciは、入力チャンネル数であり、Coは、出力特徴マップの数(又は出力チャンネル数)であり、KhとKwはそれぞれ畳み込みカーネルの高さと幅である。出力特徴マップは、Ho×Wo×Co個の情報を含み、ここで、HoとWoはそれぞれ出力特徴マップの高さと幅であり、Coは、出力チャンネル数である。なお、畳み込み演算において、畳み込みステップ長(Sx,Sy)にも関わり、畳み込みステップ長の大きさは、出力特徴マップのサイズに影響を及ぼす。
【0049】
本開示の実施例では、関わる多次元データの次元は、(N,H,W,C)又は(Co,H,W,Ci)で表され、それは、メモリにおけるデータの記憶順番を代表する。理解できるように、多次元データが複数の次元を有するが、メモリのレイアウトが常に一次元のものであるため、多次元データとメモリにおける記憶順番との間に対応関係が存在する。多次元データは、一般的には、連続する記憶スペースに割り当てられ、即ち、多次元データに対して一次元展開を行い、順番に応じてメモリに記憶することができる。例えば、本開示の実施例では、低次元(ここで、Ciは、最低次元である)が優先的であるという方式で、順次記憶を行う。隣接する次元は、多次元データの次元情報表現において互いに隣りあう次元を指し、例えば、WとCiは隣接し、隣接する次元は、連続する次元と呼ばれてもよい。
【0050】
ニューラルネットワークモデルの計算を速くするために、一般的には複数の演算ユニットを採用して並行演算を行う。例えば、
図3における演算モジュール32又は
図5における演算モジュール52は、複数の畳み込み専用計算ユニット(又は畳み込みユニットと呼ばれる)を含んでもよく、各畳み込みユニットで例えば完全な(H,W,Ci)次元の計算を行うことができる。換言すれば、Co個の(H,W,Ci)次元の計算をCo個の畳み込みユニットに分布して並行計算を行うことによって、計算速度を向上させることができる。一般的には、畳み込みユニットの数は、決まったものであり、Co次元のサイズが比較的に小さいと、アイドル畳み込みユニットが存在し、計算リソースを十分に利用できない。いくつかの場合には、統一的にスケジューリングを行うことを容易にするために、Co次元のサイズを畳み込みユニットの数にアラインすることを要求する可能性がある。しかしながら、Co次元が比較的に小さい時、このようなアライン制限は、無効計算を導入し、大量のリソース浪費を引き起こす。
【0051】
他方では、メモリアクセス速度を向上させ、メモリアクセス帯域幅を十分に利用するために、人工知能チップ命令セットは、一般的には、ベクトル化アラインを行う必要がある。人工知能チップの設計は、一般的には、Ci次元を最低次元とし、即ち、上記NHWC放置順番に従う。そのため、命令のアライン要求は、Ci次元のサイズが、指定数値、例えば、命令アライン値Aciにアラインされることを必要とし、それにより、この命令アライン値Aciを単位として数のアクセスを行う。しかしながら、Ci次元が比較的に小さい時、このようなアライン制限は、大量の冗長計算を引き起こし、リソース浪費を引き起こす。
【0052】
これに鑑み、本開示の実施例は、前述したハードウェア環境に基づき、ニューラルネットワークモデルを実行するためのデータ処理方案を提供する。第一の態様では、本開示の実施例は、第一の次元折り畳み方案を提供し、それは、畳み込み層におけるCo次元に対して最適化を行い、上記ハードウェアアライン制限を満たすことができるとともに、リソース浪費を低減させる。第二の態様では、本開示の実施例は、第二の次元折り畳み方案を提供し、それは、畳み込み層におけるCi次元に対して最適化を行い、上記命令アライン制限を満たすことができるとともに、リソース浪費を低減させる。上記の二つの態様は単独で実施されてもよく、組み合わせられて実施されてもよい。組み合わせられて実施される場合、上記二つの態様は、互いに補完することができ、それにより計算性能の最適化を最大限実現することができる。以下では、これらの二つの態様をそれぞれ説明する。
【0053】
図7は、一つの具体的な例により本開示の実施例の第一の次元折り畳み方案の例示的な原理図を示す。畳み込み演算を実行するための畳み込みユニットの数がAcoであるとする。異なるハードウェア設計によれば、Acoは、異なる数値、例えば、32、64、128などであってもよい。以下の例では、Aco=64を例として説明する。ハードウェアのアライン要求によれば、フィルタのCo次元をAcoにアラインし、即ち64にアラインする必要がある。
【0054】
図面において、左側に畳み込み層の元のフィルタが示されているが、それは、例えば4×3×3×4で表され、即ち、その出力チャンネル数Coは4であり、入力チャンネル数Ciは4であり、各畳み込みカーネルサイズは3×3である。なお、元のフィルタの畳み込みステップ長は、(Sx,Sy)=(1,1)である。図面から分かるように、元のフィルタのCo次元は、ハードウェアのアライン要求(64)よりもはるかに小さい。通常の処理方式に応じて、64にアラインするためにCo次元をゼロパディングする。4から64にアラインするために、非常に多い冗長計算を追加する必要があり、リソースの浪費を引き起こす。
【0055】
図面において、右側に本開示の実施例による折り畳み後の第一の折り畳みフィルタが示されており、それは、例えば64×6×6×4で表され、即ち、その出力チャンネル数Co’は64であり、入力チャンネル数は元のフィルタと同じであり、依然として4であり、各畳み込みカーネルサイズは6×6である。なお、第一の折り畳みフィルタの畳み込みステップ長は、(Sx’,Sy’)=(4,4)に変わる。これから分かるように、第一の折り畳みフィルタの出力チャンネル数は、すでにハードウェアのアライン要求(64)にアラインしているため、この時、畳み込みユニットを十分に利用して演算処理を行うことができる。
【0056】
上記第一の次元折り畳み処理において、第一の折り畳みフィルタは、元のフィルタに対して畳み込みステップ長を複数回シフトした後に得られる複数の拡張フィルタを合成したものである。上記第一の次元折り畳み処理は、以下の考慮に基づくものである。元の計算方式に従うと、単回の計算がいくつかの畳み込みユニットを浪費するため、次回の計算、次々回の計算などを単回の計算に移してもよく、それにより畳み込みユニットを十分に利用することができる。他の点から見れば、本開示の実施例の第一の次元折り畳み方案は、複数回の畳み込みステップ長シフトに対応する計算(又は、複数の時間上の計算)を一回の畳み込みステップ長(又は一つの時間)に折り畳むことに相当する。
【0057】
二次元畳み込みにおいて、畳み込みステップ長は、畳み込みカーネル幅方向での横方向畳み込みステップ長Sxと、畳み込みカーネル高さ方向での縦方向畳み込みステップ長Syとを含む。いずれか一つの方向において畳み込みステップ長を一回シフトすることで、一回の計算を得ることができ、この一回の計算は、一つのフィルタに対応する。このフィルタは、元のフィルタに対して畳み込みステップ長を一回シフトすることで得られるものであり、その後に他の類似して生成されるフィルタと合成されるために、その畳み込みカーネルの幅と高さは、畳み込みステップ長に基づいて相応に拡張される必要があり、ここで拡張フィルタと呼ばれる。
【0058】
元のフィルタに対して畳み込みカーネル幅方向において横方向畳み込みステップ長をNw1-1回シフトし、畳み込みカーネル高さ方向において縦方向畳み込みステップ長をNh1-1回シフトするとすると、Ntotal1個の拡張フィルタを得ることができ、ここで、Ntotal1=Nw1×Nh1であり、Nw1とNh1は、自然数である。これらNtotal1個の拡張フィルタは、出力チャンネルCo次元で一つの折り畳みフィルタに合成されることができ、ここで第一の折り畳みフィルタと呼ばれる。
【0059】
依然として
図7における例を例にし、元のフィルタのCoは4であり、ハードウェアアライン要求に基づいて、64にアラインされる必要があり、そのため、一つの第一の折り畳みフィルタを合成するために64÷4=16個の拡張フィルタを必要とする。
【0060】
図8は、本開示の実施例によるより詳細な第一の次元折り畳みの概略図を示す。図面において前述した例に必要な16個の拡張フィルタが示されている。図面における濃色部分は、元のフィルタの畳み込みカーネルを示している。図面から分かるように、これら16個の拡張フィルタは、幅方向においてSxを3回シフトし、高さ方向においてSyを3回シフトすることで得られたものである。即ち、幅方向において4倍となり、高さ方向においても4倍となり、これにより、計16個の拡張フィルタを得る。
【0061】
これら16個の拡張フィルタを出力チャンネルCo次元において一つの第一の折り畳みフィルタに合成するために、それらの形状を調整する必要がある。図示されるように、元のフィルタが占有する濃色部分以外の領域に対してゼロパディングを行ってもよく、それにより16個の拡張フィルタの幅と高さを一致させる。各拡張フィルタ(6×6の畳み込みカーネル)による畳み込み計算の値は、元のフィルタ(3×3の畳み込みカーネル)による畳み込み計算の値と同じである。
【0062】
次に、上記16個の(4,6,6,4)の拡張フィルタを出力チャンネルCo次元において一つの(16*4,6,6,4)の第一の折り畳みフィルタに折り畳むことができる。この時、第一の折り畳みフィルタの出力チャンネルCo’=16*4=64であり、即ち、畳み込みユニットの数に等しく、それによりハードウェアアライン要求に合致し、畳み込みユニットを十分に利用するという目的を実現できる。
【0063】
図8の折り畳みプロセスから分かるように、第一の折り畳みフィルタの出力チャンネル数が、元のフィルタの出力チャンネル数に対して数倍増加するため、本開示の実施例の折り畳み方案は特に、元のフィルタの出力チャンネル数Coが比較的に小さい場合に適し、例えば、Coは、第一の閾値A1を超えず、第一の閾値A1は、第二の閾値Aco(即ち、ハードウェアアライン要求)よりも小さい。いくつかの実施例では、第一の閾値A1≦Aco/2である。実践結果によれば、Coが小さいほど、従来のアルゴリズムに比べて、潜在力が大きくなることが明らかになる。
【0064】
図8の折り畳みプロセスからさらに分かるように、元のフィルタの各パラメータ及びハードウェアアライン要求に基づき、第一の折り畳みフィルタの各パラメータを決定することができる。
【0065】
まず、元のフィルタの出力チャンネル数Coとハードウェアアライン要求Acoに基づき、第一の総折り畳み倍数Ntotal1を決定することができる。
【0066】
いくつかの実施例では、以下に応じて総折り畳み倍数Nを決定してもよく、
Ntotal1=Aco/Coa (1-1)
ここで、Coaは、Coが最も近いAco/2nにアラインされる値であり、nは、自然数である。
【0067】
前述したように、本開示の実施例は、数倍の折り畳みにより、Coを指定数値Acoにアラインする。AcoがCoの2n倍である場合、両者を直接に除算することで、折り畳みの総倍数を得ることができる。例えば、前述した例において、Co=4であるため、Ntotal1=64/4=16倍である。AcoがCoの2n倍ではない場合、まず、Coを最も近いAco/2nの値にアラインする必要がある。例えば、Acoが64であれば、Aco/2nは、32、16、8、4と2を含み、Coは、これらの数値のうちの最も近い値にアラインされる必要がある。例えば、Co=3であれば、4にアラインする必要があり、Co=5であれば、8にアラインする必要があるなど。アラインした後に、Acoを除去することで、第一の総折り畳み倍数Ntotal1を得ることができる。
【0068】
次に、第一の総折り畳み倍数Ntotal1を決定した後に、それを畳み込みカーネル幅方向での第一の幅次元折り畳み倍数Nw1と畳み込みカーネル高さ方向での第一の高さ次元折り畳み倍数Nh1に分割することができる。異なる優位性を実現するために、様々な異なるルールに応じて倍数分割を行ってもよい。
【0069】
一つの実施例では、折り畳み倍数を畳み込みカーネル幅方向に優先的に分割してもよい。その後に説明されるように、第一の次元折り畳みを行った後のフィルタを利用して畳み込み演算を行うことで得られるものは、中間結果であり、最終結果を得るために、それに対して次元逆折り畳み又は次元再配列を行う必要もある。第一の次元折り畳みが畳み込みカーネル幅方向に発生した時、次元再配列は非常に簡単であり、中間結果の次元表現の調整をのみ必要とし、又は次元再構築と呼び、いかなる他の処理を必要としない。そのため、折り畳み倍数を畳み込みカーネル幅方向に優先的に分割することで、後続の処理を簡略化することができる。例えば、上記例において、第一の総折り畳み倍数16は、幅16倍と高さ1倍に分割してもよく、それにより後続の結果処理を簡略化することができる。この時、第一の折り畳みフィルタの畳み込みカーネルサイズは、3×18である。別の実現では、上記例における第一の総折り畳み倍数16を幅8倍と高さ2倍に分割し、この時、第一の折り畳みフィルタの畳み込みカーネルサイズは、4×10である。これから分かるように、異なる分割方式は、第一の折り畳みフィルタの畳み込みカーネルサイズに影響を及ぼす。
【0070】
別の実施例では、折り畳み倍数を畳み込みステップ長がより小さい方向に優先的に分割してもよい。以上の折り畳みプロセスから分かるように、第一の折り畳みフィルタの畳み込みカーネルサイズは、元のフィルタの畳み込みステップ長に関わり、畳み込みステップ長が大きいほど、第一の折り畳みフィルタの畳み込みカーネルの膨張が大きくなる。そのため、折り畳み倍数を畳み込みステップ長がより小さい方向に優先的に分割することで、畳み込みカーネルの膨張の減少に有利であり、それにより演算量を低減させる。例を挙げると、元のフィルタの畳み込みカーネルが3×3であり、(Sx,Sy)=(1,3)であり、第一の総折り畳み倍数16が幅16倍と高さ1倍に分割され得るとすると、第一の折り畳みフィルタの畳み込みカーネルサイズは、3×18である。第一の総折り畳み倍数16が幅8倍と高さ2倍に分割されると、この時、第一の折り畳みフィルタの畳み込みカーネルサイズは、6×10である。第一の総折り畳み倍数16が幅4倍と高さ4倍に分割されると、第一の折り畳みフィルタの畳み込みカーネルサイズは、12×6である。
【0071】
また一つの実施例では、折り畳み倍数を畳み込みカーネル幅方向と畳み込みカーネル高さ方向に平均に分割してもよい。例えば、以上の、
図7と
図8を参照した例において、第一の総折り畳み倍数16を幅4倍と高さ4倍に平均に分割する。
【0072】
さらなる一つの実施例では、第一の折り畳みフィルタの畳み込みカーネルサイズが最小になるように折り畳み倍数を分割してもよく、それにより追加した冗長計算を最大限減少することができる。
【0073】
上記様々なルールに基づき、いくつかの実施例では、以下の方式に応じて第一の総折り畳み倍数Ntotal1を分割してもよい。
【0074】
【0075】
畳み込みカーネル幅方向での第一の幅次元折り畳み倍数Nw1と高さ方向での第一の高さ次元折り畳み倍数Nh1を決定した後に、Nw1、Nh1及び元のフィルタの畳み込みステップ長に基づき、第一の折り畳みフィルタの畳み込みステップ長を決定し、そしてNw1、Nh1及び元のフィルタの畳み込みカーネルと畳み込みステップ長に基づき、第一の折り畳みフィルタの畳み込みカーネルサイズを決定することができる。
【0076】
いくつかの実施例では、以下に応じて折り畳みフィルタの畳み込みステップ長を決定してもよく、
【0077】
いくつかの実施例では、以下に応じて第一の折り畳みフィルタの畳み込みカーネルサイズを決定してもよく、
【0078】
これにより、以上では、どのようにハードウェアアライン要求に応じて第一の折り畳みフィルタの各パラメータを設計するかを説明した。
【0079】
図9は、本開示の実施例による第一の次元折り畳み前後の計算プロセスの例示的な比較図を示す。
【0080】
以上の第一の次元折り畳みプロセスから分かるように、第一の折り畳みフィルタの入力チャンネル次元が元のフィルタの入力チャンネル次元と一致するため、入力特徴マップに対して何ら処理を行う必要もなく、第一の折り畳みフィルタと直接に畳み込み演算を行うことができる。
【0081】
図示されるように、入力特徴マップが(1,16,16,4)であり、即ち、4個の16×16の特徴マップであるとする。図面において、上方に、元のフィルタ(4,3,3,4)、畳み込みステップ長(Sx,Sy)=(1,1)を採用して畳み込み演算を行った後に得られる結果が示されており、出力特徴マップは、(1,14,14,4)であり、即ち、4個の14×14の特徴マップであり、図面において濃色ブロックで表される領域である。当業者であれば理解できるように、図示の明確化のために、Ci次元でのデータは示されておらず、数値によってのみ示されている。
【0082】
これに対し、図面において、下方に、第一の折り畳みフィルタ(64,6,6,4)、畳み込みステップ長(Sx’,Sy’)=(4,4)を採用して畳み込み演算を行った後に得られた結果が示されており、出力特徴マップは、(1,4,4,64)であり、即ち、64個の4×4の特徴マップである。
【0083】
図面における比較から分かるように、各拡張フィルタ(6×6の畳み込みカーネル)による畳み込み計算の値と元のフィルタ(3×3の畳み込みカーネル)による畳み込み計算の値が同じであるが、複数回の畳み込みステップ長演算を一回にするため、データ値の位置は変わり、あるいは、データ値は次元において再配列される。第一の折り畳みフィルタが入力特徴マップに対して畳み込み演算を実行することで得られる中間結果を再び次元再配列し、即ち次元逆折り畳みすることで、最終的な出力特徴マップを得てもよく、それにより元のフィルタの演算結果と完全に一致する。中間結果の次元は例えば(N,ceil(Ho/Nh1),ceil(Wo/Nw1),Nh1*Nw1*Coa)で表されてもよく、ここで、ceil()は、切り上げ関数を表し、Coaは、Coが最も近いAco/2nにアラインされる値である。例えば、図面における例について、Coa=Co=4であり、Nh1=Nw1=4であり、ceil(Ho/Nh1)=ceil(14/4)=4であり、ceil(Wo/Nw1)=ceil(14/4)=4である。フィルタの第一の次元折り畳みにより畳み込みカーネルの膨張と畳み込みステップ長の増大を引き起こし、そして入力特徴マップのサイズによって決まるため、折り畳み後の畳み込み演算においていくつかの冗長計算が存在する可能性がある。中間結果を次元再配列した後に、これらの冗長計算は、実際に必要な結果の最外側、具体的には最右側と最下側に現れる。例えば、図面における例について、中間結果(1,4,4,64)を次元再配列した後に、(1,16,16,4)を得ることができ、それは、元の結果(1,14,14,4)に比べていくつかの冗長領域、例えば図面における逆「L」字状の白いブロック領域で表される領域を多く有する。この時、これらの冗長領域を除去すればよい。
【0084】
以上の説明から分かるように、第一の次元折り畳みは、畳み込みカーネルの幅方向及び/又は高さ方向に分布してもよい。異なる方向での折り畳みが、異なる次元再配列結果を及ぼすため、異なる処理方式を必要とする。以下の説明において、簡潔化のために、表現の点では、上記の冗長領域を考慮していない。しかしながら、当業者であれば本明細書の説明に基づいて理解できるように、冗長領域が存在する場合についても、以下の説明を参照して次元再配列を行った後に冗長除去を行えばよい。
【0085】
一つの実施例では、第一の次元折り畳みの時に畳み込みカーネル幅W方向での折り畳みのみを行う場合、即ち、拡張フィルタが、元のフィルタが畳み込みカーネル幅W方向でシフトすることで得られる拡張フィルタのみを含む場合、中間結果に対して直接に次元再構築を行うことで、出力特徴マップを得ることができる。
【0086】
以上に言及した本開示の実施例では、関わる多次元データの次元は、(Co,H,W,Ci)で表され、即ち、メモリにおけるデータの記憶順番は、Co、H、W、Ciであり、即ち、Ci次元を最低次元とする。当業者であればさらに理解できるように、多次元データにおける隣接する次元の分割と統合は、この多次元データの各データ要素のメモリにおける位置に影響を及ぼさない。
【0087】
本開示の実施例では、畳み込み演算の特性に基づき、WとCi次元が、隣接する次元又は連続する次元であるため、W方向の折り畳みのみが行われていれば、この時、中間結果(N,Ho,Wo/Nw,Nw*Co)を直接に(N,Ho,Wo,Co)とみなしてもよい。即ち、WとCi次元を(Wo/Nw,Nw*Co)から(Wo,Co)に再構築してもよい。このような再構築は、中間結果の各データ要素のメモリにおける記憶位置に影響を及ぼさない。
【0088】
別の実施例では、第一の次元折り畳みの時に畳み込みカーネル高さH方向での折り畳みのみを行う場合、即ち、拡張フィルタが、元のフィルタが畳み込みカーネル高さH方向でシフトすることで得られる拡張フィルタのみを含む場合、出力特徴マップを得るために、中間結果に対して次元転置を行う必要がある。次元転置は、多次元データの各データ要素のメモリにおける位置を変える。
【0089】
具体的には、中間結果(N,Ho/Nh,Wo,Nh*Co)のCo次元での(Co,(Nh-1)*Co]の特徴をH次元に転置することによって、(N,Ho,Wo,Co)を得ることができる。
【0090】
図10は、本開示の実施例による次元転置の例示的な概略図を示す。
【0091】
図10に示すように、Nh1=4であり、即ち、左側の中間結果は、Co次元で、それぞれCo0、Co1、Co2とCo3である4倍のH方向における特徴を含むとする。この時、Co次元でCo0特徴を保持し、残りのCo1、Co2とCo3特徴を次元転置によってH次元に移し、これは、右側の最終結果に示すとおりである。
【0092】
また一つの実施例では、第一の次元折り畳みの時に畳み込みカーネル幅W方向と高さH方向での折り畳みを同時に行う場合、即ち、拡張フィルタが、元のフィルタが畳み込みカーネル幅方向でシフトすることで得られる拡張フィルタを含むだけでなく、元のフィルタが畳み込みカーネル高さ方向でシフトすることで得られる拡張フィルタも含む場合、前述した二つの実施例を組み合わせて中間結果を処理してもよい。
【0093】
一つの実現では、出力特徴マップを得るために、まず、中間結果に対して次元再構築を行い、さらに次元転置を行ってもよい。具体的には、まず、中間結果(N,Ho/Nh,Wo/Nw,Nh*Nw*Co)を(N,Ho/Nh,Wo,Nh*Co)とみなし、即ち、Co次元でのW方向から折り畳まれる特徴をW方向での特徴とみなしてもよい。次に、それに対して次元転置操作を行い、Co次元での(Co,(Nh-1)*Co]特徴を高さH次元に転置することによって、(N,Ho,Wo,Co)を得る。
【0094】
別の実現では、出力特徴マップを得るために、まず、中間結果に対して次元転置を行い、さらに次元再構築を行ってもよい。
【0095】
具体的には、まず、中間結果(N,Ho/Nh,Wo/Nw,Nh*Nw*Co)に対して次元転置操作を行ってもよい。例えば、依然として
図10を参照すると、まず、Co次元でのCo1、Co2とCo3を次元転置によってH次元に移すが、ここで、Co0=Co1=Co2=Co3=Nw*Coである。次元転置後に、中間結果は、(N,Ho,Wo/Nw,Nw*Co)に変わる。そして、さらに各Co0、Co1、Co2とCo3をNw個のCoとみなすことによって、(N,Ho,Wo,Co)を得る。
【0096】
以上では、本開示の実施例による第一の次元折り畳みによってフィルタを調整する方案を説明した。いくつかの実施例では、この第一の折り畳みフィルタは、オフラインで生成されてもよい。例えば、ニューラルネットワークモデルを利用して推理を行うプロセスにおいて、推理プロセスを行うために、予め配置される、オフラインで生成される第一の折り畳みフィルタと入力特徴マップを利用して畳み込み演算を行ってもよい。別のいくつかの実施例では、この第一の折り畳みフィルタは、オンラインで生成されてもよい。例えば、ニューラルネットワークモデルに対して訓練を行うプロセスにおいて、訓練プロセスを行うために、オンラインで畳み込み層のフィルタに対して折り畳みを行い、そして訓練データと畳み込み演算を実行してもよい。
【0097】
どのプロセスにおいて本開示の実施例の第一の折り畳みフィルタを利用するかに関わらず、第一の次元折り畳みによってCi次元アラインを実現することで、畳み込み演算の計算量を大幅に最適化することができる。以下では、畳み込み計算量の点について、本開示の実施例の第一の次元折り畳み方案と従来の畳み込み演算の性能を比較する。
【0098】
Pで畳み込み計算量を表し、A
ciでCiアライン後の値を表し、A
coでCoアライン後の値を表すと、
である。
【0099】
NHWC次元放置順番を採用するハードウェアについて、Ci次元が最低次元であり、且つベクトル命令アラインの要求によれば、Aciにアラインされることが多いため、Aciは、ベクトル命令アラインの要求に対するものであり、人工知能計算加速ハードウェアは一般的には複数の並行した高性能の畳み込み計算ユニットを有するため、Acoは、畳み込みカーネルCo次元アラインの要求に対するものであり、その値は、高性能並行計算ユニットの数である。
【0100】
最適化前に、従来の畳み込み演算の計算量は、以下のとおりである。
【0101】
【0102】
本開示の実施例の第一の次元折り畳み方案を採用して最適化を行った後に、畳み込み演算の計算量は、以下のとおりである。
【0103】
第一の次元折り畳みを行った後の性能の最適化率は、以下のとおりである。
【0104】
【0105】
以上の
図7-
図8を参照して説明した例を例として、
最適化前に、P
before1=1*64*64*ho*wo*3*3 (Sx,Sy=1,1)であり、
最適化後に、P
after1=1*64*64*(ho/4)*(wo/4)*6*6 (Sx,Sy=4,4)
=1*64*64*ho*wo*3*3*(1/4)である。
【0106】
減少した畳み込み計算ユニットの畳み込み計算量は75%である。
【0107】
以上の計算量の比較から分かるように、本開示の実施例による第一の折り畳みフィルタ方案は、畳み込みユニットの計算量を効果的に節約することができ、それにより畳み込み演算の計算性能を向上させる。
【0108】
上記第一の次元折り畳み方案は、フィルタの出力チャンネル次元を調整するために、例えば、フィルタの出力チャンネル次元が比較的に小さい場合に、単独で実施してもよい。しかしながら、第一の次元折り畳み方案は、フィルタの入力チャンネル次元を変えない。本開示の第二の次元折り畳み方案では、フィルタの入力チャンネル次元を調整することができる。第二の次元折り畳み方案は、単独で実施してもよく(例えば、フィルタの入力チャンネル次元が比較的に小さい場合)、第一の次元折り畳み方案の上で組み合わせて実施してもよい(例えば、フィルタの入力チャンネル次元と出力チャンネル次元がいずれも比較的に小さい場合)。以下では、本開示の実施例の第二の次元折り畳み方案を説明し、当業者であれば理解できるように、第二の次元折り畳み方案は、元のフィルタに基づいて実行されてもよく、元のフィルタに対して第一の次元折り畳みを行った後に得られる第一の折り畳みフィルタに基づいて実行されてもよい。そのため、文脈によれば、明細書に言及した折り畳み待ちフィルタは、元のフィルタであってもよく、第一の折り畳みフィルタであってもよい。
【0109】
図11は、一つの具体的な例により本開示の実施例の第二の次元折り畳み方案の例示的な原理図を示す。命令アライン要求のアライン値がAciであるとする。異なる命令セット設計によれば、Aciは、異なる数値、例えば、32、64、128などであってもよい。以下の例では、Aci=64を例として説明する。命令のアライン要求によれば、フィルタのCi次元をAciにアラインし、即ち64にアラインする必要がある。
【0110】
図面において、左側に畳み込み層の折り畳み待ちフィルタが示されているが、それは、例えば64×4×4×4で表され、即ち、その出力チャンネル数Coは64であり、入力チャンネル数Ciは4であり、各畳み込みカーネルサイズは4×4である。図面から分かるように、折り畳み待ちフィルタのCi次元は、命令のアライン要求(64)よりもはるかに小さい。通常の処理方式に応じて、64にアラインするためにCi次元をゼロパディングする。4から64にアラインするために、非常に多い冗長計算を追加する必要があり、リソースの浪費を引き起こす。
【0111】
図面において、右側に本開示の実施例による第二の次元折り畳みを実行した後の第二の折り畳みフィルタが示されており、それは、例えば64×1×1×64で表され、即ち、その入力チャンネル数Co’は64であり、出力チャンネル数は折り畳み待ちフィルタと同じであり、いずれも64であり、各畳み込みカーネルサイズは1×1である。これから分かるように、畳み込みカーネル幅次元と高さ次元でのデータがすでに入力チャンネル次元に移しているため、第二の折り畳みフィルタの入力チャンネル数がすでに命令のアライン要求(64)にアラインしており、この時、Ci次元アラインを行うために追加的なゼロ充填を必要としないため、この前のゼロパディングによる冗長計算を回避する。
【0112】
上記第二の次元折り畳み処理において、第二の折り畳みフィルタは、折り畳み待ちフィルタに対して第二の次元折り畳み処理を行うことで得られるものである。上記第二の次元折り畳み処理は、以下の考慮に基づくものである。元の計算方式に従うと、ゼロパディングによってCiアラインを実現することによって、冗長計算を生じ、計算リソースの浪費を引き起こす。他の次元のデータをCi次元に移し、Ci次元を命令アライン値まで埋めれば、計算リソースの浪費を可能な限り回避し、計算効率を向上させることができる。
【0113】
図12は、本開示の実施例によるより詳細な第二の次元折り畳みの概略図を示す。図面に
図11の例における折り畳み待ちフィルタ(64,4,4,4)の第二の次元折り畳みプロセスが示されている。折り畳み待ちフィルタのCiが4であり、命令アライン要求によれば、64にアラインされる必要があるため、N
total2 = 64÷4=16倍の折り畳みを必要とする。図面における例では、第二の総折り畳み倍数16を畳み込みカーネル幅方向での第二の幅次元折り畳み倍数Nw2(図面において4倍折り畳みである)と畳み込みカーネル高さ方向での第二の高さ次元折り畳み倍数Nh2(図面において4倍折り畳みである)に割り当てる。
【0114】
図示されるように、好ましくは、まず、幅W次元の折り畳みを行ってもよい。図面において、1201は、単一層W次元データが四つの折り又は四つのセグメントに分けられてもよく、そして順番に応じて入力チャンネルCi次元に配列されることを示す。折り畳み待ちフィルタ1200がW次元で完全に折り畳まれた後に、1210に示す中間フィルタを得ることができ、その次元は、(64,4,1,16)で表されてもよい。
【0115】
次に、中間フィルタ1210の上で、高さH次元の折り畳みを行うことができる。図示されるように、H次元でも4倍折り畳みを行う。中間フィルタ1210のH次元データを四つの折り又は四つのセグメントに分け、そして順番に応じて入力チャンネルCi次元に配列する。この折り畳みプロセスにおいて、H次元では、この四つのセグメントのうちの各セグメントはそれぞれ、この前に単一層W次元で折り畳みを行うことで得られたデータに対応する。H次元で完全に折り畳まれた後に、1220に示す第二の折り畳みフィルタを得ることができ、その次元は、(64,1,1,64)で表されてもよい。第二の折り畳みフィルタの入力チャンネルCi次元は64であり、命令のアライン要求を満たす。
【0116】
以上では、まず幅W次元折り畳みを行い、さらにH次元折り畳みを行う折り畳み方式を説明した。当業者であれば理解できるように、まずH次元の折り畳みを行い、そしてW次元の折り畳みを行ってもよい。H次元がCi次元に隣接していないため、まずW次元の折り畳みを行うことに比べて、追加的な処理、例えばデータ転置操作を必要とする。
【0117】
以上の第二の次元折り畳みプロセスから分かるように、第二の折り畳みフィルタの入力チャンネルCi次元が変わったため、それに応じて、入力特徴マップも同じタイプの第二の次元折り畳みを必要とする。入力特徴マップとフィルタに対して同様な倍率の折り畳みを行ったため、第二の次元折り畳みの入力特徴マップと第二の折り畳みフィルタに対して畳み込み演算を行った後の出力は、両者が折り畳まれる前の畳み込み演算出力と同じであり、出力結果に対して何らの処理を行う必要がない。
【0118】
さらに、
図12の第二の次元折り畳みプロセスから分かるように、第二の折り畳みフィルタの入力チャンネル数が、折り畳み待ちフィルタの入力チャンネル数に対して数倍増加するため、本開示の実施例の第二の次元折り畳み方案は特に、フィルタの入力チャンネル数Ciが比較的に小さい場合に適し、例えば、Ciは、第三の閾値A2を超えず、第三の閾値A2は、命令アライン値Aciよりも小さい。いくつかの実施例では、第三の閾値A2≦Aci/2である。実践結果によれば、Ciが小さいほど、従来のアルゴリズムに比べて、潜在力が大きくなることが明らかになる。
【0119】
図12の第二の次元折り畳みプロセスからさらに分かるように、折り畳み待ちフィルタの各パラメータ及び命令アライン要求に基づき、第二の折り畳みフィルタの各パラメータを決定することができる。
【0120】
まず、折り畳み待ちフィルタの入力チャンネル数Ciと命令アライン値Aciに基づき、第二の総折り畳み倍数Ntotal2を決定してもよい。
【0121】
いくつかの実施例では、以下に応じて第二の総折り畳み倍数Ntotal2を決定してもよく、
Ntotal2=Aci/Cia (2-1)
ここで、Ciaは、Ciが最も近いAci/2nにアラインされる値であり、nは、自然数である。
【0122】
前述したように、本開示の実施例は、数倍の折り畳みにより、Ciを指定アライン値Aciにアラインする。AciがCiの2n倍である場合、両者を直接に除算することで、必要な第二の次元折り畳みの総倍数を得ることができる。例えば、前述した例において、Ci=4であるため、Ntotal2=64/4=16倍である。AciがCiの2n倍ではない場合、まず、Ciを最も近いAci/2nの値にアラインする必要がある。例えば、Aciが64であれば、Aci/2nは、32、16、8、4と2を含み、Ciは、これらの数値のうちの最も近い値にアラインされる必要がある。例えば、Ci=3であれば、4にアラインする必要があり、Ci=5であれば、8にアラインする必要があるなど。アラインした後に、Aciを除去することで、第二の総折り畳み倍数Ntotal2を得ることができる。
【0123】
次に、第二の総折り畳み倍数Ntotal2を決定した後に、以上の考慮に応じて、それを畳み込みカーネル幅方向での第二の幅次元折り畳み倍数Nw2と畳み込みカーネル高さ方向での第二の高さ次元折り畳み倍数Nh2に分割することができる。異なる優位性を実現するために、様々な異なるルールに応じて倍数分割を行ってもよい。
【0124】
一つの実施例では、折り畳み倍数を畳み込みカーネル幅方向と畳み込みカーネル高さ方向に平均に分割してもよい。例えば、以上の、
図11と
図12を参照した例において、第二の総折り畳み倍数16を幅4倍と高さ4倍に平均に分割する。
【0125】
別の実施例では、折り畳み倍数を畳み込みカーネル幅W方向に優先的に分割してもよい。以上に言及したデータ放置順番NHWCのように、WとCi次元は連続するものであるため、W次元での折り畳みの実現は比較的に簡単であり、フィルタの次元表現の調整のみを必要とし、又は次元再構築と呼び、いかなる他の処理を必要としない。そのため、折り畳み倍数を畳み込みカーネル幅W方向に優先に分割することによって、処理を簡略化する。
【0126】
第二の総折り畳み倍数の分割は、さらに以下の二つの要因による影響を受ける。
【0127】
一方では、折り畳み待ちフィルタの畳み込みカーネルサイズによって決まり、畳み込みカーネルの各次元(KwとKh)の数値が、所望の倍率の折り畳みを実現するために不十分であると、他の措置を講じる必要がある。
【0128】
例えば、上記例において、幅W方向を優先的にするという原則に従うと、第二の総折り畳み倍数16は、幅16倍と高さ1倍に分割されてもよい。しかしながら、折り畳み待ちフィルタの畳み込みカーネル幅Kwがただ4であり、四つの折りを最大限サポートするため、折り畳み倍数の割り当てを調整する必要がある。例えば、幅W次元に対する分割倍数を減少してもよく、例えば、幅4倍と高さ4倍に分割する。
【0129】
また例えば、畳み込みカーネル幅次元及び/又は畳み込みカーネル高さ次元で2n折り畳みを行うことができず、例えば、Kw又はKhが奇数であり、2で割り切れられない場合、二つの折りへの折り畳みを行うことができず、4で割り切れられない場合、四つの折りへの折り畳みを行うことができない。この時、畳み込みカーネルに対して折り畳みを行うために、折り畳み倍数に基づいて補完を行う必要がある。
【0130】
図13は、本開示の実施例による畳み込みカーネルに対する折り畳み倍数補完の概略図を概略的に示す。図面における例では、折り畳み待ちフィルタの畳み込みカーネルサイズが3×3であるとするが、幅W次元と高さH次元についていずれも四つの折りへの折り畳みを必要とし、この時、WとH方向をいずれも4の倍数に補完する必要がある。
【0131】
図13は、HとW方向の補完について分解して示す。折り畳み待ちの単一層畳み込みカーネル1301がW方向において3であり、四つの折りへの折り畳みを行うために、4に補完する必要があり、1311に示すように、ここで、白いブロックは、補完ブロックを代表する。同様に、H方向において、折り畳み待ちの単一層畳み込みカーネル1301がH方向において3であり、四つの折りへの折り畳みを行うために、4に補完する必要があり、1312に示すように、ここで、白いブロックは、補完ブロックを代表する。HとW方向に対して補完を同時に行う時、折り畳み待ち畳み込みカーネル1300から最終的補完を行った後に、畳み込みカーネル1310を得ることができ、その畳み込みカーネルサイズは、4×4に変わり、幅と高さはいずれも四つの折りへの折り畳みを行うことができる。
【0132】
図13から分かるように、畳み込みカーネルに対する補完操作により、無効数値が導入され、それによって無効な冗長計算を及ぼす。
【0133】
そのため、いくつかの実施例では、折り畳みを実現するために、折り畳み倍数アラインによる補完量が可能な限り小さくなるように第二の総折り畳み倍数を分割してもよい。例えば、折り畳み待ち畳み込みカーネルサイズが1×6であり、第二の総折り畳み倍数が16であるとすると、H方向4倍とW方向4倍に分割すれば、折り畳み待ち畳み込みカーネルを4×8に補完する必要があり、層ごとに26個のゼロパディング値が追加され、H方向2倍とW方向8倍に分割すれば、折り畳み待ち畳み込みカーネルを2×8に補完すればよく、層ごとに10個のゼロパディング値が追加され、H方向1倍とW方向16倍に分割すれば、折り畳み待ち畳み込みカーネルを1×16に補完する必要があり、層ごとにも10個のゼロパディング値が追加される。同じ補完量の場合には、好ましくは、折り畳み倍率をW方向に割り当ててもよく、例えば、H方向1倍とW方向16倍への分割を選択する。
【0134】
他方では、本開示の実施例の第二の次元折り畳み方案の実際の有効倍数はさらに畳み込みステップ長に関わる。畳み込みステップ長が対応する折り畳み倍数で割り切れられない場合、畳み込みカーネルの折り畳み方式が変わらないが、入力特徴マップの折り畳みに重ねが存在すため、畳み込み演算において一定の冗長計算が存在する。
【0135】
図14は、本開示の実施例による畳み込みステップ長による有効倍数への影響の概略図を概略的に示す。図面において、H方向を例として、入力特徴マップに重ね領域が含まれる折り畳み方式を示している。図示されるように、H方向の畳み込みステップ長Sy=4である場合、α、βを連続する二つのデータとしてH方向の四つの折りへの折り畳みを行うと、重ね領域が存在しない。しかしながら、H方向の畳み込みステップ長Sy=2である場合、γ、δを連続する二つのデータとしてH方向の四つの折りへの折り畳みを行うと、重ね領域が存在する。この重ね領域の大きさは、この方向の折り畳み倍数からこの方向の畳み込みステップ長を減算したものである。
【0136】
この時、HとW方向の折り畳み倍数を柔軟に配置することができる。例えば、折り畳み倍数をより高い次元に優先的に割り当て、低次元での冗長計算を可能な限り回避する。例えば、NHWCデータ放置順番について、H次元がW次元よりも高く、Sx=2であり、Sy=2であり、Ntotal2=16であれば、W次元での二つの折りとH次元での八つの折りに割り当ててもよく、このように、重ね領域による冗長計算はいずれもH次元に分布する。この時、これらの冗長計算を実行する場合、H次元がより高いため、各回の演算の時に読み取られるべきデータもより多くなり、それにより、データアクセスIO効率の向上に有利である。
【0137】
要するに、本開示の実施例では、冗長計算の発生を可能な限り回避し、計算効率の向上を最大化するために、以上に説明した様々なルールに基づき、H次元とW次元の折り畳み倍数を柔軟に配置してもよい。
【0138】
いくつかの実施例では、以下に応じて第二の総折り畳み倍数を分割してもよい。W方向の折り畳み倍数を優先的に決定し、例えば、平均化の方式に応じて第二の総折り畳み倍数Ntotal2を分割し、W方向の折り畳み倍数Nw2を決定してもよい。
【0139】
【0140】
次に、W方向でのサイズ及び畳み込みステップ長を該当して決定してもよい。
【0141】
必要に応じて、まず、折り畳み待ちフィルタの畳み込みカーネル幅kw’をW方向の折り畳み倍数Nw2の倍数にアラインし、kwaと表記してもよい。そして、第二の次元折り畳みの後の畳み込みカーネルW次元のサイズkw’’を計算する。
【0142】
【0143】
次に、以下に応じて第二の折り畳みフィルタのW方向の畳み込みステップ長Sx’’を決定してもよい。
【0144】
【0145】
【0146】
この時、折り畳み倍数の調整を行ってもよい。例えば、W方向で重ね領域がないことを保持しながら、最大有効折り畳み倍率2を実現し、残りの必要な折り畳み倍率をいずれもH方向に割り当ててもよい。これにより、以下に応じてW方向の有効折り畳み倍率に基づき、H方向の折り畳み倍率を計算することができる。
【0147】
【0148】
以上の例では、Nh2=16/2=8であるため、H方向の折り畳み倍率は8倍である。
【0149】
この時、W方向の折り畳み倍率を該当して更新してもよい。
【0150】
【0151】
上記例において、Nw2=16/8=2であり、即ち、その最大有効折り畳み倍率に等しい。このような折り畳み倍率割り当て方式によれば、W方向において重ね領域が存在せず、H方向において比較的に多い重ねが存在する。
【0152】
W方向とH方向の第二の折り畳み倍数Nw2、Nh2を決定した後に、各次元での、次元サイズ、畳み込みステップ長などを含む残りのパラメータを該当して計算することができる。
【0153】
【0154】
【0155】
【0156】
Sx''
次に、以下に応じて第二の折り畳みフィルタのW方向の畳み込みステップ長Sx’’とH方向の畳み込みステップ長Sy’’を決定してもよい。
【0157】
【0158】
【0159】
以上では、どのように命令アライン要求に応じて第二の折り畳みフィルタの各パラメータを設計するかを説明した。
【0160】
以上では、本開示の実施例による第二の次元折り畳みによってフィルタを調整する方案を説明した。いくつかの実施例では、この第二の折り畳みフィルタは、オフラインで生成されてもよい。例えば、ニューラルネットワークモデルを利用して推理を行うプロセスにおいて、推理プロセスを行うために、予め配置される、オフラインで生成される第二の折り畳みフィルタとオンラインで同様な第二の次元折り畳みが行われる入力特徴マップを利用して畳み込み演算を行ってもよい。別のいくつかの実施例では、この第二の折り畳みフィルタは、オンラインで生成されてもよい。例えば、ニューラルネットワークモデルに対して訓練を行うプロセスにおいて、訓練プロセスを行うために、オンラインで畳み込み層のフィルタに対して第二の次元折り畳みを行うと共に、オンラインで訓練データに対して同様な第二の次元折り畳みを行い、そして両者に対して畳み込み演算を実行してもよい。
【0161】
どのプロセスにおいて本開示の実施例の第二の折り畳みフィルタを利用するかに関わらず、第二の次元折り畳みによってCi次元アラインを実現することで、畳み込み演算の計算量を大幅に最適化することができる。以下では、畳み込み計算量の点について、本開示の実施例の方案と従来の畳み込み演算の性能を比較する。
【0162】
【0163】
NHWC次元放置順番を採用するハードウェアについて、Ci次元が最低次元であり、且つベクトル命令アラインの要求によれば、Aciにアラインされることが多いため、Aciは、ベクトル命令アラインの要求に対するものであり、人工知能計算加速ハードウェアは一般的には複数の並行した高性能の畳み込み計算ユニットを有するため、Acoは、畳み込みカーネルCo次元アラインの要求に対するものであり、その値は、高性能並行計算ユニットの数である。
【0164】
最適化前に、従来の畳み込み演算の計算量は、以下のとおりである。
【0165】
本開示の実施例の第二の次元折り畳み方案を採用して最適化を行った後に、畳み込み演算の計算量は、以下のとおりである。
【0166】
【0167】
第二の次元折り畳みを行った後の性能の最適化率は、以下のとおりである。
【0168】
【0169】
以上の
図11-
図12を参照して説明した例を例として、
最適化前に、P
before2=1*64*64*ho*wo*4*4 (Sx,Sy=4,4)であり、
最適化後に、P
after2=1*64*64*ho*wo*1*1 (Sx’,Sy’=1,1)
=1*64*64*ho*wo*4*4*(1/16)である。
【0170】
減少した畳み込み計算ユニットの畳み込み計算量は93.75%である。
【0171】
理解できるように、
図11-
図12の例では、望ましい場合に第二の次元折り畳み処理を行い、即ち、畳み込みステップ長が折り畳みの要求を完全に満たし、畳み込みカーネルのサイズと入力特徴マップのサイズに対して折り畳み倍数アラインを行う必要がない場合を示す。実際の場合には、具体的なパラメータの数値によって決まり、実際の最適化率は、上記ピーク最適化率93.75%よりも低い。
【0172】
以上の計算量の比較から分かるように、本開示の実施例による第二の折り畳みフィルタ方案は、畳み込みユニットの計算量を効果的に節約することができ、それにより畳み込み演算の計算性能を向上させる。
【0173】
以上では、本開示の実施例による第一の次元折り畳みと第二の次元折り畳みをそれぞれ説明した。以上の記述から分かるように、第一の次元折り畳みを単独で実施する時、得られる第一の折り畳みフィルタの畳み込みカーネルは膨張し、特に、折り畳み前の畳み込みステップ長が比較的に大きい時、非常に大きく膨張し、そして畳み込みステップ長も膨張し、これにより一定の冗長計算を引き起こし、そしてフィルタをロードするアクセス時間の増加を引き起こす。これに対し、第二の次元折り畳みを単独で実施する時、得られる第二の折り畳みフィルタの畳み込みカーネルは縮小し、そして畳み込みステップ長も縮小する。そのため、第一の次元折り畳みと第二の次元折り畳みを組み合わせて実施することで、第一の次元折り畳みによる畳み込みカーネル膨張を減少させることができ、それによりフィルタをロードするメモリアクセス量を減少させる。
【0174】
他方では、第二の次元折り畳みを単独で実施する時、その有効な折り畳み倍数は、畳み込みステップ長によって決まる。畳み込みステップ長が小さすぎると、折り畳み後の入力特徴マップと畳み込み演算を実行する場合、重複計算が存在し、折り畳みによる利得を減少させる。以上の分析によれば、第一の次元折り畳みが畳み込みカーネルと畳み込みステップ長を拡大し、そして第一の次元折り畳みの後の畳み込みステップ長が必ず偶数であることが明らかになる。そのため、第一の次元折り畳みと第二の次元折り畳みを組み合わせて実施することで、第二の次元折り畳みの有効倍数を増やすことができ、そして畳み込みステップ長が奇数である時に畳み込みカーネルの折り畳み方式を変える必要があることが発生せず、それにより第二の次元折り畳みの最適化効果を最大化することができる。
【0175】
上記分析に基づき、第一の次元折り畳みと第二の次元折り畳みを組み合わせて実施し、それぞれの欠点を互いに補い合って最大化された最適化効果を達成することができる。
【0176】
一つの実施例では、まず、第一の次元折り畳みを優先的に行い、これにより拡大した畳み込みカーネルと畳み込みステップ長を得て、そして第一の次元折り畳みの上で、さらに第二の次元折り畳みを行い、この時、畳み込みカーネルと畳み込みステップ長は減少する。これにより、入力チャンネル次元の命令アライン要求と出力チャンネル次元のハードウェアアライン要求を満たす場合に、フィルタをロードするIO量を増加させることなく、折り畳みプロセスにおいて発生する冗長計算を相殺し、計算性能の向上を最大化することができる。
【0177】
例えば、元のフィルタが(4,3,3,4)であり、畳み込みステップ長が(1,1)であるとする。以上の説明を参照すると、第一の次元折り畳み(ここで、Nw1=Nh1=4である)を行った後に、得られる第一の折り畳みフィルタは(64,6,6,4)であり、畳み込みステップ長は(4,4)である。次に、第一の折り畳みフィルタに対して第二の次元折り畳み(ここで、Nw2=Nh2=4である)を応用することで得られる第二の折り畳みフィルタは(64,2,2,64)であり、畳み込みステップ長は(1,1)である。元のフィルタに比べて、第二の折り畳みフィルタの入力チャンネル次元と出力チャンネル次元はいずれもそれぞれのアライン値(ここで64である)にアラインされており、そして畳み込みカーネルのサイズは、膨張することがなく、逆に2×2に減少し、畳み込みステップ長も膨張することがなく、この例では(1,1)である。
【0178】
別の実施例では、まず、第二の次元折り畳みを行い、さらに第一の次元折り畳みを行ってもよい。しかしながら、このように実施の形態は、第一の次元折り畳みによる畳み込みカーネル膨張と畳み込みステップ長拡大を十分に利用できないため、性能の最適化に不利である。
【0179】
まず第一の次元折り畳みを行い、さらに第二の次元折り畳みを行う場合、畳み込み計算量の点で、得られる性能最適化率は、以下のように計算されてもよい。
【0180】
【0181】
以上による元のフィルタが(4,3,3,4)であり、畳み込みステップ長が(1,1)であるものに対して第一の次元折り畳みと第二の次元折り畳みを行う例を例として、その性能最適化率は、以下のとおりである。
【0182】
【0183】
本開示の実施例は、ニューラルネットワークモデルを実行するためのデータ処理装置、及びこのデータ処理装置によって実施されるニューラルネットワークモデルを実行するための方法をさらに提供する。
【0184】
図15は、本開示の実施例を実施できるデータ処理装置の概略的構造図を例示的に示す。
図15に示すように、データ処理装置1500は、処理回路1510と、記憶回路1520とを含む。
【0185】
処理回路1510は、データ処理装置1500における、制御、復号化、演算などを含むがそれらに限らない様々な機能の処理を担う。処理回路1510は、例えば、
図3における制御モジュール31及び/又は演算モジュール32を含んでもよい。
【0186】
いくつかの実施例では、処理回路1510は、入力特徴マップに対して第二の次元折り畳みを行うことで、折り畳み特徴マップを得て、本開示の実施例の折り畳みフィルタを利用して折り畳み特徴マップに対して畳み込み演算を実行し、中間結果を得て、そして中間結果に対して次元逆折り畳みを行うことで、出力特徴マップを得るためのものとして配置されてもよい。
【0187】
記憶回路1520は、関連データを記憶又は転送するために用いられてもよく、それは、例えば、
図3又は
図5に示す様々なRAMであってもよく、又はオンチップバッファと呼ばれる。いくつかの実施例では、記憶回路1520は、ニューラルネットワークモデルの畳み込み層の折り畳みフィルタを記憶するためのものとして配置されてもよい。この折り畳みフィルタは、元のフィルタに対して第一の次元折り畳みと第二の次元折り畳みを行うことで生成されるものである。第一の次元折り畳みは、畳み込みステップ長を複数回シフトした後に得られる複数の拡張フィルタを合成することを含む。第二の次元折り畳みは、幅次元及び/又は高さ次元のデータを入力チャンネル次元に再配列することを含む。例えば、幅次元でのデータ再配列又は次元折り畳みについて、処理回路1510は、次元再構築によって実現してもよい。高さ次元でのデータ再配列又は次元折り畳みについて、処理回路1510は、次元転置によって実現してもよい。
【0188】
いくつかの実施例では、データ処理装置1500は、ニューラルネットワークモデルの訓練プロセスを実行するためのものとして配置されてもよい。この時、処理回路1510は、訓練時に、オンラインでニューラルネットワークモデルの畳み込み層のフィルタに対して本開示の実施例の第一と第二の次元折り畳み処理を行い、そして訓練データに対して本開示の実施例の第二の次元折り畳み処理を行うように配置されてもよい。そして得られる折り畳みフィルタを利用して折り畳み後の訓練データに対して畳み込み演算を実行し、訓練プロセスを行う。処理回路1510によって実行される具体的な折り畳み処理プロセスは、前記の説明を参照してもよく、ここでこれ以上説明しない。
【0189】
別のいくつかの実施例では、データ処理装置1500は、ニューラルネットワークモデルの推理プロセスを実行するためのものとして配置されてもよい。この時、処理回路1510は、推理プロセスを行うために、まず、入力ニューロンに対して第二の次元折り畳み処理を行い、そして記憶回路1520に記憶されている折り畳みフィルタを直接に利用して折り畳み後の入力ニューロンに対して畳み込み演算を行うように配置されてもよい。入力ニューロンに対する第二の次元折り畳み方式は、記憶されている折り畳みフィルタが経た第二の次元折り畳み方式と一致する。
【0190】
最終的な出力特徴マップを得るために、折り畳みフィルタを利用して畳み込み演算を実行することで得られる中間結果に対して一定の次元再配列処理を行う必要がある。具体的な再配列処理操作は、前記の説明を参照してもよく、ここでこれ以上説明しない。
【0191】
図16は、本開示の実施例によるデータ処理方法の例示的なフローチャートを示す。
【0192】
図示されるように、データ処理方法は、処理回路1600が入力特徴マップに対して第二の次元折り畳みを行うことで、折り畳み特徴マップを得るステップ1610を含む。
【0193】
次に、ステップ1620において、処理回路が記憶回路に記憶されている折り畳みフィルタを利用して折り畳み特徴マップに対して畳み込み演算を実行することで、中間結果を得る。この折り畳みフィルタは、元のフィルタに対して第一の次元折り畳みと第二の次元折り畳みを行うことで生成されるものである。第一の次元折り畳みは、畳み込みステップ長を複数回シフトした後に得られる複数の拡張フィルタを合成することを含む。第二の次元折り畳みは、幅次元及び/又は高さ次元のデータを入力チャンネル次元に再配列することを含む。
【0194】
最後に、ステップ1630において、処理回路が中間結果に対して次元逆折り畳みを行うことで、出力特徴マップを得る。
【0195】
当業者であれば理解できるように、前記の図面を結び付けて説明した本開示の実施例のフィルタ折り畳み方法、中間結果の次元再配列などの処理は同様に
図15のデータ処理装置と
図16のデータ処理方法に適用可能であるため、繰り返して説明しない。
【0196】
本開示は、前記の図面を結び付けて説明したいずれか一つの実施例のデータ処理装置を含んでもよいチップをさらに提供する。さらに、本開示は、ボードカードをさらに提供し、このボードカードは、前述したチップを含んでもよい。
【0197】
異なる応用シナリオに応じて、本開示の電子機器又は装置は、サーバ、クラウドサーバ、サーバクラスタ、データ処理装置、ロボット、コンピュータ、プリンタ、スキャナ、タブレットパソコン、スマート端末、PC機器、モノのインターネット端末、移動端末、携帯電話、ドライブレコーダ、ナビゲーション装置、センサ、ウェブカメラ、カメラ、ビデオカメラ、プロジェクタ、ウォッチ、イヤホン、モバイルストレージ、ウェアラブルデバイス、視覚端末、自動運転端末、交通手段、家電製品、及び/又は医療機器を含んでもよい。前記交通手段は、飛行機、汽船及び/又は車両を含み、前記家電製品は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガステーブル、レンジフードを含み、前記医療機器は、核磁気共鳴装置、Bスキャン装置及び/又は心電計を含む。本開示の電子機器又は装置は、さらにインターネット、モノのインターネット、データセンタ、エネルギー、交通、公衆管理、製造、教育、電力網、電気通信、金融、小売、工場、医療などの分野に応用されてもよい。さらに、本開示の電子機器又は装置は、クラウド、エッジ、端末などの、人工知能、ビッグデータ、及び/又はクラウドコンピューティングに関連する応用シナリオに用いられてもよい。一つ又は複数の実施例では、本開示の方案による計算能力の高い電子機器又は装置は、クラウド機器(例えばクラウドサーバ)に応用することができるが、消費電力の低い電子機器又は装置は、端末機器及び/又はエッジ機器(例えばスマートフォン又はウェブカメラ)に応用することができる。一つ又は複数の実施例では、クラウド機器のハードウェア情報と端末機器及び/又はエッジ機器のハードウェア情報は、互いに互換性があり、それによって端末機器及び/又はエッジ機器のハードウェア情報に基づいて、クラウド機器のハードウェアリソースから適切なハードウェアリソースをマッチングして端末機器及び/又はエッジ機器のハードウェアリソースをシミュレートすることができ、それによって端末とクラウドとの一体化又はクラウドとエッジと端末との一体化の統一した管理、スケジューリングと協同作動を完成させる。
【0198】
説明すべきこととして、簡潔のために、本開示では、いくつかの方法及びその実施例を一連の動作及びその組み合わせとして記述しているが、当業者であれば理解できるように、本開示の方案は、説明した動作の順番に限定されるものではない。そのため、本開示の開示又は教示に基づき、当業者であれば理解できるように、そのうちのいくつかのステップは、他の順番で実行されてもよく、又は同時に実行されてもよい。さらに、当業者であれば理解できるように、本開示に記述された実施例は、選択的な実施例としてみなすことができ、即ちそれに係る動作又はモジュールは、本開示の一つ又は複数の方案の実現にとっては、必ずしも必要ではない。また、方案の違いによって、本開示における、いくつかの実施例に対する説明に、それぞれ異なる重点がある。これに鑑み、当業者であれば理解できるように、本開示のある実施例に詳細に説明されていない部分は、他の実施例の関連記述を参照すればよい。
【0199】
具体的に実現する面において、本開示の開示及び教示に基づき、当業者であれば理解できるように、本開示に開示されたいくつかの実施例は、本明細書に開示されていない他の方式によって実現されてもよい。例えば、以上に記載の電子機器又は装置の実施例における各ユニットについては、本明細書では、論理機能を考慮した上でそれを区分しているが、実際に実現する際に、他の区分方式があってもよい。また例えば、複数のユニット又はアセンブリを結合し、又は他のシステムに集積し、又はユニット又はアセンブリにおけるいくつかの特徴又は機能を選択的に使用不可にしてもよい。異なるユニット又はアセンブリ同士の接続関係については、以上で図面を結び付けながら討論した接続は、ユニット又はアセンブリ同士の直接又は間接的な結合であってもよい。いくつかのシナリオでは、前述の直接又は間接的な結合は、インターフェースを利用する通信接続に関し、ここで通信インターフェースは、電気的、光学的、音響学的、磁気的又は他の形式の信号伝送をサポートすることができる。
【0200】
本開示において、分離された部品として説明されるユニットは、物理的に分離されてもよく、又は物理的に分離されなくてもよく、ユニットとして示される部品は、物理的なユニットであってもよく、又は物理的なユニットでなくてもよい。前述の部品又はユニットは、同一の場所に位置してもよく、又は複数のネットワークユニットに分布してもよい。また、実際の必要に応じて、そのうちの一部又は全部のユニットを選択して、本開示の実施例に記載の方案の目的を実現することができる。また、いくつかのシナリオでは、本開示の実施例における複数のユニットは、一つのユニットに集積されてもよく、又は各ユニットは、物理的に単独に存在してもよい。
【0201】
いくつかの実現シナリオでは、上記集積されたユニットは、ソフトウェアプログラムモジュールの形式を採用して実現されてもよい。ソフトウェアプログラムモジュールの形式で実現され、且つ独立した製品として販売又は使用される場合、前記集積されたユニットは、コンピュータ可読メモリに記憶されてもよい。これに基づき、本開示の方案がソフトウェア製品(例えばコンピュータ可読記憶媒体)の形式で表される場合、このソフトウェア製品は、メモリに記憶されてもよく、それは、コンピュータ機器(例えばパソコン、サーバ又はネットワーク機器など)に本開示の実施例に記載の方法の一部又は全部のステップを実行させるための若干の命令を含む。前述のメモリは、Uディスク、フラッシュディスク、リードオンリーメモリ(Read Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、モバイルハードディスク、磁気ディスク又は光ディスクなどの、プログラムコードを記憶できる様々な媒体を含んでもよいが、それらに限らない。
【0202】
別のいくつかの実現シナリオでは、上記集積されたユニットは、ハードウェアの形式で実現されてもよく、即ち具体的なハードウェア回路であり、それは、デジタル回路及び/又はアナログ回路などを含んでもよい。回路のハードウェア構造の物理的な実現は、物理的デバイスを含んでもよいが、それに限らず、物理的デバイスは、トランジスタ又はメモリスタなどのデバイスを含んでもよいが、それらに限らない。これに鑑み、本明細書に記載の様々な装置(例えば計算装置又は他の処理装置)は、適切なハードウェアプロセッサ、例えばCPU、GPU、FPGA、DSPとASICなどによって実現されてもよい。さらに、前述の前記記憶ユニット又は記憶装置は、任意の適切な記憶媒体(磁気記憶媒体又は光磁気記憶媒体などを含む)であってもよく、それは例えば、抵抗変化型メモリ(Resistive Random Access Memory、RRAM)、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)、スタティックランダムアクセスメモリ(Static Random Access Memory、SRAM)、補強ダイナミックランダムアクセスメモリ(Enhanced Dynamic Random Access Memory、EDRAM)、高帯域幅メモリ(High Bandwidth Memory、HBM)、ハイブリッドメモリキューブ(Hybrid Memory Cube、HMC)、ROMとRAMなどであってもよい。
【0203】
以下の条項により、前述の内容をより良く理解することができる。
【0204】
2020116249556条項A1、ニューラルネットワークモデルを実行するためのデータ処理装置であって、
前記ニューラルネットワークモデルの畳み込み層の折り畳みフィルタを記憶するためのものとして配置される記憶回路であって、前記折り畳みフィルタは、元のフィルタに対して第一の次元折り畳みと第二の次元折り畳みを行うことで得られるものであり、ここで、前記第一の次元折り畳みは、畳み込みステップ長を複数回シフトした後に得られる複数の拡張フィルタを合成することを含み、前記第二の次元折り畳みは、幅次元及び/又は高さ次元のデータを入力チャンネル次元に再配列することを含む記憶回路と、
入力特徴マップに対して前記第二の次元折り畳みを行うことで、折り畳み特徴マップを得て、
前記折り畳みフィルタを利用して前記折り畳み特徴マップに対して畳み込み演算を実行し、中間結果を得て、及び
前記中間結果に対して次元逆折り畳みを行うことで、出力特徴マップを得るためのものとして配置される処理回路とを含む。
【0205】
条項A2、条項A1に記載のデータ処理装置であって、前記折り畳みフィルタは、まず前記元のフィルタに対して第一の次元折り畳みを行って第一の折り畳みフィルタを得て、さらに前記第一の折り畳みフィルタに対して第二の次元折り畳みを行うことで生成されるものである。
【0206】
条項A3、条項A2に記載のデータ処理装置であって、前記処理回路は、
前記元のフィルタに対して畳み込みカーネル幅方向において横方向畳み込みステップ長をNw1-1回シフトし、及び/又は畳み込みカーネル高さ方向において縦方向畳み込みステップ長をNh1-1回シフトし、Ntotal1個の拡張フィルタを得ることであって、ここで、Ntotal1=Nw1×Nh1であり、Nw1とNh1は、自然数であることと、
前記Ntotal1個の拡張フィルタを出力チャンネル次元において前記第一の折り畳みフィルタに合成することとに応じて、前記第一の次元折り畳みを実行するためのものとして配置される。
【0207】
条項A4、条項A3に記載のデータ処理装置であって、前記元のフィルタの出力チャンネル次元サイズは、第一の閾値A1を超えず、前記第一の折り畳みフィルタの出力チャンネル次元サイズは、第二の閾値Acoに等しく、ここで、第一の閾値A1は、第二の閾値Acoよりも小さい。
【0208】
条項A5、条項A4に記載のデータ処理装置であって、前記処理回路はさらに、
元のフィルタの出力チャンネル数Coと前記第二の閾値Acoに基づき、第一の総折り畳み倍数Ntotal1を決定し、
前記第一の総折り畳み倍数Ntotal1を第一の幅次元折り畳み倍数Nw1と第一の高さ次元折り畳み倍数Nh1に分割し、
Nw1、Nh1及び元のフィルタの畳み込みステップ長に基づき、前記第一の折り畳みフィルタの畳み込みステップ長を決定し、及び
Nw1、Nh1及び元のフィルタの畳み込みカーネルと畳み込みステップ長に基づき、前記第一の折り畳みフィルタの畳み込みカーネルサイズを決定するために用いられる。
【0209】
条項A6、条項A5に記載のデータ処理装置であって、前記処理回路はさらに、
Ntotal1=Aco/Coaに応じて第一の総折り畳み倍数Ntotal1を決定するためのものとして配置され、ここで、Coaは、Coが最も近いAco/2nにアラインされる値であり、nは、自然数である。
【0210】
条項A7、条項A5又はA6に記載のデータ処理装置であって、前記処理回路はさらに、
畳み込みカーネル幅方向に優先的に分割すること、
畳み込みステップ長がより小さい方向に優先的に分割すること、
畳み込みカーネル幅方向と畳み込みカーネル高さ方向に平均に分割すること、又は
前記第一の折り畳みフィルタの畳み込みカーネルサイズが最小となるように分割することのうちのいずれか一つのルール又はルールの組み合わせに応じて、前記第一の総折り畳み倍数Ntotal1を分割するためのものとして配置されてもよい。
【0211】
条項A8、条項A5からA7のいずれか1項に記載のデータ処理装置であって、前記処理回路はさらに、
【0212】
条項A9、条項A5からA8のいずれか1項に記載のデータ処理装置であって、前記処理回路はさらに、
【0213】
条項A10、条項A4からA9のいずれか1項に記載のデータ処理装置であって、前記第二の閾値Acoは、前記処理回路における畳み込み演算ユニットの数に基づいて決定され、そして前記第一の閾値A1≦Aco/2である。
【0214】
条項A11、条項A1からA10のいずれか1項に記載のデータ処理装置であって、前記元のフィルタの入力チャンネル次元サイズは、第三の閾値A2を超えず、前記折り畳みフィルタの入力チャンネル次元サイズは、第四の閾値Aciに等しく、ここで、第三の閾値A2は、第四の閾値Aciよりも小さい。
【0215】
条項A12、条項A11に記載のデータ処理装置であって、前記処理回路は、
折り畳み待ち多次元データの入力チャンネル次元サイズCiと前記第四の閾値Aciに基づき、第二の総折り畳み倍数Ntotal2を決定することと、
前記第二の総折り畳み倍数Ntotal2を第二の幅次元折り畳み倍数Nw2と第二の高さ次元折り畳み倍数Nh2に分割することと、
Nw2、Nh2及び折り畳み待ち多次元データの幅次元サイズと高さ次元サイズに基づき、折り畳み後の多次元データの幅次元サイズと高さ次元サイズを決定することと、
Nw2、Nh2及び畳み込み演算の元の畳み込みステップ長に基づき、前記畳み込み演算の折り畳み後の畳み込みステップ長を決定することとの方式に応じて、前記第二の次元折り畳みを実行するためのものとして配置される。
【0216】
条項A13、条項A12に記載のデータ処理装置であって、前記処理回路はさらに、
Ntotal2=Aci/Ciaに応じて第二の総折り畳み倍数Ntotal2を決定するためのものとして配置され、ここで、Ciaは、Ciが最も近いAci/2nにアラインされる値であり、nは、自然数である。
【0217】
条項A14、条項A12又はA13に記載のデータ処理装置であって、前記処理回路はさらに、
幅次元に優先的に分割すること、
幅次元と高さ次元に平均に分割すること、
折り畳み倍数アラインによる補完量が最小となるように分割すること、又は
前記第一の折り畳みフィルタに基づく幅次元での畳み込みステップ長がこの幅次元の折り畳み倍数で割り切れるように分割することのうちのいずれか一つのルール又はルールの組み合わせに応じて、前記第二の総折り畳み倍数Ntotal2を分割するためのものとして配置される。
【0218】
条項A15、条項A12からA14のいずれか1項に記載のデータ処理装置であって、前記処理回路はさらに、
【0219】
条項A16、条項A12からA15のいずれか1項に記載のデータ処理装置であって、前記処理回路はさらに、
【0220】
条項A17、条項A12からA16のいずれか1項に記載のデータ処理装置であって、前記折り畳み待ち多次元データは、前記第一の折り畳みフィルタ及び/又は前記入力特徴マップである。
【0221】
条項A18、条項A11からA17のいずれか1項に記載のデータ処理装置であって、前記第四の閾値Aciは、命令アライン要求に基づいて決定されるものであり、そして前記第三の閾値A2≦Aci/2である。
【0222】
条項A19、条項A1からA18のいずれか1項に記載のデータ処理装置であって、前記処理回路はさらに、
前記拡張フィルタが、畳み込みカーネル幅方向でシフトすることで得られる拡張フィルタのみを含む場合、前記中間結果に対して次元再構築を行うことで、前記次元逆折り畳みを実現し、出力特徴マップを得るためのものとして配置される。
【0223】
条項A20、条項A1からA18のいずれか1項に記載のデータ処理装置であって、前記処理回路はさらに、
前記拡張フィルタが、畳み込みカーネル高さ方向でシフトすることで得られる拡張フィルタを含む場合、前記中間結果に対して次元転置を行うことで、前記次元逆折り畳みを実現し、出力特徴マップを得るためのものとして配置される。
【0224】
条項A21、条項A1からA18のいずれか1項に記載のデータ処理装置であって、前記処理回路はさらに、
前記拡張フィルタが、畳み込みカーネル幅方向でシフトすることで得られる拡張フィルタを含むだけでなく、畳み込みカーネル高さ方向でシフトすることで得られる拡張フィルタも含む場合、前記中間結果に対して次元再構築と次元転置を行うことで、前記次元逆折り畳みを実現し、出力特徴マップを得るためのものとして配置される。
【0225】
条項A22、条項A20又はA21に記載のデータ処理装置であって、前記処理回路はさらに、
前記中間結果の出力チャンネル次元での特徴を高さ次元に転置するためのものとして配置される。
【0226】
条項A23、条項A1からA22のいずれか1項に記載のデータ処理装置であって、前記処理回路はさらに、
次元再構築によって幅次元での前記第二の次元折り畳みを実現し、及び/又は
次元転置によって高さ次元での前記第二の次元折り畳みを実現するためのものとして配置される。
【0227】
条項A24、条項A1からA23のいずれか1項に記載のデータ処理装置であって、
前記元のフィルタの入力チャンネル次元サイズは、前記第一の折り畳みフィルタの入力チャンネル次元サイズに等しく、
前記第一の折り畳みフィルタの出力チャンネル次元サイズは、前記折り畳みフィルタの出力チャンネル次元サイズに等しい。
【0228】
条項A25、条項A1からA24のいずれか1項に記載のデータ処理装置であって、前記折り畳みフィルタは、オフラインで生成されるものであるか又はオンラインで生成されるものである。
【0229】
条項A26、チップであって、条項A1からA25のいずれか1項に記載のデータ処理装置を含むことを特徴とする。
【0230】
条項A27、ボードカードであって、条項A26に記載のチップを含むことを特徴とする。
【0231】
条項A28、記憶回路と処理回路とを含むデータ処理装置によって実施されるニューラルネットワークモデルを実行するための方法であって、
前記記憶回路に前記ニューラルネットワークモデルの畳み込み層の折り畳みフィルタが記憶されており、前記折り畳みフィルタは、元のフィルタに対して第一の次元折り畳みと第二の次元折り畳みを行うことで得られるものであり、ここで、前記第一の次元折り畳みは、畳み込みステップ長を複数回シフトした後に得られる複数の拡張フィルタを合成することを含み、前記第二の次元折り畳みは、幅次元及び/又は高さ次元のデータを入力チャンネル次元に再配列することを含み、
前記方法は、
前記処理回路が入力特徴マップに対して前記第二の次元折り畳みを行うことで、折り畳み特徴マップを得ることと、
前記処理回路が、前記記憶回路に記憶されている前記折り畳みフィルタを利用して前記折り畳み特徴マップに対して畳み込み演算を実行することで、中間結果を得ることと、
前記処理回路が前記中間結果に対して次元逆折り畳みを行うことで、出力特徴マップを得ることとを含む。
【0232】
条項A29、条項28に記載の方法であって、前記折り畳みフィルタは、まず前記元のフィルタに対して第一の次元折り畳みを行って第一の折り畳みフィルタを得て、さらに前記第一の折り畳みフィルタに対して第二の次元折り畳みを行うことで生成されるものである。
【0233】
条項A30、条項A29に記載の方法であって、
前記処理回路が、
前記元のフィルタに対して畳み込みカーネル幅方向において横方向畳み込みステップ長をNw1-1回シフトし、及び/又は畳み込みカーネル高さ方向において縦方向畳み込みステップ長をNh1-1回シフトし、Ntotal1個の拡張フィルタを得ることであって、ここで、Ntotal1=Nw1×Nh1であり、Nw1とNh1は、自然数であることと、
前記Ntotal1個の拡張フィルタを出力チャンネル次元において前記第一の折り畳みフィルタに合成することとに応じて、前記第一の次元折り畳みを実行することをさらに含む。
【0234】
条項A31、条項A30に記載の方法であって、前記元のフィルタの出力チャンネル次元サイズは、第一の閾値A1を超えず、前記第一の折り畳みフィルタの出力チャンネル次元サイズは、第四の閾値Acoに等しく、ここで、第一の閾値A1は、第四の閾値Acoよりも小さい。
【0235】
条項A32、条項A31に記載の方法であって、
前記処理回路が、元のフィルタの出力チャンネル数Coと前記第二の閾値Acoに基づき、第一の総折り畳み倍数Ntotal1を決定することと、
前記第一の総折り畳み倍数Ntotal1を第一の幅次元折り畳み倍数Nw1と第一の高さ次元折り畳み倍数Nh1に分割することと、
Nw1、Nh1及び元のフィルタの畳み込みステップ長に基づき、前記第一の折り畳みフィルタの畳み込みステップ長を決定することと、
Nw1、Nh1及び元のフィルタの畳み込みカーネルと畳み込みステップ長に基づき、前記第一の折り畳みフィルタの畳み込みカーネルサイズを決定することとをさらに含む。
【0236】
条項A33、条項A32に記載の方法であって、
前記処理回路が、
Ntotal1=Aco/Coaに応じて第一の総折り畳み倍数Ntotal1を決定することをさらに含み、ここで、Coaは、Coが最も近いAco/2nにアラインされる値であり、nは、自然数である。
【0237】
条項A34、条項A32からA33のいずれか1項に記載の方法であって、
前記処理回路が、
畳み込みカーネル幅方向に優先的に分割すること、
畳み込みステップ長がより小さい方向に優先的に分割すること、
畳み込みカーネル幅方向と畳み込みカーネル高さ方向に平均に分割すること、又は
前記第一の折り畳みフィルタの畳み込みカーネルサイズが最小となるように分割することのうちのいずれか一つのルール又はルールの組み合わせに応じて、前記第一の総折り畳み倍数Ntotal1を分割することをさらに含む。
【0238】
条項A35、条項A32からA34のいずれか1項に記載の方法であって、
前記処理回路が、
【0239】
条項A36、条項A32からA35のいずれか1項に記載の方法であって、
前記処理回路が、
【0240】
条項A37、条項A31からA36のいずれか1項に記載の方法であって、前記第二の閾値Acoは、前記処理回路における畳み込み演算ユニットの数に基づいて決定され、そして前記第一の閾値A1≦Aco/2である。
【0241】
条項A38、条項A28からA37のいずれか1項に記載の方法であって、前記元のフィルタの入力チャンネル次元サイズは、第三の閾値A2を超えず、前記折り畳みフィルタの入力チャンネル次元サイズは、第四の閾値Aciに等しく、ここで、第三の閾値A2は、第四の閾値Aciよりも小さい。
【0242】
条項A39、条項A38に記載の方法であって、
前記処理回路が、
折り畳み待ち多次元データの入力チャンネル次元サイズCiと前記第四の閾値Aciに基づき、第二の総折り畳み倍数Ntotal2を決定することと、
前記第二の総折り畳み倍数Ntotal2を第二の幅次元折り畳み倍数Nw2と第二の高さ次元折り畳み倍数Nh2に分割することと、
Nw2、Nh2及び折り畳み待ち多次元データの幅次元サイズと高さ次元サイズに基づき、折り畳み後の多次元データの幅次元サイズと高さ次元サイズを決定することと、
Nw2、Nh2及び畳み込み演算の元の畳み込みステップ長に基づき、前記畳み込み演算の折り畳み後の畳み込みステップ長を決定することとの方式に応じて、前記第二の次元折り畳みを実行することをさらに含む。
【0243】
条項A40、条項A39に記載の方法であって、
前記処理回路が、
Ntotal2=Aci/Ciaに応じて第二の総折り畳み倍数Ntotal2を決定することをさらに含み、ここで、Ciaは、Ciが最も近いAci/2nにアラインされる値であり、nは、自然数である。
【0244】
条項A41、条項A39からA40のいずれか1項に記載の方法であって、
前記処理回路が、
幅次元に優先的に分割すること、
幅次元と高さ次元に平均に分割すること、
折り畳み倍数アラインによる補完量が最小となるように分割すること、又は
前記第一の折り畳みフィルタに基づく幅次元での畳み込みステップ長がこの幅次元の折り畳み倍数で割り切れるように分割することのうちのいずれか一つのルール又はルールの組み合わせに応じて、前記第二の総折り畳み倍数Ntotal2を分割することをさらに含む。
【0245】
条項A42、条項A39からA41のいずれか1項に記載の方法であって、
前記処理回路が、
【0246】
条項A43、条項A39からA42のいずれか1項に記載の方法であって、
前記処理回路が、
【0247】
条項A44、条項A39からA43のいずれか1項に記載の方法であって、前記折り畳み待ち多次元データは、前記第一の折り畳みフィルタ及び/又は前記入力特徴マップである。
【0248】
条項A45、条項A38からA44のいずれか1項に記載の方法であって、前記第四の閾値Aciは、命令アライン要求に基づいて決定されるものであり、そして前記第三の閾値A2≦Aci/2である。
【0249】
条項A46、条項A28からA45のいずれか1項に記載の方法であって、前記中間結果に対して次元逆折り畳みを行うことは、
前記拡張フィルタが、畳み込みカーネル幅方向でシフトすることで得られる拡張フィルタのみを含む場合、前記中間結果に対して次元再構築を行うことで、前記次元逆折り畳みを実現し、出力特徴マップを得ることを含む。
【0250】
条項A47、条項A28からA45のいずれか1項に記載の方法であって、前記中間結果に対して次元逆折り畳みを行うことは、
前記拡張フィルタが、畳み込みカーネル高さ方向でシフトすることで得られる拡張フィルタを含む場合、前記中間結果に対して次元転置を行うことで、前記次元逆折り畳みを実現し、出力特徴マップを得ることを含む。
【0251】
条項A48、条項A28からA45のいずれか1項に記載の方法であって、前記中間結果に対して次元逆折り畳みを行うことは、
前記拡張フィルタが、畳み込みカーネル幅方向でシフトすることで得られる拡張フィルタを含むだけでなく、畳み込みカーネル高さ方向でシフトすることで得られる拡張フィルタも含む場合、前記中間結果に対して次元再構築と次元転置を行うことで、前記次元逆折り畳みを実現し、出力特徴マップを得ることを含む。
【0252】
条項A49、条項A47又はA48に記載の方法であって、前記中間結果に対して次元転置を行うことは、
前記中間結果の出力チャンネル次元での特徴を高さ次元に転置することを含む。
【0253】
条項A50、条項A28からA49のいずれか1項に記載の方法であって、
前記処理回路が次元再構築によって幅次元での前記第二の次元折り畳みを実現し、及び/又は
次元転置によって高さ次元での前記第二の次元折り畳みを実現することをさらに含む。
【0254】
条項A51、条項A28からA50のいずれか1項に記載の方法であって、
前記元のフィルタの入力チャンネル次元サイズは、前記第一の折り畳みフィルタの入力チャンネル次元サイズに等しく、
前記第一の折り畳みフィルタの出力チャンネル次元サイズは、前記折り畳みフィルタの出力チャンネル次元サイズに等しい。
【0255】
条項A52、条項A28からA51のいずれか1項に記載の方法であって、前記折り畳みフィルタは、オフラインで生成されるものであるか又はオンラインで生成されるものである。
【0256】
2020116317360条項B1、ニューラルネットワークモデルを実行するためのデータ処理装置であって、
前記ニューラルネットワークモデルの畳み込み層の折り畳みフィルタを記憶するためのものとして配置される記憶回路であって、前記折り畳みフィルタは、元のフィルタに対して畳み込みステップ長を複数回シフトした後に得られる複数の拡張フィルタを合成したものである記憶回路と、
前記折り畳みフィルタを利用して入力特徴マップに対して畳み込み演算を実行し、中間結果を得て、及び
前記中間結果に対して次元再配列を行うことで、出力特徴マップを得るためのものとして配置される処理回路とを含む。
【0257】
条項B2、条項B1に記載のデータ処理装置であって、前記折り畳みフィルタは、前記処理回路によって、
前記元のフィルタに対して畳み込みカーネル幅方向において横方向畳み込みステップ長をNw-1回シフトし、及び/又は畳み込みカーネル高さ方向において縦方向畳み込みステップ長をNh-1回シフトし、N個の拡張フィルタを得ることであって、ここで、N=Nw×Nhであり、NwとNhは、自然数であることと、
前記N個の拡張フィルタを出力チャンネル次元において一つの折り畳みフィルタに合成することとに応じて生成される。
【0258】
条項B3、条項B2に記載のデータ処理装置であって、前記元のフィルタの出力チャンネル数は、第一の閾値Th1を超えず、前記折り畳みフィルタの出力チャンネル数は、第二の閾値Th2に等しく、ここで、第一の閾値Th1は、第二の閾値Th2よりも小さい。
【0259】
条項B4、条項B3に記載のデータ処理装置であって、前記処理回路はさらに、
元のフィルタの出力チャンネル数Coと前記第二の閾値Th2に基づき、総折り畳み倍数Nを決定し、
前記総折り畳み倍数Nを畳み込みカーネル幅方向折り畳み倍数Nwと畳み込みカーネル高さ方向折り畳み倍数Nhに分割し、
Nw、Nh及び元のフィルタの畳み込みステップ長に基づき、前記折り畳みフィルタの畳み込みステップ長を決定し、及び
Nw、Nh及び元のフィルタの畳み込みカーネルと畳み込みステップ長に基づき、前記折り畳みフィルタの畳み込みカーネルサイズを決定するために用いられ、前記畳み込みカーネルサイズは、前記拡張フィルタの畳み込みカーネルサイズに対応する。
【0260】
条項B5、条項B4に記載のデータ処理装置であって、前記処理回路はさらに、
N=Th2/Caに応じて総折り畳み倍数Nを決定するためのものとして配置され、ここで、Caは、Coが最も近いTh2/2nにアラインされる値であり、nは、自然数である。
【0261】
条項B6、条項B4又はB5に記載のデータ処理装置であって、前記処理回路はさらに、
畳み込みカーネル幅方向に優先的に分割すること、
畳み込みステップ長がより小さい方向に優先的に分割すること、
畳み込みカーネル幅方向と畳み込みカーネル高さ方向に平均に分割すること、又は
前記折り畳みフィルタの畳み込みカーネルサイズが最小となるように分割することのうちのいずれか一つのルール又はルールの組み合わせに応じて、前記総折り畳み倍数Nを分割するためのものとして配置される。
【0262】
条項B7、条項B4からB6のいずれか1項に記載のデータ処理装置であって、前記処理回路はさらに、
【0263】
条項B8、条項B4からB7のいずれか1項に記載のデータ処理装置であって、前記処理回路はさらに、
【0264】
条項B9、条項B1からB8のいずれか1項に記載のデータ処理装置であって、前記処理回路はさらに、
前記拡張フィルタが、前記元のフィルタが畳み込みカーネル幅方向でシフトすることで得られる拡張フィルタのみを含む場合、前記中間結果に対して次元再構築を行うことで、出力特徴マップを得るためのものとして配置される。
【0265】
条項B10、条項B1からB8のいずれか1項に記載のデータ処理装置であって、前記処理回路はさらに、
前記拡張フィルタが、前記元のフィルタが畳み込みカーネル高さ方向でシフトすることで得られる拡張フィルタを含む場合、前記中間結果に対して次元転置を行うことで、出力特徴マップを得るためのものとして配置される。
【0266】
条項B11、条項B1からB8のいずれか1項に記載のデータ処理装置であって、前記処理回路はさらに、
前記拡張フィルタが、前記元のフィルタが畳み込みカーネル幅方向でシフトすることで得られる拡張フィルタを含むだけでなく、前記元のフィルタが畳み込みカーネル高さ方向でシフトすることで得られる拡張フィルタも含む場合、前記中間結果に対して次元再構築と次元転置を行うことで、出力特徴マップを得るためのものとして配置される。
【0267】
条項B12、条項B10又はB11に記載のデータ処理装置であって、前記処理回路はさらに、
前記中間結果の出力チャンネル次元での特徴を高さ次元に転置するためのものとして配置される。
【0268】
条項B13、条項B3からB12のいずれか1項に記載のデータ処理装置であって、前記第二の閾値Th2は、前記処理回路における畳み込み演算ユニットの数に基づいて決定され、そして前記第一の閾値Th1≦Th2/2である。
【0269】
条項B14、条項B1からB13のいずれか1項に記載のデータ処理装置であって、前記元のフィルタの入力チャンネル数は、前記折り畳みフィルタの入力チャンネル数に等しい。
【0270】
条項B15、条項B1からB14のいずれか1項に記載のデータ処理装置であって、前記折り畳みフィルタは、オフラインで生成されるものであるか又はオンラインで生成されるものである。
【0271】
条項B16、チップであって、条項B1からB15のいずれか1項に記載のデータ処理装置を含むことを特徴とする。
【0272】
条項B17、ボードカードであって、条項B16に記載のチップを含むことを特徴とする。
【0273】
条項B18、記憶回路と処理回路とを含むデータ処理装置によって実施されるニューラルネットワークモデルを実行するための方法であって、
前記処理回路が、前記記憶回路に記憶されている前記ニューラルネットワークモデルの畳み込み層の折り畳みフィルタを利用して入力特徴マップに対して畳み込み演算を実行することで、中間結果を得ることであって、前記折り畳みフィルタは、元のフィルタに対して畳み込みステップ長を複数回シフトした後に得られる複数の拡張フィルタを合成したものであることと、
前記処理回路が、前記中間結果に対して次元再配列を行うことで、出力特徴マップを得ることとを含む。
【0274】
条項B19、条項B18に記載の方法であって、前記折り畳みフィルタは、前記処理回路によって、
前記元のフィルタに対して畳み込みカーネル幅方向において横方向畳み込みステップ長をNw-1回シフトし、及び/又は畳み込みカーネル高さ方向において縦方向畳み込みステップ長をNh-1回シフトし、N個の拡張フィルタを得ることであって、ここで、N=Nw×Nhであり、ここで、NwとNhは、自然数であることと、
前記N個の拡張フィルタを出力チャンネル次元において一つの折り畳みフィルタに合成することとに応じて生成される。
【0275】
条項B20、条項B19に記載の方法であって、前記元のフィルタの出力チャンネル数は、第一の閾値Th1を超えず、前記折り畳みフィルタの出力チャンネル数は、第二の閾値Th2に等しく、ここで、第一の閾値Th1は、第二の閾値Th2よりも小さい。
【0276】
条項B21、条項B20に記載の方法であって、
前記処理回路が、元のフィルタの出力チャンネル数Coと前記第二の閾値Th2に基づき、総折り畳み倍数Nを決定することと、
前記総折り畳み倍数Nを畳み込みカーネル幅方向折り畳み倍数Nwと畳み込みカーネル高さ方向折り畳み倍数Nhに分割することと、
Nw、Nh及び元のフィルタの畳み込みステップ長に基づき、前記折り畳みフィルタの畳み込みステップ長を決定することと、
Nw、Nh及び元のフィルタの畳み込みカーネルと畳み込みステップ長に基づき、前記折り畳みフィルタの畳み込みカーネルサイズを決定ことであって、前記畳み込みカーネルサイズは、前記拡張フィルタの畳み込みカーネルサイズに対応することとをさらに含む。
【0277】
条項B22、条項B21に記載の方法であって、
前記処理回路が、
N=Th2/Caに応じて総折り畳み倍数Nを決定することをさらに含み、ここで、Caは、Coが最も近いTh2/2nにアラインされる値であり、nは、自然数である。
【0278】
条項B23、条項B21からB22のいずれか1項に記載の方法であって、
前記処理回路が、
畳み込みカーネル幅方向に優先的に分割すること、
畳み込みステップ長がより小さい方向に優先的に分割すること、
畳み込みカーネル幅方向と畳み込みカーネル高さ方向に平均に分割すること、又は
前記折り畳みフィルタの畳み込みカーネルサイズが最小となるように分割することのうちのいずれか一つのルール又はルールの組み合わせに応じて、前記総折り畳み倍数Nを分割することをさらに含む。
【0279】
条項B24、条項B21からB23のいずれか1項に記載の方法であって、
前記処理回路が、
【0280】
条項B25、条項B21からB24のいずれか1項に記載の方法であって、
前記処理回路が、
【0281】
条項B26、条項B18からB25のいずれか1項に記載の方法であって、前記中間結果に対して次元再配列を行うことは、
前記拡張フィルタが、前記元のフィルタが畳み込みカーネル幅方向でシフトすることで得られる拡張フィルタのみを含む場合、前記中間結果に対して次元再構築を行うことで、出力特徴マップを得ることを含む。
【0282】
条項B27、条項B18からB25のいずれか1項に記載の方法であって、前記中間結果に対して次元再配列を行うことは、
前記拡張フィルタが、前記元のフィルタが畳み込みカーネル高さ方向でシフトすることで得られる拡張フィルタを含む場合、前記中間結果に対して次元転置を行うことで、出力特徴マップを得ることを含む。
【0283】
条項B28、条項B18からB25のいずれか1項に記載の方法であって、前記中間結果に対して次元再配列を行うことは、
前記拡張フィルタが、前記元のフィルタが畳み込みカーネル幅方向でシフトすることで得られる拡張フィルタを含むだけでなく、前記元のフィルタが畳み込みカーネル高さ方向でシフトすることで得られる拡張フィルタも含む場合、前記中間結果に対して次元再構築と次元転置を行うことで、出力特徴マップを得ることを含む。
【0284】
条項B29、条項B27又はB28に記載の方法であって、前記中間結果に対して次元転置を行うことは、
前記中間結果の出力チャンネル次元での特徴を高さ次元に転置することを含む。
【0285】
条項B30、条項B20からB29のいずれか1項に記載の方法であって、前記第二の閾値Th2は、前記処理回路における畳み込み演算ユニットの数に基づいて決定され、そして前記第一の閾値Th1≦Th2/2である。
【0286】
条項B31、条項B18からB30のいずれか1項に記載の方法であって、前記元のフィルタの入力チャンネル数は、前記折り畳みフィルタの入力チャンネル数に等しい。
【0287】
条項B32、条項B18からB31のいずれか1項に記載の方法であって、前記折り畳みフィルタは、オフラインで生成されるものであるか又はオンラインで生成されるものである。
【0288】
本明細書において本開示の複数の実施例を示して説明したが、当業者にとって明らかなように、これらの実施例は、ただ例示的な方式で提供されるものにすぎない。当業者であれば、本開示の思想と精神から逸脱することなく、様々な修正、変更及び代替的な形態を想到しうる。理解すべきこととして、本開示を実践する過程において、本明細書に記述された本開示の実施例の様々な代替案を採用してもよい。添付された特許請求の範囲は、本開示の保護範囲を限定することを意図し、そのため、これらの請求項の範囲内の同等又は代替案をカバーする。