JP7450815B2 - 階層的重み疎畳み込み処理のための方法とシステム - Google Patents

階層的重み疎畳み込み処理のための方法とシステム Download PDF

Info

Publication number
JP7450815B2
JP7450815B2 JP2023524504A JP2023524504A JP7450815B2 JP 7450815 B2 JP7450815 B2 JP 7450815B2 JP 2023524504 A JP2023524504 A JP 2023524504A JP 2023524504 A JP2023524504 A JP 2023524504A JP 7450815 B2 JP7450815 B2 JP 7450815B2
Authority
JP
Japan
Prior art keywords
filter
layer
zero weights
bit representation
zero
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2023524504A
Other languages
English (en)
Other versions
JP2023534317A (ja
Inventor
シアオ チーピン
ヤン エンシュイ
ワン ウェイ
ルー ヨン
Original Assignee
モフェット インターナショナル カンパニー,リミティド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by モフェット インターナショナル カンパニー,リミティド filed Critical モフェット インターナショナル カンパニー,リミティド
Publication of JP2023534317A publication Critical patent/JP2023534317A/ja
Priority to JP2024033128A priority Critical patent/JP2024052988A/ja
Application granted granted Critical
Publication of JP7450815B2 publication Critical patent/JP7450815B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)

Description

開示は、一般的には人工知能に関し、より特別には、重みが疎(希薄)である階層的畳み込み(以降、「階層的重み疎畳み込み」と表記)処理に関する。
ニューラルネットワーク(NN)は現在では、画像および映像認識、レコメンダシステム、分類、医療画像解析、および自然言語処理などのような多くの現代の人工知能(AI)適用に対する基盤である。NNは、自己運転自動車および癌の検出から複雑なゲームのプレイまで種々の使用シナリオにおいて採用されている。典型的なNNは、集中的、従って高価な(演算およびエネルギーの観点から)畳み込み動作が実行される一連の畳み込み層を備えることができる。
近年、非ゼロ重みの数を削減するためにフィルタを切り詰めるなどのように、NNにおける畳み込み処理に疎性(疎であること)を導入することによりNNの演算効率を構造するために種々のアプローチが開発されてきている。しかし、既存のハードウェアアーキテクチャは、疎の重み(例えば、非ゼロ重みの制限された数)を有するフィルタを含む畳み込みに対して最適化されていない汎用演算エンジン(例えば、GPU)に依存している。これらのアーキテクチャは、疎フィルタをメモリに効率的に記憶しない傾向があり、または、大規模に並行性の高いレベルに到達するために疎性を十分に利用しない傾向がある。従って、効率的な疎畳み込みに対する新しいシステムアーキテクチャを構築することは望ましいことである。
本明細書の種々の実施形態は、階層的重み疎畳み込み処理と並行化のためのシステム、方法、および非一時的コンピュータ読み取り可能媒体を含むことができる。
1つの態様によれば、階層的重み疎畳み込みのための方法は、ニューラルネットワークの畳み込み層における入力テンソルと複数のフィルタを取得することと、入力テンソルを複数のサブテンソルに分割すること、および複数のサブテンソルを複数のプロセッサに割り当てることと、複数のフィルタのそれぞれに対して、フィルタにおける複数の非ゼロ重みの階層的ビット表現を生成することと、ここにおいて、階層的ビット表現は、第1層と第2層を備え、第1層は、フィルタにおける複数のサブフィルタに対応し、対応するサブフィルタは、少なくとも1つの非ゼロ重みを有しているかどうかを示す複数のビットを備え、第2層は、フィルタにおける複数の非ゼロ重みに対応する複数のキーバリューペアを備え、各キーバリューペアは、複数の非ゼロ重みの1つを値として備え、複数の非ゼロ重みの1つのチャネル識別子をキーとして備え、階層的ビット表現に基づいて、複数のプロセッサのそれぞれにより、複数の非ゼロ重みの1つ以上と、割り当てられたサブテンソルから対応する入力値を識別することと、部分和を取得するために、1つ以上の識別された非ゼロ重みおよび対応する入力値に対して積和(MAC)演算を実行することと、ニューラルネットワークの畳み込み層の出力テンソルを構築するために、複数のプロセッサのそれぞれにより取得された部分和を累積することを備えている。
幾つかの実施形態においては、複数のサブテンソルを複数のプロセッサに割り当てることは、複数のプロセッサのそれぞれに対して、複数のサブテンソルの1つ以上を、プロセッサの内部バッファに記憶することを備えている。
幾つかの実施形態においては、複数のサブテンソルのそれぞれと、複数のサブフィルタのそれぞれは、同じ数のチャネルを有している。
幾つかの実施形態においては、複数の非ゼロ重みの1つ以上および対応する入力値を割り当てられたサブテンソルから階層的ビット表現に基づいて識別することは、複数の非ゼロ重みのそれぞれに対して、階層的ビット表現の第1層に基づいて、非ゼロ重みが位置しているフィルタチャネルグループに対応するチャネルグループインデックスを決定することと、階層的ビット表現の第2層に基づいて、フィルタチャネルグループ内の非ゼロ重みのオフセットを決定することと、チャネルグループインデックスとオフセットに基づいて、割り当てられたサブテンソルから入力値を識別することを備えている。
幾つかの実施形態においては、階層的ビット表現は、第1層と第2層との間に第3層を更に備え、第3層は、複数のサブフィルタのそれぞれに対して、サブフィルタの複数の水平面にそれぞれ対応する複数のビットベクトルを備え、複数のビットベクトルのそれぞれは、対応する水平面が、複数の非ゼロ重みの少なくとも1つを備えているかどうかを示している。
幾つかの実施形態においては、複数の非ゼロ重みの1つ以上および対応する入力値を割り当てられたサブテンソルから階層的ビット表現に基づいて識別することは、複数の非ゼロ重みのそれぞれに対して、階層的ビット表現の第1層に基づいて、非ゼロ重みが位置しているフィルタチャネルグループに対応するチャネルグループインデックスを決定することと、階層的ビット表現の第3層に基づいて、非ゼロ重みの高さインデックスと幅インデックスを決定することと、階層的ビット表現の第2層に基づいて、フィルタチャネルグループ内の非ゼロ重みのオフセットを決定することと、チャネルグループインデックス、高さインデックス、幅インデックス、およびオフセットに基づいて、割り当てられたサブテンソルから入力値を識別することを備えている。
幾つかの実施形態においては、複数のフィルタは、複数のサブフィルタのそれぞれが、すべてのゼロ重み、または予め決められている数の非ゼロ重みの何れかを有するように切り詰められる。
幾つかの実施形態においては、複数のプロセッサは、複数の行と列を備えているマトリックスに電気的に配置され、複数のプロセッサのそれぞれは、1つ以上の列方向の近隣プロセッサを有している。
幾つかの実施形態においては、複数のプロセッサのそれぞれは、1つ以上のキーバリューペアを、その列方向の近隣プロセッサの1つの内部バッファから読み込むことを可能にされている。
幾つかの実施形態においては、方法は、複数のチャネルを備えているチャネルグループから複数のサブテンソルの1つ以上をプロセッサの行に割り当てることと、プロセッサの行のそれぞれが、階層的ビット表現に基づいて、1つのサブテンソルと、対応するサブフィルタとの間の積和演算を完了し、部分和を取得した後に、その部分和を、プロセッサの行の間で回転することを更に備えることができる。
幾つかの実施形態においては、方法は、同じ高さインデックスと同じ重みインデックスから複数のサブフィルタの1つ以上を、複数のプロセッサのそれぞれに割り当てることと、複数のプロセッサのそれぞれが、階層的ビット表現に基づいて、複数のサブフィルタの1つ以上と、対応するサブフィルタとの間の積和演算を完了し、部分和を取得した後に、出力テンソルを構築するために、部分和を累積することを更に備えることができる。
他の態様によれば、階層的重み疎畳み込みのためのシステムが提供される。システムは、1つ以上のプロセッサと、1つ以上のプロセッサに結合され、命令を有して構成されている1つ以上の非一時的コンピュータ読み取り可能メモリを備えることができ、命令はシステムに、ニューラルネットワークの畳み込み層における入力テンソルと複数のフィルタを取得することと、入力テンソルを複数のサブテンソルに分割すること、および複数のサブテンソルを複数のプロセッサに割り当てることと、複数のフィルタのそれぞれに対して、フィルタにおける複数の非ゼロ重みの階層的ビット表現を生成することと、ここにおいて、階層的ビット表現は、第1層と第2層を備え、第1層は、フィルタにおける複数のサブフィルタに対応し、対応するサブフィルタは、少なくとも1つの非ゼロ重みを有しているかどうかを示す複数のビットを備え、第2層は、フィルタにおける複数の非ゼロ重みに対応する複数のキーバリューペアを備え、各キーバリューペアは、複数の非ゼロ重みの1つを値として備え、複数の非ゼロ重みの1つのチャネル識別子をキーとして備え、階層的ビット表現に基づいて、複数のプロセッサのそれぞれにより、複数の非ゼロ重みの1つ以上と、割り当てられたサブテンソルから対応する入力値を識別することと、部分和を取得するために、1つ以上の識別された非ゼロ重みおよび対応する入力値に対して積和(MAC)演算を実行することとと、ニューラルネットワークの畳み込み層の出力テンソルを構築するために、複数のプロセッサのそれぞれにより取得された部分和を累積することを備えている動作を実行させるために1つ以上のプロセッサにより実行可能である。
更に他の態様によれば、階層的重み疎畳み込みのための非一時的コンピュータ読み取り可能記憶媒体が提供される。媒体は命令で構成することができ、命令は1つ以上のプロセッサに、ニューラルネットワークの畳み込み層における入力テンソルと複数のフィルタを取得することと、入力テンソルを複数のサブテンソルに分割すること、および複数のサブテンソルを複数のプロセッサに割り当てることと、複数のフィルタのそれぞれに対して、フィルタにおける複数の非ゼロ重みの階層的ビット表現を生成することと、ここにおいて、階層的ビット表現は、第1層と第2層を備え、第1層は、フィルタにおける複数のサブフィルタに対応し、対応するサブフィルタは、少なくとも1つの非ゼロ重みを有しているかどうかを示す複数のビットを備え、第2層は、フィルタにおける複数の非ゼロ重みに対応する複数のキーバリューペアを備え、各キーバリューペアは、複数の非ゼロ重みの1つを値として備え、複数の非ゼロ重みの1つのチャネル識別子をキーとして備え、階層的ビット表現に基づいて、複数のプロセッサのそれぞれにより、複数の非ゼロ重みの1つ以上と、割り当てられたサブテンソルから対応する入力値を識別することと、部分和を取得するために、1つ以上の識別された非ゼロ重みおよび対応する入力値に対して積和(MAC)演算を実行することと、ニューラルネットワークの畳み込み層の出力テンソルを構築するために、複数のプロセッサのそれぞれにより取得された部分和を累積することを備えている動作を実行させるために1つ以上のプロセッサにより実行可能である。
ここにおいて開示されているシステム、方法、および非一時的コンピュータ読み取り可能媒体のこれらの、および他の特徴は、動作の方法と、構造の関連する要素の機能と、パーツの組み合わせと、製造の経済性と共に、全体が本明細書の一部を形成し、類似の参照番号は種々の図面において対応するパーツを示している図面を参照して、下記の記述と付随する特許請求の範囲を考慮することにより明白になるであろう。しかし、図面は例示と記述のみの目的のためであり、発明の制限の定義としては意図されていないということは明確に理解されるべきである。
種々の実施形態に従う、例としての畳み込みニューラルネットワーク(CNN)を示す図である。 種々の実施形態に従う、例としての畳み込み処理を示す図である。 種々の実施形態に従う、入力テンソルとフィルタを分割するための例としての方法を示す図である。 種々の実施形態に従う、非ゼロ重みを記憶するための例としての階層メモリレイアウトを示す図である。 種々の実施形態に従う、階層的重み疎畳み込みのための例としてのシステムを示す図である。 種々の実施形態に従う、階層的重み疎畳み込みのための例としてのシステムアーキテクチャを示す図である。 種々の実施形態に従う、階層的重み疎畳み込みのための他の例としてのシステムアーキテクチャを示す図である。 種々の実施形態に従う、階層的重み疎畳み込みのための例としての方法を示す図である。 ここにおいて記述されている実施形態の何れも実現できる例としてのコンピュータシステムを示す図である。
ここにおいて記述されている実施形態は、ニューラルネットワークにおける階層的重み疎畳み込みのための方法、システム、および装置を提供する。畳み込みプロセスは、画像またはオーディオ波から導出される特徴マップ、またはニューラルネットワークにおける前の層から出力される活性化などのような、入力データの特徴を前の層から抽出するための基本的であるが、演算的には高価な動作のことを指すことができる。畳み込みプロセスへの入力データは入力テンソルと称することができ、畳み込みプロセスの出力は出力テンソルと称することができる。入力テンソルは、特徴マップの複数のチャネルを備えることができる。例えば、RGB画像は3つのチャネル(赤のチャネル、緑のチャネル、および青のチャネル)を有する入力テンソルとして表すことができ、各チャネルは特徴マップ(例えば、元のRGB画像とサイズは同じであるが、赤、緑、または青色の1つのみにより生成されているグレースケール画像)を備えている。入力テンソルから特徴を抽出するために、1つ以上の特徴抽出器(フィルタとも呼ばれる)を、畳み込み(例えば、スライディングまたは移動)の方法で入力テンソルに適用できる。特徴検出器(フィルタ)と入力テンソルとの間の積和(MAC)演算を、各畳み込みステップの間に実行できる。畳み込みステップから生成される出力は、畳み込みプロセスの出力テンソルを形成するために引き続いて組み立てることができる。出力テンソルは、ニューラルネットワークにおける次の層の入力テンソルとなることができる。幾つかの場合においては、複数の入力テンソルを畳み込み層に含めることができる。
畳み込みプロセスの間、演算コストを削減し、推測速度を向上するために、多数のゼロを導入することによりフィルタを切り詰める、または疎にすることができる。例えば、フィルタにおける値の50%超をゼロに設定できる。本明細書の幾つかの実施形態は、疎にされたフィルタをメモリ効率の良いレイアウトに効率的に記憶し、複数の処理エンティティ(PE)(例えば、プロセッサ)上で畳み込み処理を並行化することによりフィルタの疎性を利用する。
幾つかの実施形態においては、畳み込み処理に関与するために利用可能なPEの数に従って、入力テンソルを複数のサブテンソルにまず分割できる。サブテンソルのそれぞれは、複数のPEの1つに割り当てることができ、畳み込みプロセスの複数の反復(NNにおける複数の畳み込み層に対応する)の間を通して、PEのローカルメモリ/バッファからスワップアウトすることなくそこに留まることができる。畳み込みプロセスの各反復の後、入力としてPEに割り当てられたサブテンソルは更新でき、入力に進化させることができ、それは、畳み込みプロセスの次の反復に対する入力として使用できる。幾つかの実施形態においては、更新されたサブテンソルは、メモリ管理目的のために一時的にPEからスワップアウトさせることができ、次の反復のためにそこにスワップバックさせることができる。
幾つかの実施形態においては、疎フィルタのそれぞれは、メモリ効率の良いレイアウトに記憶できる複数のサブフィルタに分割できる。例えば、切り詰められて分割された後に、疎フィルタのそれぞれは、サブフィルタのそれぞれがすべてのゼロ重み、またはWとして示されている、予め定義されている数の非ゼロ重みの何れかを備えるように分割できる。各サブフィルタ内の非ゼロ重みの数は、サブフィルタのサイズ(例えば、サブフィルタのより大きなサイズは、より多くの非ゼロ重みを含むことができる)、および所望される特徴抽出精度(例えば、少なすぎる非ゼロ重みは特徴の損失を引き起こす可能性がある)の影響を受け得る。幾つかの実施形態においては、各サブフィルタ内の非ゼロ重みの数(0またはWの何れか)の知見に基づいて、疎フィルタのそれぞれは、複数の乗算層を有する階層的ビット表現(例えば、メモリレイアウトの形状)において表現できる。例えば、最上部層は、フィルタ内の複数のブロックが非ゼロ重みを含んでいるかどうかを表すために複数のビットを含むことができ、第2層は同様に、ブロックのそれぞれ内の複数のセクションが非ゼロ重みを含んでいるかどうかを表すために複数のビットを含むことができ、最下部層は、実際の非ゼロ重みを記憶できる。それぞれの階層的ビット表現における層の数は、例えば、フィルタがどのように分割されたかに基づいて決定できる。
疎フィルタは階層的ビット表現として表されるので、対応する畳み込み処理は、階層的重み疎畳み込みと称することができる。フィルタの階層的ビット表現は、PEのそれぞれが非ゼロ重みをより効率的に記憶および反復することを可能にできる。例えば、階層的ビット表現は、フィルタのメモリ占有面積を大幅に削減でき(例えば、各PEは、局所畳み込みを実行するために、グローバルバッファからより少ないデータをその局所バッファに読み込むことができ)、ソリューションを、制限されているメモリリソースを有する装置に対して適切なものすることができる。例えば、ここにおいて記述されている実施形態は、エッジ演算システムにおけるエッジ装置に適用できる。階層的ビット表現に関する詳細な記述については図4を参照することができる。幾つかの実施形態においては、サブフィルタとサブテンソルは、複数のPEが、性能を高めることと並行して局所動作を実行できるように、異なるPEに割り当てられたサブテンソルとサブフィルタの対は互いから独立していることを保証するような方法で複数のPEに割り当てることができる。割り当てに関する詳細な記述については図6Aと6Bを参照することができる。
上述した分割および並行処理方式はまた高度に拡張性がある。幾つかの実施形態においては、並行処理の各ラウンド(反復とも呼ばれる)は複数の部分和を生成でき、複数のPEは、各ラウンドで生成された部分和を累積して、累積された結果を出力テンソルとして組み立てるために、複数のラウンドに対して並行処理を実行できる。幾つかの実施形態においては、複数のラウンドにわたって各PEにより生成された部分和は、データを他のPEと交換する必要なく、出力テンソルの一部を生成するために直接累積できる(各PE内で)。
下記の記述においては、本発明の特定の、非制限的な実施形態が図を参照して記述される。ここにおいて開示される任意の実施形態の特別な特徴と態様は、ここにおいて開示される任意の他の実施形態の特別な特徴と態様と共に使用でき、および/または、それらと組み合わせることができる。そのような実施形態は例であり、本発明の範囲内の少数の実施形態の例にすぎないということも理解されるべきである。本発明が関係する技術における技量を有する者には明白な種々の変更と修正は、付随する特許請求の範囲において更に定義されるように、本発明の精神、範囲、および意図内であると考えられる。
図1は、種々の実施形態に従う、例としての畳み込みニューラルネットワーク(CNN)を示している。CNNは、画像理解、音声認識、ゲームプレイ、ロボットを含む多様な適用において広く使用され、畳み込み動作が起こる畳み込み層を含む層の深層階層を採用できる。CNNは、例としての目的のために使用されるのみで、ここにおいて開示される実施形態は、畳み込み動作を含む他のニューラルネットワークに適用できるということに注目できる。
図1において示されている例としてのニューラルネットワーク100は、第1畳み込み層120と第1正規化線形ユニット(ReLU)層、第1プーリング層130、第2畳み込み層140と第2正規化線形ユニット層、第2プーリング層150、平坦化層160、および全結合(FC)層170などのような複数の層を備えている。この例としてのニューラルネットワーク100は、所与の画像におけるアルファベットを、複数の既知のアルファベットクラスと一致させるように訓練できる。図1において示されているように、文字のある画像110はニューラルネットワーク100に入力され、複数の層を通して変換される。最終層(FC層170)は、入力画像100における文字と、既知のアルファベットクラスのそれぞれとの間の類似性を表している複数のスコアを結果的に生成する。
幾つかの実施形態においては、入力画像110はまず入力テンソルに変換できる。例として、入力画像110が32*32画素を含み、各画素は3つの色チャネル(赤、緑、青)を有している場合、その対応する入力テンソルは、32*32*3のサイズ、つまり、32の高さ、32の幅、そして3の深度(例えば、チャネル数)を有することができる。記述を容易にするために、三次元サイズをHWC形式と呼ぶことができ、Hは入力テンソルの高さを指し(例えば、上記の画像例においては32)、Wは入力テンソルの幅を指し(例えば、上記の画像例においては32)、そしてCは入力テンソルにおけるチャネル数を指している(上記の画像例においては3)。幾つかの場合においては、畳み込み層に対して複数の入力テンソルがある場合(例えば、畳み込み層に入力された複数の画像がある場合、または、前の層から受信した複数の入力活性化テンソルがある場合)、各入力テンソルは、NHWCフォーマットで表すことができ、ここにおいてNは、入力テンソルの一群内の入力テンソルのインデックスを指している。下記の記述においては、明示的にそうでないと指定されない限り、Nは簡潔性のために省略できる(例えば、1つの入力テンソルのみがあると仮定することにより)。この技術における者には、実施形態をN>1の場合を含むように拡張することは明白である。
幾つかの実施形態においては、CNNは複数の畳み込み層(例えば、図1における第1畳み込み層120と第2畳み込み層140)を含むことができる。畳み込み層は、入力テンソル(例えば、元の入力画像、または、前の層からの入力テンソル)を、良好な予測/分類を得るためには重要な特徴を失うことなく、処理することがより容易な形態にする。画像処理における1つ以上の特徴検出器、例えば、エッジ検出器、曲線検出器を、畳み込み層における畳み込み処理に関与させることができる。これらの特徴検出器は、フィルタと称することができる。フィルタのそれぞれは、入力テンソルと同じ数のチャネルを有することができる。記述を容易にするために、本明細書では、「複数のチャネルを共有する」という用語を、各フィルタと入力テンソルは同じ数のチャネルを有することを表現するために使用する。例えば、入力テンソルは32*32*3マトリックスであり、例としてのフィルタは3*3*3マトリックスであってよい。畳み込み処理の詳細な説明については図2の記述を参照できる。
CNNにおける畳み込み層には、非線形性をCNNに導入するために非線形活性化関数が続くことができる。例としての非線形活性化関数は、シグモイド、ハイパボリック正接、および正規化線形ユニット(ReLU)を含んでいる。図1において示されているように、ReLU関数(ReLU層とも称することができる)は、畳み込み層120と140のそれぞれに続いている。ReLU関数は、畳み込み層120または140により生成された幾つかの出力(活性化)を取り除くために要素に関する活性化関数を適用できる。例えば、max(0,x)関数は、畳み込み出力におけるすべての負の活性化を取り除き、正の活性化のみを次の層に供給するために採用できる。ReLU関数は、出力活性化のサイズは変更できないが、負の活性化はすべてなくなっているので、後続の層における演算効率を向上するために、アクティブニューロンの数を制限できる。
CNNはまた、入力テンソルの次元を削減する多様な演算を提供するために1つ以上のプーリング層を含むことができる。図1において、ニューラルネットワーク100の第1プーリング層130と第2プーリング層150はそれぞれ、空間次元(高さと幅)に沿って、入力テンソルに対してダウンサンプリング動作を実行できるが、通常は、深度次元(例えば、チャネル数)は変更しない。
ニューラルネットワークにおける全結合(FC)層は、前の層(例えば、図1におけるプーリング層150、または畳み込み層)からの出力により表されるような高レベルの特徴の非線形組み合わせを学習でき、それ相応にクラススコアを演算できる。図1を参照すると、プーリング層150からの出力は、最初にベクトルに平坦化でき(例えば、平坦化層160において)、そのベクトルから、複数のクラスに対する最終スコアを計算するために、FC層170によりその空間における固有非学習関数を学習できる。スコアのそれぞれは、入力画像におけるアルファベットと対応するクラスとの間の定量化された類似性を表すことができる。
図2は、種々の実施形態に従う、例としての畳み込み処理を示している。ニューラルネットワークにおける典型的な畳み込み処理は、1つ以上の入力テンソルと複数のフィルタを受信すること(または取得すること)および1つ以上の出力テンソルを生成するために畳み込みプロセスを実行することにより開始できる。簡潔性のために、図2における、例としての畳み込み処理220は、1つの入力テンソル222、1つのフィルタ224、および1つの出力テンソル225を含んでいる。入力テンソル222は、その高さ(H)、幅(W)、およびチャネル数(C)で示すことができる。図2において示されているように、入力テンソル222は、高さが3、幅が3、およびチャネル数が3の3*3*3マトリックスであってよい。各チャネルにおける入力テンソル222の高さと幅(例えば、3(H)*3(W))は、二次元入力特徴マップと称することができる。{h,w,c}のタプル(組)は、チャネルcにおける二次元入力特徴マップの1つの要素を指すことができる。例えば、{2,1,1}は、{2,1}(例えば、高さに関するインデックスが2、および幅に関するインデックスが1)で定義される場所での、チャネル1における二次元入力特徴マップの要素を指すことができる。フィルタ224は、その高さ(R)、幅(S)、およびチャネル数(C)により示すことができる。図2においては、フィルタ224は、1*1*3マトリックスであってよい。各チャネルにおけるフィルタ224の高さと幅(例えば、1(R)*1(S))はカーネルと称することができる(フィルタ224は3つのチャネルそれぞれにおいて3つのカーネルを有している)。
幾つかのシナリオにおいては、畳み込み処理は、ストライド(フィルタが移動する幅)とパディング(ピクセルを詰めること)を含むことができる。例えば、ストライドが1のときは、フィルタは一度に1つの画素を畳み込み(例えば、移動する、スライドする)、ストライドが2のときは、フィルタはスライドするときに一度に2画素を畳み込む。より大きなストライドは、空間的により小さな出力テンソル(出力テンソルにおける、より小さいH*W)を生成する。他の例として、フィルタの空間サイズ(高さ*幅)が1*1より大きい(例えば、3*3、または5*5)のときは、入力テンソルは、フィルタを適用し、例えば、入力および出力される高さと幅が同じになるように入力テンソルの空間サイズを保つために出力テンソルの空間サイズを制御するためにその境界の周りをゼロで詰めることができる。図2においては、入力テンソル222に対してはパディングは実行されず、ストライドは1と仮定する。
図2において示されている畳み込み処理220の間、ドット積228などのようなドット積を生成するために、積和演算が、フィルタ224および、入力テンソルの、第1深度方向スライス223などのような各深度方向スライスに対して実行される。例えば、入力テンソル222の第1深度方向スライス223は、入力テンソル222の左上の1*1*3テンソル(3つのグレーの立方体)である。第1深度方向スライス223とフィルタ224の両者は、1*1*3のサイズを有している。積和演算の後、生成されたドット積228は、出力テンソル225の一部として組み立てることができる。そのため、出力テンソル225は、フィルタ224が入力テンソル222におけるすべての深度方向スライス(図2においては9個のスライス)を畳み込んだ(例えば、移動した)後に決定できる。出力テンソル225におけるチャネル数は、畳み込みの間に適用したフィルタの数に等しい。畳み込み処理220は1つのフィルタ224を使用するだけなので、対応する出力テンソル228は1つのチャネルを有するだけである。
比較すると、畳み込み処理260は2つのフィルタ264と265を含んでいる。フィルタ264を入力テンソル262を通して畳み込むことにより、第1チャネルにおける出力テンソル268の値(例えば、チャネル1における二次元出力特徴マップ)を決定できる。フィルタ265を入力テンソル262を通して畳み込むことにより、第2チャネルにおける出力テンソル268の値(例えば、チャネル2における二次元出力特徴マップ)を決定できる。従って、結果としての出力テンソル268は、二次元出力特徴マップの2つのチャネルを備えている。
畳み込み処理の間の幾つかの動作は並行化させることができるということに注目できる。例えば、フィルタに対して実行される積和演算は、異なるフィルタは、異なる出力チャネルに対する二次元出力特徴マップを生成するので、他のフィルタに対する積和演算とは独立している。他の例として、入力テンソルにおける深度方向スライスは、それらは、それぞれの二次元出力特徴マップ上の異なる場所に対する値を生成するので、互いに独立している。理論的に理想的な並行化は、複数の処理エンティティ(例えば、プロセッサ、コア、またはスレッド)の間ですべてのこれらの演算が並行化できる場合に達成できる。しかし、現実の世界の適用は、多数のフィルタと大量の入力テンソルを有する可能性があるので、理論的に理想的な並行化を追い求めることは、達成できない演算能力を有するハードウェア(例えば、膨大な数の処理エンティティとメモリ交換機構を有するハードウェア)を必要とする可能性がある。下記の記述において開示されている実施形態は、所与のハードウェアの並行処理能力を全面的に利用することにより理想的な並行化を達成するための方法(および対応するシステム、記憶媒体)を提供し、それらはより拡張可能であり、より実際的なアプローチである。
図3は、種々の実施形態に従う、入力テンソルとフィルタを分割するための例としての方法を示している。各畳み込みプロセスの間、各入力テンソル322と各フィルタ342と343は、複数のチャネルを共有する(つまり、同じ数のチャネルを有する)。一般性を失うことなく、各入力テンソルは、高さ次元(H)、幅次元(W)、およびチャネル次元(C)を有する三次元テンソルとして表すことができる。各フィルタも同様に、高さ次元(R)、幅次元(S)、およびチャネル次元(C)を有する三次元テンソルとして表すことができる。各次元は、複数の対応する次元単位を含むことができる。例えば、図3における入力テンソル323は、3(H)*3(W)*6(C)として表すことができ、ここでH次元は3つの高さ単位を含み、W次元は3つの幅単位を含み、そしてC次元は6つのチャネルを含んでいる。幾つかの実施形態においては、複数の入力テンソルを畳み込みプロセスに含むことができ、複数の入力テンソルのそれぞれのH*W*C表現は、追加次元N(例えば、入力テンソル識別子を表している)で拡張できる。
幾つかの実施形態においては、入力テンソル322は、複数のサブテンソル323に分割できる。例えば、分割は、複数のサブテンソルが、Pe上の作業負荷が均等に分散されるように、利用可能なPEの間で均等に分散できることを保証できる。幾つかの実施形態においては、各サブテンソルのサイズは、Hg*Wg*Cgと表すことができ、ここにおいて、Hgはサブテンソルの高さ方向の次元を指し(例えば、「g」はグループを表し、「Hg」はサブテンソル内の高さ単位のグループを表している)、Wgはサブテンソルの幅方向の次元を指し、Cgは、サブテンソル、または1つ以上の連続チャネルを含むチャネルグループ324のチャネル方向の次元を指している。図3における入力テンソル322を例に取ると、サブテンソル323(陰影が付けられた領域)は、1(Hg)*1(Wg)*2(Cg)のサイズを有することができる。実際の実現形態においては、HgとWgは等しく1以上であることができ、Cgは、8、16、または32などのような大きな正の数であることができる。幾つかの実施形態においては、323などのようなサブテンソルは、1つのPEにより一度に全体を取り出すのではなく、一度に一部を取り出すことができる(例えば、PEの内部バッファの制限のあるサイズのために)。
幾つかの実施形態においては、フィルタ342は、複数のサブフィルタに分割でき、複数のサブテンソルのそれぞれと、複数のサブフィルタのそれぞれは同じ数のチャネルを有することができ、例えば、それらは、そのチャネル方向の次元においてチャネルグループCg324を有することができる。フィルタ342の分割は、種々の方法、および種々の細かさで実現できる。例えば、フィルタ342はフィルタブロック345に分割でき、各フィルタブロック345は、R*S*Cgのサイズを有し、サブフィルタとして取り扱われる。他の例として、フィルタブロック345のそれぞれは、それぞれが1*S*Cgのサイズを有し、サブフィルタ346として取り扱われる複数の水平面に更に分割できる。フィルタ342が3(R)*3(S)*Cのサイズを有していると仮定すると、サブフィルタ346は、1(R)*3(C)*Cgのサイズを有することができ、チャネル数Cは、それぞれがCgチャネルを有している複数のチャネルグループに分割される。
幾つかの実施形態においては、フィルタ342~344は、そこにおける非セロ重みの数を制限するために切り詰める、または疎にすることができる。疎にされたフィルタは、入力テンソルからの特徴抽出の精度を大きく失うことなく演算効率を大幅に増大させることができる。幾つかの実施形態においては、フィルタ342~344は、サブフィルタ(例えば、345または346)のそれぞれが、すべてのゼロ重み、または予め決められている数の非ゼロ重みの何れかを有するように切り詰めることができる。各サブフィルタにおける予め決められている数の非ゼロ重みは、入力テンソル322から所望の特徴を取り込むために使用され、すべてゼロのサブフィルタは、フィルタの記憶/メモリ占有面積と演算コストの削減において有用である。幾つかの実施形態においては、切り詰めるプロセスは複数のステップで実行できる。例えば、第1ステップは、フィルタブロック345のそれぞれを切り詰めることであり、それにより、フィルタブロック345が同じ数の非ゼロ重みを含むようにすることであり(非ゼロ重みの場所は、各フィルタブロック345内で異なっている可能性がある)、そして、各フィルタブロック345内において、その中のサブフィルタ346を切り詰めることができ、それにより、サブフィルタ346が同じ数の非ゼロ重みを有するようにし、最後に、サブフィルタ346の幾つかは、すべてゼロのサブフィルタを作成するために非ゼロ重みを除去することができる。
幾つかの実施形態においては、複数のフィルタが、入力テンソル322における特徴を異なる角度から取り込むために1つの畳み込み層に存在することができる。例えば、図3は、フィルタ342~344は入力テンソルとの畳み込みに使用できることを示している。幾つかの実施形態においては、複数のフィルタ342~344(Kフィルタとして示されている)はフィルタグループ(Kgとして示されている)に分割でき、それぞれのフィルタグループは、決められた数のフィルタを備えている。各フィルタグループ内で、同じチャネルグループからのサブフィルタは、サブフィルタグループを形成でき、そのサブフィルタグループを、対応するサブテンソル323との局所畳み込みを実行するためにPEに供給できる。例えば、フィルタ342と343は同じフィルタグループであると仮定すると、フィルタ342の第1チャネルグループからのサブフィルタ346と、フィルタ343の第1チャネルグループからのサブフィルタは、サブフィルタグループを形成でき、そのサブフィルタグループは、(同じ)第1チャネルグループからのサブテンソル323との畳み込みを実行するためにPEに供給できる。
図4は、種々の実施形態に従う、非ゼロ重みを記憶するための例としての階層メモリレイアウトを示している。図4における例としてのフィルタ420は、例示の目的のために3(R)*3(S)*32(C)テンソルと仮定し、図3において示されているフィルタの1つを参照できる。フィルタ420は複数のチャネルグループに分割され、各チャネルグループは複数のチャネル(Cg)を備え、各チャネルグループ内で、フィルタブロックR*S*Cgは、それぞれが1(R)*3(S)*Cgとして示される、複数の水平面などのような複数のサブフィルタに更に分割されるということも仮定する。図4において示されているように、Cgに対する値は8と仮定されている。これらの仮定は、単に簡潔性と明確性のためであり、フィルタ分割の異なる方法、または畳み込みの実際の必要性を満たすために容易に変更、または緩和できる。
図4において示されているように、フィルタ420は、第1フィルタブロック(陰影が付けられている立方体)3(R)*3(S)*8(Cg)などのような複数のフィルタブロックに分割される。第1フィルタブロックは、それぞれがR=0、R=1、およびR=2に対応する3つの水平面432、433、および434に更に分割できる。水平面432、433、および434のぞれぞれは、幅が3(Sに対応する)と高さが8(Cgに対応する)を有する二次元テーブルとして表すことができる。サブフィルタ(水平面)のそれぞれは、すべてゼロ(434などのような)、または予め決められている数の非ゼロ重み(432と433それぞれにおける4つの非ゼロ重み)の何れかを含むように既に切り詰められているということに注目できる。例えば、平面R=0に対応するテーブル432は、4つの非ゼロ重みW0~W3で、すべての他の値はゼロとして構成できる。非ゼロ重みの中で、W0とW1は列S=0に位置しており、W2とW3は、列1に位置している。同様に、平面R=1に対応するテーブル433もまた4つの非ゼロ重みを有しており、W4とW5は列S=0に位置しており、W6とW7は、列S=2に位置している。平面R=2に対応するテーブル434は、非ゼロ重みを有していない。
図4において、フィルタ420は、フィルタ420における非ゼロ重みを表すために階層的ビット表現としてPEのメモリに記憶できる。フィルタ420の階層的ビット表現は、フィルタ420の構造により種々の形状で生成できる。幾つかの実施形態においては、フィルタが1(R)*1(S)*Cのサイズを有しており、それぞれが1(R)*1(S)*Cgである複数のフィルタブロックに分割される場合、フィルタの階層的ビット表現は、第1層と第2層を備えることができる。第1層は、フィルタにおける複数のフィルタブロックに対応し、対応するフィルタブロックが少なくとも1つの非ゼロ重みを有しているかどうかを示す複数のビットを備えることができ、第2層は、フィルタにおける複数の非ゼロ重みに対応する複数のキーバリューペアを備えることができ、各キーバリューペアは、複数の非ゼロ重みの1つを値として備え、非ゼロ重みのチャネル識別子をキーとして備えている。
幾つかの実施形態においては、フィルタ420の階層的ビット表現における層の数は、フィルタ420の幅および高さ次元が1より大きい場合は3に増加することができる。例えば、第1層は、フィルタにおける複数のフィルタブロックに対応し、対応するフィルタブロックが少なくとも1つの非ゼロ重みを有しているかどうかを示す複数のビットを備えることができる。第2層は、複数のフィルタブロックのそれぞれに対して、それぞれがフィルタブロック内の複数の水平面に対応する複数のビットベクトルを備えることができ、ビットベクトルのそれぞれは、対応する水平面が少なくとも1つの非ゼロ重みを有しているかどうかを示している。第3層は、フィルタにおける複数の非ゼロ重みに対応する複数のキーバリューペアを備えることができ、各キーバリューペアは、複数の非ゼロ重みの1つを値として備え、非ゼロ重みのチャネル識別子をキーとして備えることができる。
例えば、フィルタ420は、幾つかの非ゼロ重みを有している第1フィルタブロック(陰影が付けられている立方体)と、すべてがゼロ重みの第2フィルタブロックを有していると仮定すると、フィルタ420に対する階層的ビット表現440は、図4において示されているように構築できる。階層的ビット表現440の第1層は、対応するフィルタブロックが少なくとも1つの非ゼロ重みを含んでいるかどうかを示す複数のビットを備えている。この例においては、第1フィルタブロックに対応する第1ビットは1であり、第2フィルタブロックに対応する第2ビットは0である(すべてゼロのフィルタブロックを示している)。階層的ビット表現440の第2層は、少なくとも1つの非ゼロ重みを有しているフィルタブロックの水平面に対応する複数のビットベクトルを備えている。この例においては、第1フィルタブロックは、テーブル432、433、および434として表されている3つの水平面を有しており、テーブル432は、列0と1において非ゼロ重みを含み、テーブル433は、列0と2において非ゼロ重みを含み、そしてテーブル434はゼロのみを含んでいる。従って、階層的ビット表現440の第2層における第1ビットベクトルは、値(1,1,0)を有し、この値は、第1水平面(R=0)は、第1列(S=0)と第2列(S=1)において非ゼロ重みを有していることを示している。階層的ビット表現440の第2層における第2ビットベクトルは、値(1,0,1)を有し、この値は、第2水平面(R=1)は、第1列(S=0)と第3列(S=2)において非ゼロ重みを有していることを示している。そして、階層的ビット表現440の第2層における第3ビットベクトルは、値(0,0,0)を有し、この値は、対応する水平面(R=2)においては非ゼロ値はないことを示している。階層的ビット表現440の第3層は、実際の非ゼロ値を含むことができる。図4において示されているように、非ゼロ重みW0はチャネル2に位置しており(テーブル432におけるidx値は、0から始まるチャネルのインデックスを指している)、そのため、第3層におけるW0に対応するキーバリューペアは(2,W0)である。同様に、非ゼロ重みW1は(7,W1)として表され、非ゼロ重みW1はチャネル7に位置していることを示している。
階層的ビット表現440は、フィルタ420における非ゼロ重みの必要な情報を効率的な方法で記憶している。幾つかの実施形態においては、階層的ビット表現440は、階層的ビット表現440の第1層に基づいて、非ゼロ重みが位置しているフィルタチャネルグループに対応するチャネルグループインデックスを決定することにより、階層的ビット表現の第2層に基づいて非ゼロ重みの高さインデックスと幅インデックスを決定することにより、および、階層的ビット表現440の第3層に基づいてフィルタチャネルグループ(つまりチャネルインデックス)内の非ゼロ重みのオフセットを決定することにより、各非ゼロ重みの正確な位置を提供できる。
畳み込みプロセスの間、複数の処理エンティティ(PE)のそれぞれには、部分和を生成するための局所積和(MAC)演算を実行するために、1つ以上のフィルタ(例えば、フィルタグループ)または1つ以上のフィルタブロック(例えば、同じチャネルグループからの)、および1つ以上の対応するサブテンソル(例えば、フィルタ/フィルタブロックと同じチャネルグループからの入力テンソルの一部)を割り当てることができる。
積和演算をPEのそれぞれに対して実行するために、割り当てられた非ゼロ重み(フィルタまたはフィルタブロックにおける)に対応する入力値(サブテンソルにおける)は、1つ以上のフィルタまたはフィルタブロックの階層的ビット表現に基づいて識別できる。下記の記述は、対応する入力値がどのように識別されるかを示すために、フィルタ420の例としての階層的ビット表現を例として使用する。図4においては、フィルタ420はPEに割り当てられると仮定する。フィルタ420における非ゼロ重みのそれぞれは列挙することができ、入力テンソルにおける対応する入力値で乗算することができる。例えば、PEは、非ゼロ重みを有するフィルタブロックを示している第1非ゼロ値を識別することにより第1層から開始できる。非ゼロ値の位置は、それが何れのチャネルグループに対応するかを示すことができる。図4においては、第1層の第1ビットは1であり、それは、第1チャネルグループのフィルタブロックは、少なくとも1つの非ゼロ重みを有していることを意味している。そしてPEは、フィルタブロックに対応する固定数のビットベクトルの位置を突き止めることにより第2層をチェックでき、ここにおいて、固定数とは、各フィルタブロックにおける水平面の数のことである(例えば、図4では第1フィルタブロックにおける3つの水平面432、433、および434)。これらのビットベクトルのそれぞれは、固定数のビットを含むことができ、それぞれのビットは、フィルタ420のS次元における列の数に対応する(例えば、各水平面432、433、または434における3つの列S=0,1,2)。第2層におけるビットベクトルの位置に基づいて、R次元におけるインデックスは決定でき、ビットベクトル内のビット値に基づいて、S次元におけるインデックスを決定できる。最後に、第3層は、チャネル識別子と実際の非ゼロ重みを含んでいる。R次元、S次元、およびチャネル次元における3つのインデックスを知ることにより、PEは、入力テンソルから対応する入力値を突き止めることができ、部分和を取得するために、非ゼロ重みと入力値に基づいて積和演算を実行できる。複数のPEにより取得された部分和は、畳み込み層の出力テンソルを構築するために累積することができる。
幾つかの実施形態においては、階層的ビット表現440における層のそれぞれは、以前に処理されたビット、ビットベクトル、またはキーバリューペアを指し示すポインタを維持できる。非ゼロ重みの列挙の間、ポインタは、PEが処理する次のフィルタブロック、ビットベクトル、またはキーバリューペアを決定することにおいて支援できる。幾つかの実施形態においては、階層的ビット表現440は、ルートノードが第1層に対応するツリーとして記憶できる。ルートノードにおける非ゼロビットのそれぞれは、非ゼロビットに対応するフィルタブロックに属しているビットベクトルを記憶している1つ以上の子ノードを含んでいるサブツリーを有することができ、ここにおいて、ビットベクトルのそれぞれは、フィルタブロックにおける水平面に対応する。各ビットベクトルにおける非ゼロビットのそれぞれは、フィルタブロックの各水平面における1つ以上の列に対応し、1つ以上の列において非ゼロ重みのキーバリューペアを記憶している1つ以上の孫ノードを有することができる。
階層的ビット表現440は、畳み込みを実行するために、対応する入力値を突き止めるために必要なすべての情報と共に非ゼロ重みを記憶するための効率的な方法を提供する。例えば、第1層におけるビットが0の場合、対応するフィルタブロック全体をスキップできる。この場合、フィルタブロック全体は、PEにおける記憶空間の1ビットを取るだけである。
図5は、種々の実施形態に従う、階層的重み疎畳み込み処理のための例としてのシステム図を示している。図5において示されているアーキテクチャは、ニューラルネットワークがロードされて実行されたときに推測を実行するように設計されているコンピュータシステムを備えている。幾つかの実施形態においては、そのようなコンピュータシステムは、ハードウェアアクセラレータ500として実現される。ハードウェアアクセラレータ500における幾つかの構成要素は、複数の処理エンティティに対して並行畳み込み演算を促進することにより、ニューラルネットワークのスループットとエネルギー効率を向上するために特定の方法で協働作業できる。アクセラレータ500は例にすぎず、より多い、またはより少ない、または代替の構成要素を備えることができる。ハードウェアアクセラレータ500は、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)などのように、再構成可能装置として設計できる。
図5において示されているように、ハードウェアアクセラレータ500は、アクセラレータ500内のワークフローおよび、ホストCPU510とダブルデータレート(DDR)メモリ520などのようなオフチップ構成要素との相互作用を制御するためにスケジューラ570を備えることができる。例えば、アクセラレータ500は、周辺機器相互接続エクスプレス(CPIe)物理層(PHY)コントローラ512を通してホストCPU510と相互作用でき、DDRインタフェース530を通してオフチップDDRメモリ520と相互作用できる。アクセラレータ500は、DDRインタフェース530を介してオフチップDDRメモリ520を通信するディレクトメモリアクセス(DMA)コントローラ540を通してオフチップDDRメモリ520からデータを取得できる。取得されたデータは、並行畳み込み演算の準備のために、グローバルバッファ550と呼ばれるオンチップバッファに記憶できる。グローバルバッファ550は、入力バッファ552、重みバッファ554、および出力バッファ556などのような複数のセクションに論理的に分割できる。入力バッファ552は、入力テンソルと関連付けられているデータを記憶でき、重みバッファ554は、フィルタと関連付けられているデータを記憶でき、出力バッファ556は、畳み込み演算の結果(例えば、出力テンソル)と関連付けられているデータを記憶できる。グローバルバッファ550は、畳み込み演算を実行するために、疎処理ユニット(SPU)562のアレイ560とデータを交換できる。SPUの名前における「疎」は、SPUアレイ560は、疎性(例えば、疎入力テンソル、および/または疎フィルタ)を含む畳み込み演算を効率的に実行するように特定的に設計されていることを示している。SPU562のそれぞれは、複数の処理エンティティ(PE)580を備えることができ、各PE580は、畳み込み演算の単位量を取り扱うことができる。
図6Aは、種々の実施形態に従う、階層的重み疎畳み込みに対する例としての図を示している。例示の目的のために、図6Aは、サブテンソル(入力テンソル600において陰影が付けられている部分)およびサブフィルタグループ(フィルタ610において陰影が付けられている部分)が、畳み込みを並行に実行するために複数のPEにどのように割り当てられるかを示している。
幾つかの実施形態においては、複数のPEは、PEの複数の行と列を有するマトリックスにおいて配置できる。複数のPEのそれぞれは、その近隣PEとデータを交換することを可能とさせることができる(例えば、その列方向の近隣PEの1つの内部バッファから非ゼロ重みを読むこと、または、部分和の結果をその行方向の近隣PEの間で回転すること)。
幾つかの実施形態においては、入力テンソル600(H*W*Cテンソル)はまず複数のサブテンソル、例えば、複数のW*Cgサブテンソル(例えば、入力テンソル600における複数の水平面)に分割でき、Cgは、複数のチャネルを含んでいるチャネルグループを指している。そして、これらのサブテンソルは、複数のPEに割り当てることができ、または、複数のPEの内部バッファに記憶できる。図6Aにおいて示されているように、PEの各行(例えば、第1行630のPE0,PE32,...,PE224)には、W*Cgサブテンソルの一部を割当てることができる。そして、各PEは、すべての非ゼロ重みを列挙するためにフィルタ(例えば、S*Cg)における水平面を個々に経ることができる。識別された各非ゼロ重みに対しては、非ゼロ重みのチャネル次元インデックス、R次元インデックス、およびS次元インデックスは、対応する階層的ビット表現から容易に演繹でき、そしてPEは、3つのインデックスに基づいて、割り当てられたサブテンソルから対応する入力値を容易に突き止めることができる。非ゼロ重みおよび対応する入力値に対しては、部分和を生成するために積和演算を実行できる。PEは、対応するビットが0の場合は、フィルタブロック全体、または個々のチャネルグループをスキップできる。幾つかの実施形態においては、各PEは必要であれば、同じ列640におけるすべての2つのPEの間の重み交換接続624を通して、その近隣PEからより多くの非ゼロ重みを読み込むことができる。幾つかの実施形態においては、同じ行630における最も遅いPEがすべての割り当てられた非ゼロ重みの列挙を完了したときに、同じ行630における各PEにより生成された部分和は、処理の次のラウンドのために回転接続622を通して回転できる(例えば、これらの部分和は、次のラウンドで生成される新しい部分和で更に累積できる)。ここで、「最も遅いPE」とは、最も少ない演算能力を有するPE、または最も重いワークロード(例えば、処理すべき非ゼロ重みのほとんど)を有するPEを指すことができる。幾つかの実施形態においては、これらの部分和は、畳み込み層の出力テンソルを構築するために累積できる。
図6Aにおいて示されているフィルタと入力テンソルの例としての割り当ては、ニューラルネットワークにおける畳み込みプロセスに対して下記の、行における何れかの最も遅いPEが演算時間を削減できる場合、潜在的に演算時間を節約するという恩典、および、メモリアクセスと乗算をスキップすることにより(フィルタのすべて0の部分を回避することより)電力を相当に節約するという恩典を提供できる。
図6Bは、種々の実施形態に従う、階層的重み疎畳み込みに対する他の例としての図を示している。図6Bにおいては、入力テンソル600とフィルタ610は分割され、図6Aにおいて示されている割り当てと同じ方法で複数のPEに割り当てられる。例えば、各PEは必要であれば、より多くの非ゼロ重みを、重み交換接続624を通して、その列方向の近隣PEから読み込むことができる。図6Aと6Bにおけるこれらの2つの図の間の違いは、各PEが、対応する出力チャネルの最終結果が計算されまで、フィルタ610のすべてのS*Cgを経ることを継続することである。このようにして、部分和を、同じ行においてPEの間で回転する必要をなくすことができる。幾つかの実施形態においては、これらの部分和は、畳み込み層の出力テンソルを構築するために累積できる。
図6Bにおいて示されているフィルタと入力テンソルの例としての割り当ては、ニューラルネットワークにおける畳み込みプロセスに対して下記の、1つのPEは、全体の出力チャネル演算のための演算をスキップできるので演算時間を節約するという恩典、および、メモリアクセスと乗算をスキップするための電力を節約するという恩典を提供できる。
図7は、種々の実施形態に従う、階層的重み疎畳み込みのための例としての方法を示している。方法700は、リソース割り当てを最適化するためのデバイス、装置、またはシステムにより実行できる。方法700は、図5におけるハードウェアアクセラレータ500などのような、図1~6により例示されている環境またはシステムの1つ以上のモジュール/構成要素により実行できる。下記に提示されている方法700の動作は、例であることが意図されている。実現形態によっては、方法700は種々の順序で、または並行に実行される追加的ステップ、より少ないステップ、または代替ステップを含むことができる。
ブロック710は、ニューラルネットワークの畳み込み層において入力テンソルと複数のフィルタを取得することを含んでいる。幾つかの実施形態においては、複数のフィルタは、複数のサブフィルタのそれぞれが、すべてのゼロ重み、または予め決められている数の非ゼロ重みの何れかを有するように切り詰められる。
ブロック720は、入力テンソルを複数のサブテンソルに分割することと、複数のサブテンソルを複数のプロセッサに割り当てることを含んでいる。幾つかの実施形態においては、複数のサブテンソルを複数のプロセッサに割り当てることは、複数のプロセッサのそれぞれに対して、複数のサブテンソルの1つ以上をプロセッサの内部バッファに記憶することを備えている。
ブロック730は、複数のフィルタのそれぞれに対して、フィルタにおける複数の非ゼロ重みの階層的ビット表現を生成することを含んでおり、ここにおいて階層的ビット表現は、第1層と第2層を備え、第1層は、フィルタにおける複数のサブフィルタに対応し、対応するサブフィルタが少なくとも1つの非ゼロ重みを有しているかどうかを示している複数のビットを備え、第2層は、フィルタにおける複数の非ゼロ重みに対応する複数のキーバリューペアを備え、各キーバリューペアは、複数の非ゼロ重みの1つを値として備え、複数の非ゼロ重みの1つのチャネル識別子をキーとして備えている。幾つかの実施形態においては、複数のサブテンソルのそれぞれと、複数のサブフィルタのそれぞれは、同じ数のチャネルを有している。
ブロック740は、階層的ビット表現に基づいて複数のプロセッサのそれぞれにより、複数の非ゼロ重みの1つ以上および、対応する入力値を、割り当てられてらサブテンソルから識別することを含んでいる。幾つかの実施形態においては、階層的ビット表現に基づいて、複数の非ゼロ重みの1つ以上、および対応する入力値を、割り当てられたサブテンソルから識別することは、複数の非ゼロ重みのそれぞれに対して、階層的ビット表現の第1層に基づいて、非ゼロ重みが位置しているフィルタチャネルグループに対応するチャネルグループインデックスを決定することと、階層的ビット表現の第2層に基づいて、フィルタチャネルグループ内の非ゼロ重みのオフセットを決定することと、チャネルグループインデックスとオフセットに基づいて、割り当てられたサブテンソルから入力値を識別することを備えている。
幾つかの実施形態においては、階層的ビット表現は、第1層と第2層との間に第3層を更に備え、第3層は、複数のサブフィルタのそれぞれに対して、それぞれがサブフィルタの複数の水平面に対応する複数のビットベクトルを備え、複数のビットベクトルのそれぞれは、対応する水平面は、複数の非ゼロ重みの少なくとも1つを備えているかどうかを示している。幾つかの実施形態においては、階層的ビット表現に基づいて、複数の非ゼロ重みの1つ以上、および対応する入力値を、割り当てられたサブテンソルから識別することは、複数の非ゼロ重みのそれぞれに対して、階層的ビット表現の第1層に基づいて、非ゼロ重みが位置しているフィルタチャネルグループに対応するチャネルグループインデックスを決定することと、階層的ビット表現の第3層に基づいて、非ゼロ重みの高さインデックスと幅インデックスを決定することと、階層的ビット表現の第2層に基づいて、フィルタチャネルグループ内の非ゼロ重みのオフセットを決定することと、チャネルグループインデックス、高さインデックス、幅インデックス、およびオフセットに基づいて、割り当てられたサブテンソルから入力値を識別することを備えている。
ブロック750は、部分和を取得するために、積和(MAC)演算を、1つ以上の識別された非ゼロ重みおよび対応する入力値に対して実行することを含んでいる。
ブロック760は、ニューラルネットワークの畳み込み層の出力テンソルを構築するために、複数のプロセッサのそれぞれにより取得される部分和を累積することを含んでいる。
幾つかの実施形態においては、複数のプロセッサは、複数の行と列を備えているマトリックスに電気的に配置でき、複数のプロセッサのそれぞれは、1つ以上の列方向の近隣プロセッサを有している。幾つかの実施形態においては、複数のプロセッサのそれぞれは、その列方向の近隣プロセッサの1つの内部バッファから1つ以上のキーバリューペアを読み込むことを可能とされている。幾つかの実施形態においては、方法700は、複数のチャネルを備えているチャネルグループからの複数のサブテンソルの1つ以上をプロセッサの行に割り当てること、および、プロセッサの行のそれぞれが、階層的ビット表現に基づいて、1つのサブテンソルと、対応するサブフィルタとの間の積和演算を完了し、部分和を取得した後に、部分和をプロセッサの行の間で回転することを更に備えることができる。幾つかの実施形態においては、方法700は、同じ高さインデックスと同じ重みインデックスからの複数のサブフィルタの1つ以上を、複数のプロセッサのそれぞれに割り当てることと、複数のプロセッサのそれぞれが、階層的ビット表現に基づいて、複数のサブフィルタの1つ以上と、対応するサブフィルタとの間の積和演算を完了し、部分和を取得した後に、出力テンソルを構築するために部分和を累積することを更に備えることができる。
図8は、ここにおいて記述されている実施形態の何れも実現できる例としての演算装置を示している。演算装置は、図1~7において示されているシステムと方法の1つ以上の構成要素を実現するために使用できる。演算装置800は、情報を通信で送るためのバス802、または他の通信機構、および情報を処理するための、バス802に結合されている1つ以上のハードウェアプロセッサ804を備えることができる。ハードウェアプロセッサ804は、例えば、1つ以上の汎用マイクロプロセッサであってよい。
演算装置800はまた、ランダムアクセスメモリ(RAM)、キャッシュおよび/または他の動的記憶装置などのような、情報および、プロセッサ804により実行される命令を記憶するための、バス802に結合されているメインメモリ807を含むことができる。メインメモリ807はまた、プロセッサ804により実行される命令の実行の間に一時的変数または他の中間情報を記憶するために使用できる。そのような命令は、プロセッサ804がアクセスできる記憶媒体に記憶されると、演算装置800を、命令において特定されている動作を実行するようにカスタマイズされている特殊目的機械に変えることができる。メインメモリ807は、不揮発性媒体および/または揮発性媒体を含むことができる。不揮発性媒体としては、例えば、光または磁気ディスクを含むことができる。揮発性媒体としては、動的メモリを含むことができる。媒体の共通の形状としては、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、または、任意の他の磁気データ記憶媒体、CD-ROM、任意の他の光データ記憶媒体、孔のパターンを有する任意の物理メモリ、RAM、DRAM、PROM、およびEPROM、フラッシュEPROM、NVRAM、任意の他のメモリチップまたはカートリッジ、またはそれらのネットワーク版を含むことができる。
演算装置800は、演算装置との組み合わせにおいて、演算装置800を特殊目的機械となるようにさせる、またはそうなるようにプログラムできる、カスタマイズされている配線接続ロジック、1つ以上のASICまたはFPGA、ファームウェア、および/またはプログラムロジックを使用して、ここにおいて記述されている技術を実現できる。1つの実施形態によれば、ここにおける技術は、メインメモリ807に含まれている1つ以上の命令の1つ以上のシーケンスをプロセッサ804が実行することに応答して演算装置800により実行される。そのような命令は、記憶装置809などのような他の記憶媒体からメインメモリ807に読み込むことができる。メインメモリ807に含まれている命令のシーケンスの実行は、プロセッサ804に、ここにおいて記述されているプロセスステップを実行させる。例えば、ここにおいて開示されているプロセス/方法は、メインメモリ807に記憶されているコンピュータプログラム命令により実現できる。これらの命令がプロセッサ804により実行されると、これらの命令は、対応する図において示され、上記に記述されているようなステップを実行できる。代替の実施形態においては、配線接続回路を、ソフトウェア命令の代わりに、またはそれと組み合わせて使用できる。
演算装置800はまた、バス802に結合されている通信インタフェース810を含んでいる。通信インタフェース810は、1つ以上のネットワークに接続されている1つ以上のネットワークリンクへの双方向データ通信結合を提供できる。他の例として、通信インタフェース810は、互換性のあるLANへのデータ通信接続を提供する構内情報通信網(LAN)カード(または、WANと通信するWAN構成要素)であってよい。ワイヤレスリンクもまた実現できる。
ある動作の実行はプロセッサの間に分散でき、単一の機械内に常駐するだけでなく、多数の機械にわたり展開できる。幾つかの例としての実施形態においては、プロセッサまたはプロセッサにより実現されるエンジンは、単一の地理的場所(例えば、ホーム環境、オフィス環境、またはサーバファーム内)に設けることができる。他の例としての実施形態においては、プロセッサまたはプロセッサにより実現されるエンジンは、多数の地理的場所にわたって分散できる。
前述のセクションで記述されているプロセス、方法、およびアルゴリズムのそれぞれは、1つ以上のコンピュータシステム、またはコンピュータハードウェアを備えているコンピュータプロセッサにより実行されるコードモジュールにおいて具現化でき、およびコードモジュールにより完全に、または部分的に自動化できる。プロセッサとアルゴリズムは、特定用途向け回路において部分的に、または全体を実現できる。
ここにおいて開示されている機能が、ソフトウェア機能ユニットの形状で実現され、独立した製品として販売され、または使用されるときは、それらの機能は、プロセッサにより実行可能な不揮発性コンピュータ読み取り可能記憶媒体に記憶できる。ここにおいて開示されている特別な技術ソリューションは(その全体、または一部において)、または現在の技術に貢献する態様は、ソフトウェア製品の形状で具現化できる。ソフトウェア製品は、演算装置(パーソナルコンピュータ、サーバ、ネットワーク装置、などであってよい)に、本願の実施形態の方法のすべて、または幾つかのステップを実行させる多数の命令を備えて、記憶媒体に記憶できる。記憶媒体は、フラッシュドライブ、可搬式ハードドライブ、ROM、RAM、磁気ディスク、光ディスク、プログラムコードを記憶するように動作可能な他の媒体、またはそれらの任意の組み合わせを備えることができる。
特別な実施形態は更に、プロセッサと、上記に開示されている実施形態の任意の方法におけるステップに対応する動作をシステムに実行させるために、プロセッサにより実行可能な命令を記憶している非一時的コンピュータ読み取り可能記憶媒体を備えているシステムを提供する。特別な実施形態は更に、上記に開示されている実施形態の任意の方法におけるステップに対応する動作を1つ以上のプロセッサに実行させるために、1つ以上のプロセッサにより実行可能な命令で構成されている非一時的コンピュータ読み取り可能記憶媒体を提供する。
ここにおいて開示されている実施形態は、クライアントと相互作用するクラウドプラットフォーム、サーバ、またはサーバグループ(以降、まとめて「サーバシステム」)を通して実現できる。クライアントは、端末装置、または、プラットフォームにおいてユーザにより登録されたクライアントであってよく、端末装置は、モバイル端末、パーソナルコンピュータ(PC)、およびプラットフォームアプリケーションプログラムをインストールできる任意の装置であってよい。
上記に記述されている種々の特徴とプロセッサは、互いに独立して使用でき、または、種々の方法で組み合わせることができる。すべての可能な組み合わせと、それより小さな組み合わせは、本開示の範囲内であることが意図されている。追加的に、ある方法またはプロセスブロックは、幾つかの実現形態においては省略できる。ここにおいて記述されている方法とプロセスはまた、如何なる特別なシーケンスに制限されることはなく、それらに関連しているブロックまたは状態は、適切な他のシーケンスにおいて実行できる。例えば、記述されているブロックまたは状態は、特定的に開示されている順序以外の順序で実行でき、または、複数のブロックまたは状態は、単一のブロックまたは状態において組み合わせることができる。例としてのブロックまたは状態は、連続して、並行して、または何等かの他の方法で実行できる。ブロックまたは状態は、開示されている例としての実施形態に追加でき、またはそこから除去できる。ここにおいて記述されている例としてのシステムと構成要素は、記述されているシステムと構成要素とは異なるように構成できる。例えば、要素を、開示されている例としての実施形態に追加でき、またはそこから除去でき、または、それに対して再配置できる。
ここにおいて記述されている例としての方法の種々の動作は、少なくとも部分的にはアルゴリズムにより実行できる。アルゴリズムは、メモリ(例えば、上述されている非一時的コンピュータ読み取り可能記憶媒体)において記憶されているプログラムコードまたは命令に備えることができる。そのようなアルゴリズムは、機械学習アルゴリズムを備えることができる。幾つかの実施形態においては、機械学習アルゴリズムは、ある機能を実行するために明示的にコンピュータをプログラムしなくてもよく、その機能を実行する予測モデルを生成するために訓練データから学習できる。
ここにおいて記述されている例としての方法の種々の動作は、少なくとも部分的には、その動作を実行するように一時的に構成されている(例えば、ソフトウェアにより)、または固定的構成されている1つ以上のプロセッサにより実行できる。一時的に構成されていても、固定的に構成されていても、そのようなプロセッサは、ここにおいて記述されている1つ以上の動作または機能を実行するために動作する、プロセッサにより実現されるエンジンを構成できる。
同様に、ここにおいて記述されている方法は、少なくとも部分的にはプロセッサにより実現でき、特別なプロセッサ、ハードウェアの例である。例えば、方法の動作の少なくとも幾つかは、1つ以上のプロセッサまたはプロセッサにより実現されるエンジンにより実行できる。更に、1つ以上のプロセッサはまた、「クラウド演算」環境において、または「サービスとしてのソフトウェア」(SaaS)として、その動作の実行をサポートするように動作可能である。例えば、動作の少なくとも幾つかは、コンピュータのグループ(プロセッサを含む機械の例として)により実行でき、これらの動作は、ネットワーク(例えば、インターネット)を介して、および、1つ以上の適切なインタフェース(例えば、アプリケーションプログラムインタフェース(API))を介してアクセス可能である。
ある動作の実行は、プロセッサの間で分散でき、単一の機械に常駐するだけでなく、多数の機械にわたって展開できる。幾つかの例としての実施形態においては、プロセッサまたはプロセッサにより実現されるエンジンは、単一の地理的場所(例えば、ホーム環境、オフィス環境、またはサーバファーム内)に設けることができる。他の例としての実施形態においては、プロセッサ、またはプロセッサにより実現されるエンジンは、多数の地理的場所にわたって分散できる。
本明細書を通して、複数の例は、単一の例として記述されている構成要素、動作、または構造を実現できる。1つ以上の方法の個々の動作は、別個の動作として例示され且つ記述されているが、個々の動作の1つ以上は同時に実行でき、動作は例示されている順序で実行されることは要求されない。例としての構成において、別個の構成要素として提示されている構造と機能は、組み合わされた構造または構成要素として実現できる。同様に、単一の構成要素として提示されている構造と機能は、別個の構成要素として実現できる。これらの、および他の変形、修正、追加、および改良は、ここにおける主題の範囲内である。
ここにおいて使用されているように、「または」は、そうでないと明示的に示されない限り、または文脈によりそうでないと示されない限り包括的であり、排他的でない。従って、ここにおいては、「A、B、またはC」は、そうでないと明示的に示されない限り、または文脈によりそうでないと示されない限り「A、B、C,AとB、AとC,BとC,またはAとBとC」を意味する。更に、「~と~」は、そうでないと明示的に示されない限り、または文脈によりそうでないと示されない限り、両方であり、またそれぞれである。従って、ここにおいては、「AとB」は、そうでないと明示的に示されない限り、または文脈によりそうでないと示されない限り、AとB両方、またはそれぞれを意味している。更に、複数の例は、ここにおいて単一の例として記述されているリソース、動作、または構造に対して提供できる。追加的に、種々のリソース、動作、エンジン、およびデータ記憶装置の間の境界は若干任意であり、特別な動作は、特定の例としての構成の背景において例示されている。機能の他の割り当てが想定され、それは、本開示の種々の実施形態の範囲内とすることができる。一般的に、例としての構成において別個のリソースとして提示されている構造と機能は、組み合わされた構造またはリソースとして実現できる。同様に、単一のリソースとして提示されている構造と機能は、別個のリソースとして実現できる。これらの、および他の変形、修正、追加、および改良は、付随する特許請求の範囲により表されているように本開示の実施形態の範囲内である。従って、明細書と図面は、制限的ではなく、例として見なされるべきである。
「含む」または「備える」という用語は、引き続いて宣言される特徴の存在を示すために使用されるが、他の特徴の追加を排除するものではない。条件付き言語、特には、「~することが可能」、「~することが可能であった」、「~することができた」、または「~することができる」などのような条件付き言語は、そうでないと特定的に明記されない限り、または、使用されているような文脈内では理解されない限り、一般的には、ある実施形態は、一方では他の実施形態は含んでいない、ある特徴、要素、および/またはステップを含んでいるということを伝えることが意図されている。そのため、そのような条件付き言語は、特徴、要素、および/またはステップは、何等かの方法で1つ以上の実施形態に対して必要であるということを意味すること、または、1つ以上の実施形態は、これらの特徴、要素、および/またはステップが任意の特別な実施形態に含まれている、またはそこにおいて実行されるかどうかを、ユーザの入力または催促により、またはそれらなしで決定するためのロジックを必然的に含んでいるということを意味することは一般的に意図されていない。
主題の概要が、特定の例としての実施形態を参照して記述されてきたが、種々の修正および変更を、本開示の実施形態のより広い範囲から逸脱することなくこれらの実施形態に対して実行できる。主題のそのような実施形態は、ここにおいて個々に、またはまとめて、単に利便性のために、および本願の範囲を、実際に2つ以上が開示される場合、如何なる単一の開示またはコンセプトに任意に制限することを意図することなく「発明」という用語により示すことができる。
ここにおいて例示されている実施形態は、この技術における技量を有する者が、開示されている教示を実践することを可能にするために十分詳細に記述されている。構造的および論理的置換および変更を、本開示の範囲から逸脱することなく実行できるように、他の実施形態を使用でき、そこから導出できる。従って、「発明を実施するための形態」は制限的な意味で解釈されてはならず、種々の実施形態の範囲は、特許請求の範囲と同等と見なされる等価物の全範囲と共に、付随する特許請求の範囲によってのみ定義される。本発明の態様の一部を以下記載する。
[態様1]
コンピュータにより実現される方法であって、
ニューラルネットワークの畳み込み層における入力テンソルと複数のフィルタを取得することと、
前記入力テンソルを複数のサブテンソルに分割すること、および前記複数のサブテンソルを複数のプロセッサに割り当てることと、
前記複数のフィルタのそれぞれに対して、前記フィルタにおける複数の非ゼロ重みの階層的ビット表現を生成することと、ここにおいて、
前記階層的ビット表現は、第1層と第2層を備え、
前記第1層は、前記フィルタにおける複数のサブフィルタに対応し、前記対応するサブフィルタは、少なくとも1つの非ゼロ重みを有しているかどうかを示す複数のビットを備え、
前記第2層は、前記フィルタにおける前記複数の非ゼロ重みに対応する複数のキーバリューペアを備え、各キーバリューペアは、前記複数の非ゼロ重みの1つを値として備え、複数の非ゼロ重みの前記1つのチャネル識別子をキーとして備え、
前記階層的ビット表現に基づいて、前記複数のプロセッサのそれぞれにより、前記複数の非ゼロ重みの1つ以上と、前記割り当てられたサブテンソルから対応する入力値を識別することと、
部分和を取得するために、前記1つ以上の識別された非ゼロ重みおよび前記対応する入力値に対して積和(MAC)演算を実行することと、
前記ニューラルネットワークの前記畳み込み層の出力テンソルを構築するために、前記複数のプロセッサのそれぞれにより取得された前記部分和を累積することを備えていることを特徴とする方法。
[態様2]
前記複数のサブテンソルを複数のプロセッサに前記割り当てることは、
前記複数のプロセッサのそれぞれに対して、前記複数のサブテンソルの1つ以上を、前記プロセッサの内部バッファに記憶することを備えていることを特徴とする態様1の方法。
[態様3]
前記複数のサブテンソルのそれぞれと、前記複数のサブフィルタのそれぞれは、同じ数のチャネルを有していることを特徴とする態様1の方法。
[態様4]
前記複数の非ゼロ重みの1つ以上および対応する入力値を前記割り当てられたサブテンソルから前記階層的ビット表現に基づいて前記識別することは、
前記複数の非ゼロ重みのそれぞれに対して、前記階層的ビット表現の前記第1層に基づいて、前記非ゼロ重みが位置しているフィルタチャネルグループに対応するチャネルグループインデックスを決定することと、
前記階層的ビット表現の前記第2層に基づいて、前記フィルタチャネルグループ内の前記非ゼロ重みのオフセットを決定することと、
前記チャネルグループインデックスと前記オフセットに基づいて、前記割り当てられたサブテンソルから入力値を識別することを備えていることを特徴とする態様1の方法。
[態様5]
前記階層的ビット表現は、前記第1層と前記第2層との間に第3層を更に備え、
前記第3層は、前記複数のサブフィルタのそれぞれに対して、前記サブフィルタの複数の水平面にそれぞれ対応する複数のビットベクトルを備え、
前記複数のビットベクトルのそれぞれは、前記対応する水平面が、前記複数の非ゼロ重みの少なくとも1つを備えているかどうかを示していることを特徴とする態様1の方法。
[態様6]
前記複数の非ゼロ重みの1つ以上および対応する入力値を前記割り当てられたサブテンソルから前記階層的ビット表現に基づいて前記識別することは、
前記複数の非ゼロ重みのそれぞれに対して、前記階層的ビット表現の前記第1層に基づいて、前記非ゼロ重みが位置しているフィルタチャネルグループに対応するチャネルグループインデックスを決定することと、
階層的ビット表現の前記第3層に基づいて、前記非ゼロ重みの高さインデックスと幅インデックスを決定することと、
前記階層的ビット表現の前記第2層に基づいて、前記フィルタチャネルグループ内の前記非ゼロ重みのオフセットを決定することと、
前記チャネルグループインデックス、前記高さインデックス、前記幅インデックス、および前記オフセットに基づいて、前記割り当てられたサブテンソルから入力値を識別することを備えていることを特徴とする態様5の方法。
[態様7]
前記複数のフィルタは、前記複数のサブフィルタのそれぞれが、すべてのゼロ重み、または予め決められている数の非ゼロ重みの何れかを有するように切り詰められることを特徴とする態様1の方法。
[態様8]
前記複数のプロセッサは、複数の行と列を備えているマトリックスに電気的に配置され、前記複数のプロセッサのそれぞれは、1つ以上の列方向の近隣プロセッサを有していることを特徴とする態様1の方法。
[態様9]
前記複数のプロセッサのそれぞれは、1つ以上のキーバリューペアを、その列方向の近隣プロセッサの1つの内部バッファから読み込むことを可能にされていることを特徴とする態様8の方法。
[態様10]
複数のチャネルを備えているチャネルグループから前記複数のサブテンソルの1つ以上をプロセッサの行に割り当てることと、
前記プロセッサの行のそれぞれが、前記階層的ビット表現に基づいて、1つのサブテンソルと、対応するサブフィルタとの間の前記積和演算を完了し、部分和を取得した後に、前記部分和を、前記プロセッサの行の間で回転することを更に備えていることを特徴とする態様8の方法。
[態様11]
同じ高さインデックスと同じ重みインデックスから前記複数のサブフィルタの1つ以上を、前記複数のプロセッサのそれぞれに割り当てることと、
前記複数のプロセッサのそれぞれが、前記階層的ビット表現に基づいて、前記複数のサブフィルタの前記1つ以上と、対応するサブフィルタとの間の前記積和演算を完了し、部分和を取得した後に、前記出力テンソルを構築するために、前記部分和を累積することを更に備えていることを特徴とする態様8の方法。
[態様12]
階層的重み疎畳み込み処理のためのシステムであって、1つ以上のプロセッサと、前記1つ以上のプロセッサに結合され、命令を有して構成されている1つ以上の非一時的コンピュータ読み取り可能メモリを備え、前記命令は前記システムに、
ニューラルネットワークの畳み込み層における入力テンソルと複数のフィルタを取得することと、
前記入力テンソルを複数のサブテンソルに分割すること、および前記複数のサブテンソルを複数のプロセッサに割り当てることと、
前記複数のフィルタのそれぞれに対して、前記フィルタにおける複数の非ゼロ重みの階層的ビット表現を生成することと、ここにおいて、
前記階層的ビット表現は、第1層と第2層を備え、
前記第1層は、前記フィルタにおける複数のサブフィルタに対応し、前記対応するサブフィルタは、少なくとも1つの非ゼロ重みを有しているかどうかを示す複数のビットを備え、
前記第2層は、前記フィルタにおける前記複数の非ゼロ重みに対応する複数のキーバリューペアを備え、各キーバリューペアは、前記複数の非ゼロ重みの1つを値として備え、前記複数の非ゼロ重みの前記1つのチャネル識別子をキーとして備え、
前記階層的ビット表現に基づいて、前記複数のプロセッサのそれぞれにより、前記複数の非ゼロ重みの1つ以上と、前記割り当てられたサブテンソルから対応する入力値を識別することと、
部分和を取得するために、前記1つ以上の識別された非ゼロ重みと前記対応する入力値に対して積和(MAC)演算を実行することと、
前記ニューラルネットワークの前記畳み込み層の出力テンソルを構築するために、前記複数のプロセッサのそれぞれにより取得された前記部分和を累積することを備えている動作を実行させるために前記1つ以上のプロセッサにより実行可能であることを特徴とするシステム。
[態様13]
前記複数のサブテンソルを複数のプロセッサに前記割り当てることは、
前記複数のプロセッサのそれぞれに対して、前記複数のサブテンソルの1つ以上を、前記プロセッサの内部バッファに記憶することを備えていることを特徴とする態様12のシステム。
[態様14]
前記階層的ビット表現は、前記第1層と前記第2層との間に第3層を更に備え、
前記第3層は、前記複数のサブフィルタのそれぞれに対して、前記サブフィルタの複数の水平面にそれぞれ対応する複数のビットベクトルを備え、
前記複数のビットベクトルのそれぞれは、前記対応する水平面が、前記複数の非ゼロ重みの少なくとも1つを備えているかどうかを示していることを特徴とする態様12のシステム。
[態様15]
前記複数のフィルタは、前記複数のサブフィルタのそれぞれが、すべてのゼロ重み、または予め決められている数の非ゼロ重みの何れかを有するように切り詰められることを特徴とする態様12のシステム。
[態様16]
前記複数の非ゼロ重みの1つ以上および対応する入力値を前記割り当てられたサブテンソルから前記階層的ビット表現に基づいて前記識別することは、
前記複数の非ゼロ重みのそれぞれに対して、前記階層的ビット表現の前記第1層に基づいて、前記非ゼロ重みが位置しているフィルタチャネルグループに対応するチャネルグループインデックスを決定することと、
階層的ビット表現の前記第3層に基づいて、前記非ゼロ重みの高さインデックスと幅インデックスを決定することと、
前記階層的ビット表現の前記第2層に基づいて、前記フィルタチャネルグループ内の前記非ゼロ重みのオフセットを決定することと、
前記チャネルグループインデックス、前記高さインデックス、前記幅インデックス、および前記オフセットに基づいて、前記割り当てられたサブテンソルから入力値を識別することを備えていることを特徴とする態様15のシステム。
[態様17]
階層的重み疎畳み込み処理のための非一時的コンピュータ読み取り可能記憶媒体であって、命令を有して構成され、前記命令は、1つ以上のプロセッサにより実行されると前記1つ以上のプロセッサに、
ニューラルネットワークの畳み込み層における入力テンソルと複数のフィルタを取得することと、
前記入力テンソルを複数のサブテンソルに分割すること、および前記複数のサブテンソルを複数のプロセッサに割り当てることと、
前記複数のフィルタのそれぞれに対して、前記フィルタにおける複数の非ゼロ重みの階層的ビット表現を生成することと、ここにおいて、
前記階層的ビット表現は、第1層と第2層を備え、
前記第1層は、前記フィルタにおける複数のサブフィルタに対応し、前記対応するサブフィルタは、少なくとも1つの非ゼロ重みを有しているかどうかを示す複数のビットを備え、
前記第2層は、前記フィルタにおける前記複数の非ゼロ重みに対応する複数のキーバリューペアを備え、各キーバリューペアは、前記複数の非ゼロ重みの1つを値として備え、前記複数の非ゼロ重みの前記1つのチャネル識別子をキーとして備え、
前記階層的ビット表現に基づいて、前記複数のプロセッサのそれぞれにより、前記複数の非ゼロ重みの1つ以上と、前記割り当てられたサブテンソルから対応する入力値を識別することと、
部分和を取得するために、前記1つ以上の識別された非ゼロ重みと前記対応する入力値に対して積和(MAC)演算を実行することとと、
前記ニューラルネットワークの前記畳み込み層の出力テンソルを構築するために、前記複数のプロセッサのそれぞれにより取得された前記部分和を累積することを備えている動作を実行させることを特徴とする記憶媒体。
[態様18]
前記複数のサブテンソルを複数のプロセッサに前記割り当てることは、
前記複数のプロセッサのそれぞれに対して、前記複数のサブテンソルの1つ以上を、前記プロセッサの内部バッファに記憶することを備えていることを特徴とする態様17の記憶媒体。
[態様19]
前記階層的ビット表現は、前記第1層と前記第2層との間に第3層を更に備え、
前記第3層は、前記複数のサブフィルタのそれぞれに対して、前記サブフィルタの複数の水平面にそれぞれ対応する複数のビットベクトルを備え、
前記複数のビットベクトルのそれぞれは、前記対応する水平面が、前記複数の非ゼロ重みの少なくとも1つを備えているかどうかを示していることを特徴とする態様17の記憶媒体。
[態様20]
前記複数のフィルタは、前記複数のサブフィルタのそれぞれが、すべてのゼロ重み、または予め決められている数の非ゼロ重みの何れかを有するように切り詰められることを特徴とする態様17の記憶媒体。

Claims (17)

  1. コンピュータにより実現される方法であって、
    ニューラルネットワークの畳み込み層における入力テンソルとフィルタを取得することと、
    前記フィルタを複数のサブフィルタに分割することと、
    前記フィルタにおける複数の非ゼロ重みの階層的ビット表現を生成することと、ここで、前記階層的ビット表現は、第1層を備え、前記第1層は、前記フィルタにおける前記複数のサブフィルタそれぞれに対応する複数のビットを備え、前記複数のビットのそれぞれは、前記対応するサブフィルタが少なくとも1つの非ゼロ重みを有しているかどうかを示し、
    前記フィルタの前記階層的ビット表現と前記入力テンソルに基づいて積和(MAC)演算を実行すること、
    を備え
    前記階層的ビット表現は第2層を更に備え、前記第2層は、前記フィルタ内の前記複数の非ゼロ重みにそれぞれ対応する複数のキー値ペアを備え、各キー値ペアは、値として複数の非ゼロ重みの1つと、キーとして前記複数の非ゼロ重みの1つのチャネル識別子を備えることを特徴とする方法。
  2. 前記MAC演算を実行することは、
    前記階層的ビット表現に基づいて、前記フィルタ内の複数の非ゼロ重みの1つまたは複数と前記入力テンソル内の対応する入力値を識別することと、
    前記識別された1つまたは複数の非ゼロ重みと前記対応する入力値に対してMAC演算を実行することと、を備える請求項1の方法。
  3. 前記MAC演算を実行することは、
    前記複数の非ゼロ重みのそれぞれについて、前記階層的ビット表現の前記第1層に基づいてチャネルグループインデックスを決定することと、ここで、前記チャネルグループインデックスは、非ゼロ重みが位置するフィルタチャネルグループに対応し、
    前記階層的ビット表現の前記第2層に基づいて、前記フィルタチャネルグループ内の前記非ゼロ重みのオフセットを決定することと、
    前記チャネルグループインデックスと前記オフセットに基づいて、前記入力テンソル内の入力値を識別することと、
    前記識別された入力値と前記非ゼロ重みに基づいてMAC演算を実行することと、を備える請求項1に記載の方法。
  4. 前記階層的ビット表現が第3層を更に備え、前記第3層は、前記複数のサブフィルタのそれぞれにおける複数の水平面にそれぞれ対応する複数のビットベクトルを備え、前記複数のビットベクトルは、前記対応する水平面が前記複数の非ゼロ重みのうちの少なくとも1つを備えるかどうかを示す請求項の方法。
  5. 前記MAC演算を実行することは、
    前記複数の非ゼロ重みのそれぞれについて、前記階層的ビット表現の前記第1層に基づいてチャネルグループインデックスを決定することと、ここで、前記チャネルグループインデックスは、前記非ゼロ重みが位置するフィルタチャネルグループに対応し、
    前記階層的ビット表現の前記第3層に基づいて、前記非ゼロ重みの高さインデックスと幅インデックスを決定することと、
    前記階層的ビット表現の前記第2層に基づいて、フィルタチャネルグループ内の非ゼロ重みのオフセットを決定することと、
    前記チャネルグループインデックス、前記高さインデックス、前記幅インデックス、前記オフセットに基づいて、前記入力テンソル内の入力値を識別することと、
    前記識別された入力値と前記非ゼロ重みに基づいてMAC演算を実行すること、
    を備える請求項に記載の方法。
  6. 前記複数のサブフィルタのそれぞれが、すべてゼロの重みを有するか、または、予め決められた数の非ゼロ重みを有するように前記フィルタを切り詰めること、を更に備える請求項1に記載の方法。
  7. 前記MAC演算から複数の部分和を取得することと、
    前記複数の部分和に基づいて前記ニューラルネットワークの前記畳み込み層の出力テンソルを構築すること、
    を更に備える請求項1に記載の方法。
  8. 前記MAC演算は、複数のプロセッサ間で並列処理される、請求項1に記載の方法。
  9. 前記入力テンソルを複数のサブテンソルにセグメント化すること、ここで前記複数のサブテンソルのそれぞれおよび前記複数のサブフィルタのそれぞれが同じ数のチャネルを有する、を更に備え、
    前記MAC演算を実行することは、前記複数のサブテンソルおよび前記複数のサブフィルタを複数のプロセッサに割り当てて、MAC演算を並列に実行すること、を備える請求項1に記載の方法。
  10. 階層的重み疎畳み込み処理のためのシステムであって、1つまたは複数のプロセッサと、前記1つまたは複数のプロセッサに結合され、命令を有して構成されている1つ以上の非一時的コンピュータ読み取り可能メモリを備え、前記命令は前記システムに、
    ニューラルネットワークの畳み込み層における入力テンソルとフィルタを取得することと、
    前記フィルタを複数のサブフィルタに分割することと、
    前記フィルタにおける複数の非ゼロ重みの階層的ビット表現を生成することと、ここで、前記階層的ビット表現は、第1層を備え、前記第1層は、前記フィルタにおける前記複数のサブフィルタそれぞれに対応する複数のビットを備え、前記複数のビットのそれぞれは、前記対応するサブフィルタが少なくとも1つの非ゼロ重みを有しているかどうかを示し、
    前記フィルタの前記階層的ビット表現と前記入力テンソルに基づいて積和(MAC)演算を実行すること、
    を備える動作を実行させるために前記1つまたは複数のプロセッサにより実行可能であり、
    前記階層的ビット表現は第2層を更に備え、前記第2層は、前記フィルタ内の前記複数の非ゼロ重みにそれぞれ対応する複数のキー値ペアを備え、各キー値ペアは、値として複数の非ゼロ重みの1つと、キーとして前記複数の非ゼロ重みの1つのチャネル識別子を備えることを特徴とするシステム。
  11. 前記実行するMAC演算は、
    前記階層的ビット表現に基づいて、前記フィルタ内の複数の非ゼロ重みの1つまたは複数と前記入力テンソル内の対応する入力値を識別することと、
    前記識別された1つまたは複数の非ゼロ重みと前記対応する入力値に対してMAC演算を実行すること、
    を備える請求項10に記載のシステム。
  12. 前記MAC演算を実行することは、
    前記複数の非ゼロ重みのそれぞれについて、前記階層的ビット表現の前記第1層に基づいてチャネルグループインデックスを決定することと、ここで、前記チャネルグループインデックスは、非ゼロ重みが位置するフィルタチャネルグループに対応し、
    前記階層的ビット表現の前記第2層に基づいて、前記フィルタチャネルグループ内の前記非ゼロ重みのオフセットを決定することと、
    前記チャネルグループインデックスと前記オフセットに基づいて、前記入力テンソル内の入力値を識別することと、
    前記識別された入力値と前記非ゼロ重みに基づいてMAC演算を実行することと、を備える請求項10に記載のシステム。
  13. 前記階層的ビット表現が第3層を更に備え、前記第3層は、前記複数のサブフィルタのそれぞれにおける複数の水平面にそれぞれ対応する複数のビットベクトルを備え、前記複数のビットベクトルは、前記対応する水平面が前記複数の非ゼロ重みのうちの少なくとも1つを備えるかどうかを示す請求項10に記載のシステム。
  14. 階層的重み疎畳み込み処理のための非一時的コンピュータ読み取り可能記憶媒体であって、命令を有して構成され、前記命令は、1つまたは複数のプロセッサにより実行されると前記1つまたは複数のプロセッサに、
    ニューラルネットワークの畳み込み層における入力テンソルとフィルタを取得することと、
    前記フィルタを複数のサブフィルタに分割することと、
    前記フィルタにおける複数の非ゼロ重みの階層的ビット表現を生成することと、ここで、前記階層的ビット表現は、第1層を備え、前記第1層は、前記フィルタにおける前記複数のサブフィルタそれぞれに対応する複数のビットを備え、前記複数のビットのそれぞれは、前記対応するサブフィルタが少なくとも1つの非ゼロ重みを有しているかどうかを示し、
    前記フィルタの前記階層的ビット表現と前記入力テンソルに基づいて積和(MAC)演算を実行すること、
    を備えている動作を実行させ
    前記階層的ビット表現は第2層を更に備え、前記第2層は、前記フィルタ内の前記複数の非ゼロ重みにそれぞれ対応する複数のキー値ペアを備え、各キー値ペアは、値として複数の非ゼロ重みの1つと、キーとして前記複数の非ゼロ重みの1つのチャネル識別子を備えることを特徴とする記憶媒体。
  15. 前記実行するMAC演算は、
    前記階層的ビット表現に基づいて、前記フィルタ内の複数の非ゼロ重みの1つまたは複数と、前記入力テンソル内の対応する入力値を識別することと、
    前記識別された1つまたは複数の非ゼロ重みと前記対応する入力値に対してMAC演算を実行すること、
    を備える請求項14に記載の記憶媒体。
  16. 前記MAC演算を実行することは、
    前記複数の非ゼロ重みのそれぞれについて、前記階層的ビット表現の前記第1層に基づいてチャネルグループインデックスを決定することと、ここで、前記チャネルグループインデックスは、非ゼロ重みが位置するフィルタチャネルグループに対応し、
    前記階層的ビット表現の前記第2層に基づいて、前記フィルタチャネルグループ内の前記非ゼロ重みのオフセットを決定することと、
    前記チャネルグループインデックスと前記オフセットに基づいて、前記入力テンソル内の入力値を識別することと、
    前記識別された入力値と前記非ゼロ重みに基づいてMAC演算を実行すること、
    を備える請求項14に記載の記憶媒体。
  17. 前記階層的ビット表現が第3層を更に備え、前記第3層は、前記複数のサブフィルタのそれぞれにおける複数の水平面にそれぞれ対応する複数のビットベクトルを備え、前記複数のビットベクトルは、前記対応する水平面が前記複数の非ゼロ重みのうちの少なくとも1つを備えるかどうかを示す請求項14に記載の記憶媒体。
JP2023524504A 2020-08-21 2021-08-23 階層的重み疎畳み込み処理のための方法とシステム Active JP7450815B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2024033128A JP2024052988A (ja) 2020-08-21 2024-03-05 階層的重み疎畳み込み処理のための方法とシステム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/999,455 2020-08-21
US16/999,455 US10970619B1 (en) 2020-08-21 2020-08-21 Method and system for hierarchical weight-sparse convolution processing
PCT/CN2021/114157 WO2022037705A1 (en) 2020-08-21 2021-08-23 Method and system for hierarchical weight-sparse convolution processing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2024033128A Division JP2024052988A (ja) 2020-08-21 2024-03-05 階層的重み疎畳み込み処理のための方法とシステム

Publications (2)

Publication Number Publication Date
JP2023534317A JP2023534317A (ja) 2023-08-08
JP7450815B2 true JP7450815B2 (ja) 2024-03-15

Family

ID=75275484

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2023524504A Active JP7450815B2 (ja) 2020-08-21 2021-08-23 階層的重み疎畳み込み処理のための方法とシステム
JP2024033128A Pending JP2024052988A (ja) 2020-08-21 2024-03-05 階層的重み疎畳み込み処理のための方法とシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2024033128A Pending JP2024052988A (ja) 2020-08-21 2024-03-05 階層的重み疎畳み込み処理のための方法とシステム

Country Status (7)

Country Link
US (2) US10970619B1 (ja)
EP (1) EP4200759A4 (ja)
JP (2) JP7450815B2 (ja)
KR (2) KR20240023241A (ja)
CN (1) CN115485695A (ja)
TW (1) TWI806134B (ja)
WO (1) WO2022037705A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12034015B2 (en) 2018-05-25 2024-07-09 Meta Platforms Technologies, Llc Programmable pixel array
US11888002B2 (en) 2018-12-17 2024-01-30 Meta Platforms Technologies, Llc Dynamically programmable image sensor
US11962928B2 (en) 2018-12-17 2024-04-16 Meta Platforms Technologies, Llc Programmable pixel array
US12108141B2 (en) 2019-08-05 2024-10-01 Meta Platforms Technologies, Llc Dynamically programmable image sensor
US11935291B2 (en) 2019-10-30 2024-03-19 Meta Platforms Technologies, Llc Distributed sensor system
US11948089B2 (en) 2019-11-07 2024-04-02 Meta Platforms Technologies, Llc Sparse image sensing and processing
US11825228B2 (en) 2020-05-20 2023-11-21 Meta Platforms Technologies, Llc Programmable pixel array having multiple power domains
US10970619B1 (en) * 2020-08-21 2021-04-06 Moffett Technologies Co., Limited Method and system for hierarchical weight-sparse convolution processing
US12075175B1 (en) 2020-09-08 2024-08-27 Meta Platforms Technologies, Llc Programmable smart sensor with adaptive readout
US11556757B1 (en) * 2020-12-10 2023-01-17 Neuralmagic Ltd. System and method of executing deep tensor columns in neural networks
TW202321991A (zh) * 2021-06-22 2023-06-01 美商元平台技術有限公司 稀疏影像處理
US11960982B1 (en) * 2021-10-21 2024-04-16 Neuralmagic, Inc. System and method of determining and executing deep tensor columns in neural networks
CN114218152B (zh) * 2021-12-06 2023-08-15 海飞科(南京)信息技术有限公司 流处理方法、处理电路和电子设备
WO2023141939A1 (zh) * 2022-01-28 2023-08-03 华为技术有限公司 处理计算任务方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180336462A1 (en) 2017-05-16 2018-11-22 Samsung Electronics Co., Ltd. Optimized neural network input stride method and apparatus
US20190347536A1 (en) 2017-10-06 2019-11-14 DeepCube LTD. System and method for compact and efficient sparse neural networks

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160358069A1 (en) 2015-06-03 2016-12-08 Samsung Electronics Co., Ltd. Neural network suppression
US20180046898A1 (en) * 2016-08-11 2018-02-15 Vivante Corporation Zero Coefficient Skipping Convolution Neural Network Engine
WO2018184222A1 (en) * 2017-04-07 2018-10-11 Intel Corporation Methods and systems using improved training and learning for deep neural networks
US10726514B2 (en) * 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
KR20190044878A (ko) * 2017-10-23 2019-05-02 삼성전자주식회사 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
US20190251436A1 (en) * 2018-02-14 2019-08-15 Samsung Electronics Co., Ltd. High-speed processing method of neural network and apparatus using the high-speed processing method
US11645529B2 (en) * 2018-05-01 2023-05-09 Hewlett Packard Enterprise Development Lp Sparsifying neural network models
KR20200076461A (ko) * 2018-12-19 2020-06-29 삼성전자주식회사 중첩된 비트 표현 기반의 뉴럴 네트워크 처리 방법 및 장치
KR102178932B1 (ko) * 2018-12-19 2020-11-18 고려대학교 산학협력단 출력 특징 맵의 0에 대한 연산을 스킵할 수 있는 합성곱 신경망의 연산 장치 및 그 동작 방법
KR20200091623A (ko) * 2019-01-23 2020-07-31 삼성전자주식회사 위노그라드 변환에 기반한 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
CN109857744B (zh) * 2019-02-13 2020-03-20 上海燧原智能科技有限公司 稀疏张量计算方法、装置、设备及存储介质
US10970619B1 (en) * 2020-08-21 2021-04-06 Moffett Technologies Co., Limited Method and system for hierarchical weight-sparse convolution processing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180336462A1 (en) 2017-05-16 2018-11-22 Samsung Electronics Co., Ltd. Optimized neural network input stride method and apparatus
US20190347536A1 (en) 2017-10-06 2019-11-14 DeepCube LTD. System and method for compact and efficient sparse neural networks

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LI, J. et al.,SqueezeFlow: A Sparse CNN Accelerator Exploiting Concise Convolution Rules,IEEE Transactions on Computers,IEEE,2019年06月24日,Volume 68, Issue 11,pp. 1663-1677,[online], [retrieved on 2023-09-13]. Retrieved from <https://ieeexplore.ieee.org/document/8744254> <doi: 10.1109/TC.2019.2924215>

Also Published As

Publication number Publication date
KR102636710B1 (ko) 2024-02-14
TW202331599A (zh) 2023-08-01
EP4200759A1 (en) 2023-06-28
US10970619B1 (en) 2021-04-06
EP4200759A4 (en) 2024-04-03
JP2023534317A (ja) 2023-08-08
CN115485695A (zh) 2022-12-16
KR20230078652A (ko) 2023-06-02
US11144823B1 (en) 2021-10-12
TW202215304A (zh) 2022-04-16
KR20240023241A (ko) 2024-02-20
WO2022037705A1 (en) 2022-02-24
TWI806134B (zh) 2023-06-21
JP2024052988A (ja) 2024-04-12

Similar Documents

Publication Publication Date Title
JP7450815B2 (ja) 階層的重み疎畳み込み処理のための方法とシステム
US11816559B2 (en) Dilated convolution using systolic array
US11836610B2 (en) Concurrent training of functional subnetworks of a neural network
WO2022002157A1 (en) Method and system for balanced-weight sparse convolution processing
WO2022095984A1 (en) Method and system for convolution with workload-balanced activation sparsity
CN118043821A (zh) 混合稀疏压缩
US11636569B1 (en) Matrix transpose hardware acceleration
CN116261736B (zh) 用于双稀疏卷积处理和并行化的方法和系统
CN111860825A (zh) 一种数据处理方法及相关产品
US12125124B1 (en) Matrix transpose hardware acceleration
TW202416219A (zh) 支援機器學習加速的記憶體儲存格式

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230420

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230420

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20230420

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230919

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231109

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240305

R150 Certificate of patent or registration of utility model

Ref document number: 7450815

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150