JP6507271B2 - Cnn処理方法およびデバイス - Google Patents

Cnn処理方法およびデバイス Download PDF

Info

Publication number
JP6507271B2
JP6507271B2 JP2017564718A JP2017564718A JP6507271B2 JP 6507271 B2 JP6507271 B2 JP 6507271B2 JP 2017564718 A JP2017564718 A JP 2017564718A JP 2017564718 A JP2017564718 A JP 2017564718A JP 6507271 B2 JP6507271 B2 JP 6507271B2
Authority
JP
Japan
Prior art keywords
module
asic
resource
function
occupied
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
JP2017564718A
Other languages
English (en)
Other versions
JP2018526714A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Publication of JP2018526714A publication Critical patent/JP2018526714A/ja
Application granted granted Critical
Publication of JP6507271B2 publication Critical patent/JP6507271B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • 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)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Stored Programmes (AREA)
  • Feedback Control In General (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • User Interface Of Digital Computer (AREA)
  • Testing And Monitoring For Control Systems (AREA)

Description

本出願は、中華人民共和国国家知識産権局に2016年1月12日に提出された表題「CNN PROCESSING METHOD AND DEVICE」の中国特許出願第201610017755.1号の優先権を主張するものであり、その全体が参照により本明細書に組み込まれる。
本開示は、コンピュータ技術の分野、より詳細には、畳み込みニューラルネットワーク(CNN)処理方法およびCNN処理デバイスに関する。
機械学習の進歩により、画像認識の精度が向上し、画像認識技術は、初期のデジタル認識および広く用いられる最新の顔認識など、ますます多くの用途に使用されている。画像認識のレベルを人間の知的レベルにまで到達させるためには、計算の実施に大量の計算リソースが必要とされ、計算性能に対する大きな要件が必要とされる。計算性能に対する要件が満たされる場合、計算によって消費されるリソース規模は、計算コストを節約するために制限される必要がある。
現在のところ、主な画像認識アルゴリズムはCNNであり、これはグラフィックス処理ユニット(GPU)および中央処理ユニット(CPU)により主に実施され、大量の計算および高コストをもたらす。GPUは、高い並列計算効率を有するが、計算リソース構成要素が、高い使用効率なしに利用されるという問題がある。
現在、CNNの実装スキームは主に、CPUおよびGPUに基づく。CNNの実装スキームは主に、以下の3つのステップ:入力ステップ、特徴抽出ステップ、および分類ステップを含み、ここでは、特徴抽出ステップが計算において最も複雑であり、最もリソースを消費する。特徴抽出ステップは主に、以下の2つの層:サンプリング層および畳み込み層についての計算に関与する。GPUベースのモデルの実装において、より高い複雑性を有する計算はGPUによって完了される。GPUベースのモデルにより、CNNの計算性能を向上させることができ、かつ計算時間を減少させることができる。
CPUおよびGPUを使用したCNNの実装スキームの主な利点は、この実装スキームが高性能を有することである。しかしながら、GPUをデプロイするコストは高く、大きなGPUクラスタをデプロイするコストはさらに高く、GPUによって消費される電力は大きく、それによりハードウェアデプロイおよびそれに続く運用の両方において高コストをもたらす。
本開示の実施形態において、CNNの計算性能を確実にし、演算コストを低減するために、特定用途向け集積回路(ASIC)によってCNNモデル内にモジュール演算を実装するためのCNN処理方法およびCNN処理デバイスが提供される。
第1の態様において、CNN処理方法が、本開示の実施形態に従って提供され、本方法は、
CNNモデル内の第1のモジュールの強化タイプを取得するステップと、
第1のモジュールの強化タイプが計算強化タイプであった場合に、特定用途向け集積回路ASICを用いて第1のモジュールをデプロイし、第1のモジュールによって占有されるASICの複数の演算ユニットリソースを取得するステップと、
第1のモジュールによって占有されるASICの複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって、第1のリソース結合モジュールを得るステップと、
ASICによって第1のリソース結合モジュールを動作させるステップとを含む。
第2の態様において、CNN処理デバイスが、本開示の実施形態に従ってさらに提供され、本デバイスは、
CNNモデル内の第1のモジュールの強化タイプを取得するように構成されたタイプ取得ユニットと、
第1のモジュールの強化タイプが計算強化タイプであった場合に、特定用途向け集積回路ASICを用いて第1のモジュールをデプロイし、かつ第1のモジュールによって占有されるASICの複数の演算ユニットリソースを取得するように構成されたデプロイユニットと、
第1のモジュールによって占有されるASICの複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって、第1のリソース結合モジュールを得るように構成された結合ユニットと、
ASICによって第1のリソース結合モジュールを動作させるように構成されたモジュール動作ユニットとを含む。
本開示の第3の態様において、1つまたは複数のコンピュータプログラムを記憶するための不揮発性記憶媒体が提供され、このコンピュータプログラムが、1つまたは複数のメモリを含んだプロセッサによって実行可能な命令を含み、プロセッサが、上の畳み込みニューラルネットワーク処理方法を実施するためにこの命令を実行する。
本開示の実施形態において、CNNモデル内の第1のモジュールの強化タイプがまず取得され、第1のモジュールの強化タイプが計算強化タイプであった場合に、第1のモジュールは、ASICを用いてデプロイされ、かつ第1のモジュールによって占有されるASICの複数の演算ユニットリソースが取得され、第1のモジュールによって占有されるASICの複数の演算ユニットリソースのうち同一の演算ユニットリソースが結合されて、演算ユニットリソースが結合されているASICを用いてデプロイされた第1のモジュールを得、演算ユニットリソースが結合されているASICを用いてデプロイされた第1のモジュールが動作される。本開示の実施形態において、計算強化タイプの第1のモジュールは、CNNモデル内のモジュール演算がGPUを使用することなくASICによって実装されるようにASICに退避されてよく、同時にASICのデプロイコストおよび運用コストはともに、GPUのものよりもはるかに低い。本開示の実施形態において、計算強化タイプの第1のモジュール内の同一の演算ユニットリソースは、演算ユニットリソースが高い使用効率で利用されように結合され、したがってCNNの計算性能を確実にすることができる。
本開示の実施形態における技術的ソリューションをより明確に例示するために、実施形態の説明に使用されることを目的とする図面を以後簡単に説明する。以下の説明にある図面が、単に本開示の実施形態の一部を示すものであり、提供された図面に基づいて他の図面が当業者によって得られ得ることは明らかである。
本開示の実施形態に従う、CNN処理方法を示す概略フローチャートである。 本開示の実施形態に従う、CAFFEモデルにおけるCNN処理方法の実装アーキテクチャを示す概略図である。 本開示の実施形態に従う、リソース統合プロセスを示す概略図である。 本開示の実施形態に従う、モジュール切替を示す概略図である。 本開示の実施形態に従う、CNN処理デバイスの構成物構造を示す概略図である。 本開示の実施形態に従う、別のCNN処理デバイスの構成物構造を示す概略図である。 本開示の実施形態に従う、CNN処理方法が適用されるサーバの構成物構造を示す概略図である。
本開示の実施形態において、CNNの計算性能を確実にし、演算コストを低減するために、ASICによってCNNモデル内にモジュール演算を実装するためのCNN処理方法およびCNN処理デバイスが提供される。
本開示の目的、特徴、および利点をより明白にし、かつ理解してもらうために、本開示の実施形態における技術的ソリューションは、以後、本開示の実施形態における添付の図面と併せて明確かつ完全に説明される。下記の実施形態は、単に本開示の実施形態の一部にすぎず、本開示の実施形態のすべてではないことは明らかである。本開示内の実施形態に基づいて当業者によって得られるすべての他の実施形態は、本開示の保護範囲内に入る。
本開示の説明、請求項、および上に説明された図面において、用語「備える」、「含む」、およびそれらのいかなる変形形態も、一連のユニットのプロセス、方法、システム、製品、またはデバイスを含むために、包括的に包含を網羅することを目的とし、この一連のユニットはそれらのユニットに必ずしも限定されず、明確に列挙されない、またはプロセス、方法、製品、もしくはデバイスを伴わない他のユニットを含んでよい。
以下に詳細説明がなされる。
図1に示されるように、本開示の実施形態に従うCNN処理方法は、CNNの演算加速プロセスに適用されてよい。本開示の実施形態に従うCNN処理方法は、以下のステップ101〜ステップ104を含んでよい。
ステップ101において、CNNモデル内の第1のモジュールの強化タイプが取得される。
本開示の実施形態において、高速特徴埋め込みのためのオープンソース畳み込みアーキテクチャ(CAFFE)モデルおよびcuda-convNetモデルなどの様々なCNNモデルが存在してよい。CNNモデルは、演算の順序および層分割に基づいて複数のモジュールを含んでよい。本開示の実施形態において、CNNモデルに含まれる第1のモジュールは、例として説明される。本開示の実施形態において、CNNモデルに含まれる他のモジュールは、以下の実施形態における第1のモジュールを処理するための様式を参照して実装されてよい。まず、CNNモデル内の第1のモジュールが取得され、第1のモジュールの強化タイプが決定される。CNNモデル内のモジュールの強化タイプは、畳み込みニューラルネットワークの層の計算強化の程度に基づいて決定されるタイプである。モジュールの強化タイプは様々であってよく、例えば、モジュールは、計算強化タイプまたは記憶強化タイプのものであってよい。具体的には、CNNモデル内の各モジュールの強化タイプは、CNNの実装シナリオに基づいて決定されてよい。例えば、CNNモデルがCAFFEモデルであった場合、CAFFEモデルは、畳み込み層、プーリング層、データ層などを含む。畳み込み層およびプーリング層は、膨大な量の計算を有するモジュールを含み、このモジュールは計算強化タイプのものであり、加速計算が、本開示の実施形態に従うCNN処理方法を用いてこれらのモジュール上で実施されてよい。データ層内のモジュールは、記憶強化タイプのものであり、通常は、あまり多すぎない量の計算に関与し、中央処理ユニット(CPU)によって処理されてよい。
ステップ102において、第1のモジュールの強化タイプが計算強化タイプであった場合に、第1のモジュールは特定用途向け集積回路(ASIC)を用いてデプロイされ、第1のモジュールによって占有されるASICの複数の演算ユニットリソースが取得される。
本開示の実施形態において、CNNモデル内の第1のモジュールの取得された強化タイプが計算強化タイプであった場合に、計算強化タイプの第1のモジュールは、ASICを用いてデプロイされ、即ち、第1のモジュールの関数は、ASICの演算ユニットリソースによって実装される。第1のモジュールがASICを用いてデプロイされた後、第1のモジュールは、ASICの複数の演算ユニットリソースを占有する。例えば、第1のモジュールがCAFFEモデルであった場合、畳み込みを計算するための大量の乗算リソースが使用される。第1のモジュールは、計算強化タイプであると見なされてよく、第1のモジュールは、ASICを用いてデプロイされてよく、第1のモジュールは、ASICの演算ユニットリソースを占有する。
本開示のいくつかの実施形態において、計算強化タイプの第1のモジュールは、計算関数を実装するためにASICを用いてデプロイされる。本開示の実施形態において、CNN処理は、GPUの高い消費電力を回避し、GPUを使用することに起因するハードウェアデプロイコストおよび運用コストを回避するため、GPUを使用せずに実装される。本開示の実施形態において、CNNモデル内の第1のモジュールは、ASICを用いてデプロイされ、ASICによって動作され、ASICの運用コストは、GPUのものよりもはるかに低い。さらには、本開示のいくつかの実施形態において、ASICは、フィールドプログラマブルゲートアレイ(FPGA)であってよい。即ち、本開示の実施形態において、計算強化タイプの第1のモジュールは、演算関数を実装するためにFPGAを用いてデプロイされてよい。即ち、本開示の実施形態において、第1のモジュールは、FPGAによって実装および動作されてよい。本開示の実施形態における第1のモジュールは、FPGAを用いてデプロイされることに限定されなくてよく、計算強化タイプの第1のモジュールはまた、FPGA以外の他のプログラマブルデバイスを用いてデプロイされてよいことに留意されたい。例えば、第1のモジュールは、コンプレックスプログラマブルロジックデバイス(CPLD)を用いてデプロイされてよい。本開示の実施形態において、特定用途向け集積回路として使用される任意のセミカスタム回路が、第1のモジュールをデプロイするために使用されてよい。
ステップ103において、第1のリソース結合モジュールが、第1のモジュールによって占有されるASICの複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって得られる。
第1のモジュールがASICを用いてデプロイされた後、第1のモジュールは、ASICの複数の演算ユニットリソースを占有する。第1のモジュールは、複数の同一の演算ユニットリソースを占有してよく、または実装シナリオに応じて、複数の異なる演算ユニットリソースを占有してよい。第1のモジュールによって占有される複数の演算ユニットリソースの中に同一の演算ユニットリソースが存在する場合、同一の演算ユニットリソースは結合されてよい。即ち、第1のモジュールの複数の演算ユニットリソース内に同一の演算ユニットを使用した複数のリソースが存在してよい。同一の演算ユニットリソースは、1つの演算ユニットリソースに結合されてよく、それにより演算ユニットリソースの最大使用率を達成する。例は、同一の演算ユニットリソースが結合され得る場合について説明される。例えば、計算リソースは、加算、減算、乗算、および除算などの最も簡単な計算によって再使用されてよい。しかしながら、異なる演算ユニットリソースは、結合されなくてよく、例えば、複雑なロジックを有しかつ簡単に再使用されない場合のあるリソースは、結合されなくてよく、全く異なる演算を有するリソースは、結合されなくてよい。第1のモジュールによって占有されるASICの複数の演算ユニットリソースの場合、同一の演算ユニットリソースが結合された後、演算ユニットリソースが結合されているASICを用いてデプロイされた第1のモジュール、即ち、第1のリソース結合モジュールが得られてよい。リソースが結合されている状態の第1のモジュールにより、ASICのリソース全体の使用率が改善される。
ステップ104において、第1のリソース結合モジュールは、ASICによって動作される。
本開示の実施形態において、上記のステップ103で得られた第1のリソース結合モジュールは、ASICによって第1のモジュールの関数を実装するために、ASICによって動作されてよい。例えば、第1のモジュールが畳み込み演算モジュールであった場合、畳み込み演算モジュールは、CNNモデルの畳み込み層内の演算を実装することができるように、演算ユニットリソースがステップ103で結合された後にASICによって動作される。したがって、本開示の実施形態において、CNNの計算は、ASICによって第1のモジュールを動作させることによって完了することができ、CNNの計算性能は、演算ユニットリソースを結合することによって改善することができ、その結果、本開示の実施形態において提供されたCNN処理方法は、CNN計算を実施するためにGPUによって達成されるものと同じ効率をGPUなしで達成することができ、それによりハードウェアデプロイコストおよび運用コストを節約する。
本開示のいくつかの実施形態において、上記のステップを実施することに加えて、本開示の実施形態において提供されるCNN処理方法は、以下のステップA1〜ステップA4をさらに含んでよい。
ステップA1において、CNNモデル内の第2のモジュールの強化タイプが取得される。
ステップA2において、第2のモジュールの強化タイプが計算強化タイプであった場合に、第2のモジュールはASICを用いてデプロイされ、第2のモジュールによって占有されるASICの複数の演算ユニットリソースが取得される。
ステップA3において、第1のモジュールによって占有される演算ユニットリソースが、第2のモジュールによって占有されるASICの演算ユニットリソースと同一または部分的に同一であった場合、第3のモジュールを得るために第1のモジュールと第2のモジュールとが結合される。第3のモジュールの関数は、第1のモジュールの関数および第2のモジュールの関数を含む。
ステップA4において、第3のモジュールは、ASICによって動作される。
本開示のいくつかの実施形態において、CNNモデルは、第1のモジュールに加えて、CNNモデル内のモジュールでありかつCNNモデル内の特定の計算関数を実装するために使用され得る第2のモジュールを含んでよい。ステップ101〜ステップ102に関連して、本開示の実施形態におけるCNNモデルは、第1のモジュールおよび第2のモジュールを含み得、その両方がASICを用いてデプロイされ得ることが分かる。例えば、CNNモデルに含まれる第1のモジュールおよび第2のモジュールの両方が、FPGAを用いてデプロイされる。第1のモジュールおよび第2のモジュールがASICを用いてデプロイされた後、第1のモジュールおよび第2のモジュールの各々が、ASICの複数の演算ユニットリソースを占有し、第1のモジュールによって占有されるASICの複数の演算ユニットリソースと第2のモジュールによって占有されるASICの複数の演算ユニットリソースとの間に同一の演算ユニットリソースが存在するかどうかがさらに決定されてよい。第1のモジュールおよび第2のモジュールが同一の演算ユニットリソースを占有する場合、ステップA3が実施され、ここで、第1のモジュールおよび第2のモジュールは、モジュールが結合されているASICを用いてデプロイされた第3のモジュールを得るために結合される。第3のモジュールの関数は、第1のモジュールの関数および第2のモジュールの関数を含んでよい。即ち、第1のモジュールおよび第2のモジュールは、ASICを用いてデプロイされた第1のモジュールおよび第2のモジュールが同一の演算ユニットリソースを占有する場合は、モジュールレベルで結合されてよく、第1のモジュールおよび第2のモジュールは、別個のモジュール(第3のモジュールと定義される)を介して実装される。第3のモジュールの関数は、第1のモジュールの関数および第2のモジュールの関数を含む。ステップA4において、第3のモジュールは、第1のモジュールの関数または第2のモジュールの関数を実装するためにASICによって動作される。本開示の実施形態において、CNNモデル内の2つのモジュールは、個々のモジュールの複数の関数を実装し、CNNの計算性能を改善するために結合されてよい。
本開示のいくつかの実施形態において、第1のモジュールおよび第2のモジュールが結合される上のステップA13は、以下のステップA131を含んでよい。
ステップA131において、第1のモジュールおよび第2のモジュールによって占有されるASICの同一の演算ユニットリソースが結合され、第1のモジュールの入力インターフェースと第2のモジュールの入力インターフェースとが結合され、ならびに第1のモジュールの出力インターフェースと第2のモジュールの出力インターフェースとが結合される。
ASICを用いてデプロイされた第1のモジュールおよび第2のモジュールでは、第1のモジュールおよび第2のモジュールによって占有される同一の演算ユニットリソースは結合されてよく、また2つのモジュールの入力インターフェースと出力インターフェースとが結合されてよく、即ち、第1のモジュールの入力インターフェースと第2のモジュール入力インターフェースとが結合され、第1のモジュールの出力インターフェースと第2のモジュールの出力インターフェースとが結合される。CNNモデル内の複数のモジュールの入力および出力がASICのインターフェースリソースを占有するため、入力および出力によって生じるリソース廃棄を低減することができる。モジュールのフレームワークは、2つのモジュールの入力インターフェースを結合することおよび2つのモジュールの出力インターフェースを結合することによって統合することができる。2つのモジュールの結合は、本開示の実施形態において、ステップA1〜ステップA4の実装シナリオにおける例として説明されるものであり、本開示の実施形態において、3つあるいはそれ以上のモジュールが、本明細書内の実装形態を参照して結合されてよく、ここでは例示されないということに限定されないことに留意されたい。
本開示のいくつかの実施形態において、モジュールが結合されているASICを用いてデプロイされた第3のモジュールを動作させる上のステップA14は、以下のステップA141〜ステップA142を含んでもよい。
ステップA141において、成立条件が、第1のモジュールの関数および第2のモジュールの関数に基づいて、第3のモジュールの関数のために設定される。
ステップA142において、第3のモジュールのための成立条件が満たされる場合、第3のモジュールの関数は、ASICによって実装される。
第3のモジュールがASICによって動作されるとき、第3のモジュールの動作は、第1のモジュールの関数および第2のモジュールの関数を実装することができる。第3のモジュールは一部の場合においては第1のモジュールの関数を実装し、他の場合においては第2のモジュールの関数を実装することになるため、どの場合に第3のモジュールが第1のモジュールの関数を実装し、どの場合に第3のモジュールが第2のモジュールの関数を実装するのかを決定するために、成立条件は、第3のモジュールのすべての関数のために設定される必要がある。成立条件は、第3のモジュールの各関数が対応する成立条件の下で実装され得るように、第3のモジュールの異なる関数のために設定されてもよい。例えば、第1のモジュールの関数は関数Aであり、第2のモジュールの関数は関数Bであり、生成された第3のモジュールの関数は、関数Aおよび関数Bを含む。例えば、関数Aの入力は、1、2であり、関数Bの入力は、1、2、3であり、この場合、結合されたABの入力は、1、2、3である。関数Aを実装するために設定される成立条件は、入力3が無効であることであり、関数Bを実装するために設定される成立条件は、入力3が有効であることである。したがって、設定された成立条件に基づいて関数Aまたは関数Bが第3のモジュールによって実装されるかどうかが決定される。
本開示のいくつかの実施形態において、ASICを用いて第2のモジュールをデプロイし、第2のモジュールに占有されるASICの複数の演算ユニットリソースを取得するというステップA2の後、本開示の実施形態に提供されるCNN処理方法は、以下のステップA5〜ステップA6をさらに含んでよい。
ステップA5において、第2のリソース結合モジュールが、第2のモジュールによって占有されるASICの複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって得られる。
ステップA6において、第2のリソース結合モジュールは、ASICによって動作される。
ステップA5〜ステップA6の実装形態は、上記のステップ103〜ステップ104の実装形態に類似しており、それらの違いは、ステップA5〜ステップA6においては、第2のモジュール用の演算ユニットリソースが結合され、第2のモジュールが動作される点であり、詳細については先の実施形態の説明を参照されたい。
本開示のいくつかの実施形態において、上記のステップを実施することに加えて、本開示の実施形態において提供されるCNN処理方法は、以下のステップB1〜ステップB2をさらに含んでよい。
ステップB1において、ASICによって第1のリソース結合モジュールを動作させている間、ASIC上での第1のリソース結合モジュールの動作状態が監視される。
ステップB2において、第1のリソース結合モジュールがASIC上での動作を完了した後、第1のリソース結合モジュールはASICからアンロードされ、CNNモデル内の第4のモジュールがASICにロードされる。
CNNモデルは、複数のモジュールを含む。本開示の実施形態におけるモジュール切替の実装形態は、2つのモジュールを含むCNNモデルを例とすることによって説明され、ASICのリソースがすべてのモジュールをデプロイするのに十分ではないという問題を解決するために、モジュール切替が実施される。例えば、CNNモデルは、第1のモジュールおよび第4のモジュールを含む。ステップ104において、ASICによって第1のリソース結合モジュールを動作させている間、ASIC上での第1のリソース結合モジュールの動作状態が監視される。ASIC上でのCNNモデル内のモジュールの動作状態は、動作している、動作を完了している、および動作される予定である、という3つの状態を含み得る。第1のリソース結合モジュールが動作している場合、ASIC上での第1のリソース結合モジュールの動作状態が監視される。各モジュールはCNNモデルの演算中に常に計算状態にあるわけではないため、モジュールを実行する順序が存在する。したがって、第1のリソース結合モジュールは、第1のリソース結合モジュールが動作を完了した後にASICからアンロードされてよい。この時点で、第4のモジュールは、動作される予定である。CNNモデル内の第4のモジュールは、第4のモジュールがASICによって動作され得るように、ASICにロードされてよい。CNNモデル内のすべてのモジュールのデプロイおよび計算は、第1のリソース結合モジュールと第4のモジュールとのモジュール切替によって実装することができる。モジュール切替は、上記の実施形態においては2つのモジュールを含むCNNモデルを例とすることによって例示されるが、実際にはCNNモデルはもっと多くのモジュールを含んでよいことに留意されたい。モジュール切替のプロセスは、ステップB1およびステップB2の説明で言及され得る。
本開示のいくつかの実施形態において、上記のステップを実施することに加えて、本開示の実施形態において提供されるCNN処理方法は、ステップC1をさらに含んでよい。
ステップC1において、CNNモデルの数値演算ライブラリは、ASIC上にデプロイされ、数値演算ライブラリは、第1のモジュールを含む。
異なるCNNモデルが、数値演算ライブラリで設定されてよい。CNNモデル内の数値演算ライブラリは、第1のモジュールを含んでよく、上記の第2のモジュールおよび第4のモジュールを含んでよい。本開示のいくつかの実施形態において、CNNモデルの数値演算ライブラリは、CNNモデルの数値演算ライブラリに含まれるモジュールがASICを用いてデプロイされ得るように、ASIC上にデプロイされてよく、それにより、より多くの演算ユニットリソースを節約する。例えば、CNNモデルがCAFFEであった場合、CAFFEの当初の実装形態において、数値演算ライブラリに含まれる簡単な計算モジュールの各々は、小さいインターフェースを実装してよく、その実際の関数は、加算、減算、乗算、および除算など非常に簡単である。計算モジュールの各々がASICによって実装される場合、多くのフレームリソースが廃棄され、それはインターフェースの廃棄を意味する。数値演算ライブラリを直接ASICに移動させることは、そのような多くのリソースの廃棄を回避することができる。
本開示の実施形態の上の説明に基づいて、CNNモデル内の第1のモジュールの強化タイプがまず取得され、第1のモジュールの強化タイプが計算強化タイプであった場合に、第1のモジュールがASICを用いてデプロイされ、かつ第1のモジュールによって占有されるASICの複数の演算ユニットリソースが取得され、第1のモジュールによって占有されるASICの複数の演算ユニットリソースのうち同一の演算ユニットリソースが結合されて第1のリソース結合モジュールを得、第1のリソース結合モジュールがASICによって動作されるということが分かる。本開示の実施形態において、計算強化タイプの第1のモジュールは、CNNモデル内のモジュール演算がGPUを使用することなくASICによって実装されるようにASICに退避されてよく、同時にASICのデプロイコストおよび運用コストはともに、GPUのものよりもはるかに低い。本開示の実施形態において、計算強化タイプの第1のモジュール内の同一の演算ユニットリソースは、演算ユニットリソースが最も高い使用効率で利用されように結合され、したがってCNNの計算性能を確実にすることができる。
以下の適用シナリオは、本開示の上記の実施形態をより良く理解し実施するために、下に例として具体的に説明される。例えば、CNNモデルがCAFFEであった場合、CAFFEモデル内のモジュールは、リソースがプログラムされ得るFPGAを用いてデプロイされ、それにより使用率を改善し、同じリソース下でのコストを低減する。本開示の実施形態において、CNNは、リソース制約を克服するためにFPGAを使用することによって実装およびデプロイされてよい。FPGAは、FPGAのリソース使用率が同じ構成要素下でのGPUのリソース使用率よりも高いという点でGPUとは異なり、それにより、FPGAは、GPUより少ない構成要素リソースを使用して同じ性能を達成することができるようになり、それによってより多くのコストを節約する。しかしながら、より複雑なモデルの場合、FPGAのリソースがGPUのリソースに対してはるかに少ないことに起因して、計算層のすべてをデプロイすることができるわけではないという可能性が存在し得る。本開示の実施形態において、FPGAを用いてCNNの様々な層をデプロイするためのプロセスおよび方法は、CAFFEモデルを例とすることによって説明される。
本開示の実施形態において、CAFFEモデルのCPUコンピュートユニファイドデバイスアーキテクチャ(CUDA: compute unified device architecture)の実装形態は、モデル全体がFPGAを用いてデプロイされ、FPGAによって動作され得るように、FPGA上のオープンコンピューティング言語(opencl)の実装に変換することができる。図2に示されるように、図2は、本開示の実施形態に従う、CAFFEモデルにおけるCNN処理方法の実装アーキテクチャを示す概略図である。本開示の実施形態において、以下の3つのステップが実施されてよい。
1)モジュール選択。CNNモデル内の各モジュールが、畳み込みニューラルネットワークの層の計算強化の程度に基づいて、FPGAによって実装されるかどうかが決定される。
2)リソース結合。複数のモジュールの演算ユニットリソースおよびフレームワークリソースが、FPGAを用いてデプロイされるモジュールのリソースを統合するために結合されて、リソースの廃棄を低減する。
3)モジュール切替。複数のモジュールが、FPGAによって動作され、複数の層間および複数のモジュール間で、演算の遅延を使用することによってFPGA上で切り替えられる。
まず、モジュール選択が例示される。畳み込みニューラルネットワークは、複数の層を含み、例えば、CAFFEモデルは、畳み込み層、プーリング層、データ層などを含む。畳み込み層は、画像特徴を抽出するための層であり、プーリング層は、ある特徴の最大値を取り出すことなど、抽出された多数の画像特徴を分類し、データ複雑性を軽減するための層である。データ層は、元のデータを記憶するための層であり、データ層は、例えば、データベース、ディスク、またはメモリである。CAFFEモデルでは、計算の量が大きくないいくつかの層、例えば、データ層は、CPUによって処理されるのに適している。計算の量が大きいいくつかの層、例えば、畳み込み層は、加速計算を実施することが必要とされる。FPGAの限られたリソースに起因して、最も時間のかかるリソースを、openclを使用して実施することが重要である。モジュール選択は、以下の原則に従わなければならない。高い計算複雑性および高い計算頻度を有する計算強化タイプの層およびモジュール、例えば、畳み込み層内の畳み込み計算モジュールは、FPGAによって実装され得る。データ層などの、メモリ帯域幅に対する要件が高く、計算の量が少ない、メモリへのアクセスおよび切替のための記憶強化タイプの層およびモジュールは、FPGAによって実装されるのに適していない。ならびに、高い計算複雑性および低い計算頻度を有する計算モジュールをFPGAによって実装するかどうかは、FPGAのリソースに基づいて決定されてよい。
次に、リソース結合が、例を用いて例示される。多くの計算リソース、特に、畳み込みを計算するための乗算リソースが、CAFFEモデルにおいて使用される。しかしながら、FPGAのリソースは限られており、例えば、Altera Stratix V内にopenclを展開するのに適した基板上のデジタル信号プロセッサ(DSP)の乗算器リソースの数は、256だけである。CAFFEモデル内で加速されることが可能なモジュールすべてが、FPGAに軽減される。例えば、畳み込み計算モジュールは、加速されることが可能なモジュールであり、ランダム計算モジュールも加速されることが可能なモジュールであり、加速されることが可能なすべてのモジュールは、計算強化タイプのモデルである。しかしながら、データ記憶は、記憶強化タイプの動作であり、加速することはできない。加速されることが可能なモジュールは、FPGAを用いてデプロイされ、複数のモデルによって占有される同一の演算ユニットリソースは、リソースが最も高い使用効率で利用され得るように結合される。結合することができない演算ユニットリソースの場合、個々のモジュールが複数の関数を実装するように、モジュール全体が結合されてよい。
本開示のいくつかの実施形態において、各モジュールは、モジュールがFPGAによって実装されると、ルックアップテーブル(LUT)およびモジュールインターフェースとしてのメモリ(MEM)の一部分、ならびにセレクタなどを占有する。数値演算ライブラリ内の様々なモジュールがインターフェースを実装するだけであり、関数を実装しない場合には、実装可能な方式は、CAFFEモデルによって使用される数値演算ライブラリ全体をFPGAに退避させることである。図3に示されるように、図3は、本開示の実施形態に従う、リソース統合プロセスを示す概略図である。統合は、演算ユニット統合およびフレームワーク統合を含む。実際には、モジュールによって占有されたリソースが結合された後、リソース全体は約8%低減され得る。
演算ユニット統合において、演算ユニットは、DSPによって実装され得る乗算器、加算器、および他のコンピュータを含む。CNNの畳み込み層は主に、乗算および加算を含み、かつ演算ユニット統合に適した畳み込み計算に関与する。同様に、CAFFEモデルの数値演算ライブラリ内のモデルはまた、結合され得る乗算動作および加算動作を含む、ドット-乗算、加算-乗算、ズーム、乗算-加算などを含む。統合方法が以下のように例示される。1.複数のモジュールにおける加算および乗算は、同じ加算器および同じ乗算器を使用するように指定される。例えば、図3では、モジュール1における演算cおよびモジュール2における演算cは、結合されて1つの演算cになる。2.FPGAを用いてデプロイされる2つのモジュールが遠く離れて位置する場合、演算を共有するときに時間遅延を満たすことができず、モジュールを結合し、様々な関数を一緒に実装し、入力および出力を共有することが試され得る。例えば、2つの演算モジュールは、FPGAを用いてデプロイされるとき、プリント回路基板(PCB)の要素上で広く間隔を空けられ、構成要素のうちの1つのみが再使用される場合、回路遅延は標準を満たさない。この場合、リソースが結合され得るように、演算モジュール全体が直接結合される。
フレームワーク統合において、FPGAのインターフェースリソースは、複数のモジュールの入力および出力に占有され、それがFPGAのLUTリソースの消費をもたらすことになるため、同じまたは同様の入力形式および出力形式を有する多くのモジュールは、入力および出力によって生じるリソースの廃棄を低減するために結合されてよい。例えば、演算において互いにいくつか違いを有し、かつ同様のインターフェースを有するCAFFEモデルの数値演算ライブラリ内の加算、減算、乗算、除算などは、演算ユニット統合だけでなくモジュールフレームワーク統合もまた、モジュールが結合された後に実装することができる。統合方法が以下のように説明される。1.同じまたは同様の(即ち、違いはパラメータにある)入力および出力インターフェースを有するモジュールが、計算モジュールから見つけ出される。例えば、同じ入力および出力インターフェースは、出力が32ビット整数または64ビット整数であること、即ち、入力および出力が同じであることを示し、同様の入力および出力インターフェースは、64ビットインターフェースが32ビットインターフェースに対して互換性があり、同様のモジュールに属することを示す。2.モジュール関数は大きいモジュールに結合され、同一の計算リソースは統合され(即ち、演算ユニット統合を達成すること)、例えば、図3では、2つの入力インターフェースは結合されて1つの入力インターフェースになり、2つの出力インターフェースは結合されて1つの出力インターフェースになる。3.異なるパラメータを有する同様のモジュールの一部分をスキップするか、または実施するかが、条件判断に基づいて決定される。例えば、関数Aの入力は1、2であり、関数Bの入力は、1、2、3であり、結合されたABの入力は、1、2、3である。関数Aは、入力3が無効のときにのみ実装される。条件判断は、3の範囲を判断するために必要とされ、関数Aは関数Bとは異なり、関数Aは、3が無効または有効であるかに基づいて、関数モジュール間でスキップされる。
次に、モジュール切替が例示される。CNNは、複数のモジュールを含み、反復プロセスにおいて、すべてのモジュールが計算状態にあるわけではなく、モジュールを実行する順序が存在する。例えば、Mnistモデルにおいて、周期的な反復計算が、畳み込み層、プール層、完全結合層などの間で実施される。FPGAリソースは限られており、一般に、CNNモデル全体のすべてのモジュールをデプロイすることはできない。モジュール間の計算の遅延が使用されてよく、計算を完了しているモジュールは、継続して切替を実施するために、モジュールの動作中に、計算される予定のモジュールに切り替えられてよく、それによりCNN内のすべてのモジュールのデプロイおよび計算を達成する。図4aに示されるように、図4aは、本開示の実施形態に従う、モジュール切替を示す概略図である。モジュール切替方法および効果評価は、以下のステップ1〜ステップ4を含む。
ステップ1において、CNNモデルは、3つのモジュール(モジュール1、モジュール2、およびモジュール3である)を含んで例示される。モジュール1およびモジュール2は、まずFPGAによって用いられ、計算が開始され、2つのモジュールの動作時間は、それぞれt1およびt2である。
ステップ2において、FPGA上でのモジュールの動作状態が監視される。モジュール2は、モジュール1が動作を完了した後に動作される。この場合、モジュール1はアンロードされ、モジュール3がロードされ、モジュール3の動作時間はt3であり、モジュール1、モジュール2、およびモジュール3の各々のローディング時間はTである。
ステップ3において、上のプロセスが繰り返され、切替および動作が、FPGA上の複数のモジュールの間で実施される。
ステップ4において、ローディング時間Tがt1、t2、t3より小さい場合、各切替に対して遅延はない。
本方法の上記の様々な実施形態では、簡潔さの目的のため、方法は、一連のアクションの組み合わせとして説明され、ある特定のステップは、本開示に従って、他の順序で、または同時に実行されてもよいことから、当業者は、本開示が上に説明されるアクションの順序によって限定されないことを理解するものとすることに留意されたい。加えて、本明細書に説明される実施形態は、好ましい実施形態であり、関連するアクションおよびモジュールは本開示に必要不可欠ではないということが当業者により理解される。
上記のソリューションを実行するための関連デバイスは、本開示の上記のソリューションをよりよく実施するために提供される。
図5-aに示されるように、CNN処理デバイス500は、本開示の実施形態に従って提供され、タイプ取得ユニット501、デプロイユニット502、結合ユニット503、およびモジュール動作ユニット504を含み得る。
タイプ取得ユニット501は、CNNモデル内の第1のモジュールの強化タイプを取得するように構成される。
デプロイユニット502は、第1のモジュールの強化タイプが計算強化タイプであった場合に、特定用途向け集積回路ASICを用いて第1のモジュールをデプロイし、第1のモジュールによって占有されるASICの複数の演算ユニットリソースを取得するように構成される。
結合ユニット503は、第1のモジュールによって占有されるASICの複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって第1のリソース結合モジュールを得るように構成される。
モジュール動作ユニット504は、画像を認識するためにASICによって第1のリソース結合モジュールを動作させるように構成される。
本開示のいくつかの実施形態において、タイプ取得ユニット501は、CNNモデル内の第2のモジュールの強化タイプを取得するようにさらに構成される。
デプロイユニット502は、第2のモジュールの強化タイプが計算強化タイプであった場合に、ASICを用いて第2のモジュールをデプロイし、第2のモジュールによって占有されるASICの複数の演算ユニットリソースを取得するようにさらに構成される。
結合ユニット503は、第1のモジュールによって占有される演算ユニットリソースが第2のモジュールによって占有される演算ユニットリソースと同一または部分的に同一であった場合、第3のモジュールを得るために第1のモジュールと第2のモジュールとを結合するようにさらに構成され、ここで、第3のモジュールの関数は、第1のモジュールの関数および第2のモジュールの関数を含む。
モジュール動作ユニット504は、ASICによって第3のモジュールを動作させるようにさらに構成される。
本開示のいくつかの実施形態において、結合ユニット503は、第1のモジュールおよび第2のモジュールによって占有されるASICの同一の演算ユニットリソースを結合し、第1のモジュールの入力インターフェースと第2のモジュールの入力インターフェースとを結合し、第1のモジュールの出力インターフェースと第2のモジュールの出力インターフェースとを結合するようにさらに構成される。
本開示のいくつかの実施形態において、モジュール動作ユニット504は、第1のモジュールの関数および第2のモジュールの関数に基づいて第3のモジュールの関数のための成立条件を設定し、この成立条件に基づいて、ASICによって第1のモジュールの関数または第2のモジュールの関数を実装するかどうかを決定するように構成される。
本開示のいくつかの実施形態において、結合ユニット503は、第2のモジュールによって占有されるASICの複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって第2のリソース結合モジュールを得るようにさらに構成される。
モジュール動作ユニット504は、ASICによって第2のリソース結合モジュールを動作させるようにさらに構成される。
本開示のいくつかの実施形態において、図5-bに示されるように、CNN処理デバイス500は、ASICによって第1のリソース結合モジュールが動作されている間、ASIC上での第1のリソース結合モジュールの動作状態を監視し、第1のリソース結合モジュールがASIC上での動作を完了した後に、第1のリソース結合モジュールをASICからアンロードし、CNNモデル内の第4のモジュールをASICにロードするように構成されたモジュール切替ユニット505をさらに含む。
本開示のいくつかの実施形態において、デプロイユニット502は、CNNモデルの数値演算ライブラリをASIC上にデプロイするようにさらに構成され、ここで、数値演算ライブラリは第1のモジュールを含む。
本開示のいくつかの実施形態において、ASICは、フィールドプログラマブルゲートアレイFPGAである。
本開示の実施形態の上の説明に基づいて、CNNモデル内の第1のモジュールの強化タイプがまず取得され、第1のモジュールの強化タイプが計算強化タイプであった場合に、第1のモジュールは、ASICを用いてデプロイされ、かつ第1のモジュールによって占有されるASICの複数の演算ユニットリソースが取得され、第1のモジュールによって占有されるASICの複数の演算ユニットリソースのうち同一の演算ユニットリソースは結合されて、演算ユニットリソースが結合されているASICを用いてデプロイされた第1のモジュールを得、演算ユニットリソースが結合されているASICを用いてデプロイされた第1のモジュールが動作されるということが分かる。本開示の実施形態において、計算強化タイプの第1のモジュールは、CNNモデル内のモジュール演算がGPUを使用することなくASICによって実装されるようにASICに退避されてよく、同時にASICのデプロイコストおよび運用コストはともに、GPUのものよりもはるかに低い。本開示の実施形態において、計算強化タイプの第1のモジュール内の同一の演算ユニットリソースは、演算ユニットリソースが最も高い使用効率で利用されように結合され、したがってCNNの計算性能を確実にすることができる。
図6は、本開示の実施形態に従うサーバの構造を示す概略図である。サーバ600は、構成または性能によってかなり異なってよく、1つまたは複数の中央処理ユニット(CPU)622(例えば、1つまたは複数のプロセッサ)と、メモリ632と、アプリケーション642またはデータ644を記憶する1つまたは複数の記憶媒体630(例えば、1つまたは複数の大量記憶デバイス)と、ASIC633とを含んでよい。メモリ632および記憶媒体630は、一時記憶装置または永続記憶装置であってよい。記憶媒体630に記憶されたプログラムは、1つまたは複数のモジュール(図面には示されない)を含んでよく、モジュールの各々が、サーバに対する一連の命令動作を含んでよい。さらに、中央処理ユニット622は、記憶媒体630と通信して、記憶媒体630内の一連の動作命令をサーバ600に対して実施するように構成されてよく、ASIC633は、FPGA、またはCPLDであってよい。
サーバ600は、1つもしくは複数の電源626、1つもしくは複数の有線もしくは無線ネットワークインターフェース650、1つもしくは複数の入力および出力インターフェース658、ならびに/または、Windows(登録商標)サーバTM、Mac OS XTM、Unix(登録商標)TM、Linux(登録商標)TM、およびFreeBSDTMなどの1つもしくは複数のオペレーティングシステム641をさらに含んでよい。
上記実施形態においてサーバによって実施されるステップは、上記の実施形態の説明に説明されるように、上記CNN処理方法を実施し得る、図6に示されるサーバの構造に基づいてよい。
上に説明されるデバイスの実施形態は、単に例示にすぎず、分離した手段として説明されるユニットは、物理的に分離されていても、されていなくてもよく、ユニットとして示される構成要素は、物理的なユニットであっても、そうでなくてもよく、即ち、1つの場所に位置してもよく、または複数のネットワークユニットに分散されてもよいということに留意されたい。モジュールの一部分またはすべては、本実施形態の目的を達成するために実際のニーズに従って選択されてよい。加えて、本開示に提供されるデバイスの実施形態の図面において、モジュール間の接続関係は、モジュール間に通信接続があることを示し、1つまたは複数の通信バスまたは信号ラインとして具現化されてよい。当業者は、いかなる創造的作業も行うことなく、本開示を理解および実践することができる。
上の実施形態の説明により、本開示が、ソフトウェアおよび必要な汎用ハードウェアによって実施され得ること、特定用途向け集積回路、専用CPU、専用メモリ、専用コンポーネントを含む専用ハードウェアによって実施されてよいことは、当業者にとっては明らかである。一般に、コンピュータプログラムによって実装される関数は、適切なハードウェアによって容易に実装され得、同じ関数を実装するために使用される特定のハードウェア構造は、アナログ回路、デジタル回路、または専用回路など、様々であり得る。しかしながら、より多くの場合、ソフトウェアプログラムによる実装が、本開示のためのより良い実施形態である。この理解に基づいて、本開示の技術的ソリューション、または先行技術に貢献する技術的ソリューションの一部は、コンピュータのフロッピディスク、USBディスク、モバイルハードディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク、または光学ディスクなどの可読記憶媒体に記憶されるソフトウェア製品の形態で具現化されてよく、ソフトウェア製品は、コンピュータデバイス(パーソナルコンピュータ、サーバ、ネットワークデバイスなどであってよい)に本開示の様々な実施形態に説明される方法を実施させるためのいくつかの命令を含む。
上について、上記の実施形態は、単に本開示の技術的ソリューションの例示にすぎず、それを限定することを目的としない。本開示は上記の実施形態を参照して詳細に説明されるが、当業者は、上記の実施形態において説明される技術的ソリューションが修正され得ること、または技術的ソリューションの技術的特徴の一部が同等に置き換えられ得ること、ならびにこれらの修正および置き換えが、本開示の様々な実施形態の技術的ソリューションの趣旨および範囲から逸脱しないことを理解するものとする。
500 CNN処理デバイス
501 タイプ取得ユニット
502 デプロイユニット
503 結合ユニット
504 モジュール動作ユニット
505 モジュール切替ユニット
600 サーバ
622 中央処理ユニット(CPU)
626 電源
630 記憶媒体
632 メモリ
633 ASIC
641 オペレーティングシステム
642 アプリケーション
644 データ
650 有線または無線ネットワークインターフェース
658 入力および出力インターフェース

Claims (17)

  1. 畳み込みニューラルネットワークCNN処理方法であって、
    CNNモデル内の第1のモジュールの強化タイプを取得するステップと、
    前記第1のモジュールの前記強化タイプが計算強化タイプであった場合に、特定用途向け集積回路ASICを用いて前記第1のモジュールをデプロイし、前記第1のモジュールによって占有される前記ASICの複数の演算ユニットリソースを取得するステップと、
    前記第1のモジュールによって占有される前記ASICの前記複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって、第1のリソース結合モジュールを得るステップと、
    前記ASICによって前記第1のリソース結合モジュールを動作させるステップと
    を含む、方法。
  2. 前記CNNモデル内の第2のモジュールの強化タイプを取得するステップと、
    前記第2のモジュールの前記強化タイプが計算強化タイプであった場合に、前記ASICを用いて前記第2のモジュールをデプロイし、前記第2のモジュールによって占有される前記ASICの複数の演算ユニットリソースを取得するステップと、
    前記第1のモジュールによって占有される前記演算ユニットリソースが前記第2のモジュールによって占有される前記演算ユニットリソースと同一または部分的に同一であった場合、第3のモジュールを得るために前記第1のモジュールと前記第2のモジュールとを結合するステップであって、前記第3のモジュールの関数が、前記第1のモジュールの関数および前記第2のモジュールの関数を含む、ステップと、
    前記ASICによって前記第3のモジュールを動作させるステップと
    をさらに含む、請求項1に記載の方法。
  3. 前記第1のモジュールと前記第2のモジュールとを結合する前記ステップが、
    前記第1のモジュールおよび前記第2のモジュールによって占有される前記ASICの同一の演算ユニットリソースを結合するステップと、
    前記第1のモジュールの入力インターフェースと前記第2のモジュールの入力インターフェースとを結合し、前記第1のモジュールの出力インターフェースと前記第2のモジュールの出力インターフェースとを結合するステップと
    を含む、請求項2に記載の方法。
  4. 前記ASICによって前記第3のモジュールを動作させる前記ステップが、
    前記第1のモジュールの前記関数および前記第2のモジュールの前記関数に基づいて、前記第3のモジュールの前記関数のための成立条件を設定するステップと、
    前記成立条件に基づいて、前記ASICによって前記第1のモジュールの前記関数または前記第2のモジュールの前記関数を実装するかどうかを決定するステップと
    を含む、請求項2に記載の方法。
  5. 前記ASICを用いて前記第2のモジュールをデプロイし、前記第2のモジュールによって占有される前記ASICの前記複数の演算ユニットリソースを取得した後、
    前記第2のモジュールによって占有される前記ASICの前記複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって第2のリソース結合モジュールを得るステップと、
    前記ASICによって前記第2のリソース結合モジュールを動作させるステップと
    をさらに含む、請求項2に記載の方法。
  6. 前記ASICによって前記第1のリソース結合モジュールを動作させている間、前記ASIC上での前記第1のリソース結合モジュールの動作状態を監視するステップと、
    前記第1のリソース結合モジュールが前記ASIC上での動作を完了した後、前記第1のリソース結合モジュールを前記ASICからアンロードするステップと、
    前記CNNモデル内の第4のモジュールを前記ASICにロードするステップと
    をさらに含む、請求項1に記載の方法。
  7. 前記CNNモデルの数値演算ライブラリを前記ASIC上にデプロイするステップをさらに含み、
    前記数値演算ライブラリが前記第1のモジュールを含む、請求項1に記載の方法。
  8. 前記ASICがフィールドプログラマブルゲートアレイFPGAである、請求項1から7のいずれか一項に記載の方法。
  9. 畳み込みニューラルネットワークCNN処理デバイスであって、
    CNNモデル内の第1のモジュールの強化タイプを取得するように構成されたタイプ取得ユニットと、
    前記第1のモジュールの前記強化タイプが計算強化タイプであった場合に、特定用途向け集積回路ASICを用いて前記第1のモジュールをデプロイし、前記第1のモジュールによって占有される前記ASICの複数の演算ユニットリソースを取得するように構成されたデプロイユニットと、
    前記第1のモジュールによって占有される前記ASICの前記複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって、第1のリソース結合モジュールを得るように構成された結合ユニットと、
    前記ASICによって第1のリソース結合モジュールを動作させるように構成されたモジュール動作ユニットと
    を備える、畳み込みニューラルネットワークCNN処理デバイス。
  10. 前記タイプ取得ユニットが、前記CNNモデル内の第2のモジュールの強化タイプを取得するようにさらに構成され、
    前記デプロイユニットが、前記第2のモジュールの前記強化タイプが計算強化タイプであった場合に、前記ASICを用いて前記第2のモジュールをデプロイし、前記第2のモジュールによって占有される前記ASICの複数の演算ユニットリソースを取得するようにさらに構成され、
    前記結合ユニットが、前記第1のモジュールによって占有される前記演算ユニットリソースが前記第2のモジュールによって占有される前記演算ユニットリソースと同一または部分的に同一であった場合、第3のモジュールを得るために前記第1のモジュールと前記第2のモジュールとを結合するようにさらに構成され、前記第3のモジュールの関数が、前記第1のモジュールの関数および前記第2のモジュールの関数を含み、
    前記モジュール動作ユニットが、前記ASICによって前記第3のモジュールを動作させるようにさらに構成される、請求項9に記載のデバイス。
  11. 前記結合ユニットが、
    前記第1のモジュールおよび前記第2のモジュールによって占有される前記ASICの同一の演算ユニットリソースを結合し、
    前記第1のモジュールの入力インターフェースと前記第2のモジュールの入力インターフェースとを結合し、前記第1のモジュールの出力インターフェースと前記第2のモジュールの出力インターフェースとを結合するようにさらに構成される、請求項10に記載のデバイス。
  12. 前記モジュール動作ユニットが、
    前記第1のモジュールの前記関数および前記第2のモジュールの前記関数に基づいて、前記第3のモジュールの前記関数のための成立条件を設定し、
    前記成立条件に基づいて、前記ASICによって前記第1のモジュールの前記関数または前記第2のモジュールの前記関数を実装するかどうかを決定するようにさらに構成される、請求項10に記載のデバイス。
  13. 前記結合ユニットが、前記第2のモジュールによって占有される前記ASICの前記複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって第2のリソース結合モジュールを得るようにさらに構成され、
    前記モジュール動作ユニットが、前記ASICによって第2のリソース結合モジュールを動作させるようにさらに構成される、請求項10に記載のデバイス。
  14. 前記ASICによって前記第1のリソース結合モジュールを動作させている間、前記ASIC上での前記第1のモジュールの動作状態を監視し、
    前記第1のリソース結合モジュールが前記ASIC上での動作を完了した後、前記第1のリソース結合モジュールを前記ASICからアンロードし、
    前記CNNモデル内の第4のモジュールを前記ASICにロードするように構成された、モジュール切替ユニットをさらに備える、請求項9に記載のデバイス。
  15. 前記デプロイユニットが、前記CNNモデルの数値演算ライブラリを前記ASIC上にデプロイするようにさらに構成され、前記数値演算ライブラリが前記第1のモジュールを含む、請求項9に記載のデバイス。
  16. 前記ASICがフィールドプログラマブルゲートアレイFPGAである、請求項9から15のいずれか一項に記載のデバイス。
  17. 1つまたは複数のコンピュータプログラムを記憶するための不揮発性記憶媒体であって、前記コンピュータプログラムが、1つまたは複数のメモリを備えたプロセッサによって実行可能な命令を含み、前記プロセッサが、請求項1から8のいずれか一項に記載の畳み込みニューラルネットワーク処理方法を実施するために前記命令を実行する、不揮発性記憶媒体。
JP2017564718A 2016-01-12 2017-01-09 Cnn処理方法およびデバイス Active JP6507271B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201610017755.1A CN105678379B (zh) 2016-01-12 2016-01-12 一种cnn的处理方法和装置
CN201610017755.1 2016-01-12
PCT/CN2017/070628 WO2017121297A1 (zh) 2016-01-12 2017-01-09 Cnn的处理方法和装置

Publications (2)

Publication Number Publication Date
JP2018526714A JP2018526714A (ja) 2018-09-13
JP6507271B2 true JP6507271B2 (ja) 2019-04-24

Family

ID=56300134

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017564718A Active JP6507271B2 (ja) 2016-01-12 2017-01-09 Cnn処理方法およびデバイス

Country Status (9)

Country Link
US (1) US11151442B2 (ja)
EP (1) EP3404587B1 (ja)
JP (1) JP6507271B2 (ja)
KR (1) KR102192468B1 (ja)
CN (1) CN105678379B (ja)
CA (1) CA2987325C (ja)
MY (1) MY188759A (ja)
SG (1) SG11201709689PA (ja)
WO (1) WO2017121297A1 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105678379B (zh) 2016-01-12 2020-08-07 腾讯科技(深圳)有限公司 一种cnn的处理方法和装置
CN106228240B (zh) * 2016-07-30 2020-09-01 复旦大学 基于fpga的深度卷积神经网络实现方法
KR102835519B1 (ko) 2016-09-28 2025-07-17 에스케이하이닉스 주식회사 합성곱 신경망의 연산 장치 및 방법
US10733505B2 (en) 2016-11-10 2020-08-04 Google Llc Performing kernel striding in hardware
WO2018113597A1 (zh) * 2016-12-20 2018-06-28 上海寒武纪信息科技有限公司 矩阵乘加运算装置、神经网络运算装置和方法
US11238334B2 (en) 2017-04-04 2022-02-01 Hailo Technologies Ltd. System and method of input alignment for efficient vector operations in an artificial neural network
US12430543B2 (en) 2017-04-04 2025-09-30 Hailo Technologies Ltd. Structured sparsity guided training in an artificial neural network
US11544545B2 (en) 2017-04-04 2023-01-03 Hailo Technologies Ltd. Structured activation based sparsity in an artificial neural network
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US11551028B2 (en) 2017-04-04 2023-01-10 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
US10467795B2 (en) * 2017-04-08 2019-11-05 Intel Corporation Sub-graph in frequency domain and dynamic selection of convolution implementation on a GPU
CN107491809B (zh) * 2017-08-21 2020-10-16 苏州浪潮智能科技有限公司 一种fpga实现残差网络中激活函数的方法
CN108021938A (zh) * 2017-11-29 2018-05-11 中冶南方工程技术有限公司 一种冷轧带钢表面缺陷在线检测方法以及检测系统
JP6574004B2 (ja) * 2018-01-25 2019-09-11 株式会社モルフォ 計算手法決定システム、計算手法決定装置、処理装置、計算手法決定方法、処理方法、計算手法決定プログラム、及び、処理プログラム
CN108470211B (zh) * 2018-04-09 2022-07-12 郑州云海信息技术有限公司 一种卷积计算的实现方法、设备和计算机存储介质
CN110533666B (zh) * 2018-05-25 2022-09-23 杭州海康威视数字技术股份有限公司 一种获取数据块尺寸的方法、处理数据的方法及装置
CN108805285B (zh) * 2018-05-30 2022-03-29 山东浪潮科学研究院有限公司 一种卷积神经网络池化单元设计方法
US11960935B2 (en) 2018-06-27 2024-04-16 Amazon Technologies, Inc. Fault-tolerant accelerator based inference service
KR102544059B1 (ko) * 2018-06-27 2023-06-16 아마존 테크놀로지스, 인크. 부착된 가속기 기반 추론 서비스
CN109165736B (zh) * 2018-08-08 2023-12-12 北京字节跳动网络技术有限公司 应用于卷积神经网络的信息处理方法和装置
KR101984730B1 (ko) * 2018-10-23 2019-06-03 (주) 글루시스 서버 장애 자동 예측 시스템 및 자동 예측 방법
CN111488216B (zh) * 2019-01-28 2024-04-30 北京灵汐科技有限公司 一种数据处理的方法、装置及电子设备
CN110032374B (zh) * 2019-03-21 2023-04-07 深兰科技(上海)有限公司 一种参数提取方法、装置、设备及介质
CN110555519B (zh) * 2019-10-08 2023-07-28 东南大学 一种基于符号随机计算的低复杂度卷积神经网络架构
CN111767059B (zh) * 2020-06-30 2023-03-31 北京百度网讯科技有限公司 深度学习模型的部署方法、装置、电子设备和存储介质
CN111915016B (zh) * 2020-07-10 2022-03-25 深圳云天励飞技术股份有限公司 一种基于tvm编译器的异构平台的部署方法及装置
CN111984864B (zh) * 2020-08-14 2023-12-26 北京达佳互联信息技术有限公司 对象推荐方法、装置、电子设备和存储介质
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor
US11874900B2 (en) 2020-09-29 2024-01-16 Hailo Technologies Ltd. Cluster interlayer safety mechanism in an artificial neural network processor
US11263077B1 (en) 2020-09-29 2022-03-01 Hailo Technologies Ltd. Neural network intermediate results safety mechanism in an artificial neural network processor
US11221929B1 (en) 2020-09-29 2022-01-11 Hailo Technologies Ltd. Data stream fault detection mechanism in an artificial neural network processor
US11237894B1 (en) 2020-09-29 2022-02-01 Hailo Technologies Ltd. Layer control unit instruction addressing safety mechanism in an artificial neural network processor
US12248367B2 (en) 2020-09-29 2025-03-11 Hailo Technologies Ltd. Software defined redundant allocation safety mechanism in an artificial neural network processor
WO2022185527A1 (ja) * 2021-03-05 2022-09-09 日本電信電話株式会社 スケジューリング装置、スケジューリング方法、および、スケジューリングプログラム
US12210962B2 (en) * 2021-06-30 2025-01-28 Micron Technology, Inc. Artificial neural networks on a deep learning accelerator
CN116700912B (zh) * 2022-02-28 2025-03-25 华为技术有限公司 一种访问逻辑ip的软硬件交互方法及装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4212676B2 (ja) * 1998-02-12 2009-01-21 富士ゼロックス株式会社 情報処理システムおよび情報処理方法
US20080228719A1 (en) * 2007-03-13 2008-09-18 Fatdoor, Inc. People and business search result optimization
JP2008235992A (ja) * 2007-03-16 2008-10-02 Matsushita Electric Ind Co Ltd リコンフィギュラブル回路、リコンフィギュラブル回路システムおよびリコンフィギュラブル回路の配置配線方法
WO2010061911A1 (ja) * 2008-11-28 2010-06-03 日本電気株式会社 再構成可能回路生成装置、方法およびプログラム
US8442927B2 (en) * 2009-07-30 2013-05-14 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks
CN102799563B (zh) * 2011-05-26 2015-08-26 上海红神信息技术有限公司 一种可重构计算阵列及构建方法
US10860946B2 (en) * 2011-08-10 2020-12-08 Konlanbi Dynamic data structures for data-driven modeling
US20130132962A1 (en) * 2011-11-22 2013-05-23 Microsoft Corporation Scheduler combinators
GB2516627A (en) * 2013-07-26 2015-02-04 Warsaw University Of Technology Parallel decision-or regression-tree growing
US10042894B2 (en) * 2013-10-31 2018-08-07 Microsoft Technology Licensing, Llc Temporal-based professional similarity
US9978014B2 (en) * 2013-12-18 2018-05-22 Intel Corporation Reconfigurable processing unit
CN104077233B (zh) * 2014-06-18 2017-04-05 百度在线网络技术(北京)有限公司 多通道卷积层处理方法和装置
CN104035751B (zh) 2014-06-20 2016-10-12 深圳市腾讯计算机系统有限公司 基于多图形处理器的数据并行处理方法及装置
JP6381368B2 (ja) * 2014-08-26 2018-08-29 キヤノン株式会社 画像処理装置、画像処理方法、およびプログラム
CN104287764B (zh) * 2014-09-11 2017-05-31 沈阳东软医疗系统有限公司 一种ct灌注成像方法和设备
US20160314410A1 (en) * 2015-04-23 2016-10-27 Rovi Guides, Inc. Systems and methods for improving accuracy in media asset recommendations based on data from one data space
CN104915195B (zh) * 2015-05-20 2017-11-28 清华大学 一种基于现场可编程门阵列实现神经网络计算的方法
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
US10579628B2 (en) * 2015-12-17 2020-03-03 The Nielsen Company (Us), Llc Media names matching and normalization
CN105678379B (zh) * 2016-01-12 2020-08-07 腾讯科技(深圳)有限公司 一种cnn的处理方法和装置
US9903733B2 (en) * 2016-03-17 2018-02-27 Honda Motor Co., Ltd. Vehicular communications network and methods of use and manufacture thereof
CN106709532B (zh) * 2017-01-25 2020-03-10 京东方科技集团股份有限公司 图像处理方法和装置

Also Published As

Publication number Publication date
US11151442B2 (en) 2021-10-19
SG11201709689PA (en) 2017-12-28
EP3404587B1 (en) 2023-11-01
WO2017121297A1 (zh) 2017-07-20
MY188759A (en) 2021-12-29
KR20180005241A (ko) 2018-01-15
JP2018526714A (ja) 2018-09-13
CA2987325A1 (en) 2017-07-20
US20180082175A1 (en) 2018-03-22
CA2987325C (en) 2019-10-22
BR112017026917A2 (pt) 2018-08-14
EP3404587A1 (en) 2018-11-21
CN105678379A (zh) 2016-06-15
KR102192468B1 (ko) 2020-12-17
EP3404587A4 (en) 2019-10-30
CN105678379B (zh) 2020-08-07

Similar Documents

Publication Publication Date Title
JP6507271B2 (ja) Cnn処理方法およびデバイス
US11698773B2 (en) Accelerated mathematical engine
Fan et al. A real-time object detection accelerator with compressed SSDLite on FPGA
EP3480745B1 (en) Hardware implementation of convolution layer of deep neural network
CN109117947A (zh) 轮廓检测方法及相关产品
US10545559B2 (en) Data processing system and method
CN110991627B (zh) 信息处理装置、信息处理方法
Motamedi et al. Fast and energy-efficient cnn inference on iot devices
US11853868B2 (en) Multi dimensional convolution in neural network processor
KR20220078819A (ko) 딥러닝 연산 수행 방법 및 장치
JP7541515B2 (ja) レイトレーシングにおけるトライアングル及びボックスの交差テストのための統合されたデータパス
CN113705795B (zh) 卷积处理方法、装置、卷积神经网络加速器和存储介质
Wu et al. AI-ISP Accelerator with RISC-VISA Extension for Image Signal Processing
Chen et al. High throughput and low bandwidth demand: Accelerating CNN inference Block-by-block on FPGAs
US20240126617A1 (en) Deep fusion of kernel execution
JP7582505B2 (ja) 深層学習推論システムおよび推論サービング方法
WO2024154269A1 (ja) データ処理装置、データ処理方法、及びデータ処理プログラム
CN119961559A (zh) 矩阵乘性能优化方法、装置、电子设备和存储介质
CN110647984A (zh) 芯片、集成处理设备及其操作方法
BR112017026917B1 (pt) Método e dispositivo para processamento de rede neural convolucional cnn e mídia de armazenamento não volátil

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190220

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190401

R150 Certificate of patent or registration of utility model

Ref document number: 6507271

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250