(57)【特許請求の範囲】
【請求項１】
畳み込みニューラルネットワークCNN処理方法であって、
CNNモデル内の第1のモジュールの強化タイプを取得するステップと、
前記第1のモジュールの前記強化タイプが計算強化タイプであった場合に、特定用途向け集積回路ASICを用いて前記第1のモジュールをデプロイし、前記第1のモジュールによって占有される前記ASICの複数の演算ユニットリソースを取得するステップと、
前記第1のモジュールによって占有される前記ASICの前記複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって、第1のリソース結合モジュールを得るステップと、
前記ASICによって前記第1のリソース結合モジュールを動作させるステップと
を含む、方法。
【請求項２】
前記CNNモデル内の第2のモジュールの強化タイプを取得するステップと、
前記第2のモジュールの前記強化タイプが計算強化タイプであった場合に、前記ASICを用いて前記第2のモジュールをデプロイし、前記第2のモジュールによって占有される前記ASICの複数の演算ユニットリソースを取得するステップと、
前記第1のモジュールによって占有される前記演算ユニットリソースが前記第2のモジュールによって占有される前記演算ユニットリソースと同一または部分的に同一であった場合、第3のモジュールを得るために前記第1のモジュールと前記第2のモジュールとを結合するステップであって、前記第3のモジュールの関数が、前記第1のモジュールの関数および前記第2のモジュールの関数を含む、ステップと、
前記ASICによって前記第3のモジュールを動作させるステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記第1のモジュールと前記第2のモジュールとを結合する前記ステップが、
前記第1のモジュールおよび前記第2のモジュールによって占有される前記ASICの同一の演算ユニットリソースを結合するステップと、
前記第1のモジュールの入力インターフェースと前記第2のモジュールの入力インターフェースとを結合し、前記第1のモジュールの出力インターフェースと前記第2のモジュールの出力インターフェースとを結合するステップと
を含む、請求項2に記載の方法。
【請求項４】
前記ASICによって前記第3のモジュールを動作させる前記ステップが、
前記第1のモジュールの前記関数および前記第2のモジュールの前記関数に基づいて、前記第3のモジュールの前記関数のための成立条件を設定するステップと、
前記成立条件に基づいて、前記ASICによって前記第1のモジュールの前記関数または前記第2のモジュールの前記関数を実装するかどうかを決定するステップと
を含む、請求項2に記載の方法。
【請求項５】
前記ASICを用いて前記第2のモジュールをデプロイし、前記第2のモジュールによって占有される前記ASICの前記複数の演算ユニットリソースを取得した後、
前記第2のモジュールによって占有される前記ASICの前記複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって第2のリソース結合モジュールを得るステップと、
前記ASICによって前記第2のリソース結合モジュールを動作させるステップと
をさらに含む、請求項2に記載の方法。
【請求項６】
前記ASICによって前記第1のリソース結合モジュールを動作させている間、前記ASIC上での前記第1のリソース結合モジュールの動作状態を監視するステップと、
前記第1のリソース結合モジュールが前記ASIC上での動作を完了した後、前記第1のリソース結合モジュールを前記ASICからアンロードするステップと、
前記CNNモデル内の第4のモジュールを前記ASICにロードするステップと
をさらに含む、請求項1に記載の方法。
【請求項７】
前記CNNモデルの数値演算ライブラリを前記ASIC上にデプロイするステップをさらに含み、
前記数値演算ライブラリが前記第1のモジュールを含む、請求項1に記載の方法。
【請求項８】
前記ASICがフィールドプログラマブルゲートアレイFPGAである、請求項1から7のいずれか一項に記載の方法。
【請求項９】
畳み込みニューラルネットワークCNN処理デバイスであって、
CNNモデル内の第1のモジュールの強化タイプを取得するように構成されたタイプ取得ユニットと、
前記第1のモジュールの前記強化タイプが計算強化タイプであった場合に、特定用途向け集積回路ASICを用いて前記第1のモジュールをデプロイし、前記第1のモジュールによって占有される前記ASICの複数の演算ユニットリソースを取得するように構成されたデプロイユニットと、
前記第1のモジュールによって占有される前記ASICの前記複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって、第1のリソース結合モジュールを得るように構成された結合ユニットと、
前記ASICによって第1のリソース結合モジュールを動作させるように構成されたモジュール動作ユニットと
を備える、畳み込みニューラルネットワークCNN処理デバイス。
【請求項１０】
前記タイプ取得ユニットが、前記CNNモデル内の第2のモジュールの強化タイプを取得するようにさらに構成され、
前記デプロイユニットが、前記第2のモジュールの前記強化タイプが計算強化タイプであった場合に、前記ASICを用いて前記第2のモジュールをデプロイし、前記第2のモジュールによって占有される前記ASICの複数の演算ユニットリソースを取得するようにさらに構成され、
前記結合ユニットが、前記第1のモジュールによって占有される前記演算ユニットリソースが前記第2のモジュールによって占有される前記演算ユニットリソースと同一または部分的に同一であった場合、第3のモジュールを得るために前記第1のモジュールと前記第2のモジュールとを結合するようにさらに構成され、前記第3のモジュールの関数が、前記第1のモジュールの関数および前記第2のモジュールの関数を含み、
前記モジュール動作ユニットが、前記ASICによって前記第3のモジュールを動作させるようにさらに構成される、請求項9に記載のデバイス。
【請求項１１】
前記結合ユニットが、
前記第1のモジュールおよび前記第2のモジュールによって占有される前記ASICの同一の演算ユニットリソースを結合し、
前記第1のモジュールの入力インターフェースと前記第2のモジュールの入力インターフェースとを結合し、前記第1のモジュールの出力インターフェースと前記第2のモジュールの出力インターフェースとを結合するようにさらに構成される、請求項10に記載のデバイス。
【請求項１２】
前記モジュール動作ユニットが、
前記第1のモジュールの前記関数および前記第2のモジュールの前記関数に基づいて、前記第3のモジュールの前記関数のための成立条件を設定し、
前記成立条件に基づいて、前記ASICによって前記第1のモジュールの前記関数または前記第2のモジュールの前記関数を実装するかどうかを決定するようにさらに構成される、請求項10に記載のデバイス。
【請求項１３】
前記結合ユニットが、前記第2のモジュールによって占有される前記ASICの前記複数の演算ユニットリソースのうち同一の演算ユニットリソースを結合することによって第2のリソース結合モジュールを得るようにさらに構成され、
前記モジュール動作ユニットが、前記ASICによって第2のリソース結合モジュールを動作させるようにさらに構成される、請求項10に記載のデバイス。
【請求項１４】
前記ASICによって前記第1のリソース結合モジュールを動作させている間、前記ASIC上での前記第1のモジュールの動作状態を監視し、
前記第1のリソース結合モジュールが前記ASIC上での動作を完了した後、前記第1のリソース結合モジュールを前記ASICからアンロードし、
前記CNNモデル内の第4のモジュールを前記ASICにロードするように構成された、モジュール切替ユニットをさらに備える、請求項9に記載のデバイス。
【請求項１５】
前記デプロイユニットが、前記CNNモデルの数値演算ライブラリを前記ASIC上にデプロイするようにさらに構成され、前記数値演算ライブラリが前記第1のモジュールを含む、請求項9に記載のデバイス。
【請求項１６】
前記ASICがフィールドプログラマブルゲートアレイFPGAである、請求項9から15のいずれか一項に記載のデバイス。
【請求項１７】
1つまたは複数のコンピュータプログラムを記憶するための不揮発性記憶媒体であって、前記コンピュータプログラムが、1つまたは複数のメモリを備えたプロセッサによって実行可能な命令を含み、前記プロセッサが、請求項1から8のいずれか一項に記載の畳み込みニューラルネットワーク処理方法を実施するために前記命令を実行する、不揮発性記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、中華人民共和国国家知識産権局に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  入力および出力インターフェース
【図１】
0006507271.tif 000002
【図２】
0006507271.tif 000003
【図３】
0006507271.tif 000004
【図４】
0006507271.tif 000005
【図５−ａ】
0006507271.tif 000006
【図５−ｂ】
0006507271.tif 000007
【図６】
0006507271.tif 000008