JP7025441B2 - ニューラルネットワーク処理のスケジューリング - Google Patents

ニューラルネットワーク処理のスケジューリング Download PDF

Info

Publication number
JP7025441B2
JP7025441B2 JP2019552217A JP2019552217A JP7025441B2 JP 7025441 B2 JP7025441 B2 JP 7025441B2 JP 2019552217 A JP2019552217 A JP 2019552217A JP 2019552217 A JP2019552217 A JP 2019552217A JP 7025441 B2 JP7025441 B2 JP 7025441B2
Authority
JP
Japan
Prior art keywords
neural network
superlayer
batch
layer
hardware circuit
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
JP2019552217A
Other languages
English (en)
Other versions
JP2020521195A (ja
JP2020521195A5 (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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2020521195A publication Critical patent/JP2020521195A/ja
Publication of JP2020521195A5 publication Critical patent/JP2020521195A5/ja
Priority to JP2022019764A priority Critical patent/JP7439149B2/ja
Application granted granted Critical
Publication of JP7025441B2 publication Critical patent/JP7025441B2/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
    • 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/042Knowledge-based neural networks; Logical representations of neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Neurology (AREA)
  • Game Theory and Decision Science (AREA)
  • Development Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Educational Administration (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Image Analysis (AREA)
  • Semiconductor Memories (AREA)
  • Memory System (AREA)

Description

背景
本明細書は、ニューラルネットワーク計算を実行するためのメモリ管理プロセスに関する。
ニューラルネットワークは、オペレーションの1つ以上のレイヤを利用して、受信した入力に対する出力、たとえば分類、を生成する機械学習モデルである。いくつかのニューラルネットワークは、出力レイヤに加えて、1つ以上の隠れレイヤを含む。各隠れレイヤの出力は、ネットワーク内の次のレイヤ、すなわちネットワークの次の隠れレイヤまたは出力レイヤ、への入力として使用される。ネットワークのレイヤのうちの一部または全ては、それぞれのパラメータセットの現在の値に従って、受信した入力から出力を生成する。
いくつかのニューラルネットワークは、1つ以上の畳み込みニューラルネットワークレイヤを含む。各畳み込みニューラルネットワークレイヤは、関連付けられたカーネルセットを有する。各カーネルは、ユーザが作成するニューラルネットワークモデルによって確立された値を含む。いくつかの実現例では、カーネルは、特定の画像輪郭、形状または色を識別する。カーネルは、重み入力のマトリックス構造として表すことができる。また、各畳み込みレイヤは、活性化入力セットも処理することができる。活性化入力セットも、マトリックス構造として表すことができる。
概要
本明細書に記載されている主題は、ハードウェア回路上のニューラルネットワークを使用して処理されるニューラルネットワーク入力のバッチを受信するためのシステムおよび方法を含む。上記ニューラルネットワークは、有向グラフの状態で配置された複数のレイヤを含んでもよく、各レイヤは、それぞれのパラメータセットを有してもよい。記載されている技術に係る方法は、上記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定するステップを含む。各スーパーレイヤは、1つ以上のレイヤを含む上記有向グラフのパーティションであってもよい。
記載されている方法は、上記ハードウェア回路を使用して上記入力のバッチを処理するステップを含んでもよい。たとえば、上記入力のバッチを処理するステップは、上記シーケンスの各スーパーレイヤにおける上記レイヤのための上記それぞれのパラメータセットを上記ハードウェア回路のメモリにロードするステップを含んでもよい。さらに、記載されている方法は、上記バッチ内の各入力について、上記ハードウェア回路の上記メモリ内の上記パラメータを使用して、上記スーパーレイヤの各レイヤを介して上記入力を処理して、上記入力に基づいてスーパーレイヤ出力を生成するステップを含んでもよい。
本明細書に記載されている主題の一局面は、コンピュータによって実行される方法で具体化されてもよい。上記方法は、ハードウェア回路上のニューラルネットワークを使用して処理されるニューラルネットワーク入力のバッチを受信するステップを含み、上記ニューラルネットワークは、有向グラフの状態で配置された複数のレイヤを有し、各レイヤは、それぞれのパラメータセットを有し、上記方法はさらに、上記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定するステップを含み、各スーパーレイヤは、1つ以上のレイヤを含む上記有向グラフのパーティションである。
上記方法はさらに、上記ハードウェア回路を使用して上記ニューラルネットワーク入力のバッチを処理するステップを含み、上記ハードウェア回路を使用して上記ニューラルネットワーク入力のバッチを処理するステップは、上記シーケンスにおける各スーパーレイヤについて、上記スーパーレイヤにおける上記レイヤのための上記それぞれのパラメータセットを上記ハードウェア回路のメモリにロードするステップと、上記バッチ内の各ニューラルネットワーク入力について、上記ハードウェア回路の上記メモリ内の上記パラメータを使用して、上記スーパーレイヤの各レイヤを介して上記ニューラルネットワーク入力に対応するスーパーレイヤ入力を処理して、上記ニューラルネットワーク入力のためのスーパーレイヤ出力を生成するステップとを含む。
これらのおよび他の実現例の各々は、任意に以下の特徴のうちの1つ以上を含んでもよい。たとえば、いくつかの実現例では、上記シーケンスにおける第1のスーパーレイヤでは、上記ニューラルネットワーク入力に対応する上記スーパーレイヤ入力が上記ニューラルネットワーク入力である。いくつかの実現例では、上記第1のスーパーレイヤ出力の後の各スーパーレイヤへの上記スーパーレイヤ入力は、上記シーケンスにおける先行するスーパーレイヤによって生成されたスーパーレイヤ出力である。
いくつかの実現例では、上記ハードウェア回路を使用して上記ニューラルネットワーク入力のバッチを処理するステップは、各スーパーレイヤについて、上記バッチ内の第2のニューラルネットワーク入力に対応するスーパーレイヤ入力が上記スーパーレイヤの各レイヤを介して後に処理される前に上記バッチ内の第1のニューラルネットワーク入力のための上記スーパーレイヤ入力が上記スーパーレイヤの各レイヤを介して処理されるように、上記スーパーレイヤの各レイヤを介して上記ニューラルネットワーク入力のバッチに対応する上記スーパーレイヤ入力をシーケンシャルに処理するステップを備える。
いくつかの実現例では、スーパーレイヤのそれぞれのレイヤは、ワーキングセットに関連付けられ、各ワーキングセットは、少なくともi)上記ハードウェア回路上の上記ニューラルネットワークを使用して処理される上記ニューラルネットワーク入力のバッチの1つ以上の入力または上記スーパーレイヤの先行するレイヤの1つ以上の出力、およびii)上記スーパーレイヤの各レイヤを介して上記1つ以上の入力を処理するのに必要なメモリの量を示すサイズパラメータによって定義される。
いくつかの実現例では、上記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの上記パーティショニングを決定するステップは、i)少なくとも1つのワーキングセットのための特定のサイズパラメータを決定するステップと、ii)上記ハードウェア回路の上記メモリの特定の集約パラメータ容量を決定するステップと、iii)上記少なくとも1つのワーキングセットのための上記特定のサイズパラメータまたは上記ハードウェア回路の上記メモリの特定の集約パラメータ容量のうちの少なくとも1つに基づいて、上記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの上記パーティショニングを決定するステップとを含む。
いくつかの実現例では、上記ハードウェア回路の上記メモリは、閾値記憶容量を有し、上記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの上記パーティショニングを決定するステップは、上記ハードウェア回路の上記メモリの上記閾値記憶容量に基づいて、上記ニューラルネットワークのレイヤをスーパーレイヤのシーケンスにパーティショニングするステップを含む。
いくつかの実現例では、上記ニューラルネットワークのレイヤは、上記ハードウェア回路が上記ニューラルネットワーク入力のバッチを処理する際に上記メモリの上記閾値記憶容量を超えないようにスーパーレイヤのシーケンスにパーティショニングされる。
いくつかの実現例では、上記ニューラルネットワーク入力のバッチおよび上記それぞれのパラメータセットは、上記ハードウェア回路の外部のソースから受信され、上記スーパーレイヤの各レイヤを介して上記ニューラルネットワーク入力に対応する上記スーパーレイヤ入力を処理するステップは、上記外部のソースから追加のパラメータを受信することなく上記スーパーレイヤ入力を処理するステップを備える。
これの他の実現例および他の局面は、対応するシステム、装置、およびコンピュータ記憶装置にエンコードされた、上記の方法の動作を実行するように構成されたコンピュータプログラムを含む。1つ以上のコンピュータまたはハードウェア回路のコンピューティングシステムは、システムにインストールされて動作時にシステムに動作を実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせによってそのように構成することができる。1つ以上のコンピュータプログラムは、データ処理装置によって実行されると装置に動作を実行させる命令を有することによってそのように構成することができる。
本明細書に記載されている主題は、以下の利点のうちの1つ以上を達成するように特定の実施形態において実現可能である。ニューラルネットワークレイヤをスーパーレイヤのシーケンスにパーティショニングすることによって、ニューラルネットワークがパラメータセットを使用して入力を処理する際に、ニューラルネットワークハードウェア回路による外部通信を最小化することができる。計算プロセス中のハードウェア回路による外部通信が最小化されることにより、ハードウェア回路による帯域幅消費およびエネルギ最適化を向上させることができる。
さらに、スーパーレイヤのシーケンスは、ニューラルネットワークモデルの「バッチ」次元と「レイヤ」次元とを混合してニューラルネットワークレイヤを介した入力の処理のための1つ以上のメモリワーキングセットを最適化するグローバルスケジューリングプロセスを提供することができる。たとえば、バッチ次元およびレイヤ次元に対してグローバルスケジューリングを実行することによって、ニューラルネットワークアプリケーションのライブメモリワーキングセットを最小化することができ、それによって、所与のハードウェア回路での入力のバッチレス実行を向上させる。ライブメモリワーキングセットは、ニューラルネットワークのレイヤを介した処理のためのデータに対応し得て、このデータは、現在のところ、データ処理装置またはプロセッサハードウェア回路の物理的メモリ空間にある。
さらに、ハードウェア回路の一例は、最小化されたワーキングセットの入力およびパラメータを、SRAM容量を使用してオンチップで格納できるようにオンチップメモリ(たとえば、SRAM)を含んでもよい。したがって、スーパーレイヤのシーケンスを提供するグローバルスケジューリングプロセスに基づいてSRAM容量が効率的に利用されるときに入力およびパラメータを格納するのに追加のメモリリソースが必要とされなければ、コストの節約を実現することができる。いくつかの実現例では、オンチップSRAM容量は、特定の設計要件を満たすように、かつ、スーパーレイヤシーケンスを形成することを含む場合もあれば含まない場合もあるスケジューリングプロセスを提供するように、必要に応じて拡大または縮小されてもよい。
本明細書に記載されている主題の1つ以上の実現例の詳細については、添付の図面および以下の説明に記載されている。主題の他の考えられる特徴、局面および利点は、明細書、図面および特許請求の範囲から明らかになるであろう。
各々がそれぞれのパラメータセットを有するニューラルネットワークのレイヤを介してニューラルネットワーク入力を処理するためのハードウェア回路の一例を示す。 ニューラルネットワークのそれぞれのレイヤを使用した単一のバッチ要素の処理に関連するグラフの一例を示す。 ニューラルネットワークの所与のレイヤのための複数のバッチ要素の処理に関連するグラフの一例を示す。 スーパーレイヤを形成するニューラルネットワークの複数のレイヤの中での単一のバッチ要素の処理に関連するグラフの一例を示す。 ニューラルネットワークのスーパーレイヤを介してニューラルネットワーク入力を処理する方法のフロー図の一例である。 スーパーレイヤの複数のレイヤを使用して単一のバッチ要素を処理するためにスーパーレイヤのシーケンスにパーティショニングされるニューラルネットワークレイヤを示すグラフの一例を示す。 ニューラルネットワークレイヤのワーキングセットサイズを示すグラフの一例を示す。 ニューラルネットワークのスーパーレイヤのワーキングセットサイズを示すグラフの一例を示す。
さまざまな図における同様の参照番号および符号は、同様の要素を示す。
詳細な説明
複数のレイヤを有するニューラルネットワークを使用して、推論を計算することができる。たとえば、入力が与えられると、ニューラルネットワークはその入力に対する推論を計算することができる。ニューラルネットワークは、ニューラルネットワークの各レイヤを介して入力を処理することによってこの推論を計算する。特に、ニューラルネットワークのレイヤは、有向グラフの状態で配置され得て、レイヤの一部または全ては、それぞれのパラメータセットを有する。各レイヤは、入力を受信し、そのレイヤのためのパラメータセットに従って入力を処理して、出力を生成する。出力は、次のニューラルネットワークレイヤにおいて入力として使用することができる。
したがって、受信した入力から推論を計算するために、ニューラルネットワークは、入力を受信し、有向グラフにおける各ニューラルネットワークレイヤを介してそれを処理して、推論を生成し、1つのニューラルネットワークレイヤからの出力は、次のニューラルネットワークレイヤへの入力として提供される。ニューラルネットワークレイヤへのデータ入力、たとえばニューラルネットワークへの入力または有向グラフにおけるレイヤに接続された1つ以上のレイヤの、ニューラルネットワークレイヤへの出力は、レイヤへの活性化入力と称される。
有向グラフにおける特定のレイヤは、複数の入力を受信したり、複数の出力を生成したり、複数の入力を受信して複数の出力を生成したりすることができる。また、ニューラルネットワークのレイヤは、レイヤの出力を前のレイヤへの入力として送り返すことができるように配置することもできる。記載されている技術に係る方法は、各スーパーレイヤが1つ以上のレイヤを含む有向グラフのパーティションであるように、ニューラルネットワークレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定するステップを含み得る。
記載されている方法は、ハードウェア回路上のニューラルネットワークについてシーケンスにおけるそれぞれのスーパーレイヤのレイヤを介して入力のバッチを処理するステップを含み得る。入力のバッチを処理するステップは、レイヤのためのパラメータをハードウェア回路のメモリにロードするステップと、これらのパラメータを使用してニューラルネットワーク入力を処理して、この入力に対するそれぞれのスーパーレイヤ出力を生成するステップとを含み得る。
いくつかの実現例では、本明細書に記載されている1つ以上の機能は、システムのハードウェア回路または電子部品を使用して実行することができる。ハードウェア回路は、ハードウェア回路に電気的に結合された制御装置から制御信号を受信することができる。ハードウェア回路は、ニューラルネットワークレイヤへの入力およびこれらの入力を処理するために使用されるパラメータを格納するための1つ以上の非一時的な機械読取可能記憶媒体(たとえば、メモリ)を含むパッケージングされた電子デバイスであってもよい。
ハードウェア回路は、プロセッサマイクロチップ(たとえば、CPUまたはGPU)などのパッケージングされた集積回路またはプロセッサデバイスを形成する複数のコンポーネントを含み得る。したがって、この例では、ハードウェア回路のメモリは、マイクロチップを形成する複数の他のコンポーネントに対する「オンチップ」メモリであってもよい。本明細書では、パッケージングされたハードウェア回路または電子デバイスは、支持ケース内に密閉または封入されたシリコンウェハなどの半導体材料を含んでもよい。支持ケースは、デバイスを印刷回路基板に接続するために、ケースの外縁から延びる1本の導線を含み得る。
制御装置は、ハードウェア回路から間隔をあけて配置され、かつ、少なくともハードウェア回路のコンポーネントパッケージ(たとえば、支持ケース)によって封入されたオンチップメモリの外部にある外部コントローラであってもよい。外部コントローラは、ハードウェア回路に制御信号を提供してハードウェア回路に上記の入力およびパラメータを使用してニューラルネットワーク推論計算を実行させるシステムレベルコントローラであってもよい。外部コントローラは、メモリが、少なくともパッケージングされたハードウェア回路のオンチップメモリと同一場所に位置していないのでオフチップである「オフチップ」メモリを含んでもよい。
いくつかの実現例では、推論計算を実行する際、外部コントローラは、オフチップメモリを使用するのではなく、ハードウェア回路のオンチップメモリを使用して、入力およびパラメータを格納することができる。システムの少なくとも1つのコントローラから制御信号を受信したことに応答して、ハードウェア回路は、オンチップメモリにアクセスして、格納された入力およびパラメータを使用してニューラルネットワーク計算を実行する。
図1は、ニューラルネットワーク計算を実行するために使用することができるハードウェア回路100の一例を示す。ニューラルネットワーク計算を実行することは、各々がそれぞれのパラメータセットを有するニューラルネットワークのレイヤを介して回路100がニューラルネットワーク入力を処理することを含み得る。いくつかの実現例では、回路100は、ニューラルネットワークを具体化する1つ以上のプロセッサ、プロセッサマイクロチップまたは他の回路コンポーネントを含むハードウェア回路に対応する。他の実現例では、回路100は、1つ以上のニューラルネットワークを形成する1つ以上のハードウェア回路、プロセッサおよび他の関連の回路コンポーネントを含み得る。一般に、記載されている技術に係る方法は、CPU、GPU、デジタル信号プロセッサ(DSP)もしくは他の関連のプロセッサアーキテクチャなどのさまざまなプロセッサアーキテクチャに適用することができ、またはさまざまなプロセッサアーキテクチャを使用して実現することができる。
一般に、回路100は、コントローラ108を含み、コントローラ108は、1つ以上の制御信号110を提供して、メモリ104に関連付けられた入力をメモリ102のメモリアドレスに格納するか、またはメモリ102のメモリアドレスから取得する。同様に、コントローラ108は、1つ以上の制御信号110を提供して、パラメータメモリ106のパラメータをメモリ102のメモリアドレスに格納するか、またはメモリ102のメモリアドレスから取得する。
回路100は、1つ以上の積和演算(MAC)セル/ユニット107と、入力活性化バス112と、出力活性化バス114とをさらに含む。制御信号110は、たとえば、1つ以上の入力を入力活性化バス112上に提供することをメモリ102にさせたり、1つ以上のパラメータをパラメータメモリ106から提供することをメモリ102にさせたり、これらの入力およびパラメータを使用して計算を実行して出力活性化を生成して出力活性化バス114に提供することをMACセル/ユニット107にさせたりすることができる。
コントローラ108は、1つ以上の処理ユニットとメモリとを含み得る。コントローラ108の処理ユニットは、1つ以上のプロセッサ(たとえば、マイクロプロセッサまたは中央処理装置(CPU))、グラフィックス処理ユニット(GPU)、特定用途向け集積回路(ASIC)、またはさまざまなプロセッサの組み合わせを含み得る。コントローラ108は、本明細書に記載されている判断および計算のうちの1つ以上を実行するための追加の処理オプションを提供する他の記憶または計算リソース/装置(たとえば、バッファ、レジスタ、制御回路など)も含み得る。
いくつかの実現例では、コントローラ108の処理ユニットは、メモリに格納された命令を実行して、コントローラ108および回路100に本明細書に記載されている1つ以上の機能を実行させる。コントローラ108のメモリは、1つ以上の非一時的な機械読取可能記憶媒体を含み得る。本明細書に記載されている非一時的な機械読取可能記憶媒体は、ソリッドステートメモリ、磁気ディスク、光ディスク、携帯型コンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(たとえば、EPROM、EEPROMまたはフラッシュメモリ)、または情報を格納することができるその他の有形の媒体を含み得る。
回路100は、計算ユニットまたは計算タイルの一例であってもよく、テンソル、行列および/またはデータアレイなどの多次元データ構造に関連付けられた計算を実行するために追加のハードウェア構造を含み得る。いくつかの実現例では、入力値は、活性化メモリ104に予めロードすることができ、パラメータ/重み値は、ニューラルネットワークコンピューティングシステムに関連付けられた外部または上位制御装置から回路100によって受信されるデータ値を使用してパラメータメモリ106に予めロードすることができる。
回路100は、システムのニューラルネットワークを使用して実行される特定の計算オペレーションを定義する命令を受信することができる。一般に、メモリ102に格納されたデータ値の各々は、通常、それぞれのメモリアドレス位置に書き込まれる。そして、特定の計算オペレーションを実行するのに入力などのデータ値が必要であるときに、メモリ102におけるアドレス位置は、制御装置の一例(たとえば、コントローラ108)によってアクセスすることができる。
コントローラ108は、1つ以上の制御信号110をメモリ102に提供して、入力をメモリ102から入力活性化バス112上にロードし、MAC107を含む計算ユニットのアレイに値を提供することができる。活性化メモリ104のインデックスは、入力を有する全てのメモリアドレス位置を含み得る。データバス112は、計算アレイの1つ以上のユニットによってアクセス可能である。計算アレイのユニットは、1つ以上の活性化値をデータバス112から受信して、受信した活性化値に基づいて行列乗算に関連する計算を実行することができる。
所与の計算サイクルにおいて、回路100は、ニューラルネットワークレイヤの推論計算に関連付けられた乗算演算を実行するために、活性化メモリ104およびパラメータメモリ106の要素へのアクセスを必要とし得る。計算が実行されるサイクルにおいて、コントローラ108は、1つの入力値を一度に提供することができ、MACセル107を含む計算ユニットのアレイは、活性化に重み/パラメータを乗算して、所与の入力についてさまざまな出力活性化を生成する。
いくつかの実現例では、計算ユニットのアレイの各MACセル107は、ニューラルネットワークレイヤのさまざまな出力深さを担うことができる。計算ユニットのアレイは、コントローラ108によって完全に制御することができ、コントローラ108は、活性化値の検出に基づいて、いつ特定の計算を実行する必要があるかを判断することができる。
さらに、入力値は、メモリ102に格納するために回路100に到達すると、分析され得る。入力を分析したことに応答して、コントローラ108は、プログラムされた命令を実行して、メモリ102に特定の入力値のみ(たとえば、ゼロでない活性化値のみ)を格納することによって活性化データを効率的に圧縮し、それによってメモリストレージスペースおよび対応する帯域幅を節約することができる。
回路100が入力およびパラメータを受信すると、コントローラ108は、たとえば、1つ以上のダイレクトメモリアクセスオペレーションを実行することができる。これらのメモリアクセスオペレーションの実行は、活性化メモリ104の次元要素に対応する入力をメモリ102のアドレス位置に格納することを含む。同様に、コントローラ108は、パラメータメモリ106の次元要素に対応するパラメータもメモリ102のアドレス位置に格納することができる。コントローラ108は、特定の入力がフェッチされるメモリアドレスを維持する1つ以上のアドレスレジスタをさらに含み得る。さらに、1つ以上のレジスタは、対応するパラメータがフェッチされて特定の入力を乗算されるメモリアドレスも格納する。
コントローラ108は、上記のレジスタを参照して、第1および第2の入力がシーケンシャルに処理される際に、第1の入力のための対応するパラメータ(およびメモリアドレス)を決定し、第2の入力のための対応するパラメータ(およびメモリアドレス)を決定することができる。いくつかの実現例では、第1のニューラルネットワークレイヤにおいて計算される出力活性化は、ネットワーク内の次の/後続の第2のレイヤ、たとえばネットワークの次の隠れレイヤまたは出力レイヤ、への入力として使用される。一般に、ニューラルネットワークの各レイヤは、それぞれのパラメータセットの現在の値に従って、受信した入力から出力を生成する。
代替的な実現例では、(たとえば、「X」または「Y」次元を繰り返すように)パラメータメモリ106の所与の次元要素についてさまざまな重みをカバーするいくつかの乗算演算のオペランドとして単一の入力が使用されるいくつかの計算オペレーションがあってもよい。記載されている技術によれば、回路100は、計算システムまたは機械学習システムの外部コントローラから制御信号を受信するように構成され得る。外部コントローラは、回路100のオンチップメモリに格納されたニューラルネットワーク入力およびパラメータのバッチを提供することができる。以下でより詳細に説明するように、外部コントローラは、回路100上のニューラルネットワークによるバッチ要素処理のためのスケジューリングポリシーを実行するように構成され得る。
たとえば、システムの外部コントローラは、制御信号を回路100に提供して、回路100に、回路100のオンチップメモリに格納された入力およびパラメータを使用してニューラルネットワークのレイヤを介してニューラルネットワーク入力を処理させることができる。記載されている技術によれば、特定のスケジューリングポリシーを使用して、ニューラルネットワークのレイヤを、スーパーレイヤ(以下で説明)の1つ以上のシーケンスを形成するレイヤのグループにパーティショニングすることができる。次いで、システムコントローラは、回路100を使用して、オンチップメモリに格納された入力およびパラメータにアクセスし、次いで、スーパーレイヤのシーケンスにおける各レイヤを介してニューラルネットワーク入力のバッチを処理することができる。
図2Aは、ニューラルネットワークのそれぞれのレイヤを使用した単一のバッチ要素の処理に関連するグラフ200Aの一例を示す。いくつかの実現例では、グラフ200A/Bおよび下記のグラフ300、500および600A/Bは、ニューラルネットワークのトポロジを表すことができる有向グラフの一例とは異なっている。
グラフ200Aは、ニューラルネットワークのレイヤを介したバッチ要素の処理中にワーキングセットのサイズがどのように変化するかを示している。ワーキングセットのサイズは、ストレージユニット204で表されている。一般に、所与のニューラルネットワークレイヤのワーキングセットは、ニューラルネットワークレイヤへの入力と、ニューラルネットワークレイヤからの出力と、ニューラルネットワークレイヤによって入力を処理するために使用されるパラメータとを含む。ワーキングセットは、一般に、所与のニューラルネットワーク計算に必要な1つ以上のデータ構造のグループを含み、これらのデータ構造については以下でより詳細に説明する。
1つ以上のストレージユニット204は、ワーキングセットの入力およびニューラルネットワークレイヤのための関連付けられたパラメータを格納するために使用される。ストレージユニット204は、上記のメモリ102のメモリリソースに関連付けることができる。バッチ要素は、ハードウェア回路上のニューラルネットワークの一例を使用して処理される単一のニューラルネットワーク入力である。
上記のように、ニューラルネットワークは、推論を計算するために使用される複数のレイヤを含み得て、推論は、ニューラルネットワークのレイヤを介してニューラルネットワーク入力を処理することによって計算される。したがって、グラフ200Aは、レイヤA、レイヤB、レイヤC、レイヤDおよびレイヤEを含むニューラルネットワークレイヤ206をさらに示している。グラフ200Aは、バッチ要素がまずレイヤAを介して処理され、次いでレイヤBを介して処理され、次いでレイヤCを介して処理され、次いでレイヤDを介して処理され、次いでレイヤEを介して処理されることを示している。いくつかの実現例では、レイヤ206のそれぞれのレイヤは、畳み込みレイヤ、削減レイヤ、全結合(FC)レイヤ、分類子レイヤ、要素ごと乗算レイヤ、またはプーリングレイヤ、たとえば平均プーリングレイヤもしくは最大プーリングレイヤといったタイプのニューラルネットワークレイヤのうちの1つであってもよい。
ニューラルネットワークレイヤのワーキングセットは、1つ以上のバッチ要素と、ニューラルネットワークのそれぞれのレイヤを介してこれらのバッチ要素を処理するために使用されるパラメータとを含み得る。ワーキングセットは、i)ハードウェア回路上のニューラルネットワークを使用して処理される入力のバッチの1つ以上の入力/バッチ要素、およびii)入力およびパラメータを格納するのに必要なメモリ量を示すサイズパラメータまたはストレージユニット204の数によって定義することができる。入力に加えて、ワーキングセットは、出力活性化も含んでもよい。いくつかの実現例では、ニューラルネットワークは、上記のバッチ要素に関連付けられた「バッチ」次元およびレイヤ206に対応する「レイヤ」次元を有するものとすることができる。
概して、図2Aの以下の説明は、たとえば図3~図6を参照して以下で説明する改良されたニューラルネットワークスケジューリングプロセスのための文脈を提供する。たとえば、レイヤ206は、少なくとも5つのレイヤ(たとえば、レイヤA、B、C、DおよびE)を含む機械学習モデルの一例のニューラルネットワークレイヤであってもよい。機械学習モデルによって実行される推論計算は、特徴深さまたは出力ストライディングが急にまたは予想外に増加する場合がある。これが発生すると、アクティブワーキングセットは、ニューラルネットワーク計算プロセスの所与の時点において、入力および出力活性化量を時間とともに増加させたり、入力および出力活性化量を時間とともに減少させたりし得る。
たとえば、図2Aに示されるように、機械学習モデルによって処理される単一のバッチ要素のワーキングセットは、レイヤAで行われるバッチ処理に単一のストレージユニット204を必要としてもよい。レイヤBでのバッチ処理中に、所与のワーキングセットについて処理される入力活性化の増加が起こり得る。そのため、機械学習モデルは、レイヤAにおける単一のストレージユニット204ではなく、8個のストレージユニット204をレイヤBでのバッチ処理中に使用する必要があるであろう。さらに、図2Aの実現例では、レイヤC、DおよびEで処理されるワーキングセットは、それぞれ2個、4個および1個のストレージユニットを必要としてもよい。
いくつかの実現例では、入力/出力活性化量および対応する必要なストレージユニットの増加または減少は、ニューラルネットワークのレイヤに基づいて起こり得て、これらのレイヤの各々は、異なる数のパラメータまたは重みを有する。そのため、レイヤAのワーキングセットは、レイヤBと比較してより少ない活性化およびパラメータを含み得るため、レイヤAのワーキングセットは、より多くのストレージリソースを必要とし得るレイヤBのより大きなワーキングセットと比較して、必要とするストレージリソースが少なくて済む。
いくつかの実現例では、ストレージユニット204は、入力メモリ104およびパラメータメモリ106のメモリリソースに対応し得る。たとえば、ストレージユニット204は、回路100のハードウェア回路の上記の電子部品のオンチップメモリに関連付けられたスタティックランダムアクセスメモリ(SRAM)のメモリリソースに対応し得る。メモリ104,106を含むオンチップメモリリソースは、固定または閾値記憶容量を有し得る。この閾値記憶容量は、回路100のオフチップメモリに関連付けられたダイナミックランダムアクセスメモリ(DRAM)リソースの記憶容量よりも小さくてもよく、または実質的に小さくてもよい。上記のように、オフチップメモリは、上位外部制御装置のメモリであってもよい。
図2Bは、ニューラルネットワークの所与のレイヤのための複数のバッチ要素の処理に関連するグラフ200Bの一例を示す。グラフ200Bは、バッチ212のそれぞれのバッチ要素に関連付けられたワーキングセットの入力を格納するためのストレージユニットの第1の集合体208を含む。グラフ200Bは、バッチ214のそれぞれのバッチ要素に関連付けられたワーキングセットの入力を格納するためのストレージユニットの第2の集合体210をさらに含む。
図2Bの実現例では、2つ以上のバッチの各々は、複数のバッチ要素を含み得て、すなわち、バッチ212は、少なくとも1つの個々のバッチ要素「0」を有し得て、バッチ214は、少なくとも1つの個々のバッチ要素「1」を有し得る。少なくとも2つのバッチ212,214を処理することにより、所与のワーキングセットの相対的サイズをバッチサイズだけ増幅させることができる。たとえば、図2Bに示されるように、レイヤ206(レイヤA~レイヤE)の各々におけるワーキングセットサイズは、対応するバッチサイズを有する少なくとも2つのバッチ、すなわちバッチ212およびバッチ214、の入力を処理することに基づいて、増幅させることができ、たとえば二倍にすることができる。
上記のように、システムコントローラは、入力のバッチがニューラルネットワークの1つ以上のレイヤを介して処理される態様を定義するニューラルネットワークスケジューリングプロセスまたはポリシーを実行するためにコンパイルタイムスケジューリングまたは他の計算論理を含むように構成され得る。たとえば、回路100は、ニューラルネットワーク入力のバッチを受信し、システムコントローラは、バッチ内の各入力について推論を実行するために入力をどのように処理すべきであるかに関してスケジューリングプロセスを決定する。入力を処理することにより、ニューラルネットワークは、入力活性化などの中間入力を生成し、これらの中間入力は、ニューラルネットワークの後続のレイヤに提供され得る。中間入力は、入力活性化として後続のニューラルネットワークレイヤに提供される第1のニューラルネットワークレイヤの出力活性化に対応し得る。
従来のスケジューリングポリシーでは、ニューラルネットワークは、第1のニューラルネットワークレイヤを介してバッチ内の各入力またはバッチ要素を処理して、各バッチ要素についてレイヤ出力(出力活性化)を生成する。次いで、バッチ内のバッチ要素の処理が完了するまで、各レイヤ出力は、第2のニューラルネットワークレイヤなどを介して処理される。すなわち、ニューラルネットワークにおける次のレイヤの処理が行われる前に、所与のレイヤの処理がバッチ内の全てのバッチ要素に対して実行される。この従来のニューラルネットワークスケジューリングポリシーは、メモリ容量などの制約によって制限される場合があるため、機械学習システムの利用可能なメモリおよび計算リソースを最大限使用するという観点からは非効率であるかもしれない。
オンチップメモリ、たとえばハードウェア回路の一例のメモリ104,106のストレージユニット204、の使用に関して、いくつかの実現例では、オンチップメモリリソースによってサポート可能な最大バッチサイズは、ワーキングセットのサイズに基づいて決定することができる。特に、ストレージユニット204によってサポートされる最大バッチサイズは、一部には、所与のニューラルネットワークレイヤによって処理される入力およびパラメータの最大のワーキングセットに基づいて決定することができる。
たとえば、図2Bを参照して、メモリ102および104に関連付けられた合計オンチップ記憶容量は、20個のストレージユニット204に制限されてもよい。図2Bでは、レイヤBによって処理される2つのバッチ要素のワーキングセットが16個のストレージユニット204を必要とするので、第3のバッチ要素の処理には24個のストレージユニット204が必要になり、そのため、20個のストレージユニット容量を超えることになる。そのため、この例では、各バッチ要素の処理に少なくとも8個のストレージユニットが必要である場合、ニューラルネットワークは、2つのバッチ要素を含む特定の最大ワーキングセットサイズをサポートするだけでよい。
具体的には、図2Bの実現例では、ワーキングセットにおけるバッチ要素「0」の処理には、参照特徴208によって示されるように8個のストレージユニットが必要であり、ワーキングセットにおけるバッチ要素「1」の処理も、参照特徴210によって示されるように8個のストレージユニットが必要である。したがって、バッチ要素0および1の処理には、まとめて、16個のストレージユニット204が必要であるので、5個以上のストレージユニット204を必要とする少なくとも1つの追加のバッチ要素の処理は、ニューラルネットワークのハードウェア回路の利用可能なメモリリソースのオンチップ記憶容量(ここでは、20個のユニットに制限される)を超えるであろう。
図3は、1つ以上のスーパーレイヤ308および310を形成するニューラルネットワークの複数のレイヤ206間でのバッチ要素の処理に関連するグラフ300の一例を示し、スーパーレイヤ308は、たとえばレイヤA、BおよびCを含む。グラフ300は、それぞれのバッチ要素302のバッチ要素0に関連付けられたワーキングセットの入力およびパラメータを格納するためのストレージユニットの第1の集合体304を含む。同様に、グラフ300は、それぞれのバッチ要素302のバッチ要素1に関連付けられたワーキングセットの入力およびパラメータを格納するための、図3では灰色で示されているストレージユニットの第2の集合体306をさらに含む。
上記のように、回路100は、回路100の他のコンポーネントまたは回路と比較してより少ないオンチップまたはSRAMストレージリソースを有し得る電子部品またはハードウェア回路の一例を含み得る。しかし、本明細書に記載されているように、回路100は、利用可能なオンチップメモリを使用して計算集約型の機械学習アルゴリズムを実行するように構成され得る。これらの例では、機械学習システムのニューラルネットワークは、ハードウェア回路のオンチップメモリのストレージユニット204によってサポート可能な最小または最大バッチサイズに対して不必要な制約を課すことのないアクセラレータアーキテクチャを含み得る。
記載されている技術によれば、改良されたニューラルネットワークスケジューリングプロセスを使用して、回路100のハードウェア回路のローカルオンチップストレージリソースを使用することにより提供されるバッチローカリティを効率的に利用することができる。さらに、このオンチップストレージおよび他のローカル計算リソースを使用することにより、利用可能な帯域幅を最適化することができ、帯域幅およびエネルギの影響を受けやすい計算環境においてコンポーネントエネルギ消費を節約することができる。さらに、このオンチップストレージおよび他のローカルリソースの使用は、ニューラルネットワークのレイヤを介した入力の処理中のハードウェア回路による外部通信を最小化するのに役立つことができる。
たとえば、簡単に上記したように、ニューラルネットワークを実現するハードウェア回路は、ホストデバイス/外部コントローラと外部通信して、ニューラルネットワークが推論の計算に使用するニューラルネットワーク入力およびパラメータを受信してもよい。これらの外部通信は、ハードウェア回路のオンチップ計算リソースの使用を必要とする可能性がある。したがって、外部通信は、ハードウェア回路の利用可能な計算帯域幅を減少させてシステムレイテンシを増加させる可能性があり、ハードウェア回路の電子部品によるエネルギ消費の増加も生じさせるおそれがある。
帯域幅およびエネルギ消費に関連するこれらの制約に鑑みて、本明細書には、ニューラルネットワークモデルの一例の「バッチ」次元と「レイヤ」次元とを混合して特定のメモリワーキングセットの使用を最適化するグローバルスケジューリングポリシーまたはプロセスが記載されている。特に、記載されている技術の実現例は、機械学習モデルのバッチ次元およびレイヤ次元を活用して、ニューラルネットワークによって処理されるバッチ要素のアクティブワーキングセットのサイズを最小化する柔軟なニューラルネットワークスケジューリングポリシーを含み得る。
たとえば、記載されている教示に係る改良されたニューラルネットワークスケジューリングプロセスは、オンチップメモリ104,106へのパラメータを含むワーキングセットの格納がオンチップメモリリソースの閾値記憶容量を超えないようにアクティブワーキングセットをサイズ決めすることを可能にする。したがって、本明細書に記載されている方法は、ニューラルネットワークによるバッチ要素処理の効率的なスケジューリングを可能にする。たとえば、効率は、入力およびこれらの入力を処理するために使用されるパラメータのバッチサイズに対して不必要な制約を課すことのない態様でハードウェア回路のオンチップストレージにワーキングセットを格納することを可能にするスケジューリングポリシーに基づいて達成することができる。
さらに、記載されている教示に係る改良されたスケジューリングポリシーは、入力およびパラメータを格納するための利用可能なオンチップリソースの効率的使用を最大化することにより、オフチップリソースにアクセスするための外部通信を最小化することができる。オンチップリソースの効率的使用および外部通信の低減は、利用可能なシステム帯域幅の増加およびシステムコンポーネントによるエネルギ消費の全体的な減少につながるであろう。
いくつかの実現例では、改良されたスケジューリングプロセスまたはポリシーの局面は、ソフトウェア命令またはプログラムコードを使用してエンコードすることができる。これらの命令は、回路100の少なくとも1つのプロセッサ、コントローラ108の少なくとも1つのプロセッサ、または回路100もしくはコントローラ108もしくはそれら両方のハードウェア回路の一例の少なくとも1つのプロセッサによって実行可能であってもよい。
図4は、回路100を使用してニューラルネットワークのスーパーレイヤを介してニューラルネットワーク入力を処理する方法400のフロー図の一例である。方法またはプロセス400は、ニューラルネットワークによるバッチ要素処理のための改良されたスケジューリングポリシーに対応する。ブロック402において、回路100は、システムのハードウェア回路上のニューラルネットワークを使用して処理されるニューラルネットワーク入力のバッチを受信する。ニューラルネットワークは、有向グラフの状態で配置された複数のレイヤを有し得て、各レイヤは、それぞれのパラメータセットを有し得る。上記のように、いくつかの実現例では、回路100のハードウェア回路は、ニューラルネットワークハードウェアシステムの一例のホストインターフェイスデバイスまたは上位コントローラから入力を受信することができる。
ブロック404において、回路100は、ニューラルネットワークレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定する。たとえば、回路100は、スーパーレイヤのシーケンスへのニューラルネットワークレイヤの1つ以上のパーティションを決定するように構成されたコンパイラロジックを含んでもよく、またはこのコンパイラロジックへのアクセスを有してもよい。代替的に、またはコンパイラロジックに加えて、回路100は、スーパーレイヤのシーケンスへのニューラルネットワークレイヤの1つ以上のパーティションを決定するように構成された少なくとも1つのハードウェアブロックを含んでもよく、またはこの少なくとも1つのハードウェアブロックへのアクセスを有してもよい。いくつかの実現例では、スーパーレイヤのシーケンスにおける各スーパーレイヤは、1つ以上のレイヤを含む有向グラフのパーティションである。
ブロック406において、回路100は、システムのハードウェア回路を使用してニューラルネットワーク入力のバッチを処理する。いくつかの実現例では、ハードウェア回路を使用してニューラルネットワーク入力のバッチを処理することは、スーパーレイヤにおけるレイヤのためのそれぞれのパラメータセットをメモリ106にロードすることを含み得る。いくつかの例では、スーパーレイヤにおけるレイヤのためのパラメータは、スーパーレイヤのシーケンスにおける各スーパーレイヤについてロードされる。さらに、ハードウェア回路を使用してニューラルネットワーク入力のバッチを処理することは、バッチ内の各ニューラルネットワーク入力について、ハードウェア回路のメモリ内のパラメータを使用してスーパーレイヤの各レイヤを介してニューラルネットワーク入力を処理して、ニューラルネットワーク入力のためのスーパーレイヤ出力を生成することも含み得る。
シーケンスにおける第1のスーパーレイヤでは、スーパーレイヤへのニューラルネットワーク入力(たとえば、スーパーレイヤ入力)の出力は、第1のスーパーレイヤ出力である。さらに、第1のスーパーレイヤの後の各スーパーレイヤへのスーパーレイヤ入力は、シーケンスにおける先行するスーパーレイヤによって生成されたスーパーレイヤ出力である。いくつかの実現例では、ニューラルネットワーク入力のバッチを処理することは、シーケンスにおける第1のスーパーレイヤの全てのレイヤを介して入力を処理し、次いで、バッチ内の全ての入力がニューラルネットワーク内の全てのスーパーレイヤを介して処理されるまでシーケンスにおける各々の後続のスーパーレイヤの全てのレイヤを介して入力を処理することを含む。
再び図3を参照して、改良されたニューラルネットワークスケジューリングプロセスを使用する際、複数のレイヤ308および310についてバッチレスの態様で1つのバッチ要素を実行することができる。記載されている技術によれば、複数のレイヤ308は第1のスーパーレイヤを形成することができ、複数のレイヤ310は第1のスーパーレイヤとは異なる第2のスーパーレイヤを形成することができる。スーパーレイヤを形成するようにパーティショニングされる複数のレイヤのグループ分けについては、図4を参照して以下でより詳細に説明する。
図3に示されるように、いくつかの実現例では、機械学習モデルの一例のレイヤBは、より小さなワーキングセットが処理されるレイヤCにおける必要なストレージユニットの量と比較して、大きなワーキングセットを処理するために大量のストレージユニット204を必要とし得る。バッチ要素のワーキングセットが十分に小さい場合、改良されたスケジューリングプロセスは、スーパーレイヤ/レイヤ308などの複数のレイヤ(たとえば、スーパーレイヤ)の特定のグループによって処理される次のバッチ要素への機械学習モデル切り替えを含み得る。
たとえば、回路100のハードウェア回路上で実現されるニューラルネットワークは、ニューラルネットワークの「バッチ」次元および「レイヤ」次元にわたってグローバルなスケジューリングを実行するように構成され得る。特に、ニューラルネットワークレイヤへの入力のバッチ処理は、第1のプロセス反復の際に要素0の第1のバッチに対してレイヤ308(A,B,C)のグループを実行し、次いで、第2のプロセス反復の際に要素1の第2のバッチに対して同じレイヤ(A,B,C)308のグループを実行することによって実行することができる。
図3に示されるように、改良されたスケジューリングポリシーに従って異なるバッチ要素間で交互に行うことにより、上記の従来のスケジューリングポリシーの最大ワーキングセットサイズに対してワーキングセットの最大サイズが減少する。たとえば、少なくともバッチ要素1に対するレイヤBでのバッチ処理に関して、異なるバッチ要素間で交互に行うことにより、上記の従来のスケジューリングポリシーを使用したときに必要とされる16個のユニットという最大ワーキングセットサイズの代わりに、レイヤBの最大ワーキングセットサイズを10個のユニットに減少させることができる。たとえば、バッチ要素1に対するレイヤBでのバッチ処理に8個のユニットを使用してもよく、バッチ要素0に対するレイヤA、B、Cでの前のバッチ処理の出力、ならびに/または、レイヤDおよびEでの処理のためのバッチ要素0に関連付けられたワーキングセットの入力およびパラメータを格納するために2個のユニットを使用してもよい。
図5は、スーパーレイヤを形成するようにパーティショニングされる複数のレイヤを使用して少なくとも単一のバッチ要素を処理するためにスーパーレイヤのシーケンスにパーティショニングされるニューラルネットワークレイヤを示すグラフ500の一例を示す。グラフ500は、それぞれのバッチ要素502のバッチ要素0のためのワーキングセットの入力を格納するためのストレージユニットの第1の集合体504を含む。
同様に、グラフ500は、a)それぞれのバッチ要素502のバッチ要素1のためのワーキングセットの入力を格納するためのストレージユニットの第2の集合体506と、b)それぞれのバッチ要素502のバッチ要素2のためのワーキングセットの入力を格納するためのストレージユニットの第3の集合体508と、c)それぞれのバッチ要素502のバッチ要素3のためのワーキングセットの入力を格納するためのストレージユニットの第4の集合体510とをさらに含む。
グラフ500は、グラフのX軸に沿ってスーパーレイヤのシーケンスをさらに含む。たとえば、グラフ500は、i)レイヤA、B、Cの各々を介してバッチ要素0、1、2および3を処理するための第1のスーパーレイヤ512と、ii)レイヤD、Eの各々を介してバッチ要素0、1、2および3を処理するための第2のスーパーレイヤ514とを含む。記載されている教示によれば、改良されたニューラルネットワークスケジューリングポリシーに基づいて定義されるスーパーレイヤのシーケンスは、ニューラルネットワークを実行するハードウェア回路のオンチップメモリ容量または閾値容量を超えることなく、比較的大きなワーキングセットバッチサイズをサポートすることができる。
たとえば、図5に示されるように、例示的な「B3」レイヤおよびバッチ局面中に入力が処理される場合、ワーキングセットの最大サイズは、4個のバッチ要素、たとえばそれぞれのストレージユニット204の特徴的な網掛けパターンによって示されるバッチ要素0、1、2および3、のために14個のストレージユニットしか必要としない。このように(たとえば、16個のストレージユニットを必要とする)従来のスケジューリングプロセスと比較して必要なストレージユニットが減少することにより、ハードウェア回路のオンチップメモリを介して受信して格納される入力およびパラメータのローカリティの利用を向上させることができる。このようにオンチップリソースの活用を向上させることにより、帯域幅およびエネルギの節約を増加させることができ、これは、一部には、オフチップまたはDRAMメモリリソースの使用量の減少に基づいて実現される。
さらに、簡単に上記したように、改良されたスケジューリングポリシーを使用して、回路100のハードウェア回路のオンチップメモリ容量を超えることなく入力の1つ以上のバッチまたは入力を処理することができる。いくつかの実現例では、シーケンスにおけるスーパーレイヤのレイヤを介してニューラルネットワーク入力の1つ以上のバッチを処理することは、シーケンスにおける第1のスーパーレイヤ(512)が、少なくともニューラルネットワークの後続のレイヤによって受信されるように第1のスーパーレイヤ出力をこの後続のレイヤへの入力として生成することを含み得る。
いくつかの例では、スーパーレイヤのシーケンスにおける第2のスーパーレイヤへのニューラルネットワーク入力は、シーケンスにおける第1のスーパーレイヤによって生成される第1のスーパーレイヤ出力に対応し得る。さらに、シーケンスにおけるスーパーレイヤのレイヤを介して入力のバッチを処理することは、ハードウェア回路のメモリ内のパラメータを使用して第2のスーパーレイヤにおける各レイヤを介してニューラルネットワーク入力を処理して、第1のスーパーレイヤ出力に対応するニューラルネットワーク入力のための第2のスーパーレイヤ出力を生成することを含み得る。
いくつかの実現例では、スーパーレイヤのシーケンスにおけるスーパーレイヤのレイヤを介してニューラルネットワーク入力のバッチを処理することは、スーパーレイヤの各レイヤを介してバッチ要素についての入力を1つずつ処理することを含み得る。たとえば、入力のバッチを処理することは、スーパーレイヤにおける各レイヤを介して2つ以上のニューラルネットワーク入力をシーケンシャルに処理することを含み得る。このようなシーケンシャルな処理は、スーパーレイヤの各レイヤを介して第1のニューラルネットワーク入力を処理し、次いでスーパーレイヤの各レイヤを介して第2のニューラルネットワーク入力を処理することを含み得る。
いくつかの実現例では、シーケンスにおける各スーパーレイヤについて、スーパーレイヤのレイヤを介して入力を処理することは、バッチ内の第2のニューラルネットワーク入力に対応するスーパーレイヤ入力がスーパーレイヤにおける各レイヤを介して後に処理される前にバッチ内の第1のニューラルネットワーク入力のためのスーパーレイヤ入力がスーパーレイヤにおける各レイヤを介して処理されるように、スーパーレイヤにおける各レイヤを介してニューラルネットワーク入力のバッチに対応するスーパーレイヤ入力をシーケンシャルに処理することを含み得る。
いくつかの実現例では、スーパーレイヤのシーケンスにおける第1のスーパーレイヤは、単一のニューラルネットワークレイヤを含み得る。この実現例では、スーパーレイヤのシーケンスを介して入力を処理することは、この単一のニューラルネットワークレイヤを含む第1のスーパーレイヤを介して第1の入力を処理することを含み得る。この第1の入力が第1のスーパーレイヤの単一のレイヤを介して処理された後、第1の入力がシーケンスにおける第1のスーパーレイヤに続く後続のスーパーレイヤの全てのレイヤを介して処理される前に、第2の入力を第1のスーパーレイヤによってすぐに処理することができる。シーケンスにおける後続のスーパーレイヤによって処理される第1の入力は、単一のニューラルネットワークレイヤを含む第1のスーパーレイヤのスーパーレイヤ出力であってもよい。
スーパーレイヤおよびスーパーレイヤの1つ以上のシーケンスは、改良されたニューラルネットワークスケジューリングポリシーに従ってレイヤのグループをパーティショニングすることに基づいて形成することができる。いくつかの実現例では、回路100は、改良されたスケジューリングポリシーのためのプログラムされた命令を含み、これらの命令は、ニューラルネットワークレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定することを含み得る。各スーパーレイヤは、1つ以上のレイヤを含む有向グラフのパーティションであり得る。
改良されたスケジューリングプロセスの局面により、所与のスーパーレイヤのための全ての入力およびパラメータが回路100のハードウェア回路のオンチップストレージからアクセスできるようにニューラルネットワークレイヤを複数のスーパーレイヤに形成することができる。上記のように、入力およびパラメータへのオンチップアクセスは、ハードウェア回路による外部通信を最小化することができる。たとえば、ハードウェア回路は、追加量の入力およびパラメータをオフチップインターフェイスから取得するための反復性フェッチ動作に関連付けられた計算プロセスを回避することができるので、外部通信を最小化することができる。
いくつかの実現例では、オフチップインターフェイスは、入力およびパラメータを回路100に提供する外部制御装置にハードウェア回路を結合することができる。特に、スーパーレイヤのシーケンスにおける各スーパーレイヤは、このスーパーレイヤに対する1つ以上のニューラルネットワーク入力を処理するために特定量のパラメータを受信することができる。いくつかの例では、スーパーレイヤのレイヤを介して1つ以上のニューラルネットワーク入力を処理することは、スーパーレイヤに対する特定量の入力を処理するために後続のある量のパラメータを受信することなく入力を処理することを含み得る。
いくつかの実現例では、回路100は、スーパーレイヤのシーケンスの1つ以上のスーパーレイヤパーティションまたは境界を決定するようにプログラムコードを実行する。たとえば、回路100は、所与のレイヤについて活性化ワーキングセットと集約パラメータ容量との合計を求めるまたは計算することができる。次いで、回路100は、求められた合計を使用して、一部にはハードウェア回路のメモリリソースの予め規定されたまたは閾値オンチップ記憶容量(たとえば、メモリ104および106)に基づいて、ニューラルネットワークレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定することができる。したがって、ニューラルネットワークレイヤは、回路100のハードウェア回路がニューラルネットワーク入力の1つ以上のバッチを処理する際にオンチップメモリの閾値記憶容量を超えないようにスーパーレイヤのシーケンスにパーティショニングされることができる。
いくつかの実現例では、ニューラルネットワークレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定することは、i)回路100が、ニューラルネットワークによって処理するための入力を含む少なくとも1つのワーキングセットのための特定のサイズパラメータを決定することと、ii)回路100が、ハードウェア回路のメモリの特定の集約入力活性化およびパラメータ容量を決定することと、iii)回路100が、少なくとも1つのワーキングセットのための特定のサイズパラメータまたはハードウェア回路のメモリの特定の集約入力活性化およびパラメータ容量に少なくとも基づいて、スーパーレイヤのシーケンスへのレイヤのパーティショニングを決定することとを含む。
たとえば、オンチップメモリの記憶容量または閾値容量は、500メガバイト(MB)であってもよい。回路100は、式1[合計使用量=(ワーキングセット×N)+パラメータ]に基づいて合計オンチップメモリ使用量を求めることができ、式1の変数Nはバッチサイズである。次いで、回路100は、ニューラルネットワークの各レイヤのためのそれぞれのパラメータセットを格納するのに必要なメモリの量を決定することができる。いくつかの実現例では、図5を参照して、回路100は、i)レイヤAのためのパラメータセットが25MBのメモリを必要とし、ii)レイヤBのためのパラメータセットが125MBのメモリを必要とし、iii)レイヤCのためのパラメータセットが50MBのメモリを必要とすると判断することができる。
したがって、この例では、回路100は、レイヤA、BおよびCのためのそれぞれのパラメータセットの総メモリ使用量が200MBであり、利用可能なオンチップメモリのうち300MBが残っており入力を格納するのに使用される(たとえば、500MBのオンチップメモリ容量-200MBの総メモリ使用量)と判断する。それぞれのレイヤA、B、Cについて、回路100は、それぞれのレイヤによって処理されるワーキングセットの入力のための特定のサイズパラメータおよびワーキングセットの対応するバッチサイズを決定することができる。ワーキングセットに対する入力のサイズパラメータおよび対応するバッチサイズを使用して、回路100は、メモリの集約活性化およびパラメータ容量を決定することができる。回路100は、メモリの集約活性化およびパラメータ容量を使用して、スーパーレイヤのシーケンスへのレイヤのパーティショニングを決定することができる。
いくつかの実現例では、回路100は、式1、(たとえば、メモリ単位の)入力のサイズパラメータ、バッチサイズ、およびパラメータに使用される集約メモリを使用して、レイヤの1つ以上のグループの合計オンチップメモリ使用量を決定する。回路100は、レイヤの各グループの合計メモリ使用量を500MBのオンチップ記憶容量と比較することができる。次いで、回路100は、比較結果に基づいて、スーパーレイヤのシーケンスを形成するレイヤのパーティショニングまたはグループを決定することができる。回路100は、ハードウェア回路がワーキングセットのためのニューラルネットワーク入力のバッチを処理する際にオンチップメモリの閾値記憶容量(500MB)を超えないようにスーパーレイヤのシーケンスへのレイヤのパーティショニングを決定する。
図6Aは、ニューラルネットワークレイヤのための活性化ワーキングセットサイズを示すグラフ600Aの一例を示し、図6Bは、ニューラルネットワークのスーパーレイヤのための活性化ワーキングセットサイズを示すグラフ600Bの一例を示す。上記のように、ならびにグラフ600Aおよび600Bによって示されるように、スーパーレイヤとして配置されていないニューラルネットワークレイヤのワーキングセットは、スーパーレイヤとして配置されたニューラルネットワークレイヤのワーキングセットのサイズと比較して、実質的により大きなワーキングセットサイズを含み得る。
たとえば、上記の従来のスケジューリングポリシーを使用したバッチ処理のためのワーキングセットでは、ワーキングセットサイズが何百万もの入力を含むことになる。このような大量の入力は、入力およびこれらの入力を処理するために使用されるパラメータを格納するのにオンチップストレージユニット204が使用される場合にハードウェア回路のオンチップメモリリソースの記憶または閾値容量を超える可能性がある。これに対して、本明細書に記載されている改良されたスケジューリングポリシーに基づくスーパーレイヤパーティションを使用したバッチ処理のためのワーキングセットでは、ワーキングセットサイズが含む入力を実質的に少なくすることができる。このような実質的に少ない量の入力を、オンチップメモリ容量を超えないようにオンチップストレージユニット204を使用して効率的に格納することができる。
主題の実施形態および本明細書に記載されている機能動作は、本明細書に開示されている構造およびそれらの構造的等価物を含むデジタル電子回路、有形に具体化されたコンピュータソフトウェアもしくはファームウェア、コンピュータハードウェア、またはそれらのうちの1つ以上の組み合わせで実現することができる。本明細書に記載されている主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわちデータ処理装置によって実行されるようにまたはデータ処理装置の動作を制御するように有形の非一時的なプログラムキャリアにエンコードされるコンピュータプログラム命令の1つ以上のモジュールとして実現することができる。
代替的にまたは加えて、プログラム命令は、人工的に発生させた伝搬信号、たとえば機械によって生成される電気信号、光信号または電磁信号にエンコードすることができ、これらの信号は、情報をエンコードするように生成され、好適な受信機装置に送信され、データ処理装置によって実行される。コンピュータ記憶媒体は、機械読取可能記憶装置、機械読取可能記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つ以上の組み合わせであってもよい。
本明細書に記載されているプロセスおよび論理フローは、入力データ上で動作して出力を生成することによって機能を実行するように1つ以上のコンピュータプログラムを実行する1つ以上のプログラム可能なコンピュータによって実行することができる。これらのプロセスおよび論理フローは、特殊目的論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、GPGPU(汎用グラフィックス処理ユニット)またはその他の処理ユニットによっても実行することができ、装置は、特殊目的論理回路としても実現することができる。
コンピュータプログラムの実行に好適なコンピュータは、一例として、汎用マイクロプロセッサ、または特殊目的マイクロプロセッサ、またはそれら両方、またはその他の種類の中央処理装置を含み、これらに基づいていてもよい。一般に、中央処理装置は、リードオンリメモリまたはランダムアクセスメモリまたはそれら両方から命令およびデータを受信する。コンピュータの必須の要素は、命令を実施または実行するための中央処理装置、ならびに、命令およびデータを格納するための1つ以上のメモリデバイスである。一般に、コンピュータは、データを格納するための1つ以上の大容量記憶装置、たとえば磁気ディスク、光磁気ディスクまたは光ディスク、も含み、または1つ以上の大容量記憶装置からデータを受信したりデータを送信したりデータを送受信したりするように動作可能に結合される。しかし、コンピュータは、このような装置を有していなくてもよい。
コンピュータプログラム命令およびデータの格納に好適なコンピュータ読取可能媒体は、全ての形態の不揮発性メモリ、媒体およびメモリデバイスを含み、これらのデバイスは、一例として、半導体メモリデバイス(たとえば、EPROM、EEPROMおよびフラッシュメモリデバイス)、磁気ディスク(たとえば、内部ハードディスクまたはリムーバブルディスク)を含む。プロセッサおよびメモリは、特殊目的論理回路によって補完されてもよく、または特殊目的論理回路に組み込まれてもよい。
本明細書は、多くの具体的な実現例の詳細を含んでいるが、これらは、いずれの発明または請求の範囲を限定するものとして解釈されるべきではなく、特定の発明の特定の実施形態に特有の特徴を説明するものとして解釈されるべきである。別々の実施形態の文脈で本明細書に記載されている特定の特徴は、単一の実施形態において組み合わせて実現することも可能である。逆に、単一の実施形態の文脈で記載されているさまざまな特徴は、複数の実施形態において別々にまたは任意の好適な部分的な組み合わせで実現することも可能である。さらに、特徴は、特定の組み合わせで動作するものとして上記され、最初にそのように記載されているかもしれないが、記載されている組み合わせの中の1つ以上の特徴は、場合によってはこの組み合わせから除外されてもよく、記載されている組み合わせは、部分的な組み合わせまたは部分的な組み合わせの変形例を対象としてもよい。
同様に、動作は、特定の順序で図面に示されているが、これは、望ましい結果を達成するために、示されている特定の順序またはシーケンシャルな順序でこのような動作を実行しなければならないものとして理解されるべきではなく、示されている動作を全て実行しなければならないものとして理解されるべきでもない。特定の状況では、マルチタスクおよび並列処理が有利である場合もある。さらに、上記の実施形態におけるさまざまなシステムモジュールおよびコンポーネントの分離は、このような分離が全ての実施形態で必要であるものとして理解されるべきではなく、記載されているプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に一体化されるかまたは複数のソフトウェア製品にパッケージングされてもよいということが理解されるべきである。
主題の特定の実施形態について説明してきた。他の実施形態は、以下の特許請求の範囲の範囲内である。たとえば、特許請求の範囲に記載されている動作は、異なる順序で実行されても、依然として望ましい結果を達成することができる。一例として、添付の図面に示されているプロセスは、望ましい結果を達成するために、示されている特定の順序またはシーケンシャルな順序を必ずしも必要としない。特定の実現例では、マルチタスクおよび並列処理が有利である場合もある。

Claims (17)

  1. 方法であって、
    ハードウェア回路上のニューラルネットワークを使用して処理されるニューラルネットワーク入力のバッチを受信するステップを備え、前記ニューラルネットワークは、有向グラフの状態で配置された複数のレイヤを有し、各レイヤは、それぞれのパラメータセットを有し、前記方法はさらに、
    前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定するステップを備え、各スーパーレイヤは、1つ以上のレイヤを含む前記有向グラフのパーティションであり、前記方法はさらに、
    前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、前記シーケンスにおける各スーパーレイヤについて、
    前記スーパーレイヤにおける前記レイヤのための前記それぞれのパラメータセットを前記ハードウェア回路のメモリにロードするステップと、
    前記バッチ内の各ニューラルネットワーク入力について、前記ハードウェア回路の前記メモリ内の前記パラメータセットを使用して、前記スーパーレイヤの各レイヤを介して前記ニューラルネットワーク入力に対応するスーパーレイヤ入力を処理して、前記ニューラルネットワーク入力のためのスーパーレイヤ出力を生成するステップとを備え
    前記ハードウェア回路の前記メモリは、閾値記憶容量を有し、前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの前記パーティショニングを決定するステップは、
    前記ハードウェア回路の前記メモリの前記閾値記憶容量に基づいて、前記ニューラルネットワークのレイヤをスーパーレイヤのシーケンスにパーティショニングするステップを備える、方法。
  2. 前記シーケンスにおける第1のスーパーレイヤでは、前記ニューラルネットワーク入力に対応する前記スーパーレイヤ入力が前記ニューラルネットワーク入力である、請求項1に記載の方法。
  3. 前記第1のスーパーレイヤ出力の後の各スーパーレイヤへの前記スーパーレイヤ入力は、前記シーケンスにおける先行するスーパーレイヤによって生成されたスーパーレイヤ出力である、請求項2に記載の方法。
  4. 前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、各スーパーレイヤについて、
    前記バッチ内の第2のニューラルネットワーク入力に対応するスーパーレイヤ入力が前記スーパーレイヤの各レイヤを介して後に処理される前に前記バッチ内の第1のニューラルネットワーク入力のための前記スーパーレイヤ入力が前記スーパーレイヤの各レイヤを介して処理されるように、前記スーパーレイヤの各レイヤを介して前記ニューラルネットワーク入力のバッチに対応する前記スーパーレイヤ入力をシーケンシャルに処理するステップを備える、請求項1~3のいずれか1項に記載の方法。
  5. 方法であって、
    ハードウェア回路上のニューラルネットワークを使用して処理されるニューラルネットワーク入力のバッチを受信するステップを備え、前記ニューラルネットワークは、有向グラフの状態で配置された複数のレイヤを有し、各レイヤは、それぞれのパラメータセットを有し、前記方法はさらに、
    前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定するステップを備え、各スーパーレイヤは、1つ以上のレイヤを含む前記有向グラフのパーティションであり、前記方法はさらに、
    前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、前記シーケンスにおける各スーパーレイヤについて、
    前記スーパーレイヤにおける前記レイヤのための前記それぞれのパラメータセットを前記ハードウェア回路のメモリにロードするステップと、
    前記バッチ内の各ニューラルネットワーク入力について、前記ハードウェア回路の前記メモリ内の前記パラメータセットを使用して、前記スーパーレイヤの各レイヤを介して前記ニューラルネットワーク入力に対応するスーパーレイヤ入力を処理して、前記ニューラルネットワーク入力のためのスーパーレイヤ出力を生成するステップとを備え、
    スーパーレイヤのそれぞれのレイヤは、ワーキングセットに関連付けられ、各ワーキングセットは、少なくとも
    i)前記ハードウェア回路上の前記ニューラルネットワークを使用して処理される前記ニューラルネットワーク入力のバッチの1つ以上の入力または前記スーパーレイヤの先行するレイヤの1つ以上の出力、および
    ii)前記スーパーレイヤの各レイヤを介して前記1つ以上の入力を処理するのに必要なメモリの量を示すサイズパラメータ
    によって定義され、
    前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの前記パーティショニングを決定するステップは、
    i)少なくとも1つのワーキングセットのための特定のサイズパラメータを決定するステップと、
    ii)前記ハードウェア回路の前記メモリの特定の集約パラメータ容量を決定するステップと、
    iii)前記少なくとも1つのワーキングセットのための前記特定のサイズパラメータまたは前記ハードウェア回路の前記メモリの特定の集約パラメータ容量のうちの少なくとも1つに基づいて、前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの前記パーティショニングを決定するステップとを備える、方法。
  6. 前記ニューラルネットワークのレイヤは、前記ハードウェア回路が前記ニューラルネットワーク入力のバッチを処理する際に前記メモリの前記閾値記憶容量を超えないようにスーパーレイヤのシーケンスにパーティショニングされる、請求項1~4のいずれか1項に記載の方法。
  7. 前記ニューラルネットワーク入力のバッチおよび前記それぞれのパラメータセットは、前記ハードウェア回路の外部のソースから受信され、前記スーパーレイヤの各レイヤを介して前記ニューラルネットワーク入力に対応する前記スーパーレイヤ入力を処理するステップは、前記外部のソースから追加のパラメータを受信することなく前記スーパーレイヤ入力を処理するステップを備える、請求項1~のいずれか1項に記載の方法。
  8. コンピューティングシステムであって、
    前記コンピューティングシステムに配設されたハードウェア回路を備え、前記ハードウェア回路は、1つ以上の処理装置を含み、前記コンピューティングシステムはさらに、
    動作を実行するように前記1つ以上の処理装置によって実行可能な命令を格納するための1つ以上の機械読取可能記憶装置を備え、前記動作は、
    ハードウェア回路上のニューラルネットワークを使用して処理されるニューラルネットワーク入力のバッチを受信するステップを備え、前記ニューラルネットワークは、有向グラフの状態で配置された複数のレイヤを有し、各レイヤは、それぞれのパラメータセットを有し、前記動作はさらに、
    前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定するステップを備え、各スーパーレイヤは、1つ以上のレイヤを含む前記有向グラフのパーティションであり、前記動作はさらに、
    前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、前記シーケンスにおける各スーパーレイヤについて、
    前記スーパーレイヤにおける前記レイヤのための前記それぞれのパラメータセットを前記ハードウェア回路のメモリにロードするステップと、
    前記バッチ内の各ニューラルネットワーク入力について、前記ハードウェア回路の前記メモリ内の前記パラメータを使用して、前記スーパーレイヤの各レイヤを介して前記ニューラルネットワーク入力に対応するスーパーレイヤ入力を処理して、前記ニューラルネットワーク入力のためのスーパーレイヤ出力を生成するステップとを備え
    前記ハードウェア回路の前記メモリは、閾値記憶容量を有し、前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの前記パーティショニングを決定するステップは、
    前記ハードウェア回路の前記メモリの前記閾値記憶容量に基づいて、前記ニューラルネットワークのレイヤをスーパーレイヤのシーケンスにパーティショニングするステップを備える、コンピューティングシステム。
  9. 前記シーケンスにおける第1のスーパーレイヤでは、前記ニューラルネットワーク入力に対応する前記スーパーレイヤ入力が前記ニューラルネットワーク入力である、請求項に記載のコンピューティングシステム。
  10. 前記第1のスーパーレイヤ出力の後の各スーパーレイヤへの前記スーパーレイヤ入力は、前記シーケンスにおける先行するスーパーレイヤによって生成されたスーパーレイヤ出力である、請求項に記載のコンピューティングシステム。
  11. 前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、各スーパーレイヤについて、
    前記バッチ内の第2のニューラルネットワーク入力に対応するスーパーレイヤ入力が前記スーパーレイヤの各レイヤを介して後に処理される前に前記バッチ内の第1のニューラルネットワーク入力のための前記スーパーレイヤ入力が前記スーパーレイヤの各レイヤを介して処理されるように、前記スーパーレイヤの各レイヤを介して前記ニューラルネットワーク入力のバッチに対応する前記スーパーレイヤ入力をシーケンシャルに処理するステップを備える、請求項10のいずれか1項に記載のコンピューティングシステム。
  12. コンピューティングシステムであって、
    前記コンピューティングシステムに配設されたハードウェア回路を備え、前記ハードウェア回路は、1つ以上の処理装置を含み、前記コンピューティングシステムはさらに、
    動作を実行するように前記1つ以上の処理装置によって実行可能な命令を格納するための1つ以上の機械読取可能記憶装置を備え、前記動作は、
    ハードウェア回路上のニューラルネットワークを使用して処理されるニューラルネットワーク入力のバッチを受信するステップを備え、前記ニューラルネットワークは、有向グラフの状態で配置された複数のレイヤを有し、各レイヤは、それぞれのパラメータセットを有し、前記動作はさらに、
    前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定するステップを備え、各スーパーレイヤは、1つ以上のレイヤを含む前記有向グラフのパーティションであり、前記動作はさらに、
    前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、前記シーケンスにおける各スーパーレイヤについて、
    前記スーパーレイヤにおける前記レイヤのための前記それぞれのパラメータセットを前記ハードウェア回路のメモリにロードするステップと、
    前記バッチ内の各ニューラルネットワーク入力について、前記ハードウェア回路の前記メモリ内の前記パラメータを使用して、前記スーパーレイヤの各レイヤを介して前記ニューラルネットワーク入力に対応するスーパーレイヤ入力を処理して、前記ニューラルネットワーク入力のためのスーパーレイヤ出力を生成するステップとを備え、
    スーパーレイヤのそれぞれのレイヤは、ワーキングセットに関連付けられ、各ワーキングセットは、少なくとも
    i)前記ハードウェア回路上の前記ニューラルネットワークを使用して処理される前記ニューラルネットワーク入力のバッチの1つ以上の入力または前記スーパーレイヤの先行するレイヤの1つ以上の出力、および
    ii)前記スーパーレイヤの各レイヤを介して前記1つ以上の入力を処理するのに必要なメモリの量を示すサイズパラメータ
    によって定義され、
    前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの前記パーティショニングを決定するステップは、
    i)少なくとも1つのワーキングセットのための特定のサイズパラメータを決定するステップと、
    ii)前記ハードウェア回路の前記メモリの特定の集約パラメータ容量を決定するステップと、
    iii)前記少なくとも1つのワーキングセットのための前記特定のサイズパラメータまたは前記ハードウェア回路の前記メモリの特定の集約パラメータ容量のうちの少なくとも1つに基づいて、前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの前記パーティショニングを決定するステップとを備える、コンピューティングシステム。
  13. 前記ニューラルネットワークのレイヤは、前記ハードウェア回路が前記ニューラルネットワーク入力のバッチを処理する際に前記メモリの前記閾値記憶容量を超えないようにスーパーレイヤのシーケンスにパーティショニングされる、請求項8~11のいずれか1項に記載のコンピューティングシステム。
  14. 前記ニューラルネットワーク入力のバッチおよび前記それぞれのパラメータセットは、前記ハードウェア回路の外部のソースから受信され、前記スーパーレイヤの各レイヤを介して前記ニューラルネットワーク入力に対応する前記スーパーレイヤ入力を処理するステップは、前記外部のソースから追加のパラメータを受信することなく前記スーパーレイヤ入力を処理するステップを備える、請求項13のいずれか1項に記載のコンピューティングシステム。
  15. 動作を実行するように1つ以上の処理装置に命令を実行させるプログラムであって、前記動作は、
    ハードウェア回路上のニューラルネットワークを使用して処理されるニューラルネットワーク入力のバッチを受信するステップを備え、前記ニューラルネットワークは、有向グラフの状態で配置された複数のレイヤを有し、各レイヤは、それぞれのパラメータセットを有し、前記動作はさらに、
    前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定するステップを備え、各スーパーレイヤは、1つ以上のレイヤを含む前記有向グラフのパーティションであり、前記動作はさらに、
    前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、前記シーケンスにおける各スーパーレイヤについて、
    前記スーパーレイヤにおける前記レイヤのための前記それぞれのパラメータセットを前記ハードウェア回路のメモリにロードするステップと、
    前記バッチ内の各ニューラルネットワーク入力について、前記ハードウェア回路の前記メモリ内の前記パラメータセットを使用して、前記スーパーレイヤの各レイヤを介して前記ニューラルネットワーク入力に対応するスーパーレイヤ入力を処理して、前記ニューラルネットワーク入力のためのスーパーレイヤ出力を生成するステップとを備え
    前記ハードウェア回路の前記メモリは、閾値記憶容量を有し、前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの前記パーティショニングを決定するステップは、
    前記ハードウェア回路の前記メモリの前記閾値記憶容量に基づいて、前記ニューラルネットワークのレイヤをスーパーレイヤのシーケンスにパーティショニングするステップを備える、プログラム。
  16. 前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、各スーパーレイヤについて、
    前記バッチ内の第2のニューラルネットワーク入力に対応するスーパーレイヤ入力が前記スーパーレイヤの各レイヤを介して後に処理される前に前記バッチ内の第1のニューラルネットワーク入力のための前記スーパーレイヤ入力が前記スーパーレイヤの各レイヤを介して処理されるように、前記スーパーレイヤの各レイヤを介して前記ニューラルネットワーク入力のバッチに対応する前記スーパーレイヤ入力をシーケンシャルに処理するステップを備える、請求項15に記載のプログラム。
  17. 動作を実行するように1つ以上の処理装置に命令を実行させるプログラムであって、前記動作は、
    ハードウェア回路上のニューラルネットワークを使用して処理されるニューラルネットワーク入力のバッチを受信するステップを備え、前記ニューラルネットワークは、有向グラフの状態で配置された複数のレイヤを有し、各レイヤは、それぞれのパラメータセットを有し、前記動作はさらに、
    前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定するステップを備え、各スーパーレイヤは、1つ以上のレイヤを含む前記有向グラフのパーティションであり、前記動作はさらに、
    前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記ハードウェア回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、前記シーケンスにおける各スーパーレイヤについて、
    前記スーパーレイヤにおける前記レイヤのための前記それぞれのパラメータセットを前記ハードウェア回路のメモリにロードするステップと、
    前記バッチ内の各ニューラルネットワーク入力について、前記ハードウェア回路の前記メモリ内の前記パラメータセットを使用して、前記スーパーレイヤの各レイヤを介して前記ニューラルネットワーク入力に対応するスーパーレイヤ入力を処理して、前記ニューラルネットワーク入力のためのスーパーレイヤ出力を生成するステップとを備え、
    スーパーレイヤのそれぞれのレイヤは、ワーキングセットに関連付けられ、各ワーキングセットは、少なくとも
    i)前記ハードウェア回路上の前記ニューラルネットワークを使用して処理される前記ニューラルネットワーク入力のバッチの1つ以上の入力または前記スーパーレイヤの先行するレイヤの1つ以上の出力、および
    ii)前記スーパーレイヤの各レイヤを介して前記1つ以上の入力を処理するのに必要なメモリの量を示すサイズパラメータ
    によって定義され、
    前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの前記パーティショニングを決定するステップは、
    i)少なくとも1つのワーキングセットのための特定のサイズパラメータを決定するステップと、
    ii)前記ハードウェア回路の前記メモリの特定の集約パラメータ容量を決定するステップと、
    iii)前記少なくとも1つのワーキングセットのための前記特定のサイズパラメータまたは前記ハードウェア回路の前記メモリの特定の集約パラメータ容量のうちの少なくとも1つに基づいて、前記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの前記パーティショニングを決定するステップとを備える、プログラム。
JP2019552217A 2017-05-19 2018-01-17 ニューラルネットワーク処理のスケジューリング Active JP7025441B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022019764A JP7439149B2 (ja) 2017-05-19 2022-02-10 ニューラルネットワーク処理のスケジューリング

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/599,559 US10019668B1 (en) 2017-05-19 2017-05-19 Scheduling neural network processing
US15/599,559 2017-05-19
PCT/US2018/013939 WO2018212799A1 (en) 2017-05-19 2018-01-17 Scheduling neural network processing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022019764A Division JP7439149B2 (ja) 2017-05-19 2022-02-10 ニューラルネットワーク処理のスケジューリング

Publications (3)

Publication Number Publication Date
JP2020521195A JP2020521195A (ja) 2020-07-16
JP2020521195A5 JP2020521195A5 (ja) 2020-08-27
JP7025441B2 true JP7025441B2 (ja) 2022-02-24

Family

ID=61157323

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019552217A Active JP7025441B2 (ja) 2017-05-19 2018-01-17 ニューラルネットワーク処理のスケジューリング
JP2022019764A Active JP7439149B2 (ja) 2017-05-19 2022-02-10 ニューラルネットワーク処理のスケジューリング

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2022019764A Active JP7439149B2 (ja) 2017-05-19 2022-02-10 ニューラルネットワーク処理のスケジューリング

Country Status (7)

Country Link
US (3) US10019668B1 (ja)
EP (1) EP3577605A1 (ja)
JP (2) JP7025441B2 (ja)
KR (1) KR102346636B1 (ja)
CN (2) CN117291239A (ja)
TW (2) TWI664587B (ja)
WO (1) WO2018212799A1 (ja)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11164074B2 (en) 2018-02-08 2021-11-02 Western Digital Technologies, Inc. Multi-core systolic processor system for neural network processing
US11461579B2 (en) 2018-02-08 2022-10-04 Western Digital Technologies, Inc. Configurable neural network engine for convolutional filter sizes
EP3651077B1 (en) 2018-02-13 2021-10-27 Shanghai Cambricon Information Technology Co., Ltd Computation device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN116991226A (zh) 2018-02-14 2023-11-03 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
US11475306B2 (en) 2018-03-22 2022-10-18 Amazon Technologies, Inc. Processing for multiple input data sets
US11461631B2 (en) * 2018-03-22 2022-10-04 Amazon Technologies, Inc. Scheduling neural network computations based on memory capacity
US11562213B2 (en) * 2018-04-17 2023-01-24 Intel Corporation Methods and arrangements to manage memory in cascaded neural networks
CN109313673A (zh) * 2018-04-17 2019-02-05 深圳鲲云信息科技有限公司 网络模型的运行方法及相关产品
EP3624020A4 (en) 2018-05-18 2021-05-05 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURES AND RELATED PRODUCTS
US10970120B2 (en) * 2018-06-26 2021-04-06 Advanced Micro Devices, Inc. Method and system for opportunistic load balancing in neural networks using metadata
KR102470893B1 (ko) 2018-06-27 2022-11-25 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템
CN109117949A (zh) * 2018-08-01 2019-01-01 南京天数智芯科技有限公司 用于人工智能设备的灵活数据流处理器和处理方法
US11966583B2 (en) * 2018-08-28 2024-04-23 Cambricon Technologies Corporation Limited Data pre-processing method and device, and related computer device and storage medium
EP3844620A1 (en) 2018-08-29 2021-07-07 Qualcomm Incorporated Method, apparatus, and system for an architecture for machine learning acceleration
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
US11263529B2 (en) 2018-10-10 2022-03-01 Google Llc Modifying machine learning models to improve locality
CN111383638A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
JP7379821B2 (ja) * 2019-01-09 2023-11-15 日本電信電話株式会社 推論処理装置および推論処理方法
US11586929B2 (en) 2019-02-15 2023-02-21 Wipro Limited Method and system for optimizing memory requirement for training an artificial neural network model
CN111667046A (zh) * 2019-03-08 2020-09-15 富泰华工业(深圳)有限公司 深度学习加速方法及用户终端
US11783176B2 (en) 2019-03-25 2023-10-10 Western Digital Technologies, Inc. Enhanced storage device memory architecture for machine learning
US10929058B2 (en) 2019-03-25 2021-02-23 Western Digital Technologies, Inc. Enhanced memory device architecture for machine learning
CN111832738B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US20200334522A1 (en) 2019-04-18 2020-10-22 Cambricon Technologies Corporation Limited Data processing method and related products
US11175898B2 (en) * 2019-05-31 2021-11-16 Apple Inc. Compiling code for a machine learning model for execution on a specialized processor
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
CN112085191B (zh) 2019-06-12 2024-04-02 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
CN114008636A (zh) * 2019-06-18 2022-02-01 高通股份有限公司 优化机器学习模型性能
CN114341888A (zh) * 2019-07-03 2022-04-12 华夏芯(北京)通用处理器技术有限公司 用于操作加速器电路的指令
US11354579B2 (en) * 2019-07-15 2022-06-07 Microsoft Technology Licensing, Llc Dynamic multi-layer execution for artificial intelligence modeling
US11436019B2 (en) 2019-07-15 2022-09-06 Microsoft Technology Licensing, Llc Data parallelism in distributed training of artificial intelligence models
US11520592B2 (en) * 2019-07-15 2022-12-06 Microsoft Technology Licensing, Llc Executing large artificial intelligence models on memory-constrained devices
TWI764236B (zh) * 2019-08-16 2022-05-11 美商谷歌有限責任公司 晶片上操作的顯式排程
US12001955B2 (en) 2019-08-23 2024-06-04 Anhui Cambricon Information Technology Co., Ltd. Data processing method, device, computer equipment and storage medium
WO2021036905A1 (zh) 2019-08-27 2021-03-04 安徽寒武纪信息科技有限公司 数据处理方法、装置、计算机设备和存储介质
US11573828B2 (en) * 2019-09-16 2023-02-07 Nec Corporation Efficient and scalable enclave protection for machine learning programs
DE102019127795A1 (de) * 2019-10-15 2021-04-15 Infineon Technologies Ag Schaltung und ein Verfahren zum Bestimmen einer Lage eines Magneten und Joystick
CN110515739B (zh) * 2019-10-23 2020-01-31 上海燧原智能科技有限公司 深度学习神经网络模型负载计算方法、装置、设备及介质
CN112862085B (zh) * 2019-11-27 2023-08-22 杭州海康威视数字技术股份有限公司 存储空间优化方法及装置
EP4010848A1 (en) * 2019-12-18 2022-06-15 Google LLC Parameter caching for neural network accelerators
CN111338816B (zh) * 2020-02-18 2023-05-12 深圳鲲云信息科技有限公司 基于神经网络的指令交互方法、系统、设备及存储介质
JP6834097B1 (ja) * 2020-05-15 2021-02-24 エッジコーティックス ピーティーイー. リミテッド 推論のニューラルネットワークアクセラレータのハードウェア固有分割
WO2021237755A1 (zh) * 2020-05-29 2021-12-02 华为技术有限公司 神经网络调度方法及装置
US11288097B2 (en) * 2020-06-12 2022-03-29 Disney Enterprises, Inc. Automated hardware resource optimization
KR20240042266A (ko) * 2020-08-21 2024-04-01 주식회사 딥엑스 추론 연산을 수행하는 전자 장치
KR102299084B1 (ko) * 2020-08-24 2021-09-07 오픈엣지테크놀로지 주식회사 하드웨어 가속기의 출력 데이터를 메모리에 저장하는 방법, 하드웨어 가속기의 입력 데이터를 메모리로부터 읽는 방법, 및 이를 위한 하드웨어 가속기
KR102384587B1 (ko) * 2020-08-25 2022-04-08 오픈엣지테크놀로지 주식회사 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기
KR20220027500A (ko) * 2020-08-27 2022-03-08 에스케이하이닉스 주식회사 가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법
KR20220033314A (ko) * 2020-09-09 2022-03-16 삼성전자주식회사 호스트 프로세서 및 가속기의 동작 방법 및 이들을 포함한 전자 장치
KR20220078290A (ko) * 2020-12-03 2022-06-10 삼성전자주식회사 뉴럴 네트워크 연산 스케줄링 방법 및 장치
US11734072B2 (en) * 2020-12-31 2023-08-22 Nuvolo Technologies Corporation Stream-based job processing
KR102506613B1 (ko) * 2021-04-30 2023-03-06 주식회사 딥엑스 이종의 센서로 제공되는 이종의 데이터를 처리하기 위한 퓨전-인공신경망을 위해 구현되는 npu
US11511772B2 (en) 2021-04-30 2022-11-29 Deepx Co., Ltd. NPU implemented for artificial neural networks to process fusion of heterogeneous data received from heterogeneous sensors
EP4099609A1 (en) * 2021-06-04 2022-12-07 Zama SAS Computational network conversion for fully homomorphic evaluation
KR102651559B1 (ko) * 2021-12-08 2024-03-26 주식회사 딥엑스 영상 융합을 위한 신경 프로세싱 유닛 및 인공신경망 시스템
WO2023106723A1 (ko) * 2021-12-08 2023-06-15 주식회사 딥엑스 영상 융합을 위한 신경 프로세싱 유닛 및 인공신경망 시스템
US11657260B2 (en) * 2021-10-26 2023-05-23 Edgecortix Pte. Ltd. Neural network hardware accelerator data parallelism
TWI802070B (zh) * 2021-11-03 2023-05-11 大陸商星宸科技股份有限公司 積體電路及其配置方法
US11442775B1 (en) * 2021-12-03 2022-09-13 FriendliAI Inc. Dynamic batching for inference system for transformer-based generation tasks
US11514370B1 (en) 2021-12-03 2022-11-29 FriendliAI Inc. Selective batching for inference system for transformer-based generation tasks
KR102548582B1 (ko) * 2022-12-26 2023-06-29 리벨리온 주식회사 뉴럴 프로세서 및 이의 명령어 페치 방법
KR20240102798A (ko) 2022-12-26 2024-07-03 리벨리온 주식회사 뉴럴 프로세서 및 이의 명령어 페치 방법
US20240256285A1 (en) * 2023-01-31 2024-08-01 Microsoft Technology Licensing, Llc Parallelizing multi-phase kernels with cross-phase dependency on heterogenous hardware

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017501514A (ja) 2013-11-04 2017-01-12 フェイスブック,インク. 顔表現のためのシステムおよび方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089185B2 (en) 2002-06-27 2006-08-08 Intel Corporation Embedded multi-layer coupled hidden Markov model
US7171043B2 (en) 2002-10-11 2007-01-30 Intel Corporation Image recognition using hidden markov models and coupled hidden markov models
US7203368B2 (en) 2003-01-06 2007-04-10 Intel Corporation Embedded bayesian network for pattern recognition
KR100486735B1 (ko) 2003-02-28 2005-05-03 삼성전자주식회사 최적구획 분류신경망 구성방법과 최적구획 분류신경망을이용한 자동 레이블링방법 및 장치
US7639727B1 (en) * 2004-10-05 2009-12-29 Cingular Wireless Ii, L.L.C. System and method for selecting wireless signal bandwidth based on signal strength measurements provided by wireless receivers
TWI525558B (zh) * 2011-01-17 2016-03-11 Univ Nat Taipei Technology Resilient high - speed hardware reverse transfer and feedback type neural network system
US8462018B1 (en) * 2011-05-26 2013-06-11 Rockwell Collins, Inc. Systems and method for controlling the simultaneous display of multi-level classified information on the same surface of an aircraft display unit
US8725658B2 (en) * 2011-09-21 2014-05-13 Brain Corporation Elementary network description for efficient memory management in neuromorphic systems
US8914315B2 (en) * 2012-01-27 2014-12-16 International Business Machines Corporation Multi-compartment neuron suitable for implementation in a distributed hardware model by reducing communication bandwidth
US9477925B2 (en) 2012-11-20 2016-10-25 Microsoft Technology Licensing, Llc Deep neural networks training for speech and pattern recognition
US10331823B2 (en) * 2013-10-24 2019-06-25 Mentor Graphics Corporation Method and system of fast nested-loop circuit verification for process and environmental variation and hierarchical circuits
US20160026912A1 (en) * 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US20160335119A1 (en) 2015-05-12 2016-11-17 minds.ai inc Batch-based neural network system
US10438117B1 (en) * 2015-05-21 2019-10-08 Google Llc Computing convolutions using a neural network processor
US9747546B2 (en) * 2015-05-21 2017-08-29 Google Inc. Neural network processor
US10083395B2 (en) * 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
CN107690663B (zh) * 2015-06-05 2022-04-12 渊慧科技有限公司 白化神经网络层
US10387770B2 (en) 2015-06-10 2019-08-20 Samsung Electronics Co., Ltd. Spiking neural network with reduced memory access and reduced in-network bandwidth consumption
EP3104309B1 (en) * 2015-06-10 2020-04-01 Samsung Electronics Co., Ltd. Spiking neural network with reduced memory access and reduced in-network bandwidth consumption
US9582726B2 (en) * 2015-06-24 2017-02-28 Qualcomm Incorporated Systems and methods for image processing in a deep convolution network
US10452971B2 (en) 2015-06-29 2019-10-22 Microsoft Technology Licensing, Llc Deep neural network partitioning on servers
CN106599990B (zh) * 2015-10-08 2019-04-09 上海兆芯集成电路有限公司 具有神经存储器的神经网络单元和集体将来自神经存储器的数据列移位的神经处理单元阵列
CN108351983A (zh) 2015-10-28 2018-07-31 谷歌有限责任公司 修改计算图
US20170154262A1 (en) * 2015-11-30 2017-06-01 Google Inc. Resizing neural networks
US10482380B2 (en) * 2015-12-30 2019-11-19 Amazon Technologies, Inc. Conditional parallel processing in fully-connected neural networks
KR102120396B1 (ko) * 2016-05-26 2020-06-08 더 가버닝 카운슬 오브 더 유니버시티 오브 토론토 심층 신경망용 가속기
AU2016203619A1 (en) * 2016-05-31 2017-12-14 Canon Kabushiki Kaisha Layer-based operations scheduling to optimise memory for CNN applications
US10922610B2 (en) * 2017-09-14 2021-02-16 Intel Corporation Synchronization scheduler of distributed neural network training

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017501514A (ja) 2013-11-04 2017-01-12 フェイスブック,インク. 顔表現のためのシステムおよび方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Manoj Alwani et al.,Fused-Layer CNN Accelarators,Proceedings of the 49th IEEE/ACM International Synposium on Microarchitecture,IEEE,2016年10月

Also Published As

Publication number Publication date
WO2018212799A1 (en) 2018-11-22
CN110447044B (zh) 2023-10-10
TW201937416A (zh) 2019-09-16
JP7439149B2 (ja) 2024-02-27
CN110447044A (zh) 2019-11-12
JP2020521195A (ja) 2020-07-16
TW201901534A (zh) 2019-01-01
KR20190118635A (ko) 2019-10-18
TWI699712B (zh) 2020-07-21
US10019668B1 (en) 2018-07-10
JP2022070955A (ja) 2022-05-13
US20220156557A1 (en) 2022-05-19
KR102346636B1 (ko) 2022-01-03
US20180373976A1 (en) 2018-12-27
US11157794B2 (en) 2021-10-26
CN117291239A (zh) 2023-12-26
EP3577605A1 (en) 2019-12-11
TWI664587B (zh) 2019-07-01

Similar Documents

Publication Publication Date Title
JP7025441B2 (ja) ニューラルネットワーク処理のスケジューリング
US11157592B2 (en) Hardware implementation of convolutional layer of deep neural network
Zhang et al. BoostGCN: A framework for optimizing GCN inference on FPGA
JP2022172258A (ja) ニューラルネットワーク計算ユニットにおける入力データのスパース性の活用
US20200301739A1 (en) Maximizing resource utilization of neural network computing system
CN113760531A (zh) 调度器、操作调度器的方法以及包括调度器的加速器设备
Wang et al. Rerec: In-reram acceleration with access-aware mapping for personalized recommendation
CN114118348A (zh) 加速器、操作加速器的方法以及包括加速器的电子装置
Jain et al. Enabling real-time object detection on low cost FPGAs
Devic et al. Highly-adaptive mixed-precision MAC unit for smart and low-power edge computing
Erdem et al. Runtime design space exploration and mapping of dcnns for the ultra-low-power orlando soc
EP4364059A1 (en) Accelerated processing device and method of sharing data for machine learning
GB2582868A (en) Hardware implementation of convolution layer of deep neural network
CN114356510A (zh) 用于调度的方法和电子装置
CN114239794A (zh) 操作方法和电子装置
Jain et al. Energy-Efficient Single-Core Hardware Acceleration
US12093806B1 (en) Static memory allocation for neural network inference
Ryu et al. Mobileware: Distributed Architecture With Channel Stationary Dataflow for MobileNet Acceleration
BOESCH et al. Runtime Design Space Exploration and Mapping of DCNNs for the Ultra-Low-Power Orlando SoC
CN116341608A (zh) 用于减少神经网络计算的运行时预测器
CN115858427A (zh) 用于处理器中的加速的嵌入式可编程逻辑器件
CN118363754A (zh) 单个算子在多核处理器上的拆分方法及相关产品
CN116648694A (zh) 芯片内的数据处理方法及芯片

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200623

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200623

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210616

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210727

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20211026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211224

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220210

R150 Certificate of patent or registration of utility model

Ref document number: 7025441

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150