本発明の実施例または先行技術における解決手段をより明確に説明するために、以下、実施例または先行技術の説明に用いた図面について簡単に説明する。明らかに、以下の説明中の図面は、本発明の実施例に過ぎず、当業者にとっては、創造的な労力を払うことなく、開示された図面に従って他の図面を得ることができる。
本発明の実施例における図面に合わせて、本発明の実施例における技術的解決策を明確、完全に説明し、明らかに、記載された実施例は、本発明の全部の実施例ではなく、ただ一部の実施例である。本発明の実施例に基づいて、当業者が創造的な労力を払うことなくて獲得される全ての他の実施例は本発明の保護範囲内に属する。
図1は、一実施例のコンピュータシステムのブロック図であり、当該コンピュータシステムは、プロセッサ110、当該プロセッサ110に接続される第1メモリ120及び第2メモリ130を含むことができる。ここで、当該プロセッサ110は、計算及び制御機能を提供し、獲得モジュール111、演算モジュール113及び制御モジュール112などを含むことができ、ここで、当該獲得モジュール111は、IO(Input入力/Output出力)インターフェースなどのハードウェアモジュールであることができ、演算モジュール113及び制御モジュール112はすべてハードウェアモジュールである。例えば、演算モジュール113及び制御モジュール112は、デジタル回路またはアナログ回路などであることができる。上記ハードウェア回路の物理的実現は、物理デバイスを含むがこれに限定されず、物理デバイスは、トランジスタ及びメモリスタなどを含むがこれらに限定されない。
選択的に、プロセッサは、CPU(Central Processing Unit、中央プロセッサ)、GPU(Graphics Processing Unit、グラフィックプロセッサ)またはDSP(Digital Signal Processing、デジタル信号処理)のような汎用プロセッサであることができ、当該プロセッサは、IPU(Intelligence Processing Unit、インテリジェントプロセッサ)などの専用ニューラルネットワークプロセッサであることもできる。もちろん、当該プロセッサは、命令セットプロセッサ、関連チップセット、専用マイクロプロセッサ(例えば、専用集積回路(ASIC))またはキャッシュ(cache)用途に使用されるオンボードメモリなどであることもある。
当該第1メモリまたは第2メモリには、コンピュータプログラムがさらに保存されることができ、当該コンピュータプログラムは、本出願の実施例で提供されるニューラルネットワーク処理方法を実現するために使用される。具体的に、当該ニューラルネットワーク処理方法は、当該プロセッサが受信したオリジナルネットワークに対応するオフラインモデルを生成し、当該オリジナルネットワークに対応するオフラインモデルは、当該オリジナルネットワークにおける各計算ノードのネットワークの重み及び命令などの必要なネットワーク構造情報を含むことができ、ここで、命令は、当該計算ノードがどのようなコンピューティング機能を実行するかを示すために使用され、オフラインモデルは、具体的に当該オリジナルネットワークにおける各計算ノードの計算属性及び各計算ノードの間の接続関係などの情報を含むことができるため、プロセッサが当該オリジナルネットワークを再び実行する場合、同じオリジナルネットワークを再びコンパイルする必要がなく、当該オリジナルネットワークに対応するオフラインモデルを直接に実行することができるため、当該ネットワークを実行するプロセッサの実行時間を短縮し、さらにプロセッサの処理速度及び効率を向上させる。
さらに、第1メモリ120は、キャッシュなどの揮発性メモリのような内部メモリであることができ、ネットワーク入力データ、ネットワーク出力データ、ネットワークの重み及び命令などのようなニューラルネットワーク実行過程中の関連データを保存することができる。第2メモリ130は、外部メモリなどの不揮発性メモリであることができ、第2メモリは、ニューラルネットワークに対応するオフラインモデルを保存することができる。従って、コンピュータシステムが当該オリジナルネットワークを実行するためにオリジナルネットワークを再びコンパイルする必要がある場合、第2メモリから当該オリジナルネットワークに対応するオフラインモデルを直接に獲得することができるため、プロセッサの処理速度及び効率を向上させる。
もちろん、他の実施例において、当該コンピュータシステムは、プロセッサと一つのメモリを含むことができ、図2に示したように、当該コンピュータシステムは、プロセッサ210と当該プロセッサ210に接続させるメモリ220を含むことができる。当該プロセッサ210は、獲得モジュール211、制御モジュール212及び演算モジュール213を含むことができ、具体的な構造は、上記プロセッサ110に関する説明を参照することができる。当該メモリ220は、第1記憶ユニット221、第2記憶ユニット222及び第3記憶ユニット223を含むことができ、ここで、当該第1記憶ユニット221は、本出願の実施例で提供するニューラルネットワーク処理方法を実現するためのコンピュータプログラムを保存するために使用されることができる。当該第2記憶ユニット222は、オリジナルネットワークの実行過程中の関連データを保存するために使用されることができ、当該第3記憶ユニット223は、オリジナルネットワークに対応するオフラインモデルを保存するために使用される。さらに、当該メモリに含まれる記憶ユニットの数は3より多くてもよく、ここでは具体的に限定されない。
明らかに、本実施例におけるオリジナルネットワークの実行とは、プロセッサが人工ニューラルネットワークモデルデータを使用してある機械ラーニングアルゴリズム(例えば、ニューラルネットワークアルゴリズム)を実行し、フォワード演算を実行することによりアルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することを指す。本実施例において、当該オリジナルネットワークに対応するオフラインモデルを直接に実行するとは、オフラインモデルを使用して当該オリジナルネットワークに対応する機械ラーニングアルゴリズム(例えば、ニューラルネットワークアルゴリズム)実行し、フォワード演算を実行することによりアルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することを指す。
図3に示したように、本発明の一実施例のニューラルネットワークの処理方法は、獲得されたオリジナルネットワークの関連データに従って当該オリジナルネットワークのオフラインモデルを生成及び保存することにより、プロセッサが当該オリジナルネットワークを再び実行する場合、同じオリジナルネットワークを再びコンパイルする必要がなく、当該オリジナルネットワークに対応するオフラインモデルを直接に実行することができるため、当該ネットワークを実行するプロセッサの実行時間を短縮し、さらにプロセッサの処理速度及び効率を向上させる。具体的に、上記方法は、以下のステップを含む。
S100において、オリジナルネットワークのモデルデータセット及びモデル構造パラメータを獲得する。具体的に、プロセッサの獲得モジュールを介してオリジナルネットワークのモデルデータセット及びモデル構造パラメータを獲得し、当該オリジナルネットワークのモデルデータセット及びモデル構造パラメータを介して当該オリジナルネットワークのネットワーク構造図を獲得することができる。ここで、モデルデータセットは、オリジナルネットワークにおける各計算ノードに対応するネットワークの重みなどのデータを含み、図7に示したニューラルネットワークにおけるW1~W6は、計算ノードのネットワークの重みを表すために使用される。モデル構造パラメータは、オリジナルネットワークにおける複数の計算ノードの接続関係及び各計算ノードの計算属性を含み、ここで、計算ノードの間の接続関係は、計算ノードの間にデータ伝達があるかどうかを表すために使用され、例えば、複数の計算ノードの間にデータフローの伝達がある場合、複数の計算ノードの間に接続関係があると説明することができる。さらに、計算ノードの接続関係は、入力関係及び出力関係などを含むことができる。図7に示したように、計算ノードF1が計算ノードF4及びF5の入力として出力する場合、計算ノードF1と計算ノードF4との間に接続関係があり、計算ノードF1と計算ノードF5との間に接続関係があると説明できる。別の例として、計算ノードF1と計算ノードF2との間にデータ伝達がない場合、計算ノードF1と計算ノードF2との間に接続関係が存在しないと説明できる。
各計算ノードの計算属性は、対応する計算ノードの計算タイプ及び計算パラメータを含むことができ、ここで、計算ノードの計算タイプとは、当該計算ノードがある計算を完了することに使用されることを指し、例えば、計算ノードの計算タイプは、加算、減算、及び畳み込み算など含むことができ、対応的に、当該計算ノードは、加算を実現するための計算ノード、減算を実現するための計算ノードまたは畳み込み算を実現するための計算ノードなどであることができる。計算ノードの計算パラメータは、当該計算ノードに対応する計算タイプを完了する必要なパラメータであることができる。例えば、計算ノードの計算タイプは、加算を実現するための計算ノードであることができ、対応的に、当該計算ノードの計算パラメータは、加算における加数であることができ、当該加算における被加数は、入力データとして獲得モジュールを介して獲得することができ、または、当該加算における被加数は、当該計算ノードの前の計算ノードの出力データなどであることができる。
選択的に、当該オリジナルネットワークは、TensorFlow、MXNet、Caffe及びPyTorchなどのディープラーニングシステムに基づいて、CPU、GPUまたはDSPなどの汎用プロセッサに対して構築した人工ニューラルネットワークであることができる。当該オリジナルネットワークは、IPUなどのインテリジェントプロセッサに対して構築した人工ニューラルネットワークであることもできる。例えば、当該オリジナルネットワークがCaffeに基づいて構築したニューラルネットワークである場合、当該Caffeネットワークのモデルデータセット(caffemodel)及びモデル構造パラメータ(prototxt)を獲得することができる。ここで、モデルデータセット(caffemodel)は、当該Caffeネットワークの重みなどのデータを含み、モデル構造パラメータ(prototxt)は、当該Caffeネットワークの各計算ノードの計算属性及び複数の計算ノードの間の接続関係などを含む。
S200において、オリジナルネットワークのモデルデータセット及びモデル構造パラメータに従ってオリジナルネットワークを実行して、オリジナルネットワークにおける各計算ノードに対応する命令を獲得する。具体的に、プロセッサの演算モジュールは、オリジナルネットワークのモデルデータセット及びモデル構造パラメータに従って当該オリジナルネットワークを実行して、オリジナルネットワークにおける各計算ノードに対応する命令を獲得することができる。さらに、プロセッサの獲得モジュールは、当該オリジナルネットワークの入力データをさらに獲得することができ、プロセッサの演算モジュールは、オリジナルネットワークの入力データ、ネットワークモデルデータセット及びモデル構造パラメータに従ってオリジナルネットワークを実行して、当該オリジナルネットワークにおける各計算ノードに対応する命令を獲得することができる。さらに、上記当該オリジナルネットワークを実行して各計算ノードの命令を獲得する過程は、実際にコンパイルの過程であり、当該コンパイル過程は、コンピュータシステムのプロセッサまたは仮想デバイスを介して実現することができる。即ち、コンピュータシステムのプロセッサまたは仮想デバイスは、オリジナルネットワークのモデルデータセット及びモデル構造パラメータに従ってオリジナルネットワークを実行する。ここで、仮想デバイスとは、メモリのメモリ空間でプロセッサ実行空間のセクションを仮想することを指す。
明らかに、本実施例におけるオリジナルネットワークの実行とは、プロセッサが人工ニューラルネットワークモデルデータを使用してある機械ラーニングアルゴリズム(例えば、ニューラルネットワークアルゴリズム)を実行し、フォワード演算を実行することにより、アルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することを指す。
S300において、オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、オリジナルネットワークに対応するオフラインモデルを生成し、前記オリジナルネットワークに対応するオフラインモデルを不揮発性メモリ(例えば、データベース)に保存する。具体的に、当該プロセッサの制御モジュールは、オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、当該オリジナルネットワークに対応するオフラインモデルを生成することができ、例えば、当該プロセッサの制御モジュールは、オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を不揮発性第2メモリに保存して、オフラインモデルの生成及び保存を実現することができる。ここで、オリジナルネットワークの各計算ノードについて、当該計算ノードのネットワークの重みと命令は、1対1に対応するように保存される。このようにして、当該オリジナルネットワークを再び実行する場合、不揮発性メモリから当該オリジナルネットワークに対応するオフラインモデルを直接に獲得することができ、それに対応するオフラインモデルに従ってオリジナルネットワークを実行し、当該オリジナルネットワークの各計算ノードに対してオンラインでコンパイルして命令を獲得することなく、システムの実行速度及び効率を向上させる。
明らかに、本実施例において、当該オリジナルネットワークに対応するオフラインモデルを直接に実行するとは、オフラインモデルを使用して当該オリジナルネットワークに対応する機械ラーニングアルゴリズム(例えば、ニューラルネットワークアルゴリズム)実行し、フォワード演算を実行することによりアルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することを指す。
選択的に、図4に示したように、前記ステップS200は、以下のステップを含むことができる。
S210において、オリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワークにおける各計算ノードの実行順序を獲得する。具体的に、プロセッサの演算モジュールは、オリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワークにおける各計算ノードの実行順序を獲得することができ、さらに、プロセッサの演算モジュールは、オリジナルネットワークにおける各計算ノードの接続関係に従って、オリジナルネットワークにおける各計算ノードの実行順序を獲得することができる。例えば、図7に示したように、計算ノードF4の入力データは、計算ノードF1の出力データ及び計算ノードF2の出力データであり、計算ノードF6の入力データは、計算ノードF4の出力データ及び計算ノードF5の出力データである。従って、図7に示したニューラルネットワークにおける各計算ノードの実行順序は、F1-F2-F3-F4-F5-F6またはF1-F3-F2-F5-F4-F6などであることができる。もちろん、計算ノードF1、F2及びF3は、並列に実行することができ、計算ノードF4及びF5も並列に実行することができ、ここでは単に例として説明し、実行順序は具体的に限定されない。
S220において、オリジナルネットワークにおける各計算ノードの実行順序に応じてオリジナルネットワークを実行して、オリジナルネットワークにおける各計算ノードに対応する命令をそれぞれ獲得する。具体的に、プロセッサの演算モジュールは、オリジナルネットワークにおける各計算ノードの実行順序に従って当該オリジナルネットワークを実行して、オリジナルネットワークにおける各計算ノードに対応する命令を獲得することができ、即ち、プロセッサは、オリジナルネットワークのモデルデータセットなどのデータをコンパイルして各計算ノードに対応する命令を獲得することができ、各計算ノードに対応する命令を介して当該計算ノードがどのようなコンピューティング機能を実現するかを知ることができ、即ち、当該計算ノードの計算タイプ及び計算パラメータなどの計算属性を獲得することができる。
さらに、図4に示したように、前記ステップS300はさらに以下のステップを含む。
S310において、オリジナルネットワークのモデルデータセット及びモデル構造パラメータに従って、オリジナルネットワークのメモリ割り当て方法を獲得する。具体的に、プロセッサの演算モジュールは、オリジナルネットワークのモデルデータセット及びモデル構造パラメータに従って、オリジナルネットワークのメモリ割り当て方法を獲得することができる。さらに、プロセッサは、オリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワークにおける各計算ノードの実行順序を獲得することができ、オリジナルネットワークにおける各計算ノードの実行順序に従って、現在のネットワークのメモリ割り当て方法を決定する。例えば、各計算ノードの実行順序に従って、各計算ノードの実行過程中の関連データは、一つのスタックに保存される。ここで、メモリ割り当て方法とは、オリジナルネットワークにおける各計算ノードに関連するデータ(入力データ、出力データ、ネットワークの重みデータ及び中間結果データなどを含む)がメモリ空間(例えば、第1メモリ)での保存位置を決定することを指す。例えば、データテーブルを使用して各計算ノードに関連するデータ(入力データ、出力データ、ネットワークの重みデータ及び中間結果データなど)とメモリ空間のマッピング関係を保存することができる。
S320において、オリジナルネットワークのメモリ割り当て方法に従って、オリジナルネットワークの実行過程中の関連データを第1メモリに保存する。ここで、オリジナルネットワークの実行過程中の関連データは、オリジナルネットワークの各計算ノードに対応するネットワークの重み、命令、入力データ、中間計算結果及び出力データなどを含む。例えば、図7に示したように、X1とX2は、当該ニューラルネットワークの入力データを表し、Yは、当該ニューラルネットワークの出力データを表し、プロセッサは、当該ニューラルネットワークの出力データをロボットまたは異なるデジタルインターフェースを制御する制御命令に転換することができる。W1~W6は、計算ノードF1、F2及びF3に対応するネットワークの重みを表すために使用され、計算ノードF1~F5の出力データは、中間計算結果として使用することができる。プロセッサは、決定されたメモリ割り当て方法に従って、オリジナルネットワークの実行過程中の関連データを内部メモリまたはキャッシュなどの揮発性メモリのような第1メモリに保存することができ、具体的な保存方法は、図8における左半部の保存空間を参照することができる。
S330において、第1メモリからオリジナルネットワークにおける各計算ノードに対応するネットワークの重み及び命令を獲得し、オリジナルネットワークにおける各計算ノードに対応するネットワークの重み及び命令を第2メモリに保存し、オフラインモデルを生成する。ここで、第2メモリは、外部メモリなどの不揮発性メモリであることができる。当該オフラインモデルの生成過程は、具体的に図8を参照することができ、図8における右半部の保存空間に保存されたのは、オリジナルネットワークの対応するオフラインモデルである。
図7及び図8に示したように、以下、図面に合わせて、上記オフラインモデルの生成過程を説明する。
まず、図7に示したように、プロセッサは、当該オリジナルネットワークのモデルデータセット、モデル構造パラメータ及び入力データを獲得することができるため、当該オリジナルネットワークのモデルデータセット及びモデル構造パラメータに従って当該オリジナルネットワークのネットワーク構造図を獲得することができる。
次に、プロセッサは、オリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワーク各計算ノードの接続関係を獲得することができ、各計算ノードの接続関係に従ってオリジナルネットワークにおける各計算ノードの実行順序、及びオリジナルネットワークの実行過程中のメモリ割り当て方法を獲得するため、オリジナルネットワークの実行過程中の関連データの保存位置を獲得することができる。図8の左半部の保存空間に示したように、オリジナルネットワークの実行過程中の関連データは、各計算ノード実行順序に応じて一つのスタックに保存されることができる。
最後に、プロセッサは、オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を不揮発性の第2メモリに保存し、オフラインモデルを生成することができ、当該オフラインモデルの保存方法は、図8における右半部の保存空間を参照することができる。また、当該オフラインモデルは、当該オリジナルネットワークを実行するに必要なネットワークの重み及び命令などのデータのみを含み、オリジナルネットワークの実行過程中の入力データ、出力データまたは中間計算結果などを保存する必要がないため、第2メモリにおける保存空間の消費を減少することができる。
さらなる改善として、オフラインモデルには、ノードインターフェースデータがさらに含まれ、ノードインターフェースデータは、オリジナルネットワークの各計算ノードの接続関係を表すために使用される。具体的に、ノードインターフェースデータは、各計算ノードの入力データソース及び出力データソースを含むことができる。例えば、図7に示したように、ノードインターフェースデータは、計算ノードF1、F2及びF3を開始計算ノードとして含むことができ、それぞれ予め設定された入力データを入力し、計算ノードF1の出力データは、計算ノードF4及び計算ノードF5の入力データなどである。このようにして、当該オリジナルネットワークを再び実行する場合、オリジナルネットワークの開始計算ノードと入力データのみを獲得し、その後、当該オリジナルネットワークに対応するオフラインモデルに従って当該オリジナルネットワークを実行することができる。
一つの実施例において、オフラインモデルを生成した直後にオフラインモデルを使用して演算を実行し、オフラインモデルを保存することもでき、計算が必要なときにオフラインモデルを使用する。図5に示したように、前記方法は以下のステップをさらに含む。
S400において、新しいオリジナルネットワークのモデルデータセット及びモデル構造パラメータを獲得する。具体的に、プロセッサの獲得モジュールを介して新しいオリジナルネットワークのモデルデータセット及びモデル構造パラメータを獲得し、当該新しいオリジナルネットワークのモデルデータセット及びモデル構造パラメータを介して当該新しいオリジナルネットワークのネットワーク構造図を獲得することができる。
S500において、新しいオリジナルネットワークに対応するオフラインモデルが存在するかどうかを判断する。具体的に、新しいオリジナルネットワークのモデルデータセットがオリジナルネットワークのモデルデータセットと同じであるかどうか、新しいオリジナルネットワークのモデル構造パラメータがオリジナルネットワークのモデル構造パラメータと同じであるかどうかを判断し、両者が全部同じである場合、当該新しいオリジナルネットワークとオリジナルネットワークが同じネットワークであると判断することができ、この時、当該新しいオリジナルネットワークに対応するオフラインモデルが存在すると判定することができる。
新しいオリジナルネットワークにオフラインモデルが存在しない場合、S550を実行する。S550において、新しいオリジナルネットワークのモデルデータセット及びモデル構造パラメータに従って、新しいオリジナルネットワークを実行し、新しいオリジナルネットワークに対応するオフラインモデルを生成し、新しいオリジナルネットワークに対応するオフラインモデルを不揮発性メモリに保存する。具体的に、新しいオリジナルネットワークのモデルデータセットがオリジナルネットワークのモデルデータセットと異なる場合、及び/または新しいオリジナルネットワークのモデル構造パラメータがオリジナルネットワークのモデル構造パラメータと異なる場合、当該オリジナルネットワークが新しいオリジナルネットワークと異なるネットワークに属し、当該新しいオリジナルネットワークにオフラインモデルが存在しないと判断することができる。当該新しいオリジナルネットワークにオフラインモデルが存在しない場合、上記ステップS100~ステップS300を実行することができ、具体的な実行過程は上記説明を参照することができ、ここでは繰り返して説明しない。
さらに、複数のオフラインモデルを含む複数のデータセットを走査するか複数のオフラインモデルレコードを含む複数のデータセットを走査することにより、当該新しいオリジナルネットワークに対応するオフラインモデルが存在するかどうかを判断することができる。
新しいオリジナルネットワークにオフラインモデルが存在する場合、不揮発性メモリから新しいオリジナルネットワークに対応するオフラインモデルを獲得することができ、新しいオリジナルネットワークに対応するオフラインモデルに従って新しいオリジナルネットワークを実行する。具体的に、新しいオリジナルネットワークにオフラインモデルが存在する場合、以下のステップを実行することができる。
S510において、新しいオリジナルネットワークに対応するオフラインモデルを獲得する。具体的に、プロセッサの獲得モジュールは、第2メモリから当該新しいオリジナルネットワークに対応するオフラインモデルを読み取ることができ、即ち、プロセッサの獲得モジュールは、第2メモリから当該新しいオリジナルネットワークにおける各計算ノードに対応するネットワークの重み及び命令を読み取ることができる。
S520において、新しいオリジナルネットワークのモデル構造パラメータに従って、新しいオリジナルネットワークにおける各計算ノードの実行順序を獲得する。具体的に、プロセッサの演算モジュールは、新しいオリジナルネットワークにおける各計算ノードの接続関係に従って、当該新しいオリジナルネットワークにおける各計算ノードの実行順序を獲得する。具体的な実行過程は上記ステップS210を参照することができる。
S530において、新しいオリジナルネットワークにおける各計算ノードの実行順序に従って、オフラインモデルから新しいオリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を順次に獲得する。具体的に、プロセッサの獲得モジュールは、新しいオリジナルネットワークにおける各計算ノードの実行順序に従って、オフラインモデルから新しいオリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を順次に獲得することができる。
S540において、新しいオリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、新しいオリジナルネットワークを実行する。具体的に、プロセッサの演算モジュールは、新しいオリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、当該新しいオリジナルネットワークを直接に実行し、各計算ノードを繰り返してコンパイルする必要がない。
例えば、図7に示したニューラルネットワークにおける各計算ノードの実行順序は、F1-F2-F3-F4-F5-F6であることができ、当該ニューラルネットワークにオフラインモデルが存在する場合、まずオフラインモデルから計算ノードF1に対応するネットワークの重み及び命令を獲得することができ、その後、計算ノードF2~F6のネットワークの重み及び命令を順次に獲得するため、当該新しいオリジナルネットワークの各計算ノードを順次に実行することができ、当該新しいオリジナルネットワークにおける各ノードを再びコンパイルする必要なく、プロセッサの実行速度及び効率を向上させる。
一つの実施例において、オフラインモデルには、ノードインターフェースデータがさらに含まれ、当該ノードインターフェースデータは、オリジナルネットワークの各計算ノードの接続関係を表すために使用され、例えば、当該ノードインターフェースデータは、各計算ノードの入力データソース及び出力データソースを含むことができる。このとき、オリジナルネットワークに対応するオフラインモデルに従って、新しいオリジナルネットワークを実行するステップは、以下のステップを含む。
新しいオリジナルネットワークに対応するオフラインモデルを獲得するステップを含む。具体的に、プロセッサの獲得モジュールは、第2メモリから当該新しいオリジナルネットワークに対応するオフラインモデルを読み取ることができ、オフラインモデルは、ノードインターフェースデータを含む。
新しいオリジナルネットワークのモデル構造パラメータに従って、新しいオリジナルネットワークの開始計算ノードを獲得する。具体的に、プロセッサの演算モジュールは、新しいオリジナルネットワークのモデル構造パラメータ新しいオリジナルネットワークの開始計算ノードを獲得することができる。ここで、当該開始計算ノードの入力データは、計算ノードF1、F2及びF3の入力データのようなネットワーク入力データであり、開始計算ノードの前には、他の計算ノードが存在しない。
新しいオリジナルネットワークの開始計算ノードとオフラインモデルにおけるノードインターフェースデータに従って、オフラインモデルから新しいオリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を獲得する。具体的に、プロセッサの獲得モジュールは、新しいオリジナルネットワークの開始計算ノードとオフラインモデルにおけるノードインターフェースデータに従って、オフラインモデルから新しいオリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を順次に獲得することができる。
新しいオリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、新しいオリジナルネットワークを実行する。具体的に、プロセッサの演算モジュールは、新しいオリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、新しいオリジナルネットワークを実行することができる。
例えば、図7に示したニューラルネットワークにおける開始計算ノードは、計算ノードF1、F2及びF3であり、当該ニューラルネットワークにオフラインモデルが存在する場合、まずオフラインモデルから各開始計算ノードF1、F2及びF3の命令及びネットワークの重みを獲得することができ、その後、オフラインモデルにおけるノードインターフェースデータに従って、当該開始計算ノードF1、F2及びF3に接続された計算ノードF4及びF5を獲得するため、計算ノードF4及びF5の命令及びネットワークの重みを獲得することができる。その後、オフラインモデルにおけるノードインターフェースデータに従って、計算ノードF4及びF5に接続された計算ノードF6を獲得し、計算ノードF6の命令及びネットワークの重みを獲得することができる。このようにして、当該新しいオリジナルネットワークの各計算ノードを順次に実行することができ、当該新しいオリジナルネットワークにおける各ノードを再びコンパイルする必要がなく、プロセッサの実行速度及び効率を向上させる。
さらに、オフラインモデルにノードインターフェースデータが含まれる場合、当該インターフェイスデータには、オリジナルネットワークにおける各計算ノードの間の接続関係だけでなく、当該オリジナルネットワークの開始計算ノードなどの情報も含まれる。このとき、オリジナルネットワークに対応するオフラインモデルに従って、新しいオリジナルネットワークを実行するステップは、以下のステップを含む。
新しいオリジナルネットワークに対応するオフラインモデルを獲得する。具体的に、プロセッサの獲得モジュールは、第2メモリから当該新しいオリジナルネットワークに対応するオフラインモデルを読み取ることができ、オフラインモデルは、ノードインターフェースデータを含み、当該ノードインターフェースデータを介して、当該新しいオリジナルネットワークの開始計算ノードと他の各計算ノードとの間の接続関係など情報を獲得することができる。
新しいオリジナルネットワークの開始計算ノードとオフラインモデルにおけるノードインターフェースデータに従って、オフラインモデルから新しいオリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を順次に獲得する。具体的に、プロセッサの獲得モジュールは、新しいオリジナルネットワークの開始計算ノードとオフラインモデルにおけるノードインターフェースデータに従って、オフラインモデルから新しいオリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を順次に獲得することができる。
新しいオリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、新しいオリジナルネットワークを実行する。具体的に、プロセッサの演算モジュールは、新しいオリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、新しいオリジナルネットワークを実行することができる。
一つの実施例において、図6に示したように、本発明の一実施例は、ニューラルネットワークの処理方法をさらに提供し、上記方法は、以下のステップを含む。
S610において、オリジナルネットワークのモデル構造パラメータを獲得する。ここで、モデル構造パラメータは、オリジナルネットワークにおける複数の計算ノードの接続関係を含む。具体的に、計算ノードの間の接続関係は、計算ノードの間にデータ伝達があるかどうかを表すために使用され、例えば、複数の計算ノードの間にデータフローの伝達がある場合、複数の計算ノードの間に接続関係があることを説明することができる。さらに、計算ノードの接続関係は、入力関係と出力関係などを含むことができる。
S620において、不揮発性メモリからオリジナルネットワークに対応するオフラインモデルを獲得する。ここで、オリジナルネットワークに対応するオフラインモデルには、オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令が含まれ、オリジナルネットワークの各計算ノードについて、当該計算ノードのネットワークの重み及び命令は、1対1に対応するように保存される。プロセッサは、各計算ノードに対応する命令を介して、当該計算ノードがどのようなコンピューティング機能を実現するために使用されるかを獲得することができ、当該計算ノードの計算タイプ及び計算パラメータなどの計算属性を獲得することができる。
S630において、オリジナルネットワークに対応するオフラインモデル及びオリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワークを実行する。具体的に、本実施例において、当該オリジナルネットワークに対応するオフラインモデルを直接に実行するとは、オフラインモデルを使用して当該オリジナルネットワークに対応する機械ラーニングアルゴリズム(例えば、ニューラルネットワークアルゴリズム)実行し、フォワード演算を実行することによりアルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することを指す。
一つの実施例において、上記ステップS630は、具体的に図5におけるステップS510~ステップS540を介して実現されることができる。具体的に、上記ステップS630は以下のステップを含むことができる。
オリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワークにおける各計算ノードの実行順序を獲得する。具体的に、プロセッサの演算モジュールは、オリジナルネットワークにおける各計算ノードの接続関係に従って、当該オリジナルネットワークにおける各計算ノードの実行順序を獲得することができる。その具体的な実行過程は上記ステップS210を参照することができる。
オリジナルネットワークにおける各計算ノードの実行順序に従って、オフラインモデルから当該オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を順次に獲得する。具体的に、プロセッサの獲得モジュールは、オリジナルネットワークにおける各計算ノードの実行順序に従って、オフラインモデルから当該オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を順次に獲得する。
オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、オリジナルネットワークを実行する。具体的に、プロセッサの演算モジュールは、オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、当該オリジナルネットワークを直接に実行し、各計算ノードを繰り返してコンパイルする必要がない。
一つの実施例において、オフラインモデルには、ノードインターフェースデータがさらに含まれ、当該ノードインターフェースデータは、オリジナルネットワークの各計算ノードの接続関係を表すために使用され、例えば、当該ノードインターフェースデータは、各計算ノードの入力データソースと出力データソースを含むことができる。このとき、オリジナルネットワークに対応するオフラインモデル及びオリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワークを実行するステップは、以下のステップを含む。
オリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワークの開始計算ノードを獲得する。具体的に、プロセッサの演算モジュールは、オリジナルネットワークのモデル構造パラメータに従って、当該オリジナルネットワークの開始計算ノードを獲得することができる。ここで、当該開始計算ノードの入力データは、計算ノードF1、F2及びF3の入力データのようなネットワーク入力データであり、開始計算ノードの前には、他の計算ノードが存在しない。
当該オリジナルネットワークの開始計算ノードとオフラインモデルにおけるノードインターフェースデータに従って、オフラインモデルから当該オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を順次に獲得する。具体的に、プロセッサの獲得モジュールは、当該オリジナルネットワークの開始計算ノードとオフラインモデルにおけるノードインターフェースデータに従って、オフラインモデルから当該オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を順次に獲得することができる。
当該オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、当該オリジナルネットワークを実行する。
さらに、オフラインモデルにノードインターフェースデータが含まれる場合、このとき、オリジナルネットワークに対応するオフラインモデル及びオリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワークを実行するステップは、以下のステップを含むことができる。
当該オリジナルネットワークの開始計算ノードとオフラインモデルにおけるノードインターフェースデータに従って、オフラインモデルから当該オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を順次に獲得する。具体的に、プロセッサの獲得モジュールは、当該オリジナルネットワークの開始計算ノードとオフラインモデルにおけるノードインターフェースデータに従って、オフラインモデルから当該オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を順次に獲得することができる。
当該オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、当該オリジナルネットワークを実行する。
当業者は、上記実施例方法における全部または一部のプロセスの実現は、コンピュータプログラムに介して関連するハードウェアを命令して完了し、前記プログラムはコンピュータ可読記憶媒体に保存されることができ、当該プログラムは実行時に、上記各方法の実施例のプロセスを含むことができることを理解できる。ここで、本出願で提供される各実施例に使用されるメモリ、ストレージ、データベースまたは他の媒体への参照は、すべて不揮発性及び/または揮発性メモリを含むことができる。不揮発性メモリは、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的にプログラム可能なROM(EPROM)、電気的に消去可能なプログラム可能なROM(EEPROM)またはフラッシュメモリを含むことができる。揮発性メモリは、ランダムアクセスメモリ(RAM)または外部高速キャッシュメモリを含むことができる。制限ではない説明として、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDRSDRAM)、拡張SDRAM(ESDRAM)、同期リンク(Synchlink)、DRAM(SLDRAM)、ラムバス(Rambus)ダイレクトRAM(RDRAM)、ダイレクトラムバスダイナミックRAM(DRDRAM)、ラムバスダイナミックRAM(RDRAM)などのようなさまざまな形式で獲得することができる。
同時に、本発明の一実施例は、プロセッサ、第1メモリ及び第2メモリを含み、第1メモリまたは前記第2メモリにはコンピュータプログラムが保存され、プロセッサがコンピュータプログラムを実行するとき、上記いずれかの一つの実施例の方法を実行するコンピュータシステムをさらに提供する。具体的に、当プロセッサがコンピュータプログラムを実行するとき、具体的に以下のステップを実行する。
オリジナルネットワークのモデルデータセット及びモデル構造パラメータを獲得する。具体的に、プロセッサの獲得モジュールを介して、オリジナルネットワークのモデルデータセット及びモデル構造パラメータを獲得することができ、当該オリジナルネットワークのモデルデータセット及びモデル構造パラメータを介して、当該オリジナルネットワークのネットワーク構造図を獲得することができる。ここで、モデルデータセットは、オリジナルネットワークにおける各計算ノードに対応するネットワークの重みなどのデータを含み、モデル構造パラメータは、オリジナルネットワークにおける複数の計算ノードの接続関係及び各計算ノードの計算属性を含み、ここで、計算ノードの間の接続関係は、計算ノードの間にデータ伝達があるかどうかを表すために使用され、各計算ノードの計算属性は、対応する計算ノードの計算タイプ及び計算パラメータを含むことができ、ここで、計算ノードの計算タイプとは、当該計算ノードがある計算を完了することに使用されることを指し、例えば、計算ノードの計算タイプは、加算、減算、及び畳み込み算など含むことができ、対応的に、当該計算ノードは、加算を実現するための計算ノード、減算を実現するための計算ノードまたは畳み込み算を実現するための計算ノードなどであることができる。計算ノードの計算パラメータは、当該計算ノードに対応する計算タイプを完了する必要なパラメータであることができる。
オリジナルネットワークのモデルデータセット及びモデル構造パラメータに従って、オリジナルネットワークを実行し、オリジナルネットワークにおける各計算ノードに対応する命令を獲得する。具体的に、プロセッサの演算モジュールは、オリジナルネットワークのモデルデータセットとモデル構造パラメータに従って、当該オリジナルネットワークを実行し、オリジナルネットワークにおける各計算ノードに対応する命令を獲得する。さらに、プロセッサの獲得モジュールは、当該オリジナルネットワークの入力データをさらに獲得することができ、プロセッサの演算モジュールは、オリジナルネットワークの入力データ、ネットワークモデルデータセットとモデル構造パラメータに従って、オリジナルネットワークを実行し、当該オリジナルネットワークにおける各計算ノードに対応する命令を獲得する。さらに、上記当該オリジナルネットワークを実行して各計算ノードの命令を獲得する過程は、実際にコンパイルの過程であり、当該コンパイル過程は、仮想デバイスまたはコンピュータシステムのプロセッサを介して実現することができる。即ち、仮想デバイスまたはコンピュータシステムのプロセッサは、オリジナルネットワークのモデルデータセット及びモデル構造パラメータに従ってオリジナルネットワークを実行する。ここで、仮想デバイスとは、メモリのメモリ空間でプロセッサ実行空間のセクションを仮想することを指す。
オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、オリジナルネットワークに対応するオフラインモデルを生成し、オリジナルネットワークに対応するオフラインモデルを不揮発性メモリに保存する。具体的に、当該プロセッサの制御モジュールは、オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令に従って、当該オリジナルネットワークに対応するオフラインモデルを生成し、例えば、当該プロセッサの制御モジュールは、オリジナルネットワークの各計算ノードに対応するネットワークの重み及び命令を第2メモリなどの不揮発性メモリに保存して、オフラインモデルの生成及び保存を実現することができる。このようにして、当該オリジナルネットワークを再び実行する場合、それに対応するオフラインモデルに従って、オリジナルネットワークを直接に実行することができ、当該オリジナルネットワークの各計算ノードに対してオンラインでコンパイルして命令を獲得することなく、システムの実行速度及び効率を向上させる。
さらに、上記コンピュータシステムは、図1または図2に示したコンピュータシステムであることができ、当該コンピュータシステムのプロセッサは、中央プロセッサ、画像プロセッサ、デジタル信号プロセッサ、フィールド編集可能なゲートアレイまたはインテリジェントプロセッサのうちの一つまたは複数の組合せであることができる。明らかに、本実施例におけるコンピュータシステムの動作原理は、基本的に上記方法における各ステップの実行過程と一致し、具体的に上記の説明を参照することができ、ここでは繰り返して説明しない。
なお、本発明の一実施例は、コンピュータ記憶媒体をさらに提供し、当該コンピュータ記憶媒体にはコンピュータプログラムが保存され、コンピュータプログラムが一つまたは複数のプロセッサに実行される場合、上記いずれかの一つの実施例の方法を実行する。ここで、当該コンピュータ記憶媒体は、不揮発性及び/または揮発性メモリを含むことができる。不揮発性メモリは、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的にプログラム可能なROM(EPROM)、電気的に消去可能なプログラム可能なROM(EEPROM)またはフラッシュメモリを含むことができる。揮発性メモリは、ランダムアクセスメモリ(RAM)または外部高速キャッシュメモリを含むことができる。制限ではない説明として、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDRSDRAM)、拡張SDRAM(ESDRAM)、同期リンク(Synchlink)、DRAM(SLDRAM)、ラムバス(Rambus)ダイレクトRAM(RDRAM)、ダイレクトラムバスダイナミックRAM(DRDRAM)、ラムバスダイナミックRAM(RDRAM)などのようなさまざまな形式で獲得することができる。
上記ニューラルネットワーク処理方法、コンピュータシステム及び記憶媒体は、オリジナルネットワーク実行過程に生成された各計算ノードに対応する命令、及びオリジナルネットワークの各計算ノードに対応するネットワークの重みを保存することにより、オリジナルネットワークに対応するオフラインモデルを獲得し、このようにして、当該オリジナルネットワークを再び実行する場合、当該オリジナルネットワークのモデルデータセット及びモデル構造パラメータなどの関連データに対して再びコンパイルする必要がなく、当該オリジナルネットワークに対応するオフラインモデルを直接に実行することができるため、同じネットワークを実行するプロセッサの実行時間を短縮し、さらにプロセッサの処理速度及び効率を向上させる。
本出願の他の実施例において、コンピュータシステムは、複数のプロセッサによって形成されるマルチラインシステムであることができ、ここで、プロセッサは、メインプロセッサ及び一つまたは複数のコプロセッサを含むことができ、メインプロセッサ及び各コプロセッサは、少なくとも一つのメモリが対応して設置されることができる。具体的に、図9に示したように、当該コンピュータシステム300は、第1プロセッサ310と、当該第1プロセッサ310に接続される第1メモリ320及び第2メモリ330と、当該第1プロセッサ310に接続される一つまたは複数の第2プロセッサ340と、及び各第2プロセッサ340に対応して設置される第3メモリ350とを含むことができる。ここで、当該第1プロセッサ310は、計算及び制御能力を提供するために使用され、第1獲得モジュール311、第1演算モジュール313及び第1制御モジュール312などを含むことができ、ここで、当該第1獲得モジュール311は、IO(Input入力/Output出力)インターフェースなどのハードウェアモジュールであることができ、第1演算モジュール313及び第1制御モジュール312はすべてハードウェアモジュールである。例えば、第1演算モジュール313及び第1制御モジュール312は、デジタル回路またはアナログ回路などであることができる。上記ハードウェア回路の物理的実現は、物理デバイスを含むがこれに限定されず、物理デバイスは、トランジスタ及びメモリスタなどを含むがこれらに限定されない。
選択的に、第1プロセッサ310は、メインプロセッサであってもよく、当該第1プロセッサ310は、CPU(Central Processing Unit、中央プロセッサ)、GPU(Graphics Processing Unit,グラフィックプロセッサ)、FPGA(Field-Programmable Gate Array、フィールド編集可能なゲートアレイ)またはDSP(Digital Signal Processing、デジタル信号処理)などのような汎用プロセッサであることができる。一つまたは複数の第2プロセッサは、コプロセッサであってもよく、当該第2プロセッサ340は、IPU(Intelligence Processing Unit、インテリジェントプロセッサ)などの専用ニューラルネットワークプロセッサであることができ、当該第2プロセッサ340は、汎用プロセッサであることもできる。さらに、当該第2プロセッサ340は、第2獲得モジュール、第2演算モジュール及び第2制御モジュールなどを含むことができ、ここで、当該第2獲得モジュールは、IO(Input入力/Output出力)インターフェースなどのハードウェアモジュールであることができ、第2演算モジュール及び第2制御モジュールはすべてハードウェアモジュールであり、例えば、第2演算モジュール及び第2制御モジュールは、デジタル回路またはアナログ回路などであることができる。上記ハードウェア回路の物理的実現は、物理デバイスを含むがこれに限定されず、物理デバイスは、トランジスタ及びメモリスタなどを含むがこれらに限定されない。第2獲得モジュール、第2演算モジュールと第2制御モジュールとの間の接続関係は、第1プロセッサにおける各モジュールの接続関係と類似し、第1プロセッサにおける各モジュールの接続関係を参照することができる。
当該第1メモリ320または第2メモリ330にはコンピュータプログラムがさらに保存されることができ、当該コンピュータプログラムは、本出願の実施例で提供されるニューラルネットワーク処理方法を実現するために使用される。具体的に、当該ニューラルネットワーク処理方法は、当該第1プロセッサが受信したオリジナルネットワークに対応するオフラインモデルを生成し、当該オフラインモデルは、第1オフラインモデルを含むことができ、第1オフラインモデルには、オリジナルネットワークに第1運用属性を備えるすべての計算ノードに対応するネットワークの重み及び命令が含まれるため、プロセッサが当該オリジナルネットワークを再び実行する場合、当該第1オフラインモデルから第1運用属性を備えるすべての計算ノードに対応するネットワークのすべての重み及び命令を直接に獲得することができ、同じオリジナルネットワークにおける第1運用属性を有する計算ノードに対してコンパイルなどの動作を再び行う必要なく、当該ネットワークを実行するプロセッサの実行時間を短縮し、さらにプロセッサの処理速度及び効率を向上させる。さらに、当該オリジナルネットワークに対応するオフラインモデルは、第2オフラインモデルをさらに含むことができ、第2オフラインモデルには、オリジナルネットワークに第2運用属性を備えるすべての計算ノードに対応するネットワークの重み及び命令が含まれる。
さらに、第1メモリ320は、ネットワーク入力データ、ネットワーク出力データ、ネットワークの重み及び命令などのようなニューラルネットワークの実行過程中の関連データを保存するために使用されるキャッシュなどの揮発性メモリのような内部メモリであることができる。第2メモリ330と第3メモリ350は、外部メモリなどの不揮発性メモリであることができる。従って、コンピュータシステムが同じオリジナルネットワークに対して再びコンパイルして、当該オリジナルネットワークを実行する必要がある場合、第1オフラインモデル及び第2オフラインモデルから当該オリジナルネットワークにおける各計算ノードに対応するネットワークの重み及び命令を直接に獲得することができるため、プロセッサの処理速度及び効率を向上させる。
一つの実施例において、図9に示されたコンピュータシステムにおいて、本発明の一実施例のニューラルネットワークの処理方法は、当該第1プロセッサが受信したオリジナルネットワークに対応するオフラインモデルを生成して、当該コンピュータシステムの処理効率及び速度を向上させる。具体的に、図10に示したように、上記方法は、以下のステップを含む。
S700において、オリジナルネットワークのモデルデータセット及びモデル構造パラメータを獲得する。ここで、モデルデータセットは、オリジナルネットワークにおける各計算ノードに対応するネットワークの重みを含み、モデル構造パラメータは、オリジナルネットワークにおける複数の計算ノードの接続関係を含む。具体的に、第1プロセッサの第1獲得モジュールを介して、オリジナルネットワークのモデルデータセット及びモデル構造パラメータを獲得することができ、当該オリジナルネットワークのモデルデータセット及びモデル構造パラメータを介して、当該オリジナルネットワークのネットワーク構造図を獲得することができる。ここで、モデルデータセットは、オリジナルネットワークにおける各計算ノードに対応するネットワークの重みなどのデータを含み、図14に示したニューラルネットワークにおけるW1~W6は、計算ノードのネットワークの重みを表すために使用される。モデル構造パラメータは、オリジナルネットワークにおける複数の計算ノードの接続関係及び各計算ノードの計算属性を含み、ここで、計算ノードの間の接続関係は、計算ノードの間にデータ伝達があるかどうかを表すために使用され、例えば、複数の計算ノードの間にデータフローの伝達がある場合、複数の計算ノードの間に接続関係があると説明することができる。さらに、計算ノードの接続関係は、入力関係及び出力関係などを含むことができる。図14に示したように、計算ノードC1が計算ノードI1及びI2の入力として出力する場合、計算ノードC1と計算ノードI1との間に接続関係があり、計算ノードC1と計算ノードI2との間に接続関係があると説明できる。別の例として、計算ノードC1と計算ノードC2との間にデータ伝達がない場合、計算ノードC1と計算ノードC2との間に接続関係が存在しないと説明できる。
各計算ノードの計算属性は、対応する計算ノードの計算タイプ及び計算パラメータを含むことができ、ここで、計算ノードの計算タイプとは、当該計算ノードがある計算を完了することに使用されることを指し、例えば、計算ノードの計算タイプは、加算、減算、及び畳み込み算など含むことができ、対応的に、当該計算ノードは、加算を実現するための計算ノード、減算を実現するための計算ノードまたは畳み込み算を実現するための計算ノードなどであることができる。計算ノードの計算パラメータは、当該計算ノードに対応する計算タイプを完了する必要なパラメータであることができる。例えば、計算ノードの計算タイプは、加算を実現するための計算ノードであることができ、対応的に、当該計算ノードの計算パラメータは、加算における加数であることができ、当該加算における被加数は、入力データとして獲得モジュールを介して獲得することができ、または、当該加算における被加数は、当該計算ノードの前の計算ノードの出力データなどであることができる。
S710において、オリジナルネットワークにおける各計算ノードの運用属性を獲得し、計算ノードの運用属性は、第1運用属性と第2運用属性を含む。具体的に、第1プロセッサの第1獲得モジュールまたは第1演算モジュールは、当該オリジナルネットワークにおける各計算ノードの運用属性を獲得することができる。ここで、計算ノードの運用属性は、当該計算ノードに対応する計算命令がどのプロセッサで実行されるかを表示するために使用される。本実施例において、第1運用属性は、当該計算ノードに対応する計算命令は、IPUなどの専用ニューラルネットワークプロセッサで実行されることができ、第2運用属性は、当該計算ノードに対応する計算命令がCPU、GPU、DSPなどの汎用プロセッサで実行することができることを表すために使用される。
さらに、列挙方法を介して、各計算ノードの運用属性を表現及び保存することができる。例えば、一つの列挙変量deviceを定義することができ、当該列挙変量は、二つ以上の列挙値を含むことができる。現在の計算ノードの運用属性が第1運用属性である場合、当該列挙変量の列挙値は、1であることができ、現在の計算ノードの運用属性が第2運用属性である場合、当該列挙変量の列挙値は、0であることができる。
S720において、オリジナルネットワークのモデルデータセット、モデル構造パラメータ及び各計算ノードの運用属性に従ってオリジナルネットワークを実行して、オリジナルネットワークにおける各計算ノードに対応する命令を獲得する。具体的に、第1プロセッサの第1演算モジュールは、オリジナルネットワークのモデルデータセット、モデル構造パラメータ及び各計算ノードの運用属性に従って、当該オリジナルネットワークを実行して、オリジナルネットワークにおける各計算ノードに対応する命令を獲得することができる。さらに、第1プロセッサの第1獲得モジュールは、当該オリジナルネットワークの入力データをさらに獲得することができ、第1プロセッサの第1演算モジュールは、オリジナルネットワークの入力データ、ネットワークモデルデータセット、モデル構造パラメータ及び各計算ノードの運用属性に従って、オリジナルネットワークを実行して、当該オリジナルネットワークにおける各計算ノードに対応する命令を獲得することができる。さらに、上記当該オリジナルネットワークを実行して各計算ノードの命令を獲得する過程は、実際にコンパイルの過程であり、当該コンパイル過程は、コンピュータシステムのプロセッサまたは仮想デバイスを介して実現することができる。即ち、コンピュータシステムのプロセッサまたは仮想デバイスは、オリジナルネットワークのモデルデータセット及びモデル構造パラメータに従ってオリジナルネットワークを実行する。ここで、仮想デバイスとは、メモリのメモリ空間でプロセッサ実行空間のセクションを仮想することを指す。
明らかに、本実施例におけるオリジナルネットワークの実行とは、プロセッサが人工ニューラルネットワークモデルデータを使用してある機械ラーニングアルゴリズム(例えば、ニューラルネットワークアルゴリズム)を実行し、フォワード演算を実行することにより、アルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することを指す。
S730において、現在の計算ノードの運用属性が第1運用属性である場合、現在の計算ノードに対応するネットワークの重み及び命令を第1不揮発性メモリに保存して、オリジナルネットワークに対応する第1オフラインモデルを獲得する。具体的に、現在の計算ノードの運用属性が第1運用属性である場合、当該第1プロセッサの第1制御モジュールは、現在の計算ノードに対応するネットワークの重み及び命令を第1不揮発性メモリに保存して、オリジナルネットワークに対応する第1オフラインモデルを獲得することができる。ここで、当該第1不揮発性メモリは、IPUなどの専用ニューラルネットワークプロセッサに対応する第3メモリであることができる。さらに、オリジナルネットワークの各計算ノードについて、当該計算ノードのネットワークの重み及び命令は、1対1に対応するように保存される。このようにして、当該オリジナルネットワークを再び実行する場合、第1不揮発性メモリから当該オリジナルネットワークに対応する第1オフラインモデルを直接に獲得することができ、当該第1オフラインモデルに従って、オリジナルネットワークにおけるすべての第1運用属性を有する計算ノードを実行し、当該オリジナルネットワークにおける第1運用属性を有する計算ノードに対してオンラインでコンパイルして命令を獲得することなく、システムの実行速度及び効率を向上させる。
明らかに、本実施例において、当該オリジナルネットワークに対応する第1オフラインモデルを直接に実行するとは、第1オフラインモデルを使用して当該オリジナルネットワークに対応する機械ラーニングアルゴリズム(例えば、ニューラルネットワークアルゴリズム)実行し、フォワード演算を実行することによりアルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することを指す。
選択的に、各計算ノードの運用属性は、当該オリジナルネットワークのネットワーク構造パラメータまたはモデルデータセットに事前に保存されることができ、このとき、当該オリジナルネットワークを読み取る過程において、当該オリジナルネットワークにおける各計算ノードの運用属性を直接に獲得することができる。即ち、上記ステップS710は、具体的に、以下のステップを含むことができる。
オリジナルネットワークのモデルデータセットまたはモデル構造パラメータからオリジナルネットワークにおける各計算ノードの運用属性を獲得する。具体的に、各計算ノードの運用属性は、当該オリジナルネットワークのネットワーク構造パラメータまたはモデルデータセットに事前に保存されることができる。第1プロセッサの第1獲得モジュールは、オリジナルネットワークのモデルデータセットまたはモデル構造パラメータを獲得する過程において、当該オリジナルネットワークにおける各計算ノードの運用属性を獲得することができる。
選択的に、当該オリジナルネットワークにおける各計算ノードの運用属性は、第1プロセッサの第1獲得モジュールのオリジナルネットワークを獲得する過程においてリアルタイムで獲得されることができる。上記ステップS710は、具体的に以下のステップを含む。
各計算ノードか専用ニューラルネットワークプロセッサで実行することができるかどうかをそれぞれ判断し、具体的に、第1プロセッサの第1演算モジュールは、各計算ノードが専用ニューラルネットワークプロセッサで実行することができるかどうかをそれぞれ判断することができる。
現在の計算ノードが専用ニューラルネットワークプロセッサで実行することができる場合、現在の計算ノードを第1運用属性として表記し、現在の計算ノードが汎用プロセッサのみで実行できる場合、現在の計算ノードを第2運用属性として表記する。従って、第1プロセッサがオリジナルネットワークを読み取る過程において、オリジナルネットワークにおける各計算ノードの運用属性をリアルタイムで判断することができる。例えば、現在の計算ノードの運用属性が第1運用属性である場合、現在の計算ノードに対応する列挙変量を、1として表記し、そうでない場合、現在の計算ノードに対応する列挙変量を、0として表記する。
さらに、第1プロセッサの第1演算モジュールは、予め設定された関数テーブルを介して、現在の計算ノードに第1運用属性を備える等価計算ノードが存在するかどうかを照会することができ、現在の計算ノードが第1運用属性の等価計算ノードを備える場合、現在の計算ノードの運用属性を第1運用属性として表記することができる。予め設定された関数テーブルを介して、現在の計算ノードと一致する第1運用属性を備える等価計算ノードが照会されない場合、当該現在の計算ノードの運用属性が第2運用属性である。図12に示したように、上記ステップS710は、以下のようなステップをさらに含む。
S711において、予め設定された関数テーブルを介して現在の計算ノードに等価計算ノードが存在するかどうかを照会し、ここで、等価計算ノードは、専用ニューラルネットワークプロセッサで実行することができる計算ノードである。
現在の計算ノードに等価計算ノードが存在する場合、ステップS712を実行し、現在の計算ノードが専用ニューラルネットワークプロセッサで実行することができると判定する。このとき、ステップS713を実行することができ、現在の計算ノードの運用属性を第1運用属性として表記する。具体的に、現在の計算ノードに対応する計算命令が専用ニューラルネットワークプロセッサに対応する計算命令に変換できる場合、現在の計算ノードに第1運用属性を備える等価計算ノードが存在するとみなされ、当該計算ノードの運用属性を第1運用属性として表記することができる。
現在の計算ノードに等価計算ノードが存在しない場合、ステップS714を実行することができ、現在の計算ノードがCPUなどの汎用プロセッサのみで実行することができると判定する。このとき、ステップS715を実行することができ、現在の計算ノードの運用属性を第2運用属性として表記する。具体的に、現在の計算ノードに対応する計算命令が専用ニューラルネットワークプロセッサに対応する計算命令に変換できない場合、現在の計算ノードに第1運用属性を備える等価計算ノードが存在しないとみなされ、現在の計算ノードの運用属性を第2運用属性として表記することができる。
一つの実施例において、図11に示したように、上記ステップS720は、さらに以下のステップを含む。
S721において、オリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワークにおける各計算ノードの実行順序を獲得する。具体的に、第1プロセッサの第1演算モジュールは、オリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワークにおける各計算ノードの実行順序を獲得することができ、さらに、第1プロセッサの第1演算モジュールは、オリジナルネットワークにおける各計算ノードの接続関係に従って、オリジナルネットワークにおける各計算ノードの実行順序を獲得することができる。例えば、図14に示したように、計算ノードI1の入力データは、計算ノードC1の出力データ及び計算ノードC2の出力データであり、計算ノードI3の入力データは、計算ノードI1の出力データ及び計算ノードI2の出力データである。従って、図14に示したニューラルネットワークにおける各計算ノードの実行順序は、C1-C2-C3-I1-I2-I3-C4-C5-I4などであることができる。もちろん、計算ノードC1、C2及びC3は、並列に実行することができ、計算ノードI1及びI2も並列に実行することができ、ここでは単なる例示であり、その実行順序は、具体的に限定されない。
S722において、各計算ノードの運用属性に従って、各計算ノードに対応するターゲットプロセッサをそれぞれ獲得する。具体的に、第1プロセッサの第1演算モジュールは、オリジナルネットワークにおける各計算ノードの運用属性に従って、各計算ノードに対応するターゲットプロセッサを獲得することができる。例えば、計算ノードC1~C5の運用属性が第2運用属性(例えば、CPU運用属性)である場合、計算ノードC1~C5に対応するターゲットプロセッサは、CPUであり、それは第1プロセッサであることができ、コプロセッサの第2プロセッサであることもできる。計算ノードI1~I4の運用属性が第1運用属性である場合、計算ノードI1~I4に対応する動作ターゲットプロセッサは、IPUなどのニューラルネットワーク専用プロセッサである。
S723において、オリジナルネットワークにおける各計算ノードの実行順序に応じて、各計算ノードに対応するターゲットプロセッサを介して、各計算ノードをそれぞれ実行して、オリジナルネットワークにおける各計算ノードに対応する命令を獲得する。具体的に、第1プロセッサの第1制御モジュールは、オリジナルネットワークにおける各計算ノードの実行順序に応じて、現在の計算ノードに対応するターゲットプロセッサがIPUなどのニューラルネットワーク専用プロセッサである場合、コプロセッサとしてのニューラルネットワーク専用プロセッサを制御し、現在の計算ノードを実行して、現在の計算ノードに対応する命令を獲得することができる。現在の計算ノードに対応するターゲットプロセッサがCPUである場合、CPUを制御し、現在の計算ノードを実行して、現在の計算ノードに対応する命令を獲得することができる。現在の計算ノードに対応するターゲットプロセッサがGPUである場合、GPUを制御し、現在の計算ノードを実行するか、CPUなどの汎用プロセッサを制御し、現在の計算ノードを実行することができる。
さらに、図11に示したように、上記ステップS730は、以下のステップをさらに含む。
S731において、オリジナルネットワークのモデルデータセットとモデル構造パラメータに従って、オリジナルネットワークのメモリ割り当て方法を獲得する。具体的に、第1プロセッサの第1演算モジュールは、オリジナルネットワークのモデルデータセットとモデル構造パラメータに従って、オリジナルネットワークのメモリ割り当て方法を獲得することができる。さらに、第1プロセッサは、オリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワークにおける各計算ノードの実行順序を獲得することができ、オリジナルネットワークにおける各計算ノードの実行順序に従って、現在のネットワークのメモリ割り当て方法を決定する。例えば、各計算ノードの実行順序に従って、各計算ノードを実行過程における関連データを、一つのスタックに保存する。ここで、メモリ割り当て方法とは、オリジナルネットワークにおける各計算ノードに関連するデータ(入力データ、出力データ、ネットワークの重みデータ及び中間結果データなどを含む)がメモリ空間(例えば、第1メモリ)での保存位置を決定することを指す。例えば、データテーブルを使用して各計算ノードに関連するデータ(入力データ、出力データ、ネットワークの重みデータ及び中間結果データなど)とメモリ空間のマッピング関係を保存することができる。
S732において、オリジナルネットワークのメモリ割り当て方法に従って、オリジナルネットワークの実行過程中の関連データを第1メモリに保存する。ここで、オリジナルネットワークの実行過程中の関連データは、オリジナルネットワークの各計算ノードに対応するネットワークの重み、命令、入力データ及び出力データを含む。例えば、図14に示したように、X1とX2は、当該ニューラルネットワークの入力データを表し、W1~W6は、計算ノードC1、C2及びC3に対応するネットワークの重みを表すために使用され、計算ノードI1~I3の出力データ及び計算ノードC4とC5の出力データは、中間計算結果として使用できる。第1プロセッサは、決定されたメモリ割り当て方法に従って、オリジナルネットワークの実行過程中の関連データを内部メモリまたはキャッシュなどの揮発性メモリのような第1メモリに保存することができ、具体的な保存方法は、図15における左半部の保存空間を参照することができる。
S733において、第1メモリからオリジナルネットワークにおける各第1運用属性を有する計算ノードに対応するネットワークの重み及び命令を獲得し、オリジナルネットワークにおける各第1運用属性を有する計算ノードに対応するネットワークの重み及び命令を第1不揮発性メモリに保存し、第1オフラインモデルを生成する。ここで、第1不揮発性メモリは、専用ニューラルネットワークプロセッサに対応する第3メモリであることができる。当該第1オフラインモデルの生成過程は、具体的に図15を参照することができ、図15における右半部の保存空間に保存されたのは、オリジナルネットワークの対応する第1オフラインモデルである。
図14及び図15に示したように、以下、図面に合わせて、上記オフラインモデルの生成過程を説明する。
まず、第1プロセッサは、当該オリジナルネットワークのモデルデータセット、モデル構造パラメータ及び入力データを獲得することができる。また、当該第1プロセッサは、オリジナルネットワークにおける各計算ノードの運用属性をさらに獲得することができる。
次に、第1プロセッサは、オリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワーク各計算ノードの接続関係を獲得することができ、各計算ノードの接続関係に従ってオリジナルネットワークにおける各計算ノードの実行順序、及びオリジナルネットワークの実行過程中のメモリ割り当て方法を獲得するため、オリジナルネットワークの実行過程中の関連データの保存位置を獲得することができる。図15の左半部の保存空間に示したように、オリジナルネットワークの実行過程中の関連データは、各計算ノード実行順序に応じて一つのスタックに保存されることができる。
最後に、第1プロセッサは、オリジナルネットワークにおける第1運用属性を有する計算ノードに対応するネットワークの重み及び命令を第1不揮発性メモリに保存し、第1オフラインモデルを生成することができ、当該第1オフラインモデルの保存方法は、図15における右半部の保存空間を参照することができる。また、当該第1オフラインモデルは、当該オリジナルネットワークにおける第1運用属性を有する計算ノードを実行するに必要なネットワークの重み及び命令などのデータのみを含み、オリジナルネットワークの実行過程中の入力データ、出力データまたは中間計算結果などを保存する必要がないため、保存空間の消費を減少することができる。
選択的に、上記方法は、以下のステップをさらに含むことができる。
オリジナルネットワークにおける複数の計算ノードの接続関係に従って、二つ以上の順序に実行される第2計算ノードの間のすべての第1計算ノードを一つの第1オフラインノード(First Offline1)に等価にするため、当該オリジナルネットワークに対応する等価ネットワーク構造を獲得することができ、図14に示した通りである。ここで、第1計算ノードは、第1運用属性を有する計算ノードであり、第2計算ノードは、第2運用属性を有する計算ノードであり、第1オフラインモデルには、第1オフラインノード(First Offline1)と第2計算ノードとの間のインターフェイスデータがさらに含まれ、インターフェイスデータは、当該オリジナルネットワークの等価ネットワーク構造における第1オフラインノード(First Offline1)と他の第2計算ノードとの間の接続関係を表示するために使用され、ここで、インターフェイスデータは、各第1オフラインノードの入力データソースと出力データソースを含むことができる。
さらに具体的に、図14に示したように、オリジナルネットワークの各計算ノードの間の接続関係に従って、隣接する二つのCPU運用属性の計算ノードの間のすべての第1運用属性の計算ノードを一つの第1オフラインノード(First Offline1)に等価にするため、当該オリジナルネットワークの等価ネットワークを獲得する。選択的に、当該第1オフラインノードは、複数の第1運用属性を有する計算ノードの等価ノードであるので、当該第1オフラインノード(First Offline1)の運用属性は、第1運用属性である。さらに、当該第1オフラインノード(First Offline1)とオリジナルネットワークにおける第2運用属性を有する第2計算ノードとの間の具体的な接続関係は、入力または出力データに従って決定することができる。例えば、図14に示したように、当該第1オフラインノード(First Offline1)と第2計算ノードC1、C2及びC3との間の具体的な接続関係及びネットワークの重みは、オフラインノード(First Offline1)の入力データに従って決定されることができ、当該第1オフラインノード(First Offline1)と第2オフラインノード(Second Offline1)との間の具体的な接続関係及びネットワークの重みは、第1オフラインノード(First Offline1)の出力データに従って、決定されることができる。さらに、インターフェイスデータは、当該第1オフラインノード(First Offline1)の入力データを第2計算ノードC1、C2及びC3の出力データとし、第1オフラインノードの出力データを第2計算ノードC4及びC5の入力データとして含むことができる。
さらなる改善として、当該オリジナルネットワークのオフラインモデルは、オリジナルネットワークにおける他の第2運用属性を備える計算ノードに対応するネットワークの重み及び命令をさらに含むことができる。図11に示したように、上記方法は、以下のステップをさらに含む。
現在の計算ノードの運用属性が第2運用属性である場合、現在の計算ノードに対応するネットワークの重み及び命令を第2不揮発性メモリに保存して、オリジナルネットワークに対応する第2オフラインモデルを獲得する。即ち、当該オリジナルネットワークを実行する過程において、各第2運用属性を備える計算ノードのネットワークの重み及び命令を第2不揮発性メモリ(例えば、第2メモリ)に保存する。当該複数の第2運用属性を備える計算ノードのネットワークの重み及び命令は、当該オリジナルネットワークの第2オフラインモデルユニットを形成する。このようにして、当該オリジナルネットワークを再び実行する必要がある場合、第2不揮発性メモリから当該オリジナルネットワークにおける各第2運用属性を備える計算ノードの計算属性などの命令及び対応するネットワークの重みを直接に獲得することができる。具体的に、上記ステップS730は、以下のステップをさらに含むことができる。
S734において、第1メモリからオリジナルネットワークにおける各第2運用属性を備える計算ノードに対応するネットワークの重み及び命令を獲得し、オリジナルネットワークにおける各第2運用属性を備える計算ノードに対応するネットワークの重みを第2不揮発性メモリに保存し、第2オフラインモデルを生成する。当該第2オフラインモデルの生成過程は、図16を参照することができ、図16における左側の保存空間内に保存されたのは、第2オフラインモデルである。
上記第1不揮発性メモリに保存された第1オフラインモデルと上記第2不揮発性メモリに保存された第2オフラインモデルは、当該オリジナルネットワークのオフラインモデルを形成する。このようにして、当該オフラインモデルを再び実行する必要がある場合、第1不揮発性メモリから第1運用属性を有する計算ノードのネットワークの重み及び命令を直接に獲得し、第2不揮発性メモリから第2運用属性を備える計算ノードのネットワークの重み及び命令を直接に獲得することができるため、当該オリジナルネットワークに対して再びコンパイルする必要なく、当該オリジナルネットワークを直接に実行することができる。
さらに、第1プロセッサは、オリジナルネットワークにおける複数の計算ノードの接続関係に従って、二つ以上の順序に実行される第1計算ノードの間のすべての第2計算ノードを一つの第2オフラインノードに等価することができ、ここで、第1計算ノードは、第1運用属性を有する計算ノードであり、第2計算ノードは、第2運用属性を有する計算ノードである。第2オフラインモデルには、前記第2オフラインノードと前記第1計算ノードとの間のインターフェイスデータがさらに含まれる。
図14及び図16に示したように、以下、図面に合わせて上記オフラインモデルの生成過程を説明する。
まず、第1プロセッサは、当該オリジナルネットワークのモデルデータセット、モデル構造パラメータ及び入力データを獲得することができるため、当該オリジナルネットワークのモデルデータセットとモデル構造パラメータに従って、当該オリジナルネットワークのネットワーク構造図を獲得することができ、図14に示した通りである。また、当該第1プロセッサは、オリジナルネットワークにおける各計算ノードの運用属性をさらに獲得することができる。
次に、第1プロセッサは、オリジナルネットワークのモデル構造パラメータに従って、オリジナルネットワーク各計算ノードの接続関係を獲得することができ、各計算ノードの接続関係に従って、オリジナルネットワークにおける各計算ノードの実行順序、及びオリジナルネットワークの実行過程におけるメモリ割り当て方法を獲得するため、オリジナルネットワークの実行過程における関連データの保存位置を獲得することができる。図16の中間部分の保存空間に示したように、オリジナルネットワークの実行過程における関連データは、各計算ノード実行順序に応じて一つのスタックに保存されることができる。
最後に、第1プロセッサは、オリジナルネットワークにおける第1運用属性を有する計算ノードに対応するネットワークの重み及び命令を第1不揮発性メモリに保存し、第1オフラインモデルを生成し、当該第1オフラインモデルの保存方法は、図16の右半部の保存空間を参照することができる。同時に、第1プロセッサは、オリジナルネットワークにおける第2運用属性を備える計算ノードに対応するネットワークの重み及び命令を第2不揮発性メモリに保存することができ、第2オフラインモデルを生成し、当該第2オフラインモデルの保存方法は、図16における左半部の保存空間を参照することができる。また、当該第1オフラインモデルと第2オフラインモデルは、当該オリジナルネットワークにおける各計算ノードを実行するに必要なネットワークの重み及び命令などのデータのみを含み、オリジナルネットワークの実行過程中の入力データ、出力データまたは中間計算結果などを保存する必要がないため、保存空間の消費を減少することができる。
さらに、汎用プロセッサは、中央プロセッサ、画像プロセッサ、デジタル信号プロセッサ及びフィールド編集可能なゲートアレイにおける一つまたは複数を含む。対応的に、第2運用属性は、CPU運用属性、GPU運用属性、DSP運用属性及びFPGA運用属性の一つまたは複数を含むことができる。例えば、当該コンピュータシステムが第1プロセッサ(例えば、CPU)と一つの第2プロセッサ(例えば、IPU)を含む場合、当該計算ノードの運用属性は、CPU運用属性、第1運用属性または両方の組合せであることができる。当該計算ノードの運用属性がCPU運用属性である場合、当該計算ノードに対応する計算命令が第1プロセッサ(例えば、CPU)で実行する必要があることを示す。当該計算ノードの運用属性が第1運用属性である場合、当該計算ノードに対応する計算命令が第2プロセッサで実行する必要があることを示す。当該計算ノードの運用属性がCPU運用属性と第1運用属性との結合である場合、当該計算ノードに対応する運用属性が第1プロセッサで実行することもでき、第2プロセッサで実行することもできることを示し、このとき、当該計算ノードの運用属性を第1運用属性として表記することができる。さらに、列挙方法を介して、各計算ノードの運用属性を表記及び保存することができる。例えば、当該列挙変量は、二つ以上の列挙値を含むことができる。現在の計算ノードの運用属性が第1運用属性である場合、当該列挙変量の列挙値は、1であることができ、現在の計算ノードの運用属性がCPU運用属性である場合、当該列挙変量の列挙値は、0であることができる。
別の例として、当該コンピュータシステムが第1プロセッサ(例えば、CPU)並びに第2プロセッサ1(例えば、GPU)及び第2プロセッサ2(例えば、IPU)を含む二つの第2プロセッサを含む場合、計算ノードの運用属性は、CPU運用属性、GPU運用属性または第1運用属性における一つまたは複数の組合せであることができる。当該計算ノードの運用属性がCPU運用属性である場合、当該計算ノードに対応する計算命令が第1プロセッサ(例えば、CPU)で実行する必要があることを示す。当該計算ノードの運用属性がGPU運用属性である場合、当該計算ノードに対応する計算命令が第2プロセッサ1(例えば、GPU)で実行する必要があることを示す。当該計算ノードの運用属性が第1運用属性である場合、当該計算ノードに対応する計算命令が第2プロセッサ2(例えば、IPU)で実行する必要があることを示す。当該計算ノードの運用属性がCPU運用属性と第1運用属性の組合せである場合、当該計算ノードに対応する計算命令が第1プロセッサで実行することもでき、第2プロセッサ2(例えば、IPU)で実行することもできることをしめし、このとき、計算ノードの運用属性を第1運用属性として表記することができる。さらに、当該列挙変量の列挙値は、三つであることもでき、例えば、現在の計算ノードの運用属性が第1運用属性である場合、当該列挙変量の列挙値は、1であることができ、現在の計算ノードの運用属性がCPU運用属性である場合、当該列挙変量の列挙値は、0であることができ、現在の計算ノードの運用属性がGPU運用属性である場合、当該列挙変量の列挙値は、2であることができる。従って、当該列挙変量の値によって、現在の計算ノードの運用属性を知ることができる。
さらに、当該第2オフラインモデルは、複数の第2オフラインサブモデルを含むことができ、例えば、第2オフラインサブモデルの一つは、すべてのCPU運用属性の計算ノードに対応する命令及びネットワークの重みを含むことができ、第2オフラインサブモデルの一つは、すべてのGPU運用属性の計算ノードに対応する命令及びネットワークの重みを含むことができ、第2オフラインサブモデルの一つは、すべてのDSP運用属性の計算ノードに対応する命令及びネットワークの重みなどを含むことができる。
一つの実施例において、オフラインモデルが生成れた直後、オフラインモデルを使用して演算を実行することができ、オフラインモデルを保存することもでき、計算が必要な時にオフラインモデルを使用する。図13に示したように、本発明の一実施例は、ニューラルネットワーク処理方法をさらに提供し、上記方法は、以下のステップを含む。
S800において、オリジナルネットワークのモデルデータセットとモデル構造パラメータを獲得する。ここで、モデルデータセットは、オリジナルネットワークにおける各計算ノードに対応するネットワークの重みを含み、モデル構造パラメータは、オリジナルネットワークにおける複数の計算ノードの接続関係を含む。具体的な実行過程は、上記ステップS700を参照することができ、ここでは繰り返して説明しない。
S810において、オリジナルネットワークにおける複数の計算ノードの接続関係に従って、二つ以上の順序に実行される第2計算ノードの間のすべての第1計算ノードを一つの第1オフラインノードに等価にし、オリジナルネットワークに対応する等価ネットワークを獲得する。ここで、第1計算ノードは、第1運用属性を有する計算ノードであり、第2計算ノードは、第2運用属性を有する計算ノードである。さらに、当該オリジナルネットワークの等価ネットワーク構造における各計算ノードの実行順序を獲得することができる。
例えば、図14に示したように、オリジナルネットワークの各計算ノード間の接続関係に従って、隣接する二つのCPU運用属性の計算ノードの間のすべての第1運用属性の計算ノードを一つの第1オフラインノード(First Offline1)に等価にするため、当該オリジナルネットワークの等価ネットワークを獲得する。選択的に、当該第1オフラインノードが複数の第1運用属性を有する計算ノードの等価ノードであるので、当該第1オフラインノード(First Offline1)の運用属性は、第1運用属性である。さらに、当該第1オフラインノード(First Offline1)とオリジナルネットワークにおける第2運用属性を備える第2計算ノードとの間の具体的な接続関係は、入力データまたは出力データに従って決定されることができる。当該オリジナルネットワークに対応する等価ネットワークにおける各計算ノードの実行順序は、C1-C2-C3-First Offline1-C4-C5-First Offline2であることができ、ここで、第2計算ノードC1、C2及びC3は、同時に実行されることができ、計算ノードC4とC5も同時に実行されることができ、コンピュータシステムの処理効率を向上させる。
S820において、等価ネットワーク構造における現在の計算ノードが第1オフラインノードである場合、第1不揮発性メモリから第1オフラインモデルを獲得し、第1オフラインモデルに従って第1オフラインノードを実行する。ここで、第1オフラインモデルには、オリジナルネットワークにおける第1運用属性を備えるすべての第1計算ノードに対応するネットワークの重み及び命令が含まれる。具体的に、第1プロセッサの第1獲得モジュールは、オリジナルネットワークの等価ネットワークにおける各計算ノードの実行順序に従って、現在の計算ノードが第1オフラインノードである場合、第1オフラインモデルから第1運用属性を有する計算ノードに対応するネットワークの重み及び命令を獲得することができる。
図14に示したように、当該オリジナルネットワークを再び実行する場合、オリジナルネットワークの等価ネットワークに従って、現在の計算ノードが第1オフラインノードFirst Offline1である場合、第1不揮発性メモリから当該第1オフラインノードFirst Offline1における各第1計算ノードに対応するネットワークの重み及び命令を獲得することができるため、第1オフラインノードFirst Offline1における各第1計算ノードに対して命令コンパイルする必要なく、第1プロセッサの処理効率を向上させる。当該第1オフラインノードの実行動作が完了すると、第1プロセッサは、オリジナルネットワークに対応する等価ネットワーク構造に従って、第2計算ノードC4とC5を実行し続けることができる。その後、当該第1プロセッサは、オリジナルネットワークに対応する等価ネットワーク構造に従って、第1不揮発性メモリから当該第1オフラインノードFirst Offline2における各第1計算ノードに対応するネットワークの重み及び命令を獲得することができるため、第1オフラインノードFirst Offline2における各第1計算ノードに対して命令コンパイルする必要がない。
さらに、第1オフラインモデルには、第1オフラインノードと第2計算ノードとの間のインターフェイスデータがさらに含まれる。具体的に、当該第1オフラインモデルには、各第1オフラインノードとそれと接続された第2計算ノードとの間のインターフェイスデータがさらに含まれ、例えば、当該インターフェイスデータは、第1オフラインノードFirst Offline1の入力データが第2計算ノードC1~C3である出力データを含むことができ、第1オフラインノードFirst Offline1の出力データは、第2計算ノードC4とC5の入力データとして機能することができる。
このとき、当該オリジナルネットワークを再び実行する場合、オリジナルネットワークの等価ネットワークに従って、現在の計算ノードが第1オフラインノードFirst Offline1である場合、第1不揮発性メモリから当該第1オフラインノードFirst Offline1における各第1計算ノードに対応するネットワークの重み及び命令を獲得することができるため、第1オフラインノードFirst Offline1における各第1計算ノードに対して命令コンパイルする必要なく、第1プロセッサの処理効率を向上させる。同時に、第1プロセッサは、第1オフラインモデルにおける第1オフラインノードFirst Offline1とそれの接続された第2計算ノードのインターフェイスデータに従って、第1オフラインノードFirst Offline1が実行完了した後、第2計算ノードC4とC5を実行し続けるべきであることを判定することができる。第2計算ノードC4とC5の実行動作を完了した後、当該第1プロセッサは、オリジナルネットワークに対応する等価ネットワーク構造に従って、第1不揮発性メモリから当該第1オフラインノードFirst Offline2における各第1計算ノードに対応するネットワークの重み及び命令を獲得することができるため、第1オフラインノードFirst Offline2における各第1計算ノードに対して命令コンパイルする必要がない。
第1オフラインモデルには、複数の第1オフラインノードに対応する命令及び重みが含まれることができ、オリジナルネットワークに対応する等価ネットワークに従って複数の第1オフラインノードの実行順序を決定することができ、その実行順序に応じて各第1オフラインノードに対してラベリングすることが理解できる。第1オフラインモデルからある第1オフラインノードに対応するネットワークの重み及び命令を獲得する場合、当該第1オフラインノードのラベルに従って検索することで済む。もちろん、さらに直接に各第1オフラインノードの保存アドレスに従って、当該第1オフラインノードに対応するネットワークの重み及び命令を直接に読み取り、正確な検索を実現することができる。
さらに、当該オリジナルネットワークのオフラインモデルは、オリジナルネットワークにおける他の第2運用属性を備える計算ノードに対応するネットワークの重み及び命令をさらに含むことができる。上記方法は、以下のステップをさらに含むことができる。
等価ネットワーク構造における現在の計算ノードが第1オフラインノードではない場合、第2不揮発性メモリから第2オフラインモデルを獲得し、第2オフラインモデルに従って等価ネットワークにおける現在の計算ノードを実行する。具体的に、第1プロセッサは、さらにオリジナルネットワークにおける複数の計算ノードの接続関係に従って、二つ以上の順序に実行される第1計算ノードの間のすべての第2計算ノードを一つの第2オフラインノードに等価することができる。ここで、第1計算ノードは、第1運用属性を有する計算ノードであり、第2計算ノードは、第2運用属性を有する計算ノードであり、第2オフラインモデルには、前記第2オフラインノードと前記第1計算ノードとの間のインターフェイスデータがさらに含まれる。
このとき、当該オリジナルネットワークを再び実行する場合、オリジナルネットワークの等価ネットワークに従って、現在の計算ノードが第1オフラインノードFirst Offline1である場合、第1不揮発性メモリから当該第1オフラインノードFirst Offline1における各第1計算ノードに対応するネットワークの重み及び命令を獲得することができるため、第1オフラインノードFirst Offline1における各第1計算ノードに対して命令コンパイルする必要なく、第1プロセッサの処理効率を向上させる。同時に、第1プロセッサは、第1オフラインモデルにおける第1オフラインノードFirst Offline1とそれと接続された第2計算ノードのインターフェイスデータに従って、第1オフラインノードFirst Offline1が実行完了した後、第2計算ノードC4とC5を実行し続けるべきであることを獲得することができる。その後、第1プロセッサは、第2オフラインモデルから第2計算ノードC4に対応するネットワークの重み及び命令、及び第2計算ノードC5に対応するネットワークの重み及び命令をそれぞれ獲得することができ、上記第2オフラインノードSecond Offline1に対応する第2オフラインモデルに従って、上記計算ノードC4とC5を実行する。同時に、第1プロセッサは、第2オフラインモデルにおける第2オフラインノードSecond Offline1とそれに接続された第1計算ノードのインターフェイスデータに従って、第2オフラインノードSecond Offline1が実行完了した後、第1オフラインノードFirst Offline2を実行し続けるべきであることを判定することができる。第2オフラインノードSecond Offline1の実行動作を完了した後、当該第1プロセッサは、オリジナルネットワークに対応する等価ネットワーク構造に従って、第1不揮発性メモリから当該第1オフラインノードFirst Offline2における各第1計算ノードに対応するネットワークの重み及び命令を獲得することができるため、第1オフラインノードFirst Offline2における各第1計算ノードに対して命令コンパイルする必要がない。
第2オフラインモデルには、複数の第2オフラインノードに対応する命令及び重みが含まれることができ、オリジナルネットワークに対応する等価ネットワークに従って複数の第2オフラインノードの実行順序を決定することができ、その実行順序に応じて各第2オフラインノードに対してラベリングすることが理解できる。第2オフラインモデルからある第2オフラインノードに対応するネットワークの重み及び命令を獲得する場合、当該第2オフラインノードのラベルに従って検索することで済む。もちろん、さらに直接に各第2オフラインノードの保存アドレスに従って、当該第2オフラインノードに対応するネットワークの重み及び命令を直接に読み取り、正確な検索を実現することができる。
さらなる改善として、当該第2オフラインモデルは、複数の第2オフラインサブモデルを含むことができ、例えば、第2オフラインサブモデルの一つは、すべてのCPU運用属性の計算ノードに対応する命令及びネットワークの重みを含むことができ、第2オフラインサブモデルの一つは、すべてのGPU運用属性の計算ノードに対応する命令及びネットワークの重みを含むことができ、第2オフラインサブモデルの一つは、すべてのDSP運用属性の計算ノードに対応する命令及びネットワークの重みなどを含むことができる。このとき、当該オリジナルネットワークを再び実行する場合、根据オリジナルネットワークの等価ネットワークに従って、現在の計算ノードが第1運用属性を備える第1オフラインノードである場合、第1プロセッサは、第1不揮発性メモリから当該第1オフラインノードにおける各第1計算ノードに対応するネットワークの重み及び命令を獲得し、当該第1オフラインノードを直接に実行することができる。現在の計算ノードがCPU運用属性を備える計算ノードである場合、当該現在の計算ノードに対応する第2オフラインサブモデルから現在の計算ノードのネットワークの重み及び命令を獲得し、現在の計算ノードを直接に実行することができる。現在の計算ノードがGPU運用属性を備える計算ノードである場合、当該現在の計算ノードに対応する第2オフラインサブモデルから現在の計算ノードのネットワークの重み及び命令を獲得することができ、現在の計算ノードを直接に実行することができる。現在の計算ノードがDSP運用属性を備える計算ノードである場合、当該現在の計算ノードに対応する第2オフラインサブモデルから現在の計算ノードのネットワークの重み及び命令を獲得し、現在の計算ノードを直接に実行することができる。
当業者は、上記実施例方法における全部または一部のプロセスの実現は、コンピュータプログラムに介して関連するハードウェアを命令して完了し、前記プログラムはコンピュータ可読記憶媒体に保存されることができ、当該プログラムは実行時に、上記各方法の実施例のプロセスを含むことができることを理解できる。ここで、本出願で提供される各実施例に使用されるメモリ、ストレージ、データベースまたは他の媒体への参照は、すべて不揮発性及び/または揮発性メモリを含むことができる。不揮発性メモリは、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的にプログラム可能なROM(EPROM)、電気的に消去可能なプログラム可能なROM(EEPROM)またはフラッシュメモリを含むことができる。揮発性メモリは、ランダムアクセスメモリ(RAM)または外部高速キャッシュメモリを含むことができる。制限ではない説明として、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDRSDRAM)、拡張SDRAM(ESDRAM)、同期リンク(Synchlink) DRAM(SLDRAM)、ラムバス(Rambus)ダイレクトRAM(RDRAM)、ダイレクトラムバスダイナミックRAM(DRDRAM)、ラムバスダイナミックRAM(RDRAM)などのようなさまざまな形式で獲得することができる。
同時に、本発明は、第1プロセッサ310及び第1プロセッサ310に対応するように設置される第1メモリ320及び第2メモリ330と、及びそれぞれがすべて第1プロセッサ310に接続される一つまたは複数の第2プロセッサ340及び第2プロセッサ340に対応するように設置される一つまたは複数の第3メモリ350とを含み、第1メモリ320または第2メモリ330にはコンピュータプログラムが保存され、第1プロセッサ310は、コンピュータプログラムを実行する場合、上記いずれかの一つの実施例の方法を実行するコンピュータシステム300をさらに提供する。具体的に、第1プロセッサ310が上記コンピュータプログラムを実行する場合、具体的に以下のステップを含む。
オリジナルネットワークのモデルデータセットとモデル構造パラメータを獲得し、ここで、モデルデータセットは、オリジナルネットワークにおける各計算ノードに対応するネットワークの重みを含み、モデル構造パラメータは、オリジナルネットワークにおける複数の計算ノードの接続関係を含む。
オリジナルネットワークにおける各計算ノードの運用属性を獲得し、計算ノードの運用属性は、第1運用属性及び第2運用属性を含む。具体的に、第1プロセッサの第1獲得モジュールまたは第1演算モジュールは、当該オリジナルネットワークにおける各計算ノードの運用属性を獲得することができる。ここで、計算ノードの運用属性は、当該計算ノードに対応する計算命令がどのプロセッサで実行されるかを表示するために使用される。本実施例において、第1運用属性は、当該計算ノードに対応する計算命令は、IPUなどの専用ニューラルネットワークプロセッサで実行されることができ、第2運用属性は、当該計算ノードに対応する計算命令がCPU、GPU、DSPなどの汎用プロセッサで実行することができることを表すために使用される。
さらに、列挙方法を介して、各計算ノードの運用属性を表現及び保存することができる。例えば、一つの列挙変量deviceを定義することができ、当該列挙変量は、二つ以上の列挙値を含むことができる。現在の計算ノードの運用属性が第1運用属性である場合、当該列挙変量の列挙値は、1であることができ、現在の計算ノードの運用属性が第2運用属性である場合、当該列挙変量の列挙値は、0であることができる。
オリジナルネットワークのモデルデータセット、モデル構造パラメータ及び各計算ノードの運用属性に従ってオリジナルネットワークを実行して、オリジナルネットワークにおける各計算ノードに対応する命令を獲得する。さらに、第1プロセッサの第1獲得モジュールは、当該オリジナルネットワークの入力データをさらに獲得することができ、第1プロセッサの第1演算モジュールは、オリジナルネットワークの入力データ、ネットワークモデルデータセット、モデル構造パラメータ及び各計算ノードの運用属性に従って、オリジナルネットワークを実行して、当該オリジナルネットワークにおける各計算ノードに対応する命令を獲得することができる。さらに、上記当該オリジナルネットワークを実行して各計算ノードの命令を獲得する過程は、実際にコンパイルの過程であり、当該コンパイル過程は、コンピュータシステムのプロセッサまたは仮想デバイスを介して実現することができる。即ち、コンピュータシステムのプロセッサまたは仮想デバイスは、オリジナルネットワークのモデルデータセット及びモデル構造パラメータに従ってオリジナルネットワークを実行する。ここで、仮想デバイスとは、メモリのメモリ空間でプロセッサ実行空間のセクションを仮想することを指す。
明らかに、本実施例におけるオリジナルネットワークの実行とは、プロセッサが人工ニューラルネットワークモデルデータを使用してある機械ラーニングアルゴリズム(例えば、ニューラルネットワークアルゴリズム)を実行し、フォワード演算を実行することにより、アルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することを指す。
現在の計算ノードの運用属性が第1運用属性である場合、現在の計算ノードに対応するネットワークの重み及び命令を第1不揮発性メモリに保存して、オリジナルネットワークに対応する第1オフラインモデルを獲得する。ここで、当該第1不揮発性メモリは、IPUなどの専用ニューラルネットワークプロセッサに対応する第3メモリであることができる。さらに、オリジナルネットワークの各計算ノードについて、当該計算ノードのネットワークの重み及び命令は、1対1に対応するように保存される。このようにして、当該オリジナルネットワークを再び実行する場合、第1不揮発性メモリから当該オリジナルネットワークに対応する第1オフラインモデルを直接に獲得することができ、当該第1オフラインモデルに従って、オリジナルネットワークにおけるすべての第1運用属性を有する計算ノードを実行し、当該オリジナルネットワークにおける第1運用属性を有する計算ノードに対してオンラインでコンパイルして命令を獲得することなく、システムの実行速度及び効率を向上させる。
明らかに、本実施例において、当該オリジナルネットワークに対応する第1オフラインモデルを直接に実行するとは、第1オフラインモデルを使用して当該オリジナルネットワークに対応する機械ラーニングアルゴリズム(例えば、ニューラルネットワークアルゴリズム)実行し、フォワード演算を実行することによりアルゴリズムのターゲットアプリケーション(例えば、音声認識などの人工知能アプリケーション)を実現することを指す。
さらに、上記コンピュータシステムは、図9に示されたコンピュータシステムであることができ、当該コンピュータシステムの第1プロセッサは、中央プロセッサ、画像プロセッサ、デジタル信号プロセッサまたはフィールド編集可能なゲートアレイであることができ、第2プロセッサは、専用ニューラルネットワークプロセッサ、中央プロセッサ、画像プロセッサ、デジタル信号プロセッサまたはフィールド編集可能なゲートアレイなどであることができる。明らかに、本実施例におけるコンピュータシステムの動作原理は、図10~図13に示したニューラルネットワークの処理方法における各ステップの実行過程と一致し、具体的に上記の説明を参照することができ、ここでは繰り返して説明しない。
なお、本発明の一実施例は、コンピュータ記憶媒体をさらに提供し、当該コンピュータ記憶媒体にはコンピュータプログラムが保存され、コンピュータプログラムが一つまたは複数のプロセッサに実行される場合、上記いずれかの一つの実施例の方法を実行する。ここで、当該コンピュータ記憶媒体は、不揮発性及び/または揮発性メモリを含むことができる。不揮発性メモリは、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的にプログラム可能なROM(EPROM)、電気的に消去可能なプログラム可能なROM(EEPROM)またはフラッシュメモリを含むことができる。揮発性メモリは、ランダムアクセスメモリ(RAM)または外部高速キャッシュメモリを含むことができる。制限ではない説明として、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDRSDRAM)、拡張SDRAM(ESDRAM)、同期リンク(Synchlink)、DRAM(SLDRAM)、ラムバス(Rambus)ダイレクトRAM(RDRAM)、ダイレクトラムバスダイナミックRAM(DRDRAM)、ラムバスダイナミックRAM(RDRAM)などのようなさまざまな形式で獲得することができる。
本発明のニューラルネットワーク処理方法、コンピュータシステム及び記憶媒体は、オリジナルネットワーク実行過程における第1運用属性を有する計算ノードに対応する命令及びネットワークの重みを保存することにより、オリジナルネットワークに対応する第1オフラインモデルを獲得し、このようにして、当該オリジナルネットワークを再び実行する場合、当該オリジナルネットワークにおける第1運用属性を有する計算ノードに対応するモデルデータセット及びモデル構造パラメータなどの関連データに対して再びコンパイルする必要がなく、当該オリジナルネットワークに対応する第1オフラインモデルから第1運用属性を有する計算ノードに対応する命令及びネットワークの重みを獲得することができるため、同じネットワークを実行するプロセッサの実行時間を短縮し、さらにプロセッサの処理速度及び効率を向上させる。
説明の簡略化のために、上記実施例の各技術的特徴は任意に組み合わせることができ、上記実施例における各技術的特徴の可能な組み合わせはすべて記載されていないが、これらの技術的特徴の組み合わせに矛盾がない限り、すべてをこの明細書の範囲と見なす必要がある。
上記実施例は、本発明のいくつかの実施形態の単なる例示であり、その説明はより具体的かつ詳細であるが、本発明の範囲を限定するものとして解釈されるべきではない。本発明の構想から逸脱することなく、いくつかの変形及び修正を当業者によってなされ得、これらのすべて本発明の請求範囲に属することに留意すべきである。従って、本発明の請求範囲は添付の請求項によって決定されるべきである。
本明細書に開示される発明は以下を含む。
[態様1]
ニューラルネットワークの処理方法であって、
オリジナルネットワークのモデルデータセットとモデル構造パラメータを獲得し、ここで、前記モデルデータセットは、前記オリジナルネットワークにおける各計算ノードに対応するネットワークの重みを含み、前記モデル構造パラメータは、前記オリジナルネットワークにおける複数の計算ノードの接続関係を含むステップと、
前記オリジナルネットワークにおける各計算ノードの運用属性を獲得し、前記計算ノードの運用属性は、前記計算ノードが専用ニューラルネットワークプロセッサで実行することができることを示す第1運用属性と前記計算ノードが汎用プロセッサで実行することができることを示す第2運用属性を含むステップと、
前記オリジナルネットワークのモデルデータセット、モデル構造パラメータ及び各計算ノードの運用属性に従って前記オリジナルネットワークを実行して、前記オリジナルネットワークにおける各計算ノードに対応する命令を獲得するステップと、及び
現在の計算ノードの運用属性が第1運用属性である場合、前記現在の計算ノードに対応するネットワークの重み及び命令を第1不揮発性メモリに保存して、前記オリジナルネットワークに対応する第1オフラインモデルを獲得するステップとを含む、前記ニューラルネットワークの処理方法。
[態様2]
前記オリジナルネットワークにおける各計算ノードの運用属性を獲得するステップは、
各前記計算ノードが専用ニューラルネットワークプロセッサで実行することができるかどうかをそれぞれ判断するステップと、
現在の計算ノードが前記専用ニューラルネットワークプロセッサで実行することができる場合、前記現在の計算ノードを第1運用属性として表記するステップと、及び
現在の計算ノードが汎用プロセッサでのみ実行できる場合、前記現在の計算ノードを第2運用属性として表記するステップとをさらに含むことを特徴とする
態様1に記載のニューラルネットワークの処理方法。
[態様3]
各前記計算ノードが専用ニューラルネットワークプロセッサで実行することができるかどうかをそれぞれ判断するステップは、
予め設定された関数テーブルによって前記現在の計算ノードに等価計算ノードが存在するかどうかを照会し、ここで、前記等価計算ノードは前記専用ニューラルネットワークプロセッサで実行可能な計算ノードであるステップと、
前記現在の計算ノードに等価計算ノードが存在する場合、前記現在の計算ノードが前記専用ニューラルネットワークプロセッサで実行することができると判定するステップと、及び
前記現在の計算ノードに等価計算ノードが存在しない場合、前記現在の計算ノードが前記汎用プロセッサでのみ実行することができると判定するステップとをさらに含むことを特徴とする
態様2に記載のニューラルネットワークの処理方法。
[態様4]
前記オリジナルネットワークにおける各計算ノードの運用属性を獲得するステップは、前記オリジナルネットワークのモデルデータセットまたはモデル構造パラメータから前記オリジナルネットワークにおける各計算ノードの運用属性を獲得するステップを含むことを特徴とする
態様1に記載のニューラルネットワークの処理方法。
[態様5]
前記汎用プロセッサは、中央プロセッサ、画像プロセッサ、デジタル信号プロセッサ及びフィールド編集可能なゲートアレイのうちの一つまたは複数を含み、
前記第2運用属性は、CPU運用属性、GPU運用属性、DSP運用属性及びFPGA運用属性の一つまたは複数を含むことを特徴とする
態様2または4に記載のニューラルネットワークの処理方法。
[態様6]
前記オリジナルネットワークにおける複数の計算ノードの接続関係に従って、二つ以上の順序に実行される第2計算ノードの間のすべての第1計算ノードを一つの第1オフラインノードに等価にするステップをさらに含み、ここで、前記第1計算ノードは、第1運用属性を有する計算ノードであり、前記第2計算ノードは、第2運用属性を有する計算ノードであり、前記第1オフラインモデルには、前記第1オフラインノードと前記第2計算ノードとの間のインターフェイスデータがさらに含まれることを特徴とする
態様1に記載のニューラルネットワークの処理方法。
[態様7]
前記現在の計算ノードの運用属性が第2運用属性である場合、前記現在の計算ノードに対応するネットワークの重み及び命令を第2不揮発性メモリに保存して、前記オリジナルネットワークに対応する第2オフラインモデルを獲得することを特徴とする
態様1に記載のニューラルネットワークの処理方法。
[態様8]
前記オリジナルネットワークにおける複数の計算ノードの接続関係に従って、二つ以上の順序に実行される第1計算ノードの間のすべての第2計算ノードを一つの第2オフラインノードに等価にするステップをさらに含み、ここで、前記第1計算ノードは、第1運用属性を有する計算ノードであり、前記第2計算ノードは、第2運用属性を有する計算ノードであり、前記第2オフラインモデルには、前記第2オフラインノードと前記第1計算ノードとの間のインターフェイスデータがさらに含まれることを特徴とする
態様7に記載のニューラルネットワークの処理方法。
[態様9]
前記オリジナルネットワークのモデルデータセット、モデル構造パラメータ及び各計算ノードの運用属性に従って前記オリジナルネットワークを実行して、前記オリジナルネットワークにおける各計算ノードに対応する命令を獲得するステップは、
前記オリジナルネットワークのモデル構造パラメータに従って、前記オリジナルネットワークにおける各計算ノードの実行順序を獲得するステップと、
前記各計算ノードの運用属性に従って、各前記計算ノードに対応するターゲットプロセッサをそれぞれ獲得するステップと、及び
前記オリジナルネットワークにおける各計算ノードの実行順序に応じて、各前記計算ノードに対応するターゲットプロセッサを介して各前記計算ノードをそれぞれ実行して、前記オリジナルネットワークにおける各計算ノードに対応する命令を獲得するステップとを含むことを特徴とする
態様1に記載のニューラルネットワークの処理方法。
[態様10]
前記オリジナルネットワークのモデルデータセットとモデル構造パラメータに従って、前記オリジナルネットワークのメモリ割り当て方法を獲得するステップと、
前記オリジナルネットワークのメモリ割り当て方法に従って、前記オリジナルネットワークの実行過程中の関連データを第1メモリに保存し、ここで、前記オリジナルネットワークの実行過程中の関連データは、前記オリジナルネットワークの各計算ノードに対応するネットワークの重み、命令、入力データ及び出力データを含むステップと、
前記第1メモリから前記オリジナルネットワークにおける各第1運用属性を有する計算ノードに対応するネットワークの重み及び命令を獲得し、前記オリジナルネットワークにおける各第1運用属性を有する計算ノードに対応するネットワークの重み及び命令を第1不揮発性メモリに保存し、前記第1オフラインモデルを生成するステップと、
前記第1メモリから前記オリジナルネットワークにおける各第2運用属性を有する計算ノードに対応するネットワークの重み及び命令を獲得し、前記オリジナルネットワークにおける各第2運用属性を有する計算ノードに対応するネットワークの重みを第2不揮発性メモリに保存し、前記第2オフラインモデルを生成するステップとを含むことを特徴とする
態様7に記載のニューラルネットワークの処理方法。
[態様11]
ニューラルネットワーク処理方法であって、
オリジナルネットワークのモデルデータセット及びモデル構造パラメータを獲得し、ここで、前記モデルデータセットは、前記オリジナルネットワークにおける各計算ノードに対応するネットワークの重みを含み、前記モデル構造パラメータは、前記オリジナルネットワークにおける複数の計算ノードの接続関係を含むステップと、
前記オリジナルネットワークにおける複数の計算ノードの接続関係に従って、二つ以上の順序に実行される第2計算ノードの間のすべての第1計算ノードを一つの第1オフラインノードに等価にし、前記オリジナルネットワークに対応する等価ネットワークを獲得し、ここで、前記第1計算ノードは、第1運用属性を有する計算ノードであり、前記第2計算ノードは、第2運用属性を有する計算ノードであるステップと、及び
前記等価ネットワーク構造における現在の計算ノードが第1オフラインノードである場合、第1不揮発性記憶媒体から第1オフラインモデルを獲得し、前記第1オフラインモデルに従って前記第1オフラインノード実行し、ここで、前記第1オフラインモデルは、前記オリジナルネットワークにおけるすべての第1計算ノードに対応するネットワークの重み及び命令を含むステップとを含む、前記ニューラルネットワーク処理方法。
[態様12]
前記第1オフラインモデルには、第1オフラインノードと前記第2計算ノードとの間のインターフェイスデータがさらに含まれることを特徴とする
態様11に記載のニューラルネットワーク処理方法。
[態様13]
前記等価ネットワーク構造における現在の計算ノードが前記第1オフラインノードではない場合、第2不揮発性メモリから第2オフラインモデルを獲得し、前記第2オフラインモデルに従って前記等価ネットワークにおける現在の計算ノードを実行するステップをさらに含むことを特徴とする
態様11に記載のニューラルネットワーク処理方法。
[態様14]
コンピュータシステムであって、
第1プロセッサ及び前記第1プロセッサに対応するように設置される第1メモリ及び第2メモリと、及び
それぞれがすべて前記第1プロセッサに接続される一つまたは複数の第2プロセッサ及び前記第2プロセッサに対応するように設置される一つまたは複数の第3メモリとを含み、
前記第1メモリまたは前記第2メモリにはコンピュータプログラムが保存され、前記第1プロセッサが前記コンピュータプログラムを実行する場合、態様1~10または態様11~13のいずれか一項に記載のニューラルネットワーク処理方法を実行する、前記コンピュータシステム。
[態様15]
コンピュータ記憶媒体であって、
前記コンピュータ記憶媒体には、コンピュータプログラムが保存され、前記コンピュータプログラムが一つまたは複数の第1プロセッサによって実行される場合、態様1~10または態様11~13のいずれか一項に記載のニューラルネットワーク処理方法を実行する、前記コンピュータ記憶媒体。