JP2023518717A - 機械学習アクセラレータの電力削減 - Google Patents

機械学習アクセラレータの電力削減 Download PDF

Info

Publication number
JP2023518717A
JP2023518717A JP2022554763A JP2022554763A JP2023518717A JP 2023518717 A JP2023518717 A JP 2023518717A JP 2022554763 A JP2022554763 A JP 2022554763A JP 2022554763 A JP2022554763 A JP 2022554763A JP 2023518717 A JP2023518717 A JP 2023518717A
Authority
JP
Japan
Prior art keywords
matrix
tile
matrix multiplication
layer
range information
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.)
Pending
Application number
JP2022554763A
Other languages
English (en)
Inventor
ヴィー. カザコフ マキシム
ローレンス ワズムント サミュエル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2023518717A publication Critical patent/JP2023518717A/ja
Pending legal-status Critical Current

Links

Images

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
    • 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/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

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

Abstract

ニューラルネットワーク演算を実行するための技術が開示されている。本技術は、第1の行列タイル及び第2の行列タイルを識別することと、第1の行列タイルについての第1の範囲情報及び第2の行列タイルについての第2の範囲情報を取得することと、第1の範囲情報及び第2の範囲情報に基づいて行列乗算経路を選択することと、選択された行列乗算経路を使用して、第1の行列タイル及び第2の行列タイルに対して行列乗算を実行し、タイル行列乗算積を生成することと、を含む。【選択図】図3

Description

(関連出願の相互参照)
本願は、2020年3月26日に出願された米国特許出願第16/831,711号の利益を主張し、その内容は、参照により本明細書に組み込まれる。
機械学習システムは、出力を生成するために、訓練(トレーニング)されたネットワークを通して入力を処理する。処理されるデータの量及びネットワークの複雑さのために、そのような評価は、非常に多数の計算を伴う。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
一例による、ニューラルネットワーク処理システムのブロック図である。 ニューラルネットワークデータを示す例示的なブロック図である。 一例による、追加の詳細を示す図1のニューラルネットワーク処理ブロックのブロック図である。 一例による、一般的なニューロン層(generic neuron layer)に関連する行列乗算演算を示す図である。 一例による、畳み込み演算を示す図である。 一例による、バッチ式マルチチャネル畳み込み演算を示す図である。 マルチチャネル、バッチ式畳み込みが行列乗算演算として実行されている例示的な方法を示す図である。 一例による、行列演算を実行するための方法のフロー図である。
ニューラルネットワーク演算を実行するための技術が開示されている。本技術は、第1の行列タイル及び第2の行列タイルを識別することと、第1の行列タイルについての第1の範囲情報及び第2の行列タイルについての第2の範囲情報を取得することと、第1の範囲情報及び第2の範囲情報に基づいて、行列乗算経路を選択することと、タイル行列乗算積を生成するために、選択された行列乗算経路を使用して、第1の行列タイル及び第2の行列タイルに行列乗算を実行することと、を含む。
図1は、一例による、ニューラルネットワーク処理システム100のブロック図である。ニューラルネットワーク処理システムは、ニューラルネットワーク処理ブロック102と、ニューラルネットワークデータ104と、を含む。ニューラルネットワーク処理ブロック102は、本明細書に記載される演算を実行するハードウェア回路、本明細書に記載される演算を実行するためにプロセッサ上で実行するソフトウェア、又は、本明細書に記載される演算を実行するハードウェア回路とプロセッサ上で実行するソフトウェアとの組み合わせとして具体化されている。
演算において、ニューラルネットワーク処理ブロック102は、ニューラルネットワーク入力106を受信し、ニューラルネットワーク出力108を生成するためにニューラルネットワークデータ104に従ってニューラルネットワーク入力106を処理し、ニューラルネットワーク出力108を出力する。
いくつかの例において、ニューラルネットワーク処理ブロック102は、本明細書に記載される演算を実行するための命令を読み取り、実行する1つ以上のプロセッサを含むコンピュータシステムであるか、又は、その中に含まれている。いくつかの実施形態において、任意のそのようなプロセッサ(又は、本明細書に記載される任意のプロセッサ)は、1つ以上のメモリから命令をフェッチするための命令フェッチ回路と、1つ以上のメモリからデータをフェッチためのデータフェッチ回路と、命令を実行するための命令実行回路と、を含む。様々な例において、ニューラルネットワーク処理ブロック102の1つ以上のプロセッサは、1つ以上のプロセッサのためにデータを入力し、データを出力する、1つ以上の入力デバイス及び/又は1つ以上の出力デバイスに結合されている。ニューラルネットワークデータ104は、1つ以上のニューラルネットワークを定義するデータを含み、ニューラルネットワーク処理ブロック102は、1つ以上のニューラルネットワークを通して、ニューラルネットワーク出力108を生成するためにニューラルネットワーク入力106を処理する。
図2は、ニューラルネットワークデータ104を示す例示的なブロック図である。ニューラルネットワークデータ104は、データが流れる層202のシーケンスを含む。ニューラルネットワークデータ104は、このデータが、出力を生成するために、入力に対して実行されたニューラルネットワーク演算のシーケンスを表すため、本明細書では単に「ニューラルネットワーク104」と呼ばれることがある。ニューラルネットワーク処理ブロック102は、ニューラルネットワーク入力106を層202に適用し、層202は、それぞれの層変換を適用してニューラルネットワーク出力108を生成する。各層は、その層202から次の層へ又は最終層202(N)についてニューラルネットワーク出力108としての出力を生成するために、その層202によって受信された入力に適用されたそれ自体の層変換を有する。ニューラルネットワークデータ104は、層202の数及び各層202での特定の変換として、ニューラルネットワークを定義する。例示的な変換は、層202における複数のニューロンの各々が前の層202からの出力への接続性を定義している一般的なニューロン層と、単一要素変換と、畳み込み層と、プーリング層と、を含む。より具体的には、上述したように、各層202は、前の層202から入力ベクトルを受信する。いくつかの層202は、ニューロンのセットを含み、そのような各ニューロンは、入力ベクトルの定義されたサブセット又はその全体のベクトルを受信する。更に、そのような各ニューロンは、そのような各入力に適用された重みを有する。更に、各ニューロンの活性化(activation)は、各入力での入力値と各入力での重みの積の合計である(したがって、そのような各活性化は、そのニューロンの入力ベクトルとそのニューロンの重みベクトルのドット積(dot product)である)。
単一要素変換を適用する層202は、入力ベクトルを受信し、その入力ベクトルの各要素にいくつかの定義された変換を適用する。例示的な変換は、クランプ機能、又は、いくつかの他の非線形関数を含む。プーリングを適用する層202は、任意の技術的に実現可能な方法において入力をダウンサンプリングするダウンサンプリング機能に基づいて、入力ベクトルよりも小さいサイズの出力ベクトルを生成するために、入力ベクトルに対してダウンサンプリングを実行する。畳み込みを適用する層202は、出力を生成するために、入力データの切り抜き及びフィルタベクトルをフィルタリングするためにドット積が適用される畳み込み演算を適用する。
一般的ニューロン層及び畳み込み層等のいくつかのタイプの層演算は、行列乗算で実装されている。より具体的には、一般的なニューロン層におけるニューロンの活性化関数の計算はドット積であるため、そのような計算は、行列乗算によって定義されたドット積演算のセットとして実装することができる。同様に、畳み込み演算におけるフィルタの適用はドット積で実行されているため、行列乗算演算は、畳み込み層を実装するために使用することができる。浮動小数点数を含む大規模な行列乗算演算は、実行された浮動小数点数の乗算演算の複雑さ及び数のために、大量の電力を消費する可能性がある。したがって、特定の状況における電力使用を低減する技術が本明細書で提供されている。
図3は、一例による、追加の詳細を示す図1のニューラルネットワーク処理ブロック102のブロック図である。ニューラルネットワーク処理ブロック102は、ニューラルネットワーク処理ブロック102が行列乗算を使用する層202について行列乗算を実行するために使用するタイル行列乗算器302を含む。
層202について行列乗算を実行する過程において、ニューラルネットワーク処理ブロック102は、層入力308及び層重み309を受信し、層入力310についての範囲メタデータ及び重み316についての範囲メタデータを生成又は受信する。層入力308は、行列乗算を使用する特定の層202についての入力を含む。層重み309は、一般的なニューロン層についてのニューロン接続重み又は畳み込み層についてのフィルタ重みを含む。層入力308は、各々が層入力を表す入力行列の一部である層入力タイル312のセットを含む。層重み309は、重みタイル313に分割された層の重みのセットである。重み316についての範囲メタデータは、各重みタイル318についての範囲メタデータを含む。範囲メタデータの各項目は、対応する重みタイル313の範囲を示す。層入力310についての範囲メタデータは、各層入力タイル312についての範囲メタデータを含む。層入力メタデータの各項目は、対応する層入力タイル312の範囲を示す。
範囲(重み範囲318及び入力範囲311)は、対応する重みタイル313又は入力タイル312についての値の範囲を示す。一例において、特定タイルについての範囲は、-1~1であり、タイルの全ての要素が-1~1であることを意味している。別の例において、範囲は、-256~256であり、別の例において、範囲は、全範囲(すなわち、重みのデータ項目によって表現することができる最大範囲)である。
層入力308によって層重み309の行列乗算を実行する場合に、タイル行列乗算器302は、部分行列積を生成するために層重みタイル313によって層入力タイル312の行列乗算を実行し、層出力320を生成するために部分行列積を組み合わせる。部分積を生成するために一緒に乗算されている特定の層入力タイル312及び重みタイル313、並びに、層出力320を生成するためにそれらの部分積が組み合わせられている方法は、層の性質によって規定されている。いくつかの例は、この記載の他の部分において示されている。
重みタイル313によって層入力タイル312の特定の乗算を実行することにおいて、タイル行列乗算器は、重みタイル318についての範囲メタデータ及び入力タイル311についての範囲メタデータを検査し、乗算を実行するために乗算経路306を選択する。異なる乗算経路306は、範囲の異なる組み合わせについて構成されており、組み合わせが、層入力タイル311の範囲及び重みタイル318の範囲として定義されている。より限定された範囲の組み合わせについて構成されている乗算経路306は、より広い範囲のセットの組み合わせについて構成されている乗算経路306よりも少ない電力を消費する。乗算経路306は、最大で固定サイズの2つの行列について行列乗算を実行するように構成された回路である。本明細書の他の箇所に記載されるタイル状乗算アプローチを使用する乗算経路306を使用して、このサイズよりも大きい2つの行列を一緒に乗算することが可能である。簡単に言えば、このタイル状乗算アプローチは、入力行列をタイルに分割すること、部分積を生成するためにこれらのタイルを一緒に乗算すること、及び、最終出力行列を生成するために部分積を合計することを伴う。いくつかの実施形態において、各乗算経路306は、同じサイズの被乗数行列について構成されている。
より限定された範囲について乗算経路306についての電力低減は、より単純な回路を通して成し遂げられる。一例において、行列乗算は、部分ドット積を生成するためにドット積被乗数を乗算すること、及び、最終ドット積を生成するために部分ドット積を合計することを伴う、ドット積を実行することを伴う。部分ドット積の指数は、最終的に、十分に指数が小さい部分ドット積が最大指数を有する部分積によって表現可能な最小単位よりも十分に小さく、したがって最終ドット積に寄与しない場合、部分ドット積を合計する場合に、何れの部分ドット積が破棄されるかを判定する。この破棄を容易にするために、乗算経路306の少なくともいくつかは、何れの部分ドット積を破棄するかを判定するために、部分ドット積の指数を比較するための回路を含む。しかしながら、この比較は、電力を消費する。範囲メタデータを利用することは、重みタイル313及び入力タイル312の一方又は両方が特定の範囲内に適合する場合に、より少ない数の指数比較が行われることを可能にする。したがって、タイル行列乗算器302が部分行列積を生成するために入力タイル312によって重みタイル313の乗算を実行する場合に、タイル行列乗算器302は、入力タイル312についての入力タイル範囲311及び重みタイル313についての重みタイル範囲318を検査し、それらの範囲に適した乗算経路306を選択する。
ニューラルネットワーク処理ブロック102は、以下の方法においてニューラルネットワーク104で処理を実行する。ニューラルネットワーク処理ブロック102は、ニューラルネットワーク104への入力106を受信し、それらの入力を第1の層202に提供する。ニューラルネットワーク処理ブロック102は、出力を生成するためにその層202でそれらの入力を処理して、次の層202にそれらの出力を提供し、ニューラルネットワーク処理ブロック102がニューラルネットワーク出力108を生成するまで、この処理を継続する。行列乗算を介して実装された1つ以上の層202(一般的なニューロン層又は畳み込み層等)について、ニューラルネットワーク処理ブロック102は、乗算される行列について範囲データ(例えば、重み316についての範囲メタデータ及び/又は層入力310についての範囲メタデータを含む)を生成又は取得し、その範囲メタデータに基づいて選択された乗算経路306を使用して行列乗算を実行する。いくつかの実施形態において、ニューラルネットワーク処理ブロック102は、CPU(中央処理ユニット)(いくつかの実施形態において、オペレーティングシステムを実行する)等の外部プロセッサからの介入なしにこの範囲メタデータを取得又は生成する。いくつかの実施形態において、ニューラルネットワーク処理ブロック102は、この範囲メタデータを自動的に取得又は生成する。いくつかの実施形態において、ニューラルネットワーク処理ブロック102は、ニューラルネットワーク処理ブロック102の一部ではないプロセッサによってそうするように命令されることなく、このメタデータを取得又は生成する。いくつかの実施形態において、ニューラルネットワーク処理ブロック102は、それらの入力をニューラルネットワーク処理ブロック102の外部にあるメモリに転送することなく、層202への入力についてこのメタデータを取得又は生成する。より具体的には、いくつかの実施形態において、CPU又は他のプロセッサは、層202によって生成された出力データを、CPU又は他のプロセッサによってアクセス可能なメモリに読み込ませ、その出力データについて範囲メタデータを生成し、後続の層202に範囲メタデータを提供する。いくつかの実施形態において、ニューラルネットワーク処理ブロック102は、CPU又は他のプロセッサによる介入なしで、及び、出力データがCPU又は他のプロセッサによってアクセス可能なメモリに読み込まれることを必要とせずに、この範囲メタデータ生成を実行する。
いくつかの実施形態において、ニューラルネットワーク処理ブロック102は、ニューラルネットワーク104を通して入力を処理しながら、重み316について範囲メタデータを生成しない。代わりに、ニューラルネットワーク処理ブロック102は、重み316がニューラルネットワーク104を通して入力を処理する任意の特定のインスタンスに対して静的であるため、ニューラルネットワーク104を通して入力を処理する前に、重み316について範囲メタデータを生成する。行列乗算で実装される層202について入力がフェッチされる場合に、ニューラルネットワーク処理ブロック102は、その層の重みについて事前に生成された範囲データをフェッチし、その層202についての層入力310について範囲メタデータを取得する。
図4は、一例による、一般的なニューロン層に関連する行列乗算演算を示す図である。何れの層202も、一般的なニューロン層として実装可能である。例示的なニューラルネットワーク部分400は、第1のニューロン層402(1)と、第2のニューロン層402(2)と、第3のニューロン層402(3)と、を含む。第1のニューロン層402(1)において、ニューロンN1,1は、W1,1,1 入力1+W1、2、1 入力2として活性化出力を生成するために、入力1に重みW1,1,1を適用し、入力2にW1、2、1を適用する。同様に、ニューロンN1,2は、W1,1,2 入力1+W1、2、1 入力2として出力を生成する。他のニューロン層402についての活性化は、示された重み及び入力で同様に計算される。
図4は、入力の複数のセット(又はバッチ)について、第2のニューロン層402(2)についての行列乗算演算を示す。入力のセットは、入力データの独立したインスタンスである。一時的に図2に戻って参照すると、ニューラルネットワーク入力データ106の複数の異なるセットを同時にニューラルネットワークデータ104に適用して、ニューラルネットワーク出力108の複数のセットを生成することが可能であり、これは、複数のニューラルネットワーク順方向伝播演算を並行して実行することを可能にする。
図4において、行列乗算404の演算は、3つの異なる入力データセットについて示されている。図示された第1の行列406は、層402(2)のニューロンへの入力の行列である。これらの入力は、図示された前のニューロンの活性化、具体的にはN1,1活性化及びN1,2活性化と呼ばれる。したがって、入力行列406は、3つの異なるセットについて、ニューロンN1,1及びN1,2からの活性化を含む。それらの活性化の表記は、AX、Y、Zであり、ここで、X及びYはニューロンを定義しており、Zは入力セットを定義している。第2の行列408は、第1の層402(1)のニューロンと第2の層402(2)のニューロンとの間の接続の重みを含む。重みは、WX、Y、Zとして表されており、ここで、X及びYは重みが指し示すニューロンを表しており、Zは重みが発するニューロンを表している。
行列乗算は、活性化行列410を取得するために、重み行列の列によって入力の行の各々のドット積を実行することを含む。活性化行列の各行は、入力の異なるセットに対応し、各列は、層402(2)の異なるニューロンに対応し、示されるようにドット積が生成される。
上述したように、タイル行列乗算器302は、行列をタイルに分解すること、部分行列積を生成するために一緒にタイルを乗算すること、及び、最終出力行列を生成するために部分行列積を合計することによって行列を乗算する。タイル行列乗算器302は、適切な範囲メタデータに基づいて、各タイルからタイルへの乗算について乗算経路306を選択する。
それらの大きな行列をより小さな行列(タイル)に分割することによって大きな行列を乗算する方法の一例が、ここで提供されている。
Figure 2023518717000002
上記のように、行列乗算演算において、行列積におけるx,y座標を有する要素は、第1の行列のX番目の行と第2の行列のY番目の列とのドット積を生成することによって生成されている。同じ行列乗算は、被乗数行列の各々をタイルに分割すること、各タイルを「疎」被乗数行列の要素として処理すること、これらの「疎」行列に行列乗算を実行することによって、タイル状様式で実行され得る。そのような疎行列の積の座標x、yを有する各要素は、第1の疎行列のX番目の行と第2の疎行列のY番目の列との「疎ドット積」から結果として生じる行列である。疎ドット積は、乗算が行列乗算に置き換えられ、加算が行列加算に置き換えられることを除いて、ドット積と同じである。そのようなドット積は、2つのタイルの行列乗算を伴うため、この乗算は、部分行列積を生成するためにタイル毎の行列乗算を実行し、次いで、最終積に到達するためにそれらの部分行列積を加算するハードウェア上にマッピング可能である。タイル行列乗算器302は、タイル毎の行列乗算について乗算経路306を選択するために、記憶された範囲メタデータを使用して、タイル状被乗数行列を乗算するために上記の演算を実行する。
以下の例において、表1の行列乗算は、タイル状様式において実行される。行列乗算:
Figure 2023518717000003

は、
Figure 2023518717000004

として表すことができ、
ここで、M及びN要素は、タイルであり、
Figure 2023518717000005

である。
したがって、行列積は、各要素が、タイルの行列積の合計である、
Figure 2023518717000006

として表すことができる。NタイルとMタイルを乗算することは、標準的な行列乗算を通して行われる。上記は、2つの4×4行列の行列乗算が行列を2×2のタイルに分割すること、部分行列積を生成するためにそれらの行列を乗算すること、及び、最終行列積を生成するために部分行列積を合計することによって、いかにして実行することができるかを示している。いくつかの実施形態において、図4に記載されたタイプの一般的なニューロン行列乗算について、重みタイル313及び入力タイル312は、(1つ以上の入力セットについて)重み行列及び入力行列のタイルへの分割を表す。図3の範囲メタデータは、各タイル(Mタイル又はNタイル)について指定されている。
行列乗算で実装されている別のタイプのニューラルネットワーク演算は、畳み込みである。図5は、一例による、畳み込み演算500を示す図である。畳み込み演算において、入力行列502(画像又は他の行列データ等)は、出力行列506を生成するためにフィルタ504で畳み込まれている。入力行列502内で、いくつかのフィルタ切り抜き508が示されている。各フィルタ切り抜きは、出力行列506の要素Oを生成するために、ドット積がフィルタ504で実行される入力行列502の一部分を表す。なお、各フィルタ切り抜きについての演算は行列乗算ではないが、フィルタ切り抜きの要素及びフィルタを一次元ベクトルとして敷設することによって生成される2つのベクトルを備えたドット積である。したがって、出力要素O1,1は、I1,11,1+I2,12,1+I3,13,1+I1,21,2...+I2,32,3+I3,33,3に等しい。フィルタ504は、示されるように、寸法S×Rを有し、出力行列506は、寸法Q×Pを有する。
フィルタ切り抜き508の位置は、水平跨ぎ510及び垂直跨ぎ512によって画定されている。より具体的には、第1のフィルタ切り抜き508は、左上の角に位置付けられ、水平跨ぎ510は、後続の各フィルタ切り抜き508が前のフィルタ切り抜きからオフセットすることによって水平方向に入力行列要素の数を画定する。水平に整列されている(すなわち、全ての要素が正確に同じ行にある)フィルタ切り抜き508は、本明細書ではフィルタ切り抜き行と呼ばれる。垂直跨ぎ512は、各フィルタ切り抜き行が前のフィルタ切り抜き行からオフセットされている垂直方向の入力行列要素の数を画定する。
一例において、畳み込み演算の行列乗算演算への変換は、以下のように実行される。各フィルタ切り抜きは、入力被乗数行列に配置するための行の要素として敷設される。これらの行は、垂直に積み重ねられ、その結果、入力行列は、各列が異なるフィルタ切り抜きに対応する、行のセットであり、各行がそのフィルタ切り抜きの要素を含有している。フィルタデータは、フィルタベクトルを形成するために垂直に配列されている。これは、そのような行列乗算が出力画像506の出力要素を生成するためにフィルタデータを備えた各フィルタ切り抜き508のドット積を実行することを伴うので、出力画像506を結果として生じさせるために、フィルタベクトルによる入力データの行列乗算を可能にする。この行列乗算の出力はベクトルであり、2次元画像ではないが、このベクトルは、適切な形式に容易に再配列することができるか、又は、ベクトルが必要に応じて適切な形式であるかのように単に取り扱うことができることに留意されたい。
図6は、一例による、バッチ式マルチチャネル畳み込み演算600を示す図である。バッチ式マルチチャネル畳み込み演算において、N個の入力セット610の各々は、K個のフィルタセット612で畳み込まれ、各入力セット610及び各フィルタセット612がそれぞれC個のチャネルを有する。生成された出力は、N個の出力セット615であり、各出力セット615がK個の出力画像を有している。
マルチチャネル畳み込み演算において、複数の入力画像502及び複数のフィルタ504が存在し、各入力画像502及び各フィルタ504は、特定のチャネルに関連付けられている。マルチチャネル畳み込みは、特定のチャネルの入力画像をその同じチャネルのフィルタで畳み込むことを伴う。各チャネルについてこれらの複数の畳み込み演算を行うことは、各チャネルについて出力画像をもたらす。次いで、これらの出力画像は、特定の入力セット610及び特定のフィルタセット612について、畳み込みについての最終出力画像を取得するために合計されている。出力画像は、所定の入力セット610について出力セット615を生成するために、各入力セット610についてK回生成される。総出力606はN個の出力セット615であり、各出力セットがK個の出力画像を含む。したがって、K個の出力画像が各入力セット610について生成され、K個のフィルタセット612があるので、出力画像の総数はK×Nである。
図7は、マルチチャネル、バッチ式畳み込みが行列乗算演算として実行されている例示的な方法を示す図である。この例は、複数のチャネル、複数の入力画像(N)及び複数のフィルタセット(K)について記載されているが、本明細書で提示される教示は、非バッチ式畳み込み、すなわち(or)一入力画像(N=1)、一フィルタセット(K=1)、及び/又は、一チャネル(C=1)を含む畳み込みに適用されることに留意されたい。
入力データ702は、C個のチャネルのデータと、N個の入力セット610と、PxQのフィルタ切り抜きと、を含む。出力画像506がPxQの要素を有し、そのような各要素がフィルタを備えた一フィルタ切り抜きのドット積を使用して生成されているため、入力セット610毎にPxQのフィルタ切り抜きがある。フィルタ切り抜きは、入力データ702における行として配列されている。入力データ702における単一の行は、特定の入力セット610から特定のフィルタ切り抜きについて水平に配列された全てのチャネルを含む。したがって、入力データ702においてN×P×Q行があり、各列が、全てのチャネルについて、並びに、特定の入力画像セット610及び特定のフィルタ切り抜きについて、フィルタ切り抜きデータを含んでいる。
フィルタデータ704はK個のフィルタセットを含み、各フィルタセット612が各々(各チャネルに対して1つ)C個のフィルタを有する。各フィルタは、K個のフィルタセット612のうち1つの一チャネルについてデータを含む。個々のフィルタについてのデータは、一列に属する単一のフィルタセット612の全てのチャネル及びフィルタデータ704に存在する合計K列のデータを備え、垂直に配列されている。
出力行列706は、K個のフィルタセットの各々についてN個の出力画像を含む。出力行列706は、入力データ702及びフィルタデータ704の通常の行列乗算演算として生成されている。タイル状様式においてこの演算を実行するために、タイル行列乗算器302は、入力データ702及びフィルタデータ704の各々においてタイルを生成し、部分行列積を生成するためにそれらのタイルを一緒に乗算し、その要素がタイルである「疎」行列を乗算することに関して、本明細書の他の箇所で記載された方法において一緒にそれらの部分行列積を追加する。入力タイル720及びフィルタデータタイル722は、タイルが入力データ702及びフィルタデータ704からどのように形成され得るのかを説明するために示されているが、これらのタイルは、任意のサイズであってもよい。
乗算は、以下の方法において出力データを生成する。入力データ702の各行は、出力画像706の要素を生成するためにフィルタデータ704の各列によってベクトル乗算されている。このベクトル乗算は、特定のフィルタセットを備えた特定のフィルタ切り抜きの全てのチャネルのドット積に対応する。チャネル畳み込み出力は、所定の入力バッチ及びフィルタセットについて出力を生成するために合計されるので、上記のドット積が、そのような出力を生成するために機能することに留意されたい。対応するベクトル積は、出力データ706を生成するために、各入力セット及び各フィルタセットについて完了されている。
入力データ702が重複データを含むことについて可能であることに留意されたい。より具体的には、図5に一時的に戻って参照すると、フィルタ切り抜き5081,1及びフィルタ切り抜き5082,1は、入力行列要素I3,1、I3,2及びI3,3を共有する。更に、図7に戻って参照すると、多くの状況において、入力データのタイル720は、実行中に(on the fly)生成されている。これらの理由について、いくつかの実施形態において、層入力範囲メタデータ310は、入力データタイル720毎の基準ではなく、範囲メタデータブロック503毎の基準で記憶されている。範囲メタデータブロック503は、入力画像タイル720が生成される入力画像502の一部である。特定の範囲メタデータブロック503から生成された全ての入力画像タイル720は、範囲メタデータブロック503の範囲が割り当てられている。入力画像タイル720が複数の範囲メタデータブロック503から生成されている場合、そのようなタイル720は、それらの複数の範囲メタデータブロック503の範囲から最も広い範囲が割り当てられている。この構成は、単一の範囲メタデータブロック503から生成された全ての入力データタイル720がその範囲メタデータブロック503について記憶された範囲メタデータを使用することを可能にするので、層入力範囲メタデータ310が判定される必要がある回数を低減する。
範囲メタデータブロックは、複数のフィルタ切り抜き508を含む。いくつかの例において、範囲メタデータブロック503は、フィルタ切り抜き行全体又は複数のフィルタ切り抜き行を含む。
図8は、一例による、行列演算を実行するための方法800のフロー図である。図1~7のシステムに関して記載されているが、当業者であれば、任意の技術的に実現可能な順序で方法800のステップを行うように構成された任意のシステムが本開示の範囲内にあることを理解するであろう。
方法800は、タイル行列乗算器302が一緒に乗算するために第1のタイル及び第2のタイルを識別するステップ802で始まる。様々な実施形態において、第1のタイルは、乗算される第1の行列のタイルであり、第2のタイルは、第1の行列によって乗算される第2の行列のタイルである。いくつかの実施形態において、行列のタイルは、その行列の要素のサブセットを含むその行列のサブ行列である。より具体的には、本明細書の他の箇所に記載されたように、そのような行列の一方又は両方をタイルに分割すること、及び、それらのタイルを標準的な行列乗算要素順序と同様の順序で一緒に乗算する(すなわち、各列及び各列のドット積を取得する)ことによって、2つの大きな行列の行列乗算の結果を取得することが可能である。これは、比較的小さなサイズの行列について構成された行列乗算回路が、より大きな行列を一緒に乗算するために使用されることを可能にする。
ステップ804で、タイル行列乗算器302は、第1の行列タイルについての第1の範囲情報及び第2の行列タイルについての第2の範囲情報を取得する。第1の範囲情報は、第1の行列タイルの全ての要素が適合する範囲を示し、第2の範囲情報は、第2の行列タイルの全ての要素が適合する範囲を示す。
ステップ806で、タイル行列乗算器302は、第1の範囲情報及び第2の範囲情報に基づいて、行列乗算経路306を選択する。異なる乗算経路306は、範囲の異なる組み合わせについて構成されている。より広い範囲の組み合わせについて構成されている乗算経路306は、より狭い範囲の組み合わせにつて構成されている乗算経路306よりも複雑であり、より多くの電力を消費する。したがって、異なるタイル毎の乗算について乗算経路306を選択するために範囲情報を使用することは、全体的に使用される電力の量を低減する。
いくつかの実施形態において、より限定された範囲についての乗算経路306は、部分行列積を合計する場合にどのような部分行列積を破棄するかを判定する場合に、部分行列積の指数値を比較するための回路をより少なく含むため、より広い範囲についての乗算経路306よりも単純である。より具体的には、行列乗算は、乗算積を合計することを伴うドット積を実行することを伴う。浮動小数点加算では、2つの数字間の加算は、過度に小さすぎる数字を単純に破棄することを伴うことができ、この破棄は、指数の大きさ間の比較に応答して実行されている。行列乗算における非常に広い範囲の数字でより多くのこのような指数比較が行われ、これは、追加の特定の回路を必要とする。したがって、より限定された範囲についての乗算経路306は、より少ない量の回路で実装され、したがって、より広い範囲について乗算経路306よりも少ない電力を消費する。
ステップ808で、選択された乗算経路306は、第1のタイル及び第2のタイルについて行列乗算を実行する。
いくつかの例において、方法800は、第1のタイル及び第2のタイルについて範囲情報を検出することも含む。いくつかの例において、第1のタイル及び第2のタイルは、ニューラルネットワーク104の層202を実装するために使用される行列のタイルである。前の層202からの出力が生成されることに応じて、ニューラルネットワーク処理ブロック102は、その出力に基づいて範囲情報を生成し、範囲メタデータを記憶するメモリにその範囲情報を記憶する。
いくつかの例において、行列乗算が実行されることについての層は、図4に示す層402等の一般的なニューロン層である。この例において、ニューラルネットワーク処理ブロック102は、前の層402からのニューロン入力のベクトルを含むその層402への入力を検査し、そのデータに基づいてタイルを生成し、それらのタイルについて範囲情報を判定する。いくつかの実施形態において、タイルは、図4に示すように、バッチ式ニューロン入力を含む行列の一部である。そのようなバッチ式入力において、第1の行列は、いくつかの入力セットの各々についてのニューロン入力値のベクトルを含む。セットは、ニューラルネットワーク104を通して処理された独立したデータである。
いくつかの例において、行列乗算が実行されることについての層は、畳み込み層である。入力行列は、図7に記載されたように、入力データ702及びフィルタデータ704を含む。しかしながら、この入力は、図5に示す入力画像502の形式で提供されている。ニューラルネットワーク処理ブロック102は、入力画像の範囲メタデータブロック503について範囲を判定し、本明細書の他の箇所で(例えば、図5~7に関して)記載されたように、そのような畳み込み層を処理する。
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を伴わずに単独で使用することができ、又は、他の特徴及び要素を伴って若しくは伴わずに様々な組み合わせで使用することができる。
図面に示され及び/又は本明細書に記載された様々な機能ユニット(ニューラルネットワーク処理ブロック102及びタイル行列乗算器302を含む)は、ハードウェア回路、プログラマブルプロセッサ上で実行するソフトウェア、又は、ハードウェアとソフトウェアとの組み合わせとして実装され得る。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリスト含む他の中間データ(そのような命令は、コンピュータ可読媒体に記憶させることが可能である)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークであってもよく、このマスクワークをその後の半導体製造プロセスにおいて使用して、実施形態の態様を実施するプロセッサを製造する。
本明細書に提供される方法又はフロー図は、汎用コンピュータ又はプロセッサによる実行のための非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施され得る。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、磁気媒体(例えば、内蔵ハードディスク及びリムーバブルディスク)、磁気光学媒体、光学媒体(例えば、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD))が挙げられる。

Claims (20)

  1. ニューラルネットワーク演算を実行するための方法であって、
    第1の行列タイル及び第2の行列タイルを識別することと、
    前記第1の行列タイルについての第1の範囲情報及び前記第2の行列タイルについての第2の範囲情報を取得することと、
    前記第1の範囲情報及び前記第2の範囲情報に基づいて行列乗算経路を選択することと、
    選択された前記行列乗算経路を使用して、前記第1の行列タイル及び前記第2の行列タイルに対して行列乗算を実行し、タイル行列乗算積を生成することと、を含む、
    方法。
  2. 前記第1のタイルは、ニューラルネットワークの層への入力の一部であり、前記第2のタイルは、前記ニューラルネットワークの層の重み行列の一部である、
    請求項1の方法。
  3. 前記層への入力を分析することによって前記第1の範囲情報を自動的に生成することを更に含む、
    請求項2の方法。
  4. 前記行列乗算経路を選択することは、2つ以上の行列乗算経路のセットから前記行列乗算経路を選択することを含み、各行列乗算経路は、入力範囲の異なるセットについて行列乗算演算を実行するように構成されている、
    請求項1の方法。
  5. 前記層は、一般的なニューロン層を含む、
    請求項2の方法。
  6. 前記第1の行列タイル及び前記第2の行列タイルの行列乗算は、バッチ式一般的ニューロン層演算の一部を含む、
    請求項5の方法。
  7. 前記層は、畳み込み層を含む、
    請求項2の方法。
  8. 範囲情報は、複数のフィルタ切り抜きを含む範囲メタデータブロックのセットについて記憶されている、
    請求項7の方法。
  9. 前記第1の範囲情報を取得することは、前記第1のタイルが生成される範囲メタデータブロックの範囲を取得することを含む、
    請求項8の方法。
  10. ニューラルネットワーク演算を実行するためのシステムであって、
    行列乗算経路のセットと、
    タイル行列乗算器と、を備え、
    前記タイル行列乗算器は、
    第1の行列タイル及び第2の行列タイルを識別することと、
    前記第1の行列タイルについての第1の範囲情報及び前記第2の行列タイルについての第2の範囲情報を取得することと、
    前記第1の範囲情報及び前記第2の範囲情報に基づいて、前記乗算経路のセットから行列乗算経路を選択することと、
    選択された前記行列乗算経路を使用して、前記第1の行列タイル及び前記第2の行列タイルに対して行列乗算を実行し、タイル行列乗算積を生成することと、
    を行うように構成されている、
    システム。
  11. 前記第1のタイルは、ニューラルネットワークの層への入力の一部であり、前記第2のタイルは、前記ニューラルネットワークの層の重み行列の一部である、
    請求項10のシステム。
  12. 前記層への入力を分析することによって前記第1の範囲情報を自動的に生成するように構成されたニューラルネットワーク処理ブロックを更に備える、
    請求項11のシステム。
  13. 各行列乗算経路は、入力範囲の異なるセットについて行列乗算演算を実行するように構成されている、
    請求項11のシステム。
  14. 前記層は、一般的なニューロン層を含む、
    請求項11のシステム。
  15. 前記第1の行列タイル及び前記第2の行列タイルの前記行列乗算は、バッチ式一般的ニューロン層演算の一部を含む、
    請求項14のシステム。
  16. 前記層は、畳み込み層を含む、
    請求項11のシステム。
  17. 範囲情報は、複数のフィルタ切り抜きを含む範囲メタデータブロックのセットについて記憶されている、
    請求項16のシステム。
  18. 前記第1の範囲情報を取得することは、前記第1のタイルが生成される範囲メタデータブロックの範囲を取得することを含む、
    請求項17のシステム。
  19. 命令を記憶するコンピュータ可読記憶媒体であって、
    前記命令は、プロセッサによって実行されると、
    第1の行列タイル及び第2の行列タイルを識別することと、
    前記第1の行列タイルについての第1の範囲情報及び前記第2の行列タイルについての第2の範囲情報を取得することと、
    前記第1の範囲情報及び前記第2の範囲情報に基づいて行列乗算経路を選択することと、
    選択された前記行列乗算経路を使用して、前記第1の行列タイル及び前記第2の行列タイルに対して行列乗算を実行し、タイル行列乗算積を生成することと、
    を前記プロセッサに行わせる、
    コンピュータ可読記憶媒体。
  20. 前記行列乗算経路を選択することは、2つ以上の行列乗算経路のセットから前記行列乗算経路を選択することを含み、各行列乗算経路は、入力範囲の異なるセットについて行列乗算演算を実行するように構成されている、
    請求項19のコンピュータ可読記憶媒体。
JP2022554763A 2020-03-26 2021-03-08 機械学習アクセラレータの電力削減 Pending JP2023518717A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/831,711 2020-03-26
US16/831,711 US20210303987A1 (en) 2020-03-26 2020-03-26 Power reduction for machine learning accelerator background
PCT/US2021/021401 WO2021194732A1 (en) 2020-03-26 2021-03-08 Power reduction for machine learning accelerator

Publications (1)

Publication Number Publication Date
JP2023518717A true JP2023518717A (ja) 2023-05-08

Family

ID=77857036

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022554763A Pending JP2023518717A (ja) 2020-03-26 2021-03-08 機械学習アクセラレータの電力削減

Country Status (6)

Country Link
US (1) US20210303987A1 (ja)
EP (1) EP4128064A4 (ja)
JP (1) JP2023518717A (ja)
KR (1) KR20220158768A (ja)
CN (1) CN115298669A (ja)
WO (1) WO2021194732A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115878957B (zh) * 2022-12-29 2023-08-29 珠海市欧冶半导体有限公司 一种矩阵乘法加速装置及方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170372202A1 (en) * 2016-06-15 2017-12-28 Nvidia Corporation Tensor processing using low precision format
US10817293B2 (en) * 2017-04-28 2020-10-27 Tenstorrent Inc. Processing core with metadata actuated conditional graph execution
TWI816475B (zh) * 2017-05-17 2023-09-21 美商谷歌有限責任公司 低延遲矩陣乘法單元中之胞元、相關之方法及非暫時性電腦程式產品
WO2019018811A1 (en) * 2017-07-21 2019-01-24 Syntiant SYSTEMS AND METHODS OF OPERATING RARITY
KR20200118815A (ko) * 2018-02-16 2020-10-16 더 가버닝 카운슬 오브 더 유니버시티 오브 토론토 신경망 가속기
US20190278600A1 (en) * 2018-03-09 2019-09-12 Nvidia Corporation Tiled compressed sparse matrix format
US10621489B2 (en) * 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements
KR20200011362A (ko) * 2018-07-24 2020-02-03 에스케이하이닉스 주식회사 신경망 가속 장치 및 그것의 동작 방법
US20210201124A1 (en) * 2018-08-27 2021-07-01 Neuralmagic Inc. Systems and methods for neural network convolutional layer matrix multiplication using cache memory
WO2020050886A1 (en) * 2018-09-05 2020-03-12 Futurewei Technologies, Inc. Compiler-level general matrix multiplication configuration optimization
US11093580B2 (en) * 2018-10-31 2021-08-17 Advanced Micro Devices, Inc. Matrix multiplier with submatrix sequencing
US10515306B1 (en) * 2019-02-28 2019-12-24 DeepCube LTD. Partial activation of multiple pathways in neural networks
US20200302284A1 (en) * 2019-03-18 2020-09-24 Nvidia Corporation Data compression for a neural network
US20210048991A1 (en) * 2019-08-13 2021-02-18 Nvidia Corporation Performing matrix operations in neural networks

Also Published As

Publication number Publication date
CN115298669A (zh) 2022-11-04
EP4128064A1 (en) 2023-02-08
US20210303987A1 (en) 2021-09-30
EP4128064A4 (en) 2024-04-17
WO2021194732A1 (en) 2021-09-30
KR20220158768A (ko) 2022-12-01

Similar Documents

Publication Publication Date Title
JP7394104B2 (ja) ハードウェアにおけるカーネルストライドの実行
EP3179415B1 (en) Systems and methods for a multi-core optimized recurrent neural network
JP6857286B2 (ja) ニューラルネットワークアレイの性能の改善
JP6900487B2 (ja) ハードウェアにおける平均プーリングの実行
JP7279226B2 (ja) 代替ループ限界値
JP6715900B2 (ja) ニューラルネットワークのパラメータを適応させるための方法および装置
CN111667051B (zh) 适用边缘设备的神经网络加速器及神经网络加速计算方法
EP3373210B1 (en) Transposing neural network matrices in hardware
WO2019119301A1 (zh) 在卷积神经网络模型中确定特征图像的方法和装置
US20210350204A1 (en) Convolutional neural network accelerator
TW201706917A (zh) 用於類神經網路計算的旋轉資料
TW201942808A (zh) 深度學習加速器及加快深度學習操作的方法
KR20200081044A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
JP2024028901A (ja) ハードウェアにおけるスパース行列乗算
JP2023518717A (ja) 機械学習アクセラレータの電力削減
Chen et al. A throughput-optimized channel-oriented processing element array for convolutional neural networks
JP2022022876A (ja) 畳み込みニューラルネットワーク処理装置
KR20200072666A (ko) 합성곱 계층의 선택적 데이터 처리 방법 및 이를 이용한 뉴럴 프로세서
US20220101110A1 (en) Persistent weights in training
TWI830940B (zh) 資訊處理電路以及資訊處理電路的設計方法
JP7501617B2 (ja) グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム
GB2623140A (en) Methods and systems for performing a sparse submanifold convolution using an NNA
Olegovich et al. Hardware Implementation of Classical and Bipolar Morphological Models for Convolutional Neural Network
KR20240050389A (ko) 그룹 컨볼루션 구현을 위한 신경망 아키텍처
JPWO2021240607A5 (ja) ニューラルネットワーク処理装置、方法、および、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240229