【解決手段】演算実行設備は、コントローラ、メモリ及び演算装置を含み、メモリは予め設定された単一命令セットを記憶することに用いられる。単一命令セットは、演算装置が多層演算を行う際に各層演算に対応する単一命令を含み、それぞれの単一命令はモジュール選択パラメータ及びモジュール動作パラメータを含む。コントローラはメモリから演算装置に必要な現在層演算に対応する現在の単一命令を読み取って、現在の単一命令に含まれるモジュール選択パラメータ及びモジュール動作パラメータを解析し、現在の単一命令に対応する演算パスを決定する。演算装置は、コントローラの制御下で現在の単一命令に対応する演算パスを連通し、現在の単一命令に対応する演算パスを利用して、演算装置の現在層演算における入力データを演算処理し、現在層演算の出力データを生成する。
それぞれの前記機能演算モジュールが1つ又は複数の演算タイプに対応し、前記演算タイプはスプライス演算、拡張演算、畳み込み演算、プーリング演算、量子化演算、非線形演算又は全結合演算を含むことを特徴とする請求項1に記載の演算装置。
第一演算パスには更に前記拡張モジュールが含まれ、逆畳み込み操作を実現するために、前記畳み込みモジュールが前記拡張モジュールの後に接続されることを特徴とする請求項3に記載の演算装置。
全結合操作を実現するために、第二演算パスにおいて、前記畳み込みモジュールは1*1畳み込みカーネルサイズの畳み込み層を含むことを特徴とする請求項3に記載の演算装置。
第三演算パスには更に量子化モジュールが含まれ、且つ量子化操作を実現するために、前記量子化モジュールが前記第三演算パスの末端に設置されることを特徴とする請求項3に記載の演算装置。
第四演算パスには、畳み込み操作を実現するために、前記スプライスモジュール及び前記畳み込みモジュールのみが含まれることを特徴とする請求項3に記載の演算装置。
前記量子化モジュールは浮動小数点数値を下位ビット値に量子化することにより、パラメータ圧縮及び非線形演算を実現することを特徴とする請求項2に記載の演算装置。
前記単一命令にはパラメータリストを持ち、前記パラメータリストには前記モジュール選択パラメータ及び前記モジュール動作パラメータが1つずつ示されることを特徴とする請求項11に記載の演算実行設備。
【発明の概要】
【発明が解決しようとする課題】
【0004】
これに鑑みて、本発明の目的は、従来技術におけるニューラルネットワークを実現するハードウェアリソースが浪費されやすい技術的問題を解決し、ハードウェアのリソース使用率を効果的に向上させることができる演算装置、演算実行設備及び演算実行方法を提供することである。
【課題を解決するための手段】
【0005】
上記目的を実現するために、本発明の実施例は以下の技術案を用いた。
【0006】
第一態様において、本発明の実施例は演算装置を提供する。前記演算装置はマルチニューラルネットワークアーキテクチャを実現することに用いられ、前記演算装置は複数の機能演算モジュールを含み、前記機能演算モジュールはスプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュールのうちの少なくとも1つを含み、複数の前記機能演算モジュールを組み合わせることで、複数の演算パスを連通形成することができ、それぞれの前記演算パスは1つの計算ロジックを実現することに用いられ、前記計算ロジックは畳み込み操作、逆畳み込み操作、プーリング操作、量子化操作及び全結合操作のうちの少なくとも1つを含む。
【0007】
更に、それぞれの前記機能演算モジュールが1つ又は複数の演算タイプに対応し、前記演算タイプはスプライス演算、拡張演算、畳み込み演算、プーリング演算、量子化演算、非線形演算又は全結合演算を含む。
【0008】
更に、すべての前記演算パスはいずれも少なくとも前記スプライスモジュール及び前記畳み込みモジュールを含む。
【0009】
更に、第一演算パスには更に前記拡張モジュールが含まれ、逆畳み込み操作を実現するために、前記畳み込みモジュールが前記拡張モジュールの後に接続される。
【0010】
更に、全結合操作を実現するために、第二演算パスにおいて、前記畳み込みモジュールは1*1畳み込みカーネルサイズの畳み込み層を含む。
【0011】
更に、第三演算パスには更に量子化モジュールが含まれ、且つ量子化操作を実現するために、前記量子化モジュールが前記第三演算パスの末端に設置される。
【0012】
更に、畳み込み操作を実現するために、第四演算パスには前記スプライスモジュール及び前記畳み込みモジュールのみが含まれる。
【0013】
更に、前記畳み込みモジュールはストライドを持つ畳み込み層を含み、前記畳み込み層のストライドが1である場合、前記畳み込みモジュールは畳み込み演算を実現することに用いられ、前記畳み込み層のストライドが1ではない場合、前記畳み込みモジュールは畳み込み演算及びプーリング演算を実現することに用いられる。
【0014】
更に、前記量子化モジュールは浮動小数点数値を下位ビット値に量子化することにより、パラメータ圧縮及び非線形演算を実現する。
【0015】
更に、前記機能演算モジュールは更に逆畳み込みモジュール、プーリングモジュール又は全結合モジュールを含む。
【0016】
第二態様において、本発明の実施例は更に演算実行設備を提供する。前記演算実行設備はコントローラ、メモリ及び第一態様に記載の演算装置を含み、前記メモリは予め設定された単一命令セットを記憶することに用いられ、前記単一命令セットは前記演算装置が多層演算を行う際に各層演算に対応する単一命令を含み、それぞれの前記単一命令はモジュール選択パラメータ及びモジュール動作パラメータを含み、前記コントローラは前記メモリから前記演算装置に必要な現在層演算に対応する現在の単一命令を読み取って、前記現在の単一命令に含まれるモジュール選択パラメータ及びモジュール動作パラメータを解析することにより、前記現在の単一命令に対応する演算パスを決定することに用いられ、前記コントローラは更に前記演算装置に制御信号を送信することにより、前記演算装置に前記現在の命令に対応する演算パスを連通させることに用いられ、前記演算装置は前記コントローラの制御下で前記現在の単一命令に対応する演算パスを連通し、前記現在の単一命令に対応する演算パスを利用して、前記演算装置の現在層演算における入力データを演算処理し、前記現在層演算の出力データを生成することに用いられ、前記現在層演算の入力データは前記演算装置が前層演算時に取得した出力データであり、前記現在層が第一層である場合、前記第一層演算の入力データが処理対象画像である。
【0017】
更に、前記単一命令にパラメータリストを持ち、前記パラメータリストに前記モジュール選択パラメータ及び前記モジュール動作パラメータが1つずつ示される。
【0018】
第三態様において、本発明の実施例は演算実行方法を提供する。前記方法は第二態様に記載の演算実行設備に応用され、前記方法は演算実行設備のコントローラで実行され、前記方法は、前記演算装置の現在層演算をスタートするとき、前記現在層演算に対応する現在の単一命令を読み取ることと、前記現在の単一命令のモジュール選択パラメータ及びモジュール動作パラメータを解析し、前記現在層演算に必要な機能演算モジュール及び前記機能演算モジュールに対応するモジュール動作パラメータを決定するステップと、前記現在層演算に必要な機能演算モジュール及び前記機能演算モジュールに対応するモジュール動作パラメータに基づいて、前記演算装置における演算パスを決定し、前記演算パスは前記現在層演算に必要な機能演算モジュールを連通してなることと、前記現在層演算の入力データを前記演算装置に入力することにより、前記演算装置が決定された前記演算パスを利用して、前記入力データを演算処理し、前記現在層演算の出力データを生成し、前記現在層演算の入力データが前記演算装置の前層演算における出力データであり、前記現在層が第一層である場合、前記第一層演算の入力データが処理対象画像であるステップと、を含む。
【0019】
第四態様において、本発明の実施例はコンピュータで読み取り可能な記憶媒体を提供する。前記コンピュータで読み取り可能な記憶媒体にコンピュータプログラムが記憶され、前記コンピュータプログラムがプロセッサで実行されるとき、上記第三態様の方法のステップを実行する。
【0020】
本発明の実施例は演算装置を提供し、マルチニューラルネットワークアーキテクチャを実現することに用いられてもよく、該演算装置はスプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュール等の複数の機能演算モジュールを含み、複数の機能演算モジュールを柔軟に組み合わせることで、複数の演算パスを連通形成することができ、従って、対応する計算ロジックを実現する。本実施例に係るこのような演算装置は、それぞれのネットワーク構造にはいずれも対応するハードウェア構造を独立して構築する必要がなく、このような多機能多重演算装置はハードウェアリソースを非常に効果的に節約する。
【0021】
演算装置を基に、本発明の実施例は更に演算実行設備及び方法を提供し、コントローラは演算装置に必要な現在層演算に対応する現在の単一命令を解析することにより、演算装置を制御して現在の単一命令に対応する演算パスを連通させることができ、それにより現在層演算処理を行う。このような形態は単一命令に基づいて、同一演算装置をコンパイルして異なるネットワーク構造を形成するように制御し、異なるネットワーク構造のために対応するハードウェアを独立して組み立てずに、ニューラルネットワークのすべての層のロジック演算を実現することができ、ハードウェアリソースを大幅に節約し、ハードウェアのリソース使用率を効果的に向上させる。
【0022】
以下の明細書に本開示の他の特徴及び利点を説明し、又は、一部の特徴及び利点は明細書で推定又は疑問なく決定でき、又は本開示を実施する上記技術によって理解できる。
【0023】
本発明の上記目的、特徴及び利点をより明確にするために、以下、添付の図面を参照しながら、好適な実施例を詳しく説明する。
【発明を実施するための形態】
【0026】
本発明の実施例の目的、技術案及び利点をより明確にするために、以下、図面を参照しながら、本発明の技術案を明確且つ完全に説明し、無論、説明される実施例は本発明の実施例の一部であって、実施例のすべてではない。本発明の実施例に基づき、当業者が進歩性のある労働を必要とせずに得られる他の実施例は、いずれも本発明の保護範囲に属する。
【0027】
従来技術は、ハードウェアを用いてニューラルネットワークを実現するとき、異なるニューラルネットワーク構造にいずれもハードウェアを独立して組み立てる必要があるので、より大きなハードウェアリソースを消費する必要があり、且つ演算に関与するネットワーク構造におけるハードウェアのみが応用され、演算に関与しないネットワーク構造に対応するハードウェアがアイドル状態になるため、ハードウェアの使用率が低下してしまう。この問題を解決するために、本発明の実施例は、演算装置、演算実行設備及び演算実行方法を提供する。該技術は、ニューラルネットワークのハードウェア実現に応用されることができる。以下、本発明の実施例を詳しく説明する。
【0029】
まず、
図1を参照しながら、本発明の実施例の演算装置、演算実行設備及び演算実行方法を実現するための電子装置100の例を説明する。
【0030】
図1において電子装置の構造模式図を示す。電子装置100は、1つ又は複数のプロセッサ102、1つ又は複数の記憶装置104、入力装置106、出力装置108及び画像収集装置110を含み、これらの部品はバスシステム112及び/又は他の形態の接続機構(図示せず)によって互いに接続される。ただし、
図1に示す電子装置100の部品及び構造は例示的なものであって、制限的なものではなく、必要に応じて、前記電子装置は他の部品及び構造を有してもよい。
【0031】
前記プロセッサ102はデジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、特定用途向け集積回路ASICのうちの少なくとも1つのハードウェア形態で実現されてもよい。前記プロセッサ102は、中央処理装置(CPU)又はデータ処理能力及び/又は命令実行能力を有する他の形態の処理装置のうちの1つ又は複数の組み合わせであってもよく、且つ前記電子装置100における他の部品を制御して期待される機能を実行させることができる。
【0032】
前記記憶装置104は、1つ又は複数のコンピュータプログラム製品を含んでもよい。前記コンピュータプログラム製品は、様々な形態のコンピュータで読み取り可能な記憶媒体、例えば揮発性メモリ及び/又は不揮発性メモリを含んでもよい。前記揮発性メモリは、例えばランダムアクセスメモリ(RAM)及び/又はキャッシュ(cache)等を含んでもよい。前記不揮発性メモリは、例えば読み出し専用メモリ(ROM)、ハードディスク、フラッシュメモリ等を含んでもよい。前記コンピュータで読み取り可能な記憶媒体において、1つ又は複数のコンピュータプログラム命令が記憶されてもよい。プロセッサ102は、前記プログラム命令を実行することにより、以下に記載の本発明の実施例における(プロセッサで実現される)クライアント機能及び/又は期待される他の機能を実現することができる。前記コンピュータで読み取り可能な記憶媒体に更に様々なアプリケーション及び様々なデータ、例えば前記アプリケーションが使用する及び/又は発生した様々なデータ等が記憶されてもよい。
【0033】
前記入力装置106は、ユーザーが命令を入力するための装置であってもよく、且つキーボード、マウス、マイクロフォン及びタッチパネル等のうちの1つ又は複数を含んでもよい。
【0034】
前記出力装置108は、外部(例えば、ユーザー)に様々な情報(例えば、画像又は音声)を出力することができ、且つディスプレイ、スピーカー等のうちの1つ又は複数を含んでもよい。
【0035】
他の部品の使用のために、前記画像収集装置110は、ユーザーの期待される画像(例えば写真、ビデオ等)を撮影して、撮影された画像を前記記憶装置104に記憶することができる。
【0036】
例示的に、本発明の実施例に係る演算装置、演算実行設備及び演算実行方法を実現するための例示的な電子装置はビデオカメラ、スナップショット装置、顔認識端末、コンピュータ等のインテリジェント端末として実現されてもよい。
【0038】
本実施例は、マルチニューラルネットワークアーキテクチャを実現することができる演算装置を提供する。該マルチニューラルネットワークは、複数の機能を有し、複数の計算ロジックを実現することができる。該演算装置は、複数の機能演算モジュールを含む。機能演算モジュールは、スプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュールのうちの少なくとも1つを含んでもよい。つまり、演算装置は、スプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュールのうちの複数のモジュールを組み合わせてなってもよい。モジュールの組み合わせ形態及びモジュール同士の接続関係が様々であり、実際の必要に応じて、具体的且つ柔軟に設定できる。
【0039】
複数の機能演算モジュールを組み合わせることで、複数の演算パスを連通して形成することができる。それぞれの演算パスは1つの計算ロジックを実現することに用いられる。計算ロジックは、畳み込み操作、逆畳み込み操作、プーリング操作、量子化操作及び全結合操作のうちの少なくとも1つを含む。実際の応用において、同じ機能モジュールを組み合わせてなる複数の演算パスであっても、モジュール動作パラメータが異なり、及び/又はモジュール接続関係が異なるため、異なる演算効果を実現することができ、異なる演算パスに属すると見なされてもよい。
【0040】
本発明の実施例に係る上記演算装置は、スプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュール等の複数の機能演算モジュールを含む。複数の機能演算モジュールは、柔軟的な組み合わせる方式で、複数の演算パスを連通して形成することができ、それにより対応する計算ロジックを実現する。該演算装置において、それぞれのネットワーク構造毎に対応するハードウェア構造(具体的にロジック回路を備えるコンピューティングハードウェア構造であり、以下にいずれもハードウェアと略称される)を独立して構築する必要がなく、必要に応じて、演算パスを直接選択すればよい。このような多機能を多重する演算装置は、ハードウェアリソースを非常に効果的に節約する。
【0041】
実際の応用において、演算装置はFPGA又はASIC等のハードウェアで実現されてもよく、対応する機能演算を実現するために、各機能演算モジュールは具体的に加算器、乗算器等の様々なロジック回路で構成されてもよい。理解しやすくするために、まず上記機能演算モジュールの基本機能を簡単に説明する。
【0042】
スプライスモジュール(concatモジュールとも称される)はチャネルのスプライスを実現することに用いられる。具体的に、チャネル次元における入力特徴マップのスプライスを実現することができる。ニューラルネットワークの入力が多次元特徴マップであるとき、スプライスモジュールは、メモリアドレッシング等の操作によって多次元テンソルデータ(例えば、長さ、幅及びチャネルの3つの次元を含むテンソルデータ)を検索して、チャネル次元においてテンソルデータに対してスプライス操作を行った後、所定数のチャネルを有する元の特徴マップをより多くのチャネルの特徴マップに変換することができ、それによりネットワークの計算性能を向上させる。
【0043】
拡張モジュール(unpoolingモジュールとも称される)は元の特徴マップの拡張を実現することに用いられる。拡張モジュールは、予め設定された拡張パラメータに基づいて元の特徴マップの長さ・幅を拡張することができる。例えば、拡張パラメータ(unpoolingsize)が2*2である場合、拡張モジュールは元の特徴マップの長さ・幅をそれぞれ元の長さ・幅の二倍に拡張することができ、それにより画像拡張機能を実現し、異なるサイズの特徴マップのスプライス操作にも役立つ。
【0044】
特徴マッピングを実現するために、畳み込みモジュール(convolutionモジュールとも称される)は設定された畳み込みカーネルに応じて特徴データに対して畳み込み操作を行うことに用いられる。
【0045】
パラメータのビット数を減少させ、パラメータ量を減少させ、ニューラルネットワークの量子化圧縮を実現するために、量子化モジュール(quantizingモジュールとも称される)は、設定された量子化パラメータ(例えばT閾値パラメータ)に応じて特徴データに対して量子化操作を行うことに用いられてもよい。
【0046】
無論、具体的な応用において、機能演算モジュールは更に逆畳み込みモジュール、プーリングモジュール又は全結合モジュール等を含んでもよい。復元作用を実現するように、逆畳み込みモジュール(deconvolutionモジュールとも称される)は畳み込み操作を行った特徴マップの拡張を実現することに用いられてもよい。プーリングモジュールは、データの次元を低減させ、主な特徴を保持するとともに、パラメータを減少させることに用いられてもよく、同時に、並進不変性、回転不変性、スケール不変性等のデータ不変性を実現することもできる。全結合モジュールは、多次元情報の整合、抽出された特徴の分類に用いられてもよい。
【0047】
本実施例において、それぞれの機能演算モジュールは1つ又は複数の演算タイプに対応する。演算タイプは、スプライス演算、拡張演算、畳み込み演算、プーリング演算、量子化演算、非線形演算又は全結合演算を含む。具体的に実施するとき、スプライス演算はスプライスモジュールを用いて実現されてもよく、拡張演算は拡張モジュールを用いて実現されてもよく、畳み込み演算は畳み込みモジュールを用いて実現されてもよく、プーリング演算は、一実施形態において、プーリングモジュールを用いて実現されてもよく、具体的に、畳み込み操作の後で、平均/最大プーリング操作を行ってもよく、別の実施形態において、畳み込みモジュールを用いて実現されてもよく、具体的に、プーリングモジュールに代えてストライド(stride)を持つ畳み込みモジュールを使用してもよく、そして、プーリングモジュールなしに畳み込み+プーリング操作を実現することができる。量子化演算は量子化モジュールを用いて実現されてもよく、非線形演算は、一実施形態において、非線形活性化関数を用いて実現されてもよく、別の実施形態において、量子化モジュールを用いて実現されてもよく、具体的に、当該量子化モジュールは浮動小数点数値をマルチビット値に量子化することで、非線形活性化関数を代替する。全結合演算は、一実施形態において、全結合モジュールを用いて実現されてもよく、別の実施形態において、1*1畳み込みカーネルサイズの畳み込みモジュールを用いて実現されてもよい。
【0048】
演算装置は複数の機能演算モジュールの組み合わせを含んでもよく、一実施形態において、
図2に示す演算装置の構造模式図を参照してもよい。該構造模式図においてマルチニューラルネットワークアーキテクチャを直感的に示す。
図2から分かるように、該演算装置にスプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュールが含まれる。該マルチニューラルネットワークアーキテクチャの演算過程において、スプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュールという複数の機能演算モジュールの組み合わせ及びモジュールパラメータの設定によって、該マルチニューラルネットワークアーキテクチャは、複数のネットワーク構造を実現することができ、それぞれのネットワーク構造が1つの演算パスに対応し、異なる計算ロジックを実現することができる。ただし、
図2に簡単に示すが、実際の応用において、機能演算モジュールの種類、数及び接続関係を柔軟に設定することができる。
【0049】
マルチニューラルネットワークアーキテクチャが多層演算を実行するとき、異なる層演算に必要な機能演算モジュールも異なり、つまり、異なる演算パスを用いて演算することにより、異なる計算ロジックを実現することができると理解される。
【0050】
様々なニューラルネットワークモデルは、基本的にスプライス演算及び畳み込み演算を利用する必要があるため、一実施形態において、すべての演算パスにはいずれも少なくともスプライスモジュール及び畳み込みモジュールが含まれる。これを基に、本実施例は以下の複数の演算パスの例を挙げた。
【0051】
例1、第一演算パスには更に拡張モジュールが含まれ、逆畳み込み操作を実現するために、畳み込みモジュールが拡張モジュールの後に接続される。
【0052】
例2、全結合操作を実現するために、第二演算パスにおいて、畳み込みモジュールは1*1畳み込みカーネルサイズの畳み込み層を含む。
【0053】
例3、第三演算パスには更に量子化モジュールが含まれ、且つ量子化操作を実現するために、量子化モジュールが第三演算パスの末端に設置される。
【0054】
例4、畳み込み操作を実現するために、第四演算パスにはスプライスモジュール及び畳み込みモジュールのみが含まれる。
【0055】
ただし、以上に典型的な計算ロジックを実現するための簡単な演算パスのみを提供するが、実際の応用において、演算パスの選択は、実行する計算ロジック及びマルチニューラルネットワークに含まれる機能演算モジュールタイプに関わり、複数の演算パスの実現形態を有してもよく、ここで制限的なものと見なされるべきではない。
【0056】
ハードウェアのリソース使用率を更に向上させるために、本実施例に係るマルチニューラルネットワークアーキテクチャは更に以下の形態を用いた。
【0057】
形態1、マルチニューラルネットワークアーキテクチャにプーリングモジュールを設定する必要がなく、つまり、畳み込みモジュールの後に平均/最大プーリングモジュールを更に接続する必要がなく、ストライドを持つ畳み込みを直接用いれば、畳み込み演算及びプーリング演算を同時に実現することができる。具体的に、本実施例に係る畳み込みモジュールは、ストライドを持つ畳み込み層を含む。畳み込み層のストライドが1である場合、畳み込みモジュールは畳み込み演算を実現することに用いられ、畳み込み層のストライドが1ではない場合、畳み込みモジュールは畳み込み演算及びプーリング演算を同時に実現することに用いられる。このような形態によって、畳み込みモジュールを多重化することができ、プーリングモジュールを組み立てる必要がなく、ハードウェアリソースを節約するとともに、ハードウェアのリソース使用率も向上させる。
【0058】
従来技術におけるニューラルネットワークは、畳み込み操作を行ってからプーリング操作を行う必要があり、計算を実現するために、各項の操作はいずれも常にメモリにアクセスしてデータを読み取る必要がある。本形態において、ストライドを持つ畳み込み層を用いて、畳み込み操作及びプーリング操作を1つの畳み込み過程に統合して完了することができ、畳み込みモジュールのハードウェアのリソース使用率を向上させるとともに、メモリのアクセス量及び計算量を効率よく減少させることもできる。
【0059】
形態2、マルチニューラルネットワークアーキテクチャには、非線形活性化関数を設定する必要がなく、つまり、独立した非線形活性化操作を行わずに、量子化モジュールを直接用いれば実現できる。具体的に、本実施例に係る量子化モジュールは浮動小数点数値を下位ビット値に量子化することで、パラメータ圧縮及び非線形演算を実現することができる。下位ビット値がより下位であり、具体的にk−bitで示してもよく、必要に応じて、k値を柔軟に設定してもよく、つまり、本実施例に係る量子化モジュールはk−bit量子化で非線形活性化関数を代替してもよい。一般的な非線形関数は、例えばsigmoid関数である1/((1+e^(−x)))、relu関数であるf(x)=max(x、0)等がある。非線形関数の導入によって、ネットワークがより高い汎化能力を有する。relu関数を例とし、ニューラルネットワークにおける一部のニューラルの出力を0とすることができ、従って、ネットワークスパース性を発生させ、オーバーフィッティングをある程度で緩和するとともに、実際のニューラル活性化モデルにも更に接近する。従来のニューラルネットワークモデルは、最後にさらなる非線形活性化操作を導入する必要があるが、本形態において、量子化モジュールの量子化操作を直接利用してニューラルネットワークの非線形を実現し、ネットワークパラメータを圧縮する上で、対応する非線形能力及び精度を維持することもできる。
【0060】
理解しやすくするために、
図3に量子化操作の模式図を示す。該量子化操作は、主に量子化モジュールで実現され、現在のネットワーク構造における浮動小数点数値を入力するとき、まず浮動小数点数値の最大値及び最小値を記憶し、次に各浮動小数点数値をk−bit整数で示す必要があり、必要に応じて、k値を予め設定してもよい。実際の応用において、k−bitがより下位のビット値を示してもよい。
図3には上記形態を用いて量子化演算を行ってk−bitで示す実数値を取得し、更に量子化最大値及び量子化最小値を明確に示す。例えば、k=8と仮定する場合、浮動小数点数値の最大値及び最小値からなる数値範囲を空間線形形態で256セグメントに分割し、各セグメントに対して唯一の8−bit整数で該セグメント内の実数値を示す。例えば、(−3.0、6.0)区間内において、バイト0が−3.0を示し、バイト255が6.0を示し、このように類推して、バイト128が1.5を示し、従ってk−bitの低ビット幅の出力又は高ビット幅の出力を得る。
【0061】
本形態における量子化モジュールによって、従来の非線形活性化関数を効率よく代替するために、量子化操作を実現するとき、ニューラルネットワークの圧縮を完了できるだけでなく、更に非線形を導入することもでき、量子化モジュールのハードウェアのリソース使用率を向上させる。
【0062】
形態3、マルチニューラルネットワークアーキテクチャにおいて逆畳み込み(転置畳み込み)モジュールを独立して設定する必要とせず、拡張モジュールの後に畳み込みモジュールを接続することで実現してもよい。従来技術において、畳み込み操作は多くのニューラルネットワーク構造の常用操作として、完全畳み込みネットワーク等のネットワーク構造において逆畳み込み操作を行う必要がある可能性があるため、更に逆畳み込みモジュールを独立して組み立てる必要があり、畳み込みモジュールを多重化することができない。ところが、本形態において、拡張モジュールの後に畳み込みモジュールを接続して逆畳み込み操作を実現することができる。つまり、拡張操作形態で逆畳み込み操作を代替することにより、該形態において、畳み込みモジュールを多重化することができ、ハードウェアのリソース使用率を効率よく向上させる。
【0063】
形態4、マルチニューラルネットワークアーキテクチャにおいて全結合モジュールを独立して設定する必要がなく、1*1畳み込みカーネルサイズの畳み込みモジュールを用いれば全結合操作を実現することができる。このような形態によって、畳み込みモジュールを多重化することができるとともに、ハードウェアのリソース使用率を向上させ、マルチニューラルネットワークアーキテクチャも更に簡素化する。
【0064】
以上の4つの形態によって、マルチニューラルネットワークはハードウェアリソースを効率よく節約することができ、畳み込みモジュール、量子化モジュール等の従来の機能演算モジュールは複数の演算操作時に多重化されてもよく、ハードウェアのリソース使用率を効果的に向上させる。
【0066】
実施例2に係る演算装置に基づき、本実施例は演算実行設備を提供する。該演算実行設備は、コントローラ、メモリ及び実施例2における演算装置を含む。メモリは予め設定された単一命令セットを記憶することに用いられる。単一命令セットは、演算装置が多層演算を行う際に各層演算に対応する単一命令を含む。それぞれの単一命令はモジュール選択パラメータ及びモジュール動作パラメータを含む。
【0067】
無論、メモリには更に演算装置における各機能演算モジュールの演算時に必要なデータが記憶される。例えば、畳み込みモジュールに必要な重みデータ、畳み込みカーネルパラメータ、量子化モジュールに必要な閾値データ等の各機能演算モジュールに対応するパラメータが記憶される。ここで詳細な説明は省略する。
【0068】
コントローラはメモリから演算装置に必要な現在層演算に対応する現在の単一命令を読み取って、現在の単一命令に含まれるモジュール選択パラメータ及びモジュール動作パラメータを解析することにより、現在の単一命令に対応する演算パスを決定することに用いられる。コントローラは更に演算装置に制御信号を送信することにより、演算装置を現在の単一命令に対応する演算パスに連通することに用いられる。具体的に、演算装置には単一命令に対応する演算パスを形成させるために、コントローラは命令デコーダによってモジュール選択パラメータ及びモジュール動作パラメータを持っている単一命令を解析することにより、制御信号を生成することができる。
【0069】
ニューラルネットワークは、実行中に多層演算を実行する必要がある。従来のニューラルネットワークにおいて、異なる層演算のために、異なるネットワーク構造を構築する必要がある可能性があるため、ハードウェアのリソース消費量が極めて大きい。本実施例に係る演算装置は、多機能多重化をサポートすることができ、単一命令に基づいて演算装置の演算パスを決定すれば、ニューラルネットワークのすべての層演算はいずれも該演算装置を用いて実現されてもよい。各層演算のために、対応するハードウェア構造を独立して構築する必要とせず、組み合わせ形態で該演算装置における既存のコンピューティングハードウェアを共有することができるので、コンピューティングハードウェアリソースを大幅に節約し、ハードウェアの使用率を向上させる。
【0070】
演算装置は、コントローラの制御で現在の単一命令に対応する演算パスを連通し、現在の単一命令に対応する演算パスを利用して演算装置の現在層演算における入力データを演算処理し、現在層演算の出力データを生成する。現在層演算の入力データは演算装置が前層演算時に取得した出力データであり、現在層が第一層である場合、第一層演算の入力データが処理対象画像である。本実施例に係る演算装置は実行装置(Execution Unit、EU)とも称されてもよい。入力データがEUを通過すれば、ニューラルネットワークの実行中の1つのネットワーク構造層の演算を完了することができる。すべての層は同一EUを繰り返し利用すれば、ニューラルネットワークのすべての演算過程を実現することができる。各層演算時に、対応する単一命令を読み取って、EUを該層演算の実現可能なネットワーク構造にコンパイルし、入力データが該ネットワーク構造で形成された演算パスを流れれば、出力データを取得することができる。該出力データは更に次の層の入力データとして、EUの入力側に改めて入力されてもよい。このように繰り返して実行すれば、すべての層の演算を実現して、最終結果を取得することができる。このような形態によって、従来技術におけるニューラルネットワークを実現するためのハードウェア装置において、複数のEUを用いて異なる層演算を実行する際に、ハードウェアリソースを浪費する恐れがあるという問題を効率よく解決した。
【0071】
本発明の実施例に係る上記演算実行設備において、コントローラは、演算装置に必要な現在層演算に対応する現在の単一命令を解析することにより、演算装置を制御して現在の単一命令に対応する演算パスを連通させることができ、それにより現在層の演算処理を行う。このような形態は、単一命令に基づいて同一演算装置を制御して異なるネットワーク構造をコンパイル形成させれば、ニューラルネットワークのすべての層のロジック演算を実現することができる。異なるネットワーク構造のために対応するコンピューティングハードウェアを独立して組み立てる必要とせず、コンピューティングハードウェアリソースを大幅に節約し、ハードウェアのリソース使用率を効果的に向上させる。
【0072】
具体的に実施するとき、単一命令にパラメータリストを持っており、パラメータリストにモジュール選択パラメータ及びモジュール動作パラメータが1つずつ示される。演算装置が各層演算を実行するとき、対応する単一命令を解析すれば、必要な機能演算モジュール及びモジュール動作パラメータを決定することができる。
【0073】
理解しやすくするために、CONV[LINES=0、KERNELSIZE1=3、KERNELSIZE2=3、STRIDE=2、QUANTIZING=1、QUANTIZINGBIT=k、OUTPUTCHANEL=n、UNPOOLSIZE=2]の単一命令を例として説明し、コントローラが該命令を読み取ると、該単一命令に対応するマルチニューラルネットワークアーキテクチャの演算パスを決定することができる。
【0074】
具体的に、LINESによって逆畳み込み操作又は畳み込み操作を実行するかを選択することができ、それにより対応する機能演算モジュールを決定する。例えば、LINES=0が逆畳み込み操作に対応するため、拡張モジュールによって拡張操作を実行して更に逆畳み込み操作に等価するように、データを拡張モジュールに入力することを選択する。KERNELSIZE1及びKERNELSIZE2がそれぞれ畳み込みカーネルパラメータN*MのN値及びM値であり、N値及びM値が同様であってもよいし、異なってもよい。命令を解析するとき、N*Mが1*1に等しいかどうかによって、全結合演算を実現したかどうかを判断することができる。UNPOOLSIZE=2の場合、拡張モジュールに対応する拡張パラメータを示し、UNPOOLSIZEの値に基づいて、該命令に対応する演算パスには拡張モジュールを選んで用いるかどうかを判断することもできる。
【0075】
STRIDEが畳み込みモジュールのストライドを示し、STRIDEが1であるかどうかによって、畳み込み操作の後で更にプーリング操作を実行するかどうかを選択することができ、それにより畳み込みモジュールの実行形態を決定する。具体的に、STRIDE=1の場合、畳み込みモジュールが畳み込み演算のみに対応するが、プーリング演算を行わないことを示す。STRIDE=2、3、4……の場合、畳み込みモジュールが畳み込み演算の後で更にプーリング演算を行う必要があると示される。
【0076】
QUANTIZINGの値によって量子化操作を実行するかどうかを決定することができる。例えば、QUANTIZING=1は量子化操作を実行する必要があることに対応するが、QUANTIZING=0は量子化操作を実行する必要がないことに対応する。且つ、QUANTIZINGBIT=kにおけるk値に基づいて、量子化モジュールは量子化操作を実行するとき、更にk−bit量子化形態で非線形活性化関数を代替してもよく、それによりニューラルネットワークに非線形を導入し、ニューラルネットワーク演算の信頼性及びロバスト性を向上させる。
【0077】
また、OUTPUTCHANEL=nがスプライスモジュールのチャネルパラメータを示す。
【0078】
本実施例に係る命令は最小命令セット(minimal neural instruction set computer、MNISC)であり、つまり、パラメータリストを持っている1つの単一命令に過ぎず、パラメータリストにはLINES、QUANTIZING等のモジュール選択パラメータが含まれるだけでなく、更にKERNELSIZE1、KERNELSIZE2、STRIDE、QUANTIZINGBIT、OUTPUTCHANEL、UNPOOLSIZE等のモジュール動作パラメータが含まれる。STRIDE、KERNELSIZE1及びKERNELSIZE2等のモジュール動作パラメータの値も対応する機能演算モジュール(例えば、畳み込みモジュール)が実現できる機能を直接決定する。例えば、UNPOOLSIZE等のモジュール動作パラメータは、一方で、モジュール選択特徴意味も有し、つまり、その値に基づいて対応する機能実行モジュールを選択するかどうかを判断することができ、他方で、該機能実行モジュールの動作パラメータも示す。UNPOOLSIZE=2は、一方で、拡張モジュールを選択することを示し、他方で、該拡張モジュールの動作パラメータが元の特徴マップの長さ・幅を元の長さ・幅の二倍に拡張することを示す。
【0079】
ただし、以上のパラメータは模式的な説明に過ぎず、実際の応用において、単一命令パラメータを柔軟に定義することができる。例えば、LINES=0を逆畳み込み操作を必要とするように定義してもよいし、LINES=1を逆畳み込み操作を必要とするように定義してもよい。無論、他の数値を逆畳み込み操作を必要とするように定義してもよく、コントローラが命令デコーダによって予め定義されたパラメータに基づいて解析するようにすればよく、ここでパラメータの設定を制限しない。
【0080】
従来技術における各演算操作がいずれも複数の命令を必要とすることに比べて、本実施例に係る最小命令セットは、パラメータを持っている単一命令のような簡単な形態を用いて、コントローラに単一命令に基づいて演算装置に対応するネットワーク構造を決定させることができ、それにより対応する演算操作を実行し、非常に迅速且つ効率的である。単一命令に持っているパラメータが異なって、演算装置に対応する演算パスも異なるため、異なる計算ロジック結果を取得することができる。同一演算装置(つまり、実行装置EU)はすべての層の演算を実現することができるため、各層演算時にいずれも対応する単一命令を読み取ることができ、単一命令を解析すれば、該層演算のEUにおける演算パスを決定することができる。
【0081】
理解しやすくするために、
図4〜
図9を参照しながら、本実施例に係る演算実行設備の演算過程を例示的に説明する。
【0082】
まず、
図4に示す演算実行設備の構造模式図を参照する。
図4において、演算装置(マルチニューラルネットワークアーキテクチャ)及びメモリ(内部には重みデータW data、閾値データBT data、畳み込みカーネルパラメータ等の各機能演算モジュールに必要なデータが含まれる)を示す。メモリには更にネットワーク構造の複数の単一命令で構成されるセットが記憶され、具体的にメモリにおける命令レジスタに記憶されてもよい。簡単に示すために、
図4にコントローラが直接示されない。しかしながら、本質的に、単一命令の解析、各機能演算モジュールの選択、データの読取等はいずれもコントローラにより制御される。また、
図4に機能演算モジュールの選択に影響する以下の選択ノード(選択結果はいずれもコントローラが単一命令に持っているパラメータに基づいて決定されるものである)を示す。
【0083】
選択1、逆畳み込みを行うかどうか
該選択結果は、入力データが拡張モジュールを流れるかどうかによって決定される。本実施例において、拡張モジュールを用いて拡張操作を実行することにより、逆畳み込み操作効果を実現する。具体的に実現するとき、拡張モジュールの後に逆畳み込みモジュールの代わりに畳み込みモジュールを接続してもよい。具体的に、単一命令におけるLINES値に基づいて決定されてもよい。
【0084】
選択2、プーリングを行うかどうか
該選択結果は、畳み込みモジュールが畳み込み演算の後でプーリング演算を行うかどうか、及び畳み込みモジュールの実行中のストライドが1より大きいかどうかによって決定される。具体的に、単一命令におけるSTRIDE値に基づいて決定されてもよい。
【0085】
選択3、全結合を行うかどうか
該選択結果は、畳み込みモジュールに1*1畳み込みカーネルサイズの畳み込み層が含まれるかどうかによって決定される。具体的に、単一命令におけるKERNELSIZE1値、KERNELSIZE2値に基づいて決定されてもよい。
【0086】
選択4、量子化を行って、kbitに量子化したかどうかを判断する
該選択は、量子化モジュールによって畳み込みモジュールから出力されたデータに対して量子化処理を行って、非線形を導入するかどうかによって決定される。具体的に、単一命令におけるQUANTIZING値及びQUANTIZINGBIT値に基づいて決定されてもよい。
【0087】
また、
図4には更に入力データが演算装置を通過して出力データを取得し、出力データがメモリに記憶されてもよいことを示す。マルチニューラルネットワークアーキテクチャのすべての層演算はいずれも該演算装置を用いてもよいため、該演算装置のある層演算から取得した出力データを次の層演算の入力データとして該演算装置の開始側に更に入力してもよい。
【0088】
図4を基に、
図5に示す演算実行設備の畳み込み操作の模式図を参照する。
図5に示すマルチニューラルネットワークアーキテクチャにおいて、畳み込み操作の演算パスがスプライスモジュール及び畳み込みモジュールであり、その後、畳み込みモジュールによって畳み込み結果を直接出力してもよい。ニューラルネットワークの多層演算において、畳み込み層はいずれも
図5に示す演算パスを用いて実現されてもよい。畳み込み操作において、選択1の選択結果は、データがスプライスモジュールを通過して畳み込みモジュールに入り、拡張モジュールを選んで用いることがないことである。従って
図1における拡張モジュールを灰色背景で塗りつぶし、それにより該モジュールが選択不可能であることを明確に示す。しかしながら、畳み込み操作に関わる一部の演算層は畳み込みの後で更に量子化を行う必要がある可能性があるため、畳み込みモジュールから出力されたデータを量子化モジュールに更に入力することができる。従って、
図5における量子化モジュールを点線ボックスで示し、非必須と示され、演算層の必要に応じて、柔軟に選択してもよい。また、単一命令におけるストライドパラメータ(stride)に基づいて、選択2の結果、つまり、畳み込みモジュールは畳み込み演算の後でプーリング演算を行うかどうかを決定することもでき、それにより畳み込み操作及びプーリング操作を連続的に実現する。
【0089】
それに対応して、
図6に演算実行設備の逆畳み込み操作の模式図を示す。
図6に示すマルチニューラルネットワークアーキテクチャにおいて、逆畳み込み操作の演算パスはスプライスモジュール、拡張モジュール及び畳み込みモジュールを含んでもよく、その後、畳み込みモジュールによって畳み込み結果を直接出力することができる。逆畳み込み操作において、選択1の選択結果はデータを拡張モジュールによって処理する必要があることであり、従って
図6におけるマルチニューラルネットワークアーキテクチャにおいて、畳み込み操作を行うための元のスプライスモジュール(
図6の右側部分のスプライスモジュール)を灰色背景で塗りつぶし、該モジュールが選択不可能であることを明確に示す。同様に、
図6において、量子化モジュールが非必須であり、演算層の必要に応じて、柔軟に選択してもよい。
【0090】
図7に演算実行設備の全結合操作の模式図を示す。
図7に示すマルチニューラルネットワークアーキテクチャにおいて、全結合操作の演算パスにスプライスモジュール及び畳み込みモジュールが含まれ、全結合操作において、選択3の結果は、畳み込みモジュールの畳み込みカーネルサイズkernel size=1*1であり、従って1*1畳み込みカーネルサイズの畳み込みモジュールを選択して全結合操作を完成する。
【0091】
図8に演算実行設備の量子化操作の模式図を示す。
図8に示すマルチニューラルネットワークアーキテクチャにおいて、量子化操作の演算パスにスプライスモジュール、畳み込みモジュール及び量子化モジュールが含まれ、量子化操作において、選択4の結果は、量子化モジュールを含み、且つkbitに量子化されることであり、従って量子化パラメータquantizing bit=kの量子化モジュールを選択して量子化操作を実現する。
【0092】
ただし、本実施例に係る
図4〜
図8にいずれも簡単且つ模式的に説明するが、実際の応用において、異なる演算パスを実現するために、演算装置は機能演算モジュールの種類、数及び接続関係を柔軟に設定することができ、それにより異なる計算ロジックを実現する。
【0093】
要するに、本実施例に係る演算実行設備は、最小命令セット(パラメータを持つ単一命令)に基づいて、演算装置における演算パスを決定することにより、複数の演算操作を実現することができる。ニューラルネットワークのすべての層演算はいずれも該演算実行設備を用いて実現されてもよく、ハードウェアリソースを大幅に節約し、ハードウェアの使用率を向上させる。
【0095】
実施例3に係る演算実行設備に基づき、本実施例は演算実行方法を提供する。該方法は実施例3における演算実行設備に応用される。
図9に演算実行方法のフローチャートを示す。該方法は演算実行設備のコントローラで実行され、具体的に、
演算装置の現在層演算をスタートするとき、現在層演算に対応する現在の単一命令を読み取るステップS902と、
現在の単一命令のモジュール選択パラメータ及びモジュール動作パラメータを解析し、現在層演算に必要な機能演算モジュール及び機能演算モジュールに対応するモジュール動作パラメータを決定するステップS904と、
現在層演算に必要な機能演算モジュール及び機能演算モジュールに対応するモジュール動作パラメータに基づいて、演算装置における演算パスを決定し、演算パスは現在層演算に必要な機能演算モジュールを連通してなるステップS906と、
現在層演算の入力データを演算装置に入力することにより、演算装置が決定された演算パスを利用して入力データを演算処理し、現在層演算の出力データを生成し、現在層演算の入力データが演算装置の前層演算における出力データであり、現在層が第一層である場合、第一層演算の入力データが処理対象画像であるステップS908と、を含んでもよい。
メモリには、更に各演算層に対応するネットワークパラメータ、具体的に各演算層に対応する機能演算モジュールの演算時に必要なパラメータ、例えば重みデータW data、閾値データBT data、畳み込みカーネルパラメータ等が記憶される。コントローラは現在層演算の入力データを演算装置に入力するとき、更にメモリから現在層のネットワークパラメータを読み取る。コントローラはメモリに記憶される単一命令に基づいて演算装置の演算パスを決定し、次に読み取ったネットワークパラメータと合わせて、入力データを演算処理し、出力データを生成することができると理解される。
【0096】
本発明の実施例に係る上記演算実行方法において、コントローラは演算装置に必要な現在層演算に対応する現在の単一命令を解析することにより、演算装置を制御して現在の単一命令に対応する演算パスを連通させることができ、それにより現在層の演算処理を行う。このような形態は、単一命令に基づいて同一演算装置を制御して異なるネットワーク構造をコンパイル形成させ、ニューラルネットワークのすべての層のロジック演算を実現することができ、異なるネットワーク構造のために対応するハードウェアを独立して組み立てる必要とせず、ハードウェアリソースを大幅に節約し、ハードウェアのリソース使用率を効果的に向上させる。
【0097】
当業者であれば、説明を容易且つ簡単にするために、上記方法の具体的な動作過程、及び関わる関連内容(例えば演算パス、単一命令等)は上記実施例における対応過程を参照してもよく、ここで詳細な説明は省略すると明確に理解される。
【0098】
更に、本実施例はコンピュータで読み取り可能な記憶媒体を提供する。前記コンピュータで読み取り可能な記憶媒体にコンピュータプログラムが記憶され、前記コンピュータプログラムがプロセッサで実行されるとき、上記方法実施例に係る情報交換方法のステップを実行する。
【0099】
本発明の実施例に係る演算装置、演算実行設備及び演算実行方法のコンピュータプログラム製品は、プログラムコードが記憶されるコンピュータで読み取り可能な記憶媒体を含み、前記プログラムコードに含まれる命令は上記方法実施例に記載の方法を実行することに用いられてもよく、具体的な実現は方法実施例を参照してもよく、ここで詳細な説明は省略する。
【0100】
また、本発明の実施例の説明において、特に明確に規定及び制限しない限り、用語「取付」、「連結」、「接続」を広義に理解すべきであり、例えば、固定接続であってもよいし、取り外し可能な接続又は一体接続であってもよく、機械的接続であってもよいし、電気的接続であってもよく、直接連結であってもよいし、中間媒体による間接連結であってもよく、2つの素子内部の連通であってもよい。当業者であれば、具体的な状況に応じて上記用語の本発明における具体的な意義を理解することができる。
【0101】
前記機能はソフトウェア機能ユニットの形態で実現され、且つ独立した製品として販売又は使用されるとき、1つのコンピュータで読み取り可能な記憶媒体に記憶されてもよい。このような理解に基づき、本発明の技術案の本質又は従来技術に貢献する部分又は該技術案の部分はソフトウェア製品の形態で具現されてもよい。該コンピュータソフトウェア製品は、1つの記憶媒体に記憶され、一台のコンピュータ装置(パーソナルコンピュータ、サーバ、又はネットワーク装置等)に本発明の各実施例に記載の方法の全部又は一部のステップを実行させるための複数の命令を含む。上記記憶媒体はUSBメモリ、ポータブルハードディスク、読み出し専用メモリ(ROM、Read−Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク又は光ディスク等のプログラムコードを記憶できる様々な媒体を含む。
【0102】
本発明の説明において、説明すべきなのは、用語「中心」、「上」、「下」、「左」、「右」、「垂直」、「水平」、「内」、「外」等で示す方角又は位置関係は図面に示す方角又は位置関係であり、本発明を説明し且つ説明を簡素化するためのものに過ぎず、指した装置又は素子が特定の方角を有し、特定の方角で構成及び操作しなければならないことを指示又は示唆するためのものではなく、従って本発明を制限するためのものであると理解すべきではない。また、用語「第一」、「第二」、「第三」は説明のためのものに過ぎず、相対的な重要性を指示又は示唆するためのものであると理解すべきではない。
【0103】
最後に説明すべきなのは、以上に説明される実施例は、本発明の具体的な実施形態に過ぎず、本発明の技術案を説明するためのものであって、それを制限するためのものではない。本発明の保護範囲はこれに限らない。上記実施例を参照して本発明を詳しく説明したが、当業者であれば、当業者が本発明に開示される技術的範囲内に依然として上記実施例に記載の技術案に対して修正又は容易に想到し得る変更を行い、又はその一部の技術的特徴に対して等価置換を行うことができる。これらの修正、変更又は置換は、対応する技術案の本質を本発明の実施例の技術案の趣旨及び範囲から逸脱することがなく、本発明の保護範囲内に含まれるべきであると理解すべきである。従って、本発明の保護範囲は特許請求の範囲に準じるべきである。