JP2020518068A - 最適化されたディープネットワーク処理のためのグラフマッチング - Google Patents

最適化されたディープネットワーク処理のためのグラフマッチング Download PDF

Info

Publication number
JP2020518068A
JP2020518068A JP2019558376A JP2019558376A JP2020518068A JP 2020518068 A JP2020518068 A JP 2020518068A JP 2019558376 A JP2019558376 A JP 2019558376A JP 2019558376 A JP2019558376 A JP 2019558376A JP 2020518068 A JP2020518068 A JP 2020518068A
Authority
JP
Japan
Prior art keywords
pattern
source code
code representation
neural network
representation
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.)
Granted
Application number
JP2019558376A
Other languages
English (en)
Other versions
JP7125425B2 (ja
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 JP2020518068A publication Critical patent/JP2020518068A/ja
Application granted granted Critical
Publication of JP7125425B2 publication Critical patent/JP7125425B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4436Exlining; Procedural abstraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • 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
    • 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
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

機械学習による高解像度ビデオ及びセキュリティのためのシステム、装置及び方法が開示される。システムは、ニューラルネットワークのソースコード表現を受信するように構成されている。一実施形態では、ソースコード表現は有向非巡回グラフ(DAG)である。システムは、ソースコード表現が1つ以上のパターンのオカレンスを含むか否かを、2つ以上の隣接する層を含むパターンの各々を用いて判別する。また、システムは、パターン毎に、検出されたパターンを置換するための結合層を特定する。1つ以上のパターンのオカレンスがソースコード表現で検出される場合に、システムは、各パターンを、対応する結合層に置換する。さらに、システムは、ニューラルネットワークの最適化された表現を生成する。最適化された表現は、検出されたパターンの置換を含む。最適化された表現は、ニューラルネットワークの実行可能なバージョンを生成するために利用することができる。【選択図】図5

Description

(関連技術の説明)
ニューラルネットワークは、益々多くのタイプのアプリケーションで使用されている。例えば、ニューラルネットワークは、パターン認識及び分類の分野において使用されている。ニューラルネットワークは、各々が受容野を有し、集合的に入力空間を構成するニューロンの集合を含むことができる。多層型ニューラルネットワークでは、第1層のニューロン(又は、計算ユニット)の出力が第2層のニューロンの入力となり、第2層のニューロンの出力が第3層のニューロンの入力となり、以下同様である。ニューラルネットワークは、機能の階層を認識するようにトレーニングすることができる。したがって、ニューラルネットワークは、物体認識及び他のアプリケーションにおいて益々使用されるようになっている。
ニューラルネットワークでは、計算を、1つ以上の計算チェーン内に構成することができる処理ノードの集団に分散させることができる。これらの多層アーキテクチャを一度に1層ずつトレーニングすることができ、バックプロパゲーションを使用して微調整することができる。ニューラルネットワークは、並列処理アーキテクチャを含む様々なタイプのコンピューティングデバイスに実装することができる。並列処理アーキテクチャによって、ニューラルネットワークをより効率的に実装することができる。しかし、処理ハードウェアの近年の改良にも関わらず、ニューラルネットワークの実装は、依然として長い処理時間、高い消費電力及び他の非効率性に悩まされている。
本明細書に記載される方法及びメカニズムの利点は、添付の図面と併せて以下の説明を参照することによって、より良く理解することができる。
ニューラルネットワークを実装するためのコンピューティングシステムの一実施形態のブロック図である。 有向非巡回グラフ(DAG)の一部を最適化する一実施形態のブロック図である。 ニューラルネットワーク有向非巡回グラフ(DAG)を最適化するためのシステムの一実施形態のブロック図である。 結合動作の一実施形態の図である。 ニューラルネットワークの層を組み合わせる方法の一実施形態を示す一般化されたフロー図である。 ニューラルネットワークを最適化する方法の別の実施形態を示す一般化されたフロー図である。 ニューラルネットワークの表現において検出されたパターンを置換するか否かを決定する方法の一実施形態を示す一般化されたフロー図である。
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、多くの具体的な詳細が示されている。しかしながら、当業者は、様々な実施形態がこれらの具体的な詳細無しに実施され得ることを認識すべきである。いくつかの例では、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術は、本明細書に記載されるアプローチを不明瞭にすることを避けるために、詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素が必ずしも縮尺通りに描かれていないことが理解されるであろう。例えば、いくつかの要素の寸法は、他の要素と比較して誇張されている場合がある。
本明細書において、ソースコード表現を最適化するためのシステム、装置及び方法が開示される。一実施形態では、システムは、メモリに接続された少なくとも1つのプロセッサを含む。一実施形態では、システムは、ニューラルネットワークのソースコード表現を受信するように構成されている。一実施形態では、ソースコード表現は有向非巡回グラフ(DAG)である。システムは、ソースコード表現内の2つ以上の隣接する層が第1パターンと一致することを判別した場合に、ソースコード表現内の2つ以上の隣接する層を単一の結合層に置換する。また、システムは、ニューラルネットワークの最適化された表現を生成し、最適化された表現は、単一の結合層を含む。最適化された表現は、ニューラルネットワークの実行可能なバージョンを生成するために利用することができる。ニューラルネットワークの実行可能なバージョンがターゲットマシンに実装されると、単一の結合層を単一のカーネルコールで呼び出すことができる。
一実施形態では、システムは、ソースコード表現内で検索される1つ以上のパターンの指標を受信するように構成されている。各パターンは、2つ以上の隣接する層の識別情報(identification)を含む。また、システムは、パターン毎に、検出されたパターンを置換するための対応する結合層を受信する。次に、システムは、ソースコード表現が1つ以上のパターンのオカレンス(occurrences)を含むか否かを判別する。次いで、システムは、1つ以上のパターンのオカレンスを、対応する結合層に置換する。
別の実施形態では、システムは、ニューラルネットワークによって処理されている入力データセットのサイズの指標を受信する。システムは、ニューラルネットワークのソースコード表現内で第2パターンを検出すると、第2パターンを任意に置換するのに用いられる第2結合層を特定する。次に、システムは、入力データセットのサイズに基づいて、第2結合層のメモリ使用率(memory utilization)を計算する。次いで、システムは、メモリ使用率がプログラム可能な閾値未満か否かを判別する。システムは、メモリ使用率が閾値未満であると判別したことに応じて、ソースコード表現内の第2パターンを第2結合層に置換する。或いは、システムは、メモリ使用率が閾値以上であると判別したことに応じて、ソースコード表現内の第2パターンを維持する。
ここで図1を参照すると、ニューラルネットワークを実装するコンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、メモリ150に接続されたシステムオンチップ(SoC)105を含む。また、SoC105は、集積回路(IC)とも呼ばれる。一実施形態では、SoC105は、中央処理ユニット(CPU)165の処理ユニット175A〜175Nと、入出力(I/O)インタフェース155と、キャッシュ160A〜160Bと、ファブリック120と、グラフィックス処理ユニット(GPU)130と、ローカルメモリ110と、メモリコントローラ140と、を含む。また、SoC105は、図を不明瞭にすることを避けるために、図1に示されていない他のコンポーネントを含むことができる。処理ユニット175A〜175Nは、任意の数及びタイプの処理ユニットを表す。一実施形態では、処理ユニット175A〜175Nは、CPUコアである。別の実施形態では、1つ以上の処理ユニット175A〜175Nは、他のタイプの処理ユニット(例えば、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP))である。CPU165の処理ユニット175A〜175Nは、キャッシュ160A〜160B及びファブリック120に接続されている。
一実施形態では、処理ユニット175A〜175Nは、特定の命令セットアーキテクチャ(ISA)の命令を実行するように構成されている。各処理ユニット175A〜175Nは、1つ以上の実行ユニット、キャッシュメモリ、スケジューラ、分岐予測回路等を含む。一実施形態では、処理ユニット175A〜175Nは、オペレーティングシステム等のシステム100の主制御ソフトウェアを実行するように構成されている。概して、使用中に処理ユニット175A〜175Nによって実行されるソフトウェアは、システム100の所望の機能を実現するためにシステム100の他のコンポーネントを制御することができる。また、処理ユニット175A〜175Nは、アプリケーションプログラム等の他のソフトウェアを実行することができる。
GPU130は、グラフィックス又は汎用処理に使用される任意の数及びタイプの計算ユニットを表す、計算ユニット145A〜145Nを少なくとも含む。各計算ユニット145A〜145Nは、任意の数の実行ユニットを含み、計算ユニット当たりの実行ユニットの数は、実施形態によって異なる。GPU130は、ローカルメモリ110及びファブリック120に接続されている。一実施形態では、ローカルメモリ110は、高帯域幅メモリ(HBM)を使用して実装される。
一実施形態では、GPU130は、複数の計算ユニット145A〜145N上にニューラルネットワークを実装するように構成されており、ニューラルネットワークの異なる計算が、複数の計算ユニット145A〜145Nの異なる計算ユニットに伝達される。一実施形態では、ニューラルネットワークは、GPU130上に実装される前に最適化される。最適化は、ニューラルネットワークの複数の層を単一の結合層に組み合わせることを含み、単一の結合層は、GPU130上の単一のライブラリコールによって呼び出すことができる。一実施形態では、オプティマイザ(図示省略)は、ニューラルネットワークの有向非巡回グラフ(DAG)表現内のパターンを検索し、パターンをより効率的な動作に置換するように構成されている。本明細書において、「パターン」という用語は、データ構造又はソースコード表現(例えば、DAG)内の複数の連続する層の所定のシーケンスとして定義されている。「層」という用語は、ニューラルネットワークの前のステージによって生成された(又は、提供された)データに対して実行される動作又は動作のセットとして定義されている。ニューラルネットワークの第1層は、入力データセット(例えば、画像)上で動作する。
オプティマイザは、ニューラルネットワークのソースコード表現内の1つ以上の所定のパターンを検索するように構成されている。オプティマイザは、ニューラルネットワークのソースコード表現内で所定のパターンを検出すると、所定のパターンを単一のライブラリコールに置換することができる。例えば、第1パターンは、畳み込み層とそれに続く活性化層として定義することができる。オプティマイザは、ソースコード表現において第1パターンを検出すると、第1パターンを、畳み込み層と活性化層との結合動作を実行する単一のライブラリコールに置換することができる。多くの場合、単一のライブラリコールは、畳み込み層に対する第1ライブラリコールと、活性化層に対する第2ライブラリコールとを実行するよりも効率的に実行することができる。他のパターンも、一緒に結合され、単一のライブラリコールによって実行され得る、隣接するニューラルネットワークの層に対して定義することができる。例えば、第2パターンは、畳み込み層とそれに続くプーリング層として定義することができ、第3パターンは、畳み込み層とそれに続く畳み込み層として定義することができる。ソースコード表現全体を分析し、検出されたパターンを対応するライブラリコールに置換した後に、オプティマイザは、ニューラルネットワークの実行可能なバージョンを生成するために使用される、ニューラルネットワークの最適化されたソースコード表現を出力する。次に、ニューラルネットワークの実行可能なバージョンが、システム100のGPU130上に実装される。
I/Oインタフェース155は、ファブリック120に接続されており、任意の数及びタイプのインタフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCI‐Extended(PCI‐X)、PCIE(PCI Express)バス、ギガビットEthernet(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表している。様々なタイプの周辺機器を、I/Oインタフェース155に接続することができる。かかる周辺機器には、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶デバイス、ネットワークインタフェースカード等が含まれるが、これらに限定されない。
SoC105は、1つ以上のメモリモジュールを含むメモリ150に接続されている。各メモリモジュールは、それに搭載された1つ以上のメモリデバイスを含む。いくつかの実施形態では、メモリ150は、SoC105も搭載されたマザーボード、又は、他のキャリアに搭載された1つ以上のメモリデバイスを含む。一実施形態では、メモリ150は、動作中にSoC105と共に用いられるランダムアクセスメモリ(RAM)を実装するために使用される。実装されるRAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、抵抗変化型RAM(ReRAM)、相変化RAM(PCRAM)、又は、他の任意の揮発性若しくは不揮発性RAMであってもよい。メモリ150を実装するのに使用されるDRAMのタイプには、ダブルデータレート(DDR)DRAM、DDR2 DRAM、DDR3 DRAM等が含まれるが、これらに限定されない。図1には明確に示していないが、SoC105は、処理ユニット175A〜175N及び/又は計算ユニット145A〜145Nの内部にある1つ以上のキャッシュメモリを含むことができる。いくつかの実施形態では、SoC105は、処理ユニット175A〜175Nによって利用されるキャッシュ160A〜160Bを含む。一実施形態では、キャッシュ160A〜160Bは、キャッシュコントローラを含むキャッシュサブシステムの一部である。
本明細書において様々な構造の隣に表示される「N」という文字は、その構造の任意の数の要素(例えば、1つの処理ユニットを含む、CPU165内の任意の数の処理ユニット175A〜175N)を全体的に示しているのを意味することに留意されたい。また、文字「N」を使用する図1内の異なる符号(例えば、計算ユニット145A〜145N)は、同じ数の異なる要素が提供されることを意図していない(例えば、CPU165内の処理ユニット175A〜175Nの数は、GPU130の計算ユニット145A〜145Nの数と異なっていてもよい)。
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、サーバ、又は、他の様々なタイプのコンピューティングシステム若しくはデバイスであってもよい。コンピューティングシステム100及び/又はSoC105のコンポーネントの数は、実施形態毎に異なっていてもよいことに留意されたい。各コンポーネント/サブコンポーネントの数は、図1に示す数より多くてもよいし、少なくてもよい。また、コンピューティングシステム100及び/又はSoC105は、図1に示されていない他のコンポーネントを含むことができることに留意されたい。また、他の実施形態では、コンピューティングシステム100及びSoC105は、図1に示されている以外の他の方法で構成することができる。
次に図2を参照すると、有向非巡回グラフ(DAG)205の一部を最適化する一実施形態のブロック図が示されている。DAG205は、ニューラルネットワークの構造を表している。DAG205全体の一部のみが図2に示されている。オプティマイザ(例えば、図3のオプティマイザ315)は、DAG205を受信し、DAG205の分析を実行して、結合可能な隣接層の1つ以上のパターン(例えば、パターン230)をDAG205が含むか否かを判別するように構成されている。
層210,215,220,225は、任意のタイプの層を表している。例えば、DAG205に含まれ得る層としては、畳み込み層、プーリング層、活性化層、サブサンプリング層、正規化層、及び/又は、他の層が挙げられるが、これらに限定されない。ターゲットコンピューティングシステム(例えば、図1のシステム100)によって実行される場合、各層210〜225は、別個のカーネルを呼び出すことによって実装される。したがって、ターゲットコンピューティングシステムは、DAG205の4つの層210〜225を呼び出すために、4つのカーネルコールを実装する。
この説明のために、層215から層220、層220から層225への接続は、オプティマイザによって検索されている所定のパターン230と一致すると想定する。したがって、オプティマイザは、検出されたパターン230の層を単一の層245に置換することができる。層245は、単一のカーネルにおいて層215,220,225の動作を組み合わせる。したがって、オプティマイザからの出力は、最適化されたDAG240である。図2に示す最適化されたDAG240の一部は、2つのカーネルコールを有するコンピューティングシステムに実装され得る2つの別個の層を含む。これは、4つのカーネルコールを用いて実装され得るDAG205よりも改善されている。
次に図3を参照すると、ニューラルネットワーク有向非巡回グラフ(DAG)310を最適化するためのシステム300の一実施形態のブロック図が示されている。一実施形態では、ニューラルネットワークの構造は、DAG310として表されている。ニューラルネットワークDAGの一部の例を図2に示す。ニューラルネットワークDAG内では、ノードはネットワークの層を表しており、エッジは層間のデータ転送を表している。
ニューラルネットワークDAG310は、オプティマイザ315への入力として設けられる。さらに、オプティマイザ315に設けられた他の入力は、入力データサイズ320と、ターゲットマシンパラメータ325と、最適化基準330と、パターン335と、結合層340と、を含む。他の実施形態では、オプティマイザ315は、これらの入力のサブセットを受信し、及び/又は、他の入力を受信することができる。入力データサイズ320は、ニューラルネットワークDAG310が表すニューラルネットワークによって処理される入力データセットのサイズの指標を含む。いくつかの実施形態では、入力データセットのサイズが不明であってもよく、これらの実施形態では入力データサイズ320を省略することができる。ターゲットマシンパラメータ325は、ニューラルネットワークを実装するターゲットマシンの仕様(例えば、メモリ容量、計算ユニットの数)を含む。場合によっては、ターゲットマシンが不明であってもよく、これらの実施形態ではターゲットマシンパラメータ325を省略することができる。
最適化基準330は、ニューラルネットワークを実装する際に満たすことが望ましい1つ以上の基準又は目標(例えば、パフォーマンス目標、電力目標)を含む。パターン335は、ニューラルネットワークDAG310内で見つけられた場合に、単一の結合層に置換することができる層の1つ以上のパターンを含む。オプティマイザ315に提供されたパターン335毎に、検出されたパターン335を置換するのに使用可能な結合層340が提供される。オプティマイザ315は、これらの入力を使用してニューラルネットワークDAG310を分析及び変更し、最適化されたニューラルネットワークDAG345を生成する。一実施形態では、オプティマイザ315が最適化されたニューラルネットワークDAG345を生成する場合に、ニューラルネットワークDAG310内で見つけられた任意のパターンを、対応する結合層340に置換することができる。実施形態に応じて、オプティマイザ315を、ハードウェア及び/又はソフトウェアの任意の適切な組み合わせを使用して実装することができる。一実施形態では、オプティマイザ315は、ツール(例えば、コンパイラ、又は、グラフ構造を分析する機能を含むコンパイラの様なツール等)である。別の実施形態では、オプティマイザ315は、最適化されたニューラルネットワークDAG345を別個のコンパイラに伝達する。
一実施形態では、オプティマイザ315は、最適化されたニューラルネットワークDAG345の複数の異なるバージョンを生成するために、ニューラルネットワークDAG310上でグラフカバリング技術を実行することができる。オプティマイザ315は、最適化されたニューラルネットワークDAG345の何れのバージョンが最も低コストであるかを決定するために、異なるバージョンの各々のコスト推定値を生成するように構成されている。コスト推定値は、オプティマイザ315に提供された異なる最適化基準330に基づいて生成されてもよい。したがって、オプティマイザ315は、最適化されたニューラルネットワークDAG345として生成される最終解のために、コストが最も低いバージョンを利用することができる。
次に図4を参照すると、結合動作の一実施形態の図が示されている。動作400が図4の左側に示されており、動作400は、畳み込み動作405と活性化動作410とを含む。各動作の開始時にデータがGPUにコピーされ、各動作の終了時に結果がホストにコピーされる。畳み込み動作405及び活性化動作410は、より効率的な実装を生成するために組み合わせることができる動作の例である。
動作420が図4の右側に示されており、動作420は、畳み込み動作と活性化動作とを組み合わせた単一のカーネルを含む。したがって、動作420は、動作400と比較して、2つ少ないデータコピーと1つ少ないGPUカーネル呼び出しとを用いて実行することができる。一実施形態では、オプティマイザ(例えば、図3のオプティマイザ315)は、動作400を動作420に変換するように構成されている。オプティマイザは、単一のカーネル呼び出しに結合され得る動作(例えば、畳み込みとそれに続く活性化)を検索するように構成されている。他の実施形態では、他の動作を一緒に結合することができる。例えば、畳み込み動作とそれに続くプーリング動作とを、単一のカーネルに結合することができる。さらに、場合によっては、2つ以上の畳み込み動作を単一のカーネルに結合することができる。
次に図5を参照すると、ニューラルネットワークの層を結合する方法500の一実施形態が示されている。説明のために、この実施形態におけるステップ及び図6〜図7のステップを順番に示している。しかしながら、記載された方法の様々な実施形態では、記載された要素のうち1つ以上の要素が、同時に実行されてもよいし、図示された順序とは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素が実行されてもよい。本明細書に記載される様々なシステム又は装置は、方法500を実施するように構成されている。
コンピューティングシステムは、ニューラルネットワークのソースコード表現を受信する(ブロック505)。一実施形態では、ソースコード表現は有向非巡回グラフ(DAG)である。次に、システムは、ソースコード表現内の2つ以上の隣接する層が第1パターンと一致することを判別する(ブロック510)。ソースコード表現がDAGである場合に、2つ以上の隣接する層は、DAG内の2つ以上の隣接するノードに対応する。次に、システムは、ソースコード表現内の2つ以上の隣接する層を単一の結合層に置換する(ブロック515)。次いで、システムは、ニューラルネットワークの最適化された表現を生成し、この最適化された表現は、単一の結合層を含む(ブロック520)。そして、最適化された表現を用いて、ニューラルネットワークの実行可能なバージョンを生成する(ブロック525)。次に、ニューラルネットワークの実行可能なバージョンを、並列プロセッサ(例えば、GPU)に実装する(ブロック530)。ブロック530の後に、方法500は終了する。
次に図6を参照すると、ニューラルネットワークを最適化する方法600の一実施形態が示されている。オプティマイザは、1つ以上のパターンの指標を受信する(ブロック605)。一実施形態では、オプティマイザは、様々なタイプのコンピューティングシステムの何れかで実行可能なプログラム命令を含む。コンピューティングシステムのタイプは、実施形態毎に変えることができる。オプティマイザは、パターン毎に、パターンの代わりに使用される対応する結合層を受信する(ブロック610)。次に、オプティマイザは、ニューラルネットワークのソースコード表現が1つ以上のパターンのオカレンスを含むか否かを判別する(ブロック615)。そして、オプティマイザは、1つ以上のパターンのオカレンスを、対応する結合層に置換する(ブロック620)。ブロック620の後に、方法600は終了する。
次に図7を参照すると、ニューラルネットワーク表現等のグラフ内で検出されたパターンを置換するか否かを判別する方法700の一実施形態が示されている。コンピューティングシステム上で実行されるオプティマイザは、ニューラルネットワーク表現を受信するか、そうでなければアクセスする(ブロック705)。一実施形態では、表現はDAGである。また、オプティマイザは、ニューラルネットワークによって処理されている入力データセットのサイズの指標を受信する(ブロック710)か、そうでなければ決定し、ニューラルネットワークを実装するのに使用されるターゲットデバイスの仕様を受信する(ブロック715)か、そうでなければ決定する。様々な実施形態では、仕様は、ターゲットデバイスの様々な計算ユニットに利用可能なメモリ量を含むか、そうでなければ示すことができる。次に、オプティマイザは、ターゲットデバイスの仕様に基づいて、メモリ使用率閾値を計算する(ブロック720)。
次に、オプティマイザは、ニューラルネットワーク表現においてパターンを検索する(ブロック725)。オプティマイザは、表現の一部において所定のパターンを検出すると(条件ブロック730:Yes)、入力データセットのサイズに基づいて、所定のパターンを置換し得る結合カーネルのメモリ使用率を計算する(ブロック735)。一実施形態では、メモリ使用率は、第2結合層の全ての動作によって使用されるメモリの合計として計算される。オプティマイザは、表現の一部において所定のパターンを検出しない場合(条件ブロック730:No)、ブロック725に戻り、当該パターンについて表現の他の部分を検索する。
オプティマイザは、計算されたメモリ使用率がプログラム可能な閾値未満であると判別した場合(条件ブロック740:Yes)、表現内の所定のパターンを結合カーネルに置換する(ブロック745)。一実施形態では、ブロック720において計算されたメモリ使用率閾値は、条件ブロック740においてプログラム可能な閾値として利用される。オプティマイザは、計算されたメモリ使用率がプログラム可能な閾値以上であると判別した場合(条件ブロック740:No)、表現内の第1パターンを維持する(ブロック750)。ブロック745,750の後に、方法700はブロック725に戻り、表現の他の部分におけるパターンの検索を継続する。表現全体が既に検索済みである場合に、方法700は終了する。
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述した方法及び/又はメカニズムが実施される。プログラム命令は、例えばC言語等の高水準プログラミング言語でハードウェアの挙動を記述する。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。複数のタイプの記憶媒体が利用可能である。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム命令及び付随するデータを、プログラム実行のためにコンピューティングシステムに提供する。コンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
上述した実施形態は、実施の非限定的な例に過ぎないことを強調する。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲が、かかる変形及び修正を全て包含するように解釈されることを意図している。

Claims (20)

  1. メモリと、
    前記メモリに接続されたプロセッサと、を備えるシステムであって、
    ニューラルネットワークのソースコード表現を受信することと、
    前記ソースコード表現内の2つ以上の隣接する層が第1パターンと一致することを判別することと、
    前記ソースコード表現内の前記2つ以上の隣接する層を単一の結合層に置換することと、
    前記ニューラルネットワークの最適化された表現を生成することであって、前記最適化された表現は前記単一の結合層を含む、ことと、
    を行うように構成されている、
    システム。
  2. 前記システムは、
    1つ以上のパターンの指標を受信することと、
    パターン毎に、対応する結合層を受信することと、
    前記ソースコード表現が前記1つ以上のパターンのオカレンスを含むか否かを判別することと、
    前記1つ以上のパターンのオカレンスを、対応する結合層に置換することと、
    を行うように構成されている、
    請求項1のシステム。
  3. 前記ソースコード表現は有向非巡回グラフ(DAG)である、
    請求項2のシステム。
  4. 前記1つ以上のパターンの各々は、前記DAG内の2つ以上の隣接するノードを含む、
    請求項3のシステム。
  5. 前記システムは、
    前記ニューラルネットワークによって処理されている入力データセットのサイズの指標を受信することと、
    前記ソースコード表現内で第2パターンを検出することであって、前記第2パターンは2つ以上の隣接する層を含む、ことと、
    前記第2パターンを任意に置換するための第2結合層を特定することと、
    前記入力データセットのサイズに基づいて、前記第2結合層のメモリ使用率を計算することと、
    前記メモリ使用率が閾値未満であると判別したことに応じて、前記ソースコード表現内の前記第2パターンを前記第2結合層に置換することと、
    前記メモリ使用率が前記閾値以上であると判別したことに応じて、前記ソースコード表現内の前記第2パターンを維持することと、
    を行うように構成されている、
    請求項1のシステム。
  6. 前記単一の結合層の動作を実行するために単一のカーネルが呼び出される、
    請求項1のシステム。
  7. 前記最適化された表現を利用して、前記ニューラルネットワークの実行可能なバージョンを生成する、
    請求項1のシステム。
  8. ニューラルネットワークのソースコード表現を受信することと、
    前記ソースコード表現内の2つ以上の隣接する層が第1パターンと一致することを判別することと、
    前記ソースコード表現内の前記2つ以上の隣接する層を単一の結合層に置換することと、
    前記ニューラルネットワークの最適化された表現を生成することであって、前記最適化された表現は前記単一の結合層を含む、ことと、を含む、
    方法。
  9. 1つ以上のパターンの指標を受信することと、
    パターン毎に、対応する結合層を受信することと、
    前記ソースコード表現が前記1つ以上のパターンのオカレンスを含むか否かを判別することと、
    前記1つ以上のパターンのオカレンスを、対応する結合層に置換することと、をさらに含む、
    請求項8の方法。
  10. 前記ソースコード表現は有向非巡回グラフ(DAG)である、
    請求項9の方法。
  11. 前記1つ以上のパターンの各々は、前記DAG内の2つ以上の隣接するノードを含む、
    請求項10の方法。
  12. 前記ニューラルネットワークによって処理されている入力データセットのサイズの指標を受信することと、
    前記ソースコード表現内で第2パターンを検出することであって、前記第2パターンは2つ以上の隣接する層を含む、ことと、
    前記第2パターンを任意に置換するための第2結合層を特定することと、
    前記入力データセットのサイズに基づいて、前記第2結合層のメモリ使用率を計算することと、
    前記メモリ使用率が閾値未満であると判別したことに応じて、前記ソースコード表現内の前記第2パターンを前記第2結合層に置換することと、
    前記メモリ使用率が前記閾値以上であると判別したことに応じて、前記ソースコード表現内の前記第2パターンを維持することと、をさらに含む、
    請求項8の方法。
  13. 前記単一の結合層の動作を実行するために単一のカーネルが呼び出される、
    請求項8の方法。
  14. 前記最適化された表現を利用して、前記ニューラルネットワークの実行可能なバージョンを生成する、
    請求項8の方法。
  15. プログラム命令を記憶するコンピュータ可読記憶媒体であって、
    前記プログラム命令は、
    ニューラルネットワークのソースコード表現を受信することと、
    前記ソースコード表現内の2つ以上の隣接する層が第1パターンと一致することを判別することと、
    前記ソースコード表現内の前記2つ以上の隣接する層を単一の結合層に置換することと、
    前記ニューラルネットワークの最適化された表現を生成することであって、前記最適化された表現は前記単一の結合層を含む、ことと、
    をプロセッサに実行させる、
    コンピュータ可読記憶媒体。
  16. 前記プログラム命令は、
    1つ以上のパターンの指標を受信することと、
    パターン毎に、対応する結合層を受信することと、
    前記ソースコード表現が前記1つ以上のパターンのオカレンスを含むか否かを判別することと、
    前記1つ以上のパターンのオカレンスを、対応する結合層に置換することと、
    をプロセッサに実行させる、
    請求項15のコンピュータ可読記憶媒体。
  17. 前記ソースコード表現は有向非巡回グラフ(DAG)である、
    請求項16のコンピュータ可読記憶媒体。
  18. 前記1つ以上のパターンの各々は、前記DAG内の2つ以上の隣接するノードを含む、
    請求項17のコンピュータ可読記憶媒体。
  19. 前記プログラム命令は、
    前記ニューラルネットワークによって処理されている入力データセットのサイズの指標を受信することと、
    前記ソースコード表現内で第2パターンを検出することであって、前記第2パターンは2つ以上の隣接する層を含む、ことと、
    前記第2パターンを任意に置換するための第2結合層を特定することと、
    前記入力データセットのサイズに基づいて、前記第2結合層のメモリ使用率を計算することと、
    前記メモリ使用率が閾値未満であると判別したことに応じて、前記ソースコード表現内の前記第2パターンを前記第2結合層に置換することと、
    前記メモリ使用率が前記閾値以上であると判別したことに応じて、前記ソースコード表現内の前記第2パターンを維持することと、
    をプロセッサに実行させる、
    請求項15のコンピュータ可読記憶媒体。
  20. 前記単一の結合層の動作を実行するために単一のカーネルが呼び出される、
    請求項15のコンピュータ可読記憶媒体。
JP2019558376A 2017-04-27 2018-04-27 最適化されたディープネットワーク処理のためのグラフマッチング Active JP7125425B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/498,943 US20180314945A1 (en) 2017-04-27 2017-04-27 Graph matching for optimized deep network processing
US15/498,943 2017-04-27
PCT/US2018/029699 WO2018200899A1 (en) 2017-04-27 2018-04-27 Graph matching for optimized deep network processing

Publications (2)

Publication Number Publication Date
JP2020518068A true JP2020518068A (ja) 2020-06-18
JP7125425B2 JP7125425B2 (ja) 2022-08-24

Family

ID=62148543

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019558376A Active JP7125425B2 (ja) 2017-04-27 2018-04-27 最適化されたディープネットワーク処理のためのグラフマッチング

Country Status (6)

Country Link
US (1) US20180314945A1 (ja)
EP (1) EP3616133A1 (ja)
JP (1) JP7125425B2 (ja)
KR (1) KR102598173B1 (ja)
CN (1) CN110574045B (ja)
WO (1) WO2018200899A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11481638B2 (en) 2017-09-15 2022-10-25 Google Llc Augmenting neural networks
WO2020042739A1 (zh) * 2018-08-28 2020-03-05 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
US11194688B1 (en) * 2019-05-08 2021-12-07 Amazon Technologies, Inc. Application architecture optimization and visualization
US11610134B2 (en) 2019-07-08 2023-03-21 Vianai Systems, Inc. Techniques for defining and executing program code specifying neural network architectures
US11720417B2 (en) * 2020-08-06 2023-08-08 Micron Technology, Inc. Distributed inferencing using deep learning accelerators with integrated random access memory
US11886963B2 (en) * 2020-12-01 2024-01-30 OctoML, Inc. Optimizing machine learning models
CN112784829B (zh) * 2021-01-21 2024-05-21 北京百度网讯科技有限公司 一种票据信息的提取方法、装置、电子设备及存储介质
KR20220122562A (ko) 2021-02-26 2022-09-02 경희대학교 산학협력단 서브 그래프 매칭 방법 및 장치
US11797280B1 (en) * 2021-06-30 2023-10-24 Amazon Technologies, Inc. Balanced partitioning of neural network based on execution latencies
CN114691330A (zh) * 2022-03-28 2022-07-01 北京百度网讯科技有限公司 数据处理方法、装置、电子设备以及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002236906A (ja) * 2001-02-09 2002-08-23 Fuji Electric Co Ltd 積結合型ニューラルネットワークの最適化学習方法
US20160358070A1 (en) * 2015-06-04 2016-12-08 Samsung Electronics Co., Ltd. Automatic tuning of artificial neural networks

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007070838A2 (en) * 2005-12-13 2007-06-21 Crossbeam Systems, Inc. Systems and methods for processing data flows
US8225074B2 (en) * 2008-10-02 2012-07-17 Nec Laboratories America, Inc. Methods and systems for managing computations on a hybrid computing platform including a parallel accelerator
US9377954B2 (en) * 2014-05-09 2016-06-28 Advanced Micro Devices, Inc. System and method for memory allocation in a multiclass memory system
US10223635B2 (en) * 2015-01-22 2019-03-05 Qualcomm Incorporated Model compression and fine-tuning
US10489703B2 (en) * 2015-05-20 2019-11-26 Nec Corporation Memory efficiency for convolutional neural networks operating on graphics processing units
US10102478B2 (en) * 2015-06-26 2018-10-16 Conduent Business Services, Inc. Distributed and privacy-preserving prediction method
US10157045B2 (en) * 2016-11-17 2018-12-18 The Mathworks, Inc. Systems and methods for automatically generating code for deep learning systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002236906A (ja) * 2001-02-09 2002-08-23 Fuji Electric Co Ltd 積結合型ニューラルネットワークの最適化学習方法
US20160358070A1 (en) * 2015-06-04 2016-12-08 Samsung Electronics Co., Ltd. Automatic tuning of artificial neural networks

Also Published As

Publication number Publication date
US20180314945A1 (en) 2018-11-01
EP3616133A1 (en) 2020-03-04
CN110574045A (zh) 2019-12-13
CN110574045B (zh) 2024-02-09
WO2018200899A1 (en) 2018-11-01
KR20200002027A (ko) 2020-01-07
JP7125425B2 (ja) 2022-08-24
KR102598173B1 (ko) 2023-11-06

Similar Documents

Publication Publication Date Title
JP7125425B2 (ja) 最適化されたディープネットワーク処理のためのグラフマッチング
US11237808B2 (en) Target architecture determination
US11461615B2 (en) System and method of memory access of multi-dimensional data
US11544545B2 (en) Structured activation based sparsity in an artificial neural network
US11615297B2 (en) Structured weight based sparsity in an artificial neural network compiler
US20190325305A1 (en) Machine learning inference engine scalability
US11551028B2 (en) Structured weight based sparsity in an artificial neural network
JP7451614B2 (ja) オンチップの計算ネットワーク
US20200279133A1 (en) Structured Sparsity Guided Training In An Artificial Neural Network
US11983624B2 (en) Auto generation and tuning tool for convolution kernels
US11150899B2 (en) Selecting a precision level for executing a workload in an electronic device
Chen et al. A high-throughput neural network accelerator
Lee et al. Smartsage: training large-scale graph neural networks using in-storage processing architectures
Finkbeiner et al. In-memory intelligence
US11921814B2 (en) Method and device for matrix multiplication optimization using vector registers
CN113590508A (zh) 动态可重构的内存地址映射方法及装置
CN112639726A (zh) 用于执行并行计算的方法和系统
WO2021126461A1 (en) Zero value memory compression
US11275632B2 (en) Broadcast command and response
Hajinazar et al. SIMDRAM: An end-to-end framework for bit-serial SIMD computing in DRAM
WO2023124304A1 (zh) 芯片的缓存系统、数据处理方法、设备、存储介质及芯片
WO2022150491A1 (en) Caching techniques for deep learning accelerator
Ke et al. Analyzing the Interplay Between Random Shuffling and Storage Devices for Efficient Machine Learning
US11947487B2 (en) Enabling accelerated processing units to perform dataflow execution
US20240184848A1 (en) Memory allocation method for sparse matrix multiplication applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210305

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220104

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220524

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: 20220628

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220719

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220812

R150 Certificate of patent or registration of utility model

Ref document number: 7125425

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150