(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024114611
(43)【公開日】2024-08-23
(54)【発明の名称】ニューラルネットワークアクセラレータ用の命令生成方法、装置および電子デバイス
(51)【国際特許分類】
G06N 3/10 20060101AFI20240816BHJP
【FI】
G06N3/10
【審査請求】有
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023219261
(22)【出願日】2023-12-26
(31)【優先権主張番号】202310099691.4
(32)【優先日】2023-02-10
(33)【優先権主張国・地域又は機関】CN
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.PYTHON
(71)【出願人】
【識別番号】523487793
【氏名又は名称】上海安亭地平▲線▼智能交通技▲術▼有限公司
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】ジュンジー シェン
(72)【発明者】
【氏名】デーリン リー
(57)【要約】
【課題】本発明は、ニューラルネットワークアクセラレータ用の命令生成方法、装置および電子デバイスに関する。
【解決手段】この方法は、ニューラルネットワークモデルに対応する複数の第1の空間情報を決定するステップと、第1の空間情報に基づいて、キャッシュからポリシーマッピング関係を検索して、少なくとも1つの第1の空間情報にそれぞれ対応する第1のポリシー情報を取得するステップと、動的計画アルゴリズムおよび複数のポリシー情報に基づいて、ニューラルネットワークモデルに対応する全体的最適化ポリシーを決定して、ニューラルネットワークアクセラレータで実行可能な命令を生成するステップと、を含む。
【選択図】
図4
【特許請求の範囲】
【請求項1】
ニューラルネットワークモデルに対応する複数の第1の空間情報を決定するステップと、
前記第1の空間情報に基づいて、キャッシュからポリシーマッピング関係を検索して、少なくとも1つの第1の空間情報にそれぞれ対応する第1のポリシー情報を取得するステップと、
動的計画アルゴリズムおよび複数のポリシー情報により、前記ニューラルネットワークモデルに対応する全体的最適化ポリシーを決定して、ニューラルネットワークアクセラレータで実行可能な命令を生成するステップと、を含み、
前記第1の空間情報は、前記ニューラルネットワークモデルにおける少なくとも1つのニューラルネットワーク層を示すためのものであり、
前記ポリシーマッピング関係は、複数の目標空間情報と、前記目標空間情報にそれぞれ対応する目標ポリシー情報と、を含み、
前記複数の目標空間情報は、少なくとも1つの第1の空間情報を含み、
前記複数のポリシー情報は、前記少なくとも1つの第1の空間情報にそれぞれ対応する第1のポリシー情報を含む、ことを特徴とするニューラルネットワークアクセラレータ用の命令生成方法。
【請求項2】
前記命令生成方法は、前記複数の第1の空間情報に前記目標空間情報とは異なる少なくとも1つの第2の空間情報が存在する場合、前記少なくとも1つの第2の空間情報にそれぞれ対応する第2のポリシー情報を決定するステップをさらに含み、
前記複数のポリシー情報は、前記少なくとも1つの第2の空間情報にそれぞれ対応する第2のポリシー情報を含む、ことを特徴とする請求項1に記載のニューラルネットワークアクセラレータ用の命令生成方法。
【請求項3】
前記少なくとも1つの第2の空間情報にそれぞれ対応する第2のポリシー情報を決定するステップは、
前記第2の空間情報に基づいて、前記第2の空間情報に対応する複数の候補ポリシーを決定するステップと、
複数の計算ノードが前記第2の空間情報に対応する複数の候補ポリシーを実行する複数のコストパラメータを決定するステップと、
前記複数のコストパラメータに基づいて、前記複数の候補ポリシーから前記第2の空間情報に対応する前記第2のポリシー情報を決定するステップと、を含む、ことを特徴とする請求項2に記載のニューラルネットワークアクセラレータ用の命令生成方法。
【請求項4】
前記複数のコストパラメータに基づいて、前記複数の候補ポリシーから前記第2の空間情報に対応する前記第2のポリシー情報を決定するステップは、
前記複数のコストパラメータに基づいて、前記複数の候補ポリシーから第2の最適化ポリシーを決定するステップと、
前記第2の最適化ポリシーを符号化して、前記第2の空間情報に対応する前記第2のポリシー情報を取得するステップと、を含む、ことを特徴とする請求項3に記載のニューラルネットワークアクセラレータ用の命令生成方法。
【請求項5】
前記命令生成方法は、前記ポリシーマッピング関係に前記第2の空間情報に対応する第2のポリシー情報を追加するステップをさらに含む、ことを特徴とする請求項2~4のいずれか1項に記載のニューラルネットワークアクセラレータ用の命令生成方法。
【請求項6】
前記ニューラルネットワークモデルに対応する複数の第1の空間情報を決定するステップは、
前記ニューラルネットワークモデルのモデルパラメータを決定するステップと、
前記ニューラルネットワークモデルのモデルパラメータに基づいて、前記ニューラルネットワークモデルにおけるニューラルネットワーク層に対応する複数の階層空間を取得するステップと、
前記複数の階層空間に基づいて、複数の第1の空間情報を取得するステップと、を含み、
前記モデルパラメータは、ニューラルネットワーク層の数、および/または、前記ニューラルネットワーク層の入出力タイプを含む、ことを特徴とする請求項1~4のいずれか1項に記載のニューラルネットワークアクセラレータ用の命令生成方法。
【請求項7】
前記ニューラルネットワーク層の入出力タイプは、単入力単出力、単入力二出力および二入力二出力のうちの少なくとも1つを含み、
前記モデルパラメータは、有向非巡回グラフまたは計算命令シーケンスで示される、ことを特徴とする請求項6に記載のニューラルネットワークアクセラレータ用の命令生成方法。
【請求項8】
前記複数の階層空間に基づいて、複数の第1の空間情報を取得するステップは、
前記複数の階層空間および前記ニューラルネットワークアクセラレータのハードウェアリソース情報を符号化して、複数の前記第1の空間情報を取得するステップを含む、ことを特徴とする請求項6に記載のニューラルネットワークアクセラレータ用の命令生成方法。
【請求項9】
動的計画アルゴリズムおよび複数のポリシー情報により、前記ニューラルネットワークモデルに対応する全体的最適化ポリシーを決定して、ニューラルネットワークアクセラレータで実行可能な命令を生成するステップは、
前記第1のポリシー情報および前記第2のポリシー情報に基づいて、前記第1のポリシー情報に対応する第1の最適化ポリシーと前記第2のポリシー情報に対応する第2の最適化ポリシーとを決定するステップと、
動的計画アルゴリズムに従って、少なくとも1つの前記第1の最適化ポリシーと少なくとも1つの前記第2の最適化ポリシーとから前記ニューラルネットワークモデルに対応する全体的最適化ポリシーを決定するステップと、
前記ニューラルネットワークモデルに対応する全体的最適化ポリシーに基づいて、前記ニューラルネットワークアクセラレータで実行可能な命令を生成するステップと、を含む、ことを特徴とする請求項2~4のいずれか1項に記載のニューラルネットワークアクセラレータ用の命令生成方法。
【請求項10】
ニューラルネットワークモデルに対応する複数の第1の空間情報を決定するための区分モジュールと、
前記第1の空間情報に基づいて、キャッシュにおいてポリシーマッピング関係を検索して、少なくとも1つの前記第1の空間情報に対応する第1のポリシー情報を取得するための検索モジュールと、
動的計画アルゴリズムおよび複数のポリシー情報により、前記ニューラルネットワークモデルに対応する全体的最適化ポリシーを決定して、ニューラルネットワークアクセラレータで実行可能な命令を生成するための生成モジュールと、を備え、
前記第1の空間情報は、前記ニューラルネットワークモデルにおける少なくとも1つのニューラルネットワーク層を示すためのものであり、
前記ポリシーマッピング関係は、複数の目標空間情報と、前記目標空間情報にそれぞれ対応する目標ポリシー情報と、を含み、
前記複数の目標空間情報は、前記少なくとも1つの第1の空間情報を含み、
前記複数のポリシー情報は、前記少なくとも1つの第1の空間情報にそれぞれ対応する第1のポリシー情報を含む、ことを特徴とするニューラルネットワークアクセラレータ用の命令生成装置。
【請求項11】
請求項1~4のいずれか1項に記載のニューラルネットワークアクセラレータ用の命令生成方法を実行するためのコンピュータプログラムが記憶されることを特徴とするコンピュータ可読記憶媒体。
【請求項12】
プロセッサと、
前記プロセッサで実行可能な命令を記憶するためのメモリと、備え、
前記プロセッサは、前記メモリから前記実行可能な命令を読み取って実行することにより、請求項1~4のいずれか1項に記載のニューラルネットワークアクセラレータ用の命令生成方法を実現することを特徴とする電子デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、ニューラルネットワークの技術分野に関し、特にニューラルネットワークアクセラレータ用の命令生成方法、装置および電子デバイスに関する。
【背景技術】
【0002】
ニューラルネットワークコンパイラは、ニューラルネットワークモデルに基づいて、ハードウェアデバイス(例えば、ニューラルネットワークアクセラレータ(NNA:Neural Network Accelerator)で実行可能な命令シーケンスを生成する。ニューラルネットワークモデルの規模がますます大きくなり、構造がますます複雑になるにつれて、ニューラルネットワークモデルのコンパイル方式もますます増えている。コンパイルするとき、ニューラルネットワークコンパイラは、ハードウェアデバイスでニューラルネットワークモデルのアルゴリズムが効率的に実行されるように、複数のコンパイル方法から最適なコンパイル方式を決定することができる。
【0003】
ニューラルネットワークコンパイラがニューラルネットワークモデルをコンパイル最適化する場合、ニューラルネットワークモデルのコンパイル方式が多いため、複数のコンパイル方式から最適なコンパイル方式を決定するに時間がかかり、ユーザーのニューラルネットワークコンパイラの使用体験に影響を与える。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示の実施例は、本願の既存のニューラルネットワークコンパイラは、ニューラルネットワークモデルをコンパイル最適化するプロセスに長い時間がかかるとの課題を解決するために、ニューラルネットワークアクセラレータ用の命令生成方法、装置および電子デバイスを提供する。
【課題を解決するための手段】
【0005】
本開示の実施例では、ニューラルネットワークアクセラレータで実行可能な命令シーケンスを生成する際に、ニューラルネットワークモデルに対応する複数の第1の空間情報を十分に考慮し、キャッシュ内のポリシーマッピング関係を利用して、複数の第1の空間情報に対応する複数の第1のポリシー情報を迅速に決定することで、ニューラルネットワークコンパイラがニューラルネットワークモデルをコンパイル最適化するときの所要時間を短縮することができる。
【0006】
本開示の一態様に係るニューラルネットワークアクセラレータ用の命令生成方法は、ニューラルネットワークモデルに対応する複数の第1の空間情報を決定するステップと、第1の空間情報に基づいて、キャッシュからポリシーマッピング関係を検索して、少なくとも1つの第1の空間情報にそれぞれ対応する第1のポリシー情報を取得するステップと、動的計画アルゴリズムおよび複数のポリシー情報により、ニューラルネットワークモデルに対応する全体的最適化ポリシーを決定して、ニューラルネットワークアクセラレータで実行可能な命令を生成するステップと、を含み、
第1の空間情報は、ニューラルネットワークモデルにおける少なくとも1つのニューラルネットワーク層を示すためのものであり、
ポリシーマッピング関係は、複数の目標空間情報と、目標空間情報にそれぞれ対応する目標ポリシー情報と、を含み、
複数の目標空間情報は、少なくとも1つの第1の空間情報を含み、
複数のポリシー情報は、少なくとも1つの第1の空間情報にそれぞれ対応する第1のポリシー情報を含む。
【0007】
この技術的構成によれば、ポリシーマッピング関係を予め設定することにより、データベースが予め設定されることとされ、このデータベースには、複数の空間(すなわち、目標空間情報)に対応する最適化ポリシー(すなわち、目標空間情報)がキャッシュされる。新しいニューラルネットワークモデルをコンパイル最適化する必要がある場合、まず、ニューラルネットワークモデルを複数の空間(すなわち、第1の空間情報)に区分してから、データベース(すなわち、ポリシーマッピング関係)から複数の空間に対応する最適化ポリシーを検索する。最適化ポリシーが検索されると、空間に対応する最適化ポリシーに対する計算は不要となり、ニューラルネットワークコンパイラのコンパイル最適化の時間が短縮される。
【0008】
本開示の一態様に係るニューラルネットワークアクセラレータ用の命令生成装置は、ニューラルネットワークモデルに対応する複数の第1の空間情報を決定するための区分モジュールと、第1の空間情報に基づいて、キャッシュにおいてポリシーマッピング関係を検索して、少なくとも1つの第1の空間情報にそれぞれ対応する第1のポリシー情報を取得するための検索モジュールと、動的計画アルゴリズムおよび複数のポリシー情報により、ニューラルネットワークモデルに対応する全体的最適化ポリシーを決定して、ニューラルネットワークアクセラレータで実行可能な命令を生成するための生成モジュールと、を備え、
第1の空間情報は、ニューラルネットワークモデルにおける少なくとも1つのニューラルネットワーク層を示すためのものであり、
ポリシーマッピング関係は、複数の目標空間情報と、目標空間情報にそれぞれ対応する目標ポリシー情報を含み、複数の目標空間情報は、少なくとも1つの第1の空間情報を含み、
複数のポリシー情報は、少なくとも1つの第1の空間情報にそれぞれ対応する第1のポリシー情報を含む。
【0009】
本開示の実施例の一態様に係るコンピュータ可読記憶媒体には、上記のいずれか一つの方法を実行するためのコンピュータプログラムが記憶される。
【0010】
本開示の一態様に係る電子デバイスは、プロセッサと、プロセッサに実行可能な命令が記憶されるメモリと、を備え、プロセッサは、メモリから実行可能な命令を読み取って実行することにより、上記のいずれか一つの方法を実現する。
【図面の簡単な説明】
【0011】
【
図1】本開示が適用されるシステムの例示的な構成図である。
【
図2】本開示の一例示的な実施例に係る電子デバイスの構造概略図である。
【
図3】本開示の一例示的な実施例に係る別の電子デバイスの構造概略図である。
【
図4】本開示の一例示的な実施例に係るニューラルネットワークアクセラレータ用の命令生成方法の第1の概略的なフローチャートである。
【
図5】本開示の一例示的な実施例に係るニューラルネットワークモデルの構造概略図である。
【
図6】本開示の一例示的な実施例に係るニューラルネットワークアクセラレータ用の命令生成方法の第2の概略的なフローチャートである。
【
図7】本開示の一例示的な実施例に係るニューラルネットワークアクセラレータ用の命令生成方法の第3の概略的なフローチャートである。
【
図8】本開示の一例示的な実施例に係るニューラルネットワークアクセラレータ用の命令生成方法の第4の概略的なフローチャートである。
【
図9】本開示の一例示的な実施例に係るニューラルネットワークアクセラレータ用の命令生成方法の第5の概略的なフローチャートである。
【
図10】本開示の一例示的な実施例に係るニューラルネットワークアクセラレータ用の命令生成方法の第6の概略的なフローチャートである。
【
図11】本開示の一例示的な実施例に係るニューラルネットワークアクセラレータ用の命令生成方法の第6の概略的なフローチャートである。
【
図12】本開示の一例示的な実施例に係るニューラルネットワークアクセラレータ用の命令生成方法の第6の概略的なフローチャートである。
【
図13】本開示の一例示的な実施例に係る命令生成装置の構造図である。
【
図14】本開示の一例示的な実施例に係る電子デバイスの構造図である。
【発明を実施するための形態】
【0012】
以下、図面を参照して、本願の例示的な実施例を詳細に説明する。説明される実施例は、本願のすべての実施例ではなく、本願の実施例の一部にすぎず、本願は、ここで説明される例示的な実施例によって限定されない。
【0013】
ニューラルネットワークコンパイラは、ハードウェアデバイスでニューラルネットワークモデルが効率的に実行されるように、ニューラルネットワークモデルをコンパイル最適化する。ニューラルネットワークモデルは、主に高水準言語ソースコード(例えば、Java言語、Python言語など)で記述し、ニューラルネットワークコンパイラは、高水準言語ソースコードの実行ロジックをコンパイル最適化して、ハードウェアデバイスで効率的に実行し得るマシンコードを生成することができる。
【0014】
ニューラルネットワークコンパイラのニューラルネットワークモデルに対するコンパイル最適化は、具体的には以下の通りである。ニューラルネットワークコンパイラは、ニューラルネットワークモデルのすべてのニューラルネットワーク層をトラバース(「トラバーサル」とも呼ばれる)し、すべてのニューラルネットワーク層に対して区分を行い、複数の区分結果(「階層空間」とも呼ばれる)を取得し、その後、各区分結果に対応する最適化ポリシーを決定し、最終的に、各区分結果に対応する最適化ポリシーに基づいて、ニューラルネットワークモデルのコンパイル最適化結果を取得する。
【0015】
ニューラルネットワークモデルの規模がますます大きくなり、構造がますます複雑になるにつれて、ニューラルネットワークモデル中のニューラルネットワーク層もますます増えている。それに応じて、ニューラルネットワーク層を区分して得られる区分結果も増えている。各区分結果に対応する最適化ポリシーは、計算で得られるため、区分結果が多くなるほど、ニューラルネットワークコンパイラが決定する必要がある最適化ポリシーも多くなる。これにより、必然的に多くの時間がかかり、ユーザーのニューラルネットワークコンパイラの使用体験に影響を与える。
【0016】
このような状況について、通常、人間の介入を利用して区分結果を減らすことができる。例えば、プルーニング(枝刈り)手法で一部の区分結果を削減することにより、削減された区分結果に対応する最適化ポリシーを決定するプロセスが省略され、ニューラルネットワークコンパイラのコンパイル最適化の時間が短縮される。しかしながら、プルーニングされた区分結果に対応する最適化ポリシーは、未削減の区分結果に対応する最適化ポリシーと比較してニューラルネットワークモデルが適用されるシナリオとの適合性がより高い可能性があり、未削減の区分結果に対応する最適化ポリシーにより得られるコンパイル最適化結果は、さらに悪くなり、理想的な効果が得られない。
【0017】
したがって、コンパイル最適化の時間が長いという問題を解決するために、本開示の実施例は、ニューラルネットワークアクセラレータ用の命令生成方法を提供し、この方法は、まず、ニューラルネットワークモデルを複数の第1の空間情報に区分する。次に、ポリシーマッピング関係から複数の第1の空間情報に対応するポリシー情報を検索し、最後に、ポリシー情報及び動的計画アルゴリズムを利用して、ニューラルネットワークモデルに対応する全体的最適化ポリシーであるニューラルネットワークモデルのコンパイル最適化結果を決定する。ニューラルネットワークモデルの規模は通常非常に大きく、ポリシーマッピング関係を利用して複数の空間(すなわち、目標空間情報)に対応する最適化ポリシー(すなわち、目標ポリシー情報)を予め記憶することができる。このように、第1の空間情報が目標空間情報と同じである場合、目標空間情報に対応する目標ポリシー情報を、第1の空間情報に対応する第1のポリシー情報として直接使用することができ、これにより、第1のポリシー情報を決定するプロセスが省略されて、ニューラルネットワークコンパイラのコンパイル最適化時間が短縮される。
【0018】
図1は、本開示の実施例に係る命令生成システムであり、このシステムは、ニューラルネットワークモデルに対応するコンパイル命令を生成するためのコンパイル側デバイス11と、コンパイル側デバイス11から提供されるコンパイル命令を実行して、ニューラルネットワークモデルの演算を行うための実行側デバイス12と、を備える。また、この演算は、畳み込み演算、プーリング演算、活性化関数演算などを含むが、これらに限定されるのではない。
【0019】
いくつかの実施例において、コンパイル側デバイス11は、電子デバイス20により実現されることができる。電子デバイス20は、パーソナルコンピュータ、サーバコンピュータ、マルチプロセッサシステム、マイクロプロセッサベースのシステムなどを含むことができるが、これらに限定されるのではない。
【0020】
いくつかの実施例において、実行側デバイス12は、電子デバイス30により実現されることができる。電子デバイス30は、ニューラルネットワークアクセラレータまたはニューラルネットワークチップを含むことができるが、これらに限定されるのではない。
【0021】
図2は、本開示の実施例に係る電子デバイス20の構造概略図であり、
図2に示すように、電子デバイス20は、少なくとも1つのプロセッサ21およびメモリ22を備える。
【0022】
プロセッサ21は、本開示の実施例におけるニューラルネットワークアクセラレータ用の命令生成方法を実行する。プロセッサ21は、高性能の中央処理装置(central processing unit、CPU)やグラフィックス処理装置(graphics processing unit、GPU)などの、ニューラルネットワーク命令シーケンスのコンパイルをサポートすることができるプロセッサであり、またはコンパイル処理機能および/または命令実行機能を有する他の形態の処理ユニットであるであることができる。
【0023】
メモリ22は、揮発性メモリおよび/または不揮発性メモリなどの様々な形態のコンピュータ可読記憶媒体を含む1つまたは複数のコンピュータプログラム製品を備えることができる。揮発性メモリには、例えば、ランダムアクセスメモリ(random-access memory、RAM)および/またはキャッシュメモリ(cache)が含まれ得る。不揮発性メモリには、例えば、読み取り専用メモリ(read-only memory、ROM)、ハードディスク、フラッシュメモリなどが含まれ得る。コンピュータ可読記憶媒体には、1つまたは複数のコンピュータプログラム命令が記憶されることができ、プロセッサ21は、プログラム命令を実行して、下記のニューラルネットワークアクセラレータ用の命令生成方法を実現することができる。
【0024】
いくつかの実施例において、
図2に示すように、電子デバイス20は、入力装置23と、出力装置24と、をさらに備えることができる。入力装置23は、コンパイル作業員がニューラルネットワークのパラメータ(例えば、複数のPEの命令シーケンスなど)を入力することができるように、例えばキーボードやマウス等を含むことができる。出力装置24は、コンパイル作業員がコンパイルの最終結果またはコンパイル中の中間データなどをチェックすることができるように、例えばディスプレイ、スピーカ、プリンタ、通信ネットワークおよび通信ネットワークに接続されるリモート出力デバイスなどを含むことができる。
【0025】
本開示の実施例は、電子デバイス20の具体的な構造に対して限定せず、電子デバイス20が備える部品は、
図2に示す部品よりも多くても少なくてもよい。例えば、電子デバイス20は、バスや入出力インターフェースなどのコンポーネントを備えることができる。
【0026】
図3は、本開示の実施例に係る電子デバイス30の構造概略図であり、
図3に示すように、電子デバイス30は、制御ユニット31と計算ユニット32とを備えることができ、制御ユニット31は、命令を実行して、計算ユニット32が後述のニューラルネットワークアクセラレータの命令生成方法を実行するように制御する。
【0027】
制御ユニット31は、1つまたは複数のプロセッサ、あるいはニューラルネットワーク演算機能および/または命令実行機能を有する他の形態の処理ユニットを備えることができる。このプロセッサは、GPU、ブレインプロセッシングユニット(brain processing unit、BPU)、テンソル・プロセッシング・ユニット(tensor processing unit、TPU)などの、ニューラルネットワーク関連の計算を実行することができるプロセッサを含むことができるが、これらに限定されるのではない。いくつかの実施例において、制御ユニット31は、ニューラルネットワークアクセラレータの命令(例えば、畳み込み演算命令、プーリング演算命令、および活性化関数演算命令など)に基づいて、計算ユニット32を制御して対応の演算を実行する。
【0028】
計算ユニット32は、ニューラルネットワークの演算操作を実行するように構成される演算回路を備え、演算操作は、畳み込み演算、プーリング演算、活性化関数演算などのうちのいずれか1つまたは複数を含むが、これらに限定されるのではない。
【0029】
いくつかの実施例において、電子デバイス30は、バッファメモリ33及びオフチップメモリ34をさらに備えることができる。バッファメモリ33は、1つまたは複数の独立のキャッシュメモリまたはデータキャッシュ機能を有する処理ユニットを備えることができ、制御ユニット31の制御によりオフチップメモリ34に対してメモリアクセスすることができる。いくつかの実施例において、バッファメモリ33は、スタティックランダムアクセスメモリ(static random access memory、SRAM)などの高速かつ小容量のスタティックアクセスメモリであってもよい。例示的に、バッファメモリ33は、オフチップメモリ34からの入力特徴データの少なくとも一部および/または畳み込みカーネルのデータを受信してコンピューティングユニット32に使用されるように構成されてもよく、計算ユニット32が出力した出力特徴データを受信してキャッシュし、オフチップメモリ34に出力するように構成されてもよい。
【0030】
オフチップメモリ34は、1つまたは複数の独立のメモリまたはデータ記憶機能を有する処理ユニットを備えることができ、制御ユニット31の制御によりバッファメモリ33がメモリアクセスすることができるようにする。いくつかの実施例において、オフチップメモリ34は、ダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)などの低速かつ大容量のダイナミックアクセスメモリである。いくつかの実施例において、オフチップメモリ34は、ダブルデータレート(double data rate、DDR)である。
【0031】
本開示の実施例は、電子デバイス30の具体的な構造に対して限定せず、電子デバイス30が備える部品は、
図3に示す部品よりも多くても少なくてもよい。例えば、電子デバイス30は、バスなどのコンポーネントを備えることができる。
【0032】
本開示の以下の実施例の方法は、画像処理やインテリジェントドライブなどの、ニューラルネットワーク計算を必要とする多くの分野に適用されることができ、例えば、画像処理の分野において、本開示の実施例に係る方法で画像データを処理することができる。
【0033】
図4は、本開示の実施例に係るニューラルネットワークアクセラレータ用の命令生成方法であり、この方法は、コンパイル側デバイスに適用されることができ、
図4に示すように、この方法は、以下のステップ401~ステップ403を含む。
【0034】
ステップ401では、ニューラルネットワークモデルに対応する複数の第1の空間情報を決定する。
【0035】
ここで、第1の空間情報は、ニューラルネットワークモデルにおける少なくとも1つのニューラルネットワーク層を示すためのものである。
【0036】
いくつかの実施形例において、ニューラルネットワークモデルは、自然言語処理、コンピュータビジョン、音声認識、画像処理などの分野に適用されるモデルであることができる。本願では、ニューラルネットワークモデルの使用シナリオを限定しない。
【0037】
ニューラルネットワークモデルは、複数のニューラルネットワーク層から構成され、例えば、ニューラルネットワークモデルには、500以上のニューラルネットワーク層が含まれるが、本願ではニューラルネットワークモデルの層の数を限定せず、ニューラルネットワークモデルの層の数は、実際の適用に応じるものである。
図5は、ニューラルネットワーク層1と、ニューラルネットワーク層2と、ニューラルネットワーク層3と、ニューラルネットワーク層4と、ニューラルネットワーク層5と、を備えるニューラルネットワークモデル50を例示する。ニューラルネットワークモデルにおける複数のニューラルネットワーク層を区分することで、ニューラルネットワークモデルに対応する複数の階層空間を取得することができ、複数の階層空間をそれぞれ処理することで、複数の第1の空間情報を取得することができる。複数の第1の空間情報には、それぞれ、ニューラルネットワーク層と、ニューラルネットワーク層のデータ情報とが含まれる。
【0038】
ここで、ニューラルネットワーク層のデータ情報には、ニューラルネットワーク層に対応する演算操作の種類、入力データのデータサイズおよびハイパーパラメータなどが含まれる。ニューラルネットワーク層に対応する演算操作は、畳み込み演算、プーリング演算、活性化関数演算等のうちのいずれか1つまたは複数が含むが、これらに限定されるのではない。
【0039】
ニューラルネットワーク層の入力データは、画像データでもテキストデータでもよいが、本願では、ニューラルネットワーク層の入力データを限定しない。例えば、ニューラルネットワーク層の入力データは、画像データであり、画像データのデータサイズは、H×W×Cである。ここで、Hは、画像の長さであり、Wは、画像の幅であり、Cは、画像のチャンネル数を指し、通常、グレースケール画像のチャンネル数は、1であり、カラー画像のチャンネル数は、3である。
【0040】
異なるニューラルネットワーク層に対応する演算操作の種類は、同じであっても、異なっていてもよい。例示的に、異なるニューラルネットワーク層に対応する演算操作の種類が異なり、これに応じて、異なるニューラルネットワーク層に対応するハイパーパラメータも異なる。例えば、ニューラルネットワーク層が畳み込み層である場合、対応するハイパーパラメータには、畳み込みカーネルのサイズ、畳み込みカーネルの数、畳み込みのストライドおよびゼロパディング(ゼロ埋め)の数が含まれる。別の例として、ニューラルネットワーク層がプーリング層である場合、対応するハイパーパラメータには、プーリングカーネルのサイズ、プーリングのストライドおよびゼロパディング(ゼロ埋め)の数が含まれる。
【0041】
いくつかの実施例において、
図6に示すように、上記の
図4に示す実施例のうえで、上記のステップ401は、ステップ601~ステップ603を含む。
【0042】
ステップ601では、ニューラルネットワークモデルのモデルパラメータを決定する。
【0043】
ここで、モデルパラメータには、ニューラルネットワーク層の数、および/または、ニューラルネットワーク層の入出力タイプが含まれる。いくつかの実施例において、ニューラルネットワーク層の入出力タイプは、単入力単出力(SISO)、単入力二出力(SIDO)、および二入力二出力(DIDO)のうちの少なくとも1つを含む。
【0044】
ニューラルネットワークモデルは、主に高水準言語ソースコードで記述し、高水準言語ソースコードに対して変換を行うことにより、ニューラルネットワークモデルに対応する最適化空間を取得することができる。最適化空間により、ニューラルネットワークモデルのモデルパラメータをより直観的に取得して決定することができる。
【0045】
ここで、高水準言語ソースコードに対する変換は、高水準言語ソースコードをモデル可視化ソフトウェア(例えば、Netron)に入力し、モデル可視化ソフトウェアがニューラルネットワークモデルに対応する最適化空間を出力することができる。例示的に、モデル可視化ソフトウェアは、
図5に示すような有向非巡回グラフ(directed acyclic graph、DAG)を出力する。このDAGは、1つの最適化空間である。DAGは、ニューラルネットワークモデルをグラフ構造の形式で記述する。ニューラルネットワークモデルは、DAGにおいてノードと有向辺とに抽象化される。ノードは、ニューラルネットワークモデルにおけるニューラルネットワーク層(すなわち、ニューラルネットワーク層1、ニューラルネットワーク層2、ニューラルネットワーク層3、ニューラルネットワーク層4およびニューラルネットワーク層5)を代表し、有向辺は、ニューラルネットワーク層に対応する入力データを代表する。
【0046】
高水準言語ソースコードに対する変換は、高水準言語ソースコードのステートメントを分析して、ニューラルネットワークモデルにおける複数のニューラルネットワーク層と複数のニューラルネットワーク層に対応する入力データとを抽出し、抽出された複数のニューラルネットワーク層と複数のニューラルネットワーク層に対応する入力データとに基づいて、計算命令シーケンスを生成することもでき、この計算命令シーケンスは、1つの最適化空間である。
【0047】
最適化空間に基づいて、ニューラルネットワークモデルのモデルパラメータをより形象的に説明することができる。例示的な、
図5は、DAGで記述した最適化空間を示し、この最適化空間は、ニューラルネットワークモデル50が、ニューラルネットワーク層1と、ニューラルネットワーク層2と、ニューラルネットワーク層3と、ニューラルネットワーク層4と、ニューラルネットワーク層5との5つのニューラルネットワーク層を備えることを意味する。ニューラルネットワーク層1の入出力タイプは、単入力単出力である。ニューラルネットワーク層2の入出力タイプも、同様に単入力単出力である。ニューラルネットワーク層3の入出力タイプは、単入力二出力である。ニューラルネットワーク層4の入出力タイプは、単入力単出力である。ニューラルネットワーク層5の入出力タイプは、二入力単出力(DISO)である。
【0048】
ニューラルネットワーク層の入出力タイプは、主にニューラルネットワークモデルにおけるニューラルネットワーク層に関連し、ニューラルネットワークモデルの入出力タイプは、三入力三出力または四入力四出力であってもよい。これに対して、本願では限定しない。
【0049】
ステップ602では、ニューラルネットワークモデルのモデルパラメータに基づいて、ニューラルネットワークモデルにおけるニューラルネットワーク層に対応する複数の階層空間を取得する。
【0050】
ニューラルネットワークモデルのモデルパラメータに基づいて、ニューラルネットワークモデルにおけるニューラルネットワーク層を区分して、複数の階層空間を取得する。各階層空間には、少なくとも1つのニューラルネットワーク層が含まれる。例示的に、ニューラルネットワークモデルにおけるニューラルネットワーク層に対する区分は、予め設定されたルールに従って行われることができる。ここで、予め設定されたルールは、ニューラルネットワーク層の数に関連していてもよく、ニューラルネットワーク層の入出力タイプに関連していてもよく、または、ニューラルネットワーク層の数とニューラルネットワークの入出力タイプとの両方に関連していてもよい。予め設定されたルールについて、本願では限定しない。
【0051】
例えば、予め設定されたルールは、2つのニューラルネットワーク層を1つの階層空間に区分して、複数の階層空間を取得することができる。
図5と組み合わせると、区分後の階層空間は、5つがあり、それぞれ階層空間a(ニューラルネットワーク層1とニューラルネットワーク層2)、階層空間b(ニューラルネットワーク層2とニューラルネットワーク層3)、階層空間c(ニューラルネットワーク層3とニューラルネットワーク層4)、階層空間d(ニューラルネットワーク層4とニューラルネットワーク層5)、階層空間e(ニューラルネットワーク層3とニューラルネットワーク層5)である。
【0052】
または、予め設定されたルールは、3つのニューラルネットワーク層を1つの階層空間に区分して、複数の階層空間を取得することができる。
図5と組み合わせると、区分後の階層空間は、4つがあり、それぞれ階層空間f(ニューラルネットワーク層1からニューラルネットワーク層3)、階層空間g(ニューラルネットワーク層2からニューラルネットワーク層4)、階層空間h(ニューラルネットワーク層3からニューラルネットワーク層5)、階層空間i(ニューラルネットワーク層2とニューラルネットワーク層3とニューラルネットワーク層5)である。
【0053】
または、予め設定されたルールは、ニューラルネットワーク層の入出力タイプに従って区分して、複数の階層空間を取得することができる。
図5と組み合わせると、区分後の階層空間は、4つがあり、それぞれ階層空間h(ニューラルネットワーク層1とニューラルネットワーク層2)、階層空間l(ニューラルネットワーク層3)、階層空間j(ニューラルネットワーク層4)と、階層空間k(ニューラルネットワーク層5)である。ここで、ニューラルネットワーク層1とニューラルネットワーク層2との入出力タイプは、単入力単出力であり、ニューラルネットワーク層3の入出力タイプは、単入力二出力であり、ニューラルネットワーク4の入出力タイプは、単入力単出力であり、ニューラルネットワーク層5の入出力タイプは、二入力単出力である。ニューラルネットワーク層4の入出力タイプは、ニューラルネットワーク層1およびニューラルネットワーク層2の入出力タイプと同じであるが、ニューラルネットワーク層4の入力データがニューラルネットワーク3の出力データに依存するので、ニューラルネットワーク4は、階層空間hに区分されることができず、別途に階層空間jに区分される必要がある。
【0054】
図5に示すニューラルネットワークモデル50を例として、ニューラルネットワークモデル50は、複数の階層空間に区分されることができ、複数の階層空間の詳細は、以下の表1の通りである。
【表1】
【0055】
表1によれば、ニューラルネットワークモデル50は、18つの階層空間に区分されるでき、それぞれ、階層空間1、階層空間2、階層空間3、階層空間4、階層空間5、階層空間6、階層空間7、階層空間8、階層空間9、階層空間10、階層空間11、階層空間12、階層空間13、階層空間14、階層空間15、階層空間16、階層空間17、階層空間18である。
【0056】
ここで、階層空間1は、ニューラルネットワーク層1から構成される。階層空間2は、ニューラルネットワーク層2から構成される。階層空間3は、ニューラルネットワーク層3から構成される。階層空間4は、ニューラルネットワーク層4から構成される。階層空間5は、ニューラルネットワーク層5から構成される。階層空間6は、ニューラルネットワーク層1~2(具体的には、ニューラルネットワーク層1およびニューラルネットワーク層2を含む)から構成される。階層空間7は、ニューラルネットワーク層2~3(具体的には、ニューラルネットワーク層2およびニューラルネットワーク層3を含む)から構成される。階層空間8は、ニューラルネットワーク層3~4(具体的には、ニューラルネットワーク層3およびニューラルネットワーク層4を含む)から構成される。階層空間9は、ニューラルネットワーク層4~5(具体的には、ニューラルネットワーク層4およびニューラルネットワーク層5を含む)から構成される。階層空間10は、ニューラルネットワーク層3および5(具体的には、ニューラルネットワーク層3およびニューラルネットワーク層5を含む)から構成される。階層空間11は、ニューラルネットワーク層1~3(具体的には、ニューラルネットワーク層1と、ニューラルネットワーク層2と、ニューラルネットワーク層3と、を含む)から構成される。階層空間12は、ニューラルネットワーク層2~4(具体的には、ニューラルネットワーク層2と、ニューラルネットワーク層3と、ニューラルネットワーク層4と、を含む)から構成される。階層空間13は、ニューラルネットワーク層3~5(具体的には、ニューラルネットワーク層3と、ニューラルネットワーク層4と、ニューラルネットワーク層5と、を含む)から構成される。階層空間14は、ニューラルネットワーク層2~3および5(具体的には、ニューラルネットワーク層2と、ニューラルネットワーク層3と、ニューラルネットワーク層5と、を含む)から構成される。階層空間15は、ニューラルネットワーク層1~4(具体的には、ニューラルネットワーク層1と、ニューラルネットワーク層2と、ニューラルネットワーク層3と、ニューラルネットワーク層4と、を含む)から構成される。階層空間16は、ニューラルネットワーク層2~5(具体的には、ニューラルネットワーク層2と、ニューラルネットワーク層3と、ニューラルネットワーク層4と、およびニューラルネットワーク層5と、を含む)から構成される。階層空間17は、ニューラルネットワーク層1~3および5(具体的には、ニューラルネットワーク層1と、ニューラルネットワーク層2と、ニューラルネットワーク層3と、ニューラルネットワーク層5と、を含む)から構成される。階層空間18は、ニューラルネットワーク層1~5(具体的には、ニューラルネットワーク層1と、ニューラルネットワーク層2と、ニューラルネットワーク層3と、ニューラルネットワーク層4と、ニューラルネットワーク層5と、を含む)から構成される。
【0057】
ステップ603では、複数の階層空間に基づいて、複数の第1の空間情報を取得する。
【0058】
いくつかの実施例において、複数の階層空間に基づいて、複数の第1の空間情報を取得することは、具体的には、複数の階層空間に基づいて符号化(コーディング)して、複数の第1の空間情報を取得することができ、複数の階層空間は、複数の第1の空間と1対1に対応する。
【0059】
いくつかの実施例において、
図7に示すように、上記の
図4に示す実施例のうえで、上記のステップ603は、ステップ701を含む。
【0060】
ステップ701では、複数の階層空間およびニューラルネットワークアクセラレータのハードウェアリソース情報を符号化して、複数の第1の空間情報を取得する。
【0061】
ニューラルネットワークエンコーダによりコンパイル最適化されたニューラルネットワークモデルは、ハードウェアデバイスで実行されるため、ニューラルネットワークモデルに対応する複数の階層空間を取得した後、ニューラルネットワークモデルが実行されるハードウェアデバイスも考慮する必要がある。したがって、ニューラルネットワークモデルが実行されるハードウェアデバイスを決定した後、ニューラルネットワークモデルに対応する複数の階層空間とハードウェアデバイスのハードウェアリソース情報とを組み合わせて符号化する。例示的に、ニューラルネットワークモデルがニューラルネットワークアクセラレータで実行されると決定された場合、複数の階層空間における各階層空間とニューラルネットワークアクセラレータのハードウェアリソース情報とがそれぞれ符号化される。
【0062】
いくつかの実施例において、複数の階層空間およびニューラルネットワークアクセラレータのハードウェアリソース情報を符号化して第1の空間情報を取得することは、ハッシュアルゴリズムにより、複数の階層空間およびニューラルネットワークアクセラレータのハードウェアリソース情報を符号化して第1の空間情報を取得することができる。符号化された複数の第1の空間情報は、複数のキー値で示すことができる。複数のキー値は、複数の階層空間に1対1に対応し、複数のキー値で複数の階層空間およびニューラルネットワークアクセラレータを一意的に識別する。
【0063】
また、符号化プロセス中、複数のマッピング関係が存在することができ、プロセッサは、複数のマッピング関係を記憶する。ここで、マッピング関係は、第1の空間情報と、第1の空間情報に対応する階層空間およびニューラルネットワークアクセラレータのハードウェアリソース情報とを指示するためのものである。複数のマッピング関係が記憶する階層空間は異なる。複数のマッピング関係が記憶する第1の空間情報も異なる。
【0064】
ここで、複数の階層空間における各階層空間およびニューラルネットワークアクセラレータのハードウェアリソース情報に対する符号化は、階層空間およびニューラルネットワークアクセラレータを特徴づける一意的な識別子を得ることができれば、他のアルゴリズムを使用されてもよく、本願では階層空間およびニューラルネットワークアクセラレータの符号化アルゴリズムを限定しない。符号化後の複数の第1の空間情報は、符号化前の階層空間およびニューラルネットワークアクセラレータのハードウェアリソース情報よりも占有する記憶空間が小さい。また、符号化前の階層空間およびニューラルネットワークアクセラレータのハードウェアリソース情報がデータ処理に利用される場合に比べて、複数の第1の空間情報がデータ処理に利用されることにより、処理されるデータリソースが少なくなり、データリソースの処理に必要なハードウェアリソースも少なくなる。したがって、符号化の方法を使用すると、ハードウェアリソースの消費をある程度削減することができる。
【0065】
ステップ402では、第1の空間情報に基づいて、キャッシュからポリシーマッピング関係を検索して、少なくとも1つの第1の空間情報にそれぞれ対応する第1のポリシー情報を取得する。
【0066】
ここで、ポリシーマッピング関係は、複数の目標空間情報と、目標空間情報にそれぞれ対応する目標ポリシー情報と、を含み、複数の目標空間情報は、少なくとも1つの第1の空間情報を含む。
【0067】
ニューラルネットワークモデルの規模がますます大きくなる(すなわち、ニューラルネットワーク層の数が増える)と、ステップ601~ステップ701から分からように、ニューラルネットワークモデルに対応する階層空間がますます多くなり、階層空間に対応する第1の空間情報もますます多くなる。次に、各第1の空間情報に対応する第1のポリシー情報をそれぞれ決定し、最後に、複数の第1のポリシー情報に基づいて、ニューラルネットワークモデルに対応する全体的最適化ポリシーを得る。複数の第1の空間情報の第1のポリシー情報は、計算によりのみ得られることができる。したがって、第1の空間情報が多いほど、決定する必要がある、第1の空間情報に対応する第1のポリシー情報が多い。これにより、計算量が大幅増えて計算にかかる時間も長くなる。
【0068】
よって、本願は、ポリシーマッピング関係を使用して、第1の空間情報に対応する第1のポリシー情報を決定するプロセスを削減して、時間の消費とハードウェアリソースの消費を削減する。例示的に、ポリシーマッピング関係には、大量の目標空間情報と、各目標空間情報に対応する目標ポリシー情報とが予め記憶される。ここで、目標空間情報は、キー値の形式で記憶され、目標空間情報に対応する目標ポリシー情報は、バリュー値の形式で記憶される。ニューラルネットワークモデルに対応する複数の第1の空間情報を決定した後、複数の第1の空間情報もキー値の形式で記憶されるため、複数の第1の空間情報に対応するキー値とポリシーマッピング関係における複数の目標空間情報に対応するキー値とを直接比較することができる。比較により複数の目標空間情報から第1の空間情報と一致する目標空間情報を決定してから、目標空間情報に対応する目標ポリシー情報を、第1の空間情報に対応する第1のポリシー情報とする。これにより、目標空間情報と一致する第1の空間情報について、第1の空間情報に対応する第1のポリシー情報を改めて決定する必要がなく、第1のポリシー情報をそのまま利用することができ、コンパイル最適化の時間が短縮される。
【0069】
ステップ403では、動的計画アルゴリズムおよび複数のポリシー情報により、ニューラルネットワークモデルに対応する全体的最適化ポリシーを決定して、ニューラルネットワークアクセラレータで実行可能な命令を生成する。
【0070】
ここで、複数のポリシー情報は、少なくとも1つの第1の空間情報にそれぞれ対応する第1のポリシー情報を含む。
【0071】
動的計画アルゴリズムは、複数のポリシー情報を分析し、複数のポリシー情報から、ニューラルネットワークモデルが適用されるシナリオに適合度がより高いポリシーを決定し、このポリシーをニューラルネットワークモデルに対応する全体的最適化ポリシーとし、この全体的最適化ポリシーに基づいて、ニューラルネットワークアクセラレータで実行可能な命令を生成する。
【0072】
例えば、ニューラルネットワークモデルが適用されるシナリオには、ニューラルネットワークモデルが短時間でデータを出力するとのことが要求される。この場合、動的計画アルゴリズムは、複数のポリシー情報を分析し、複数のポリシー情報から、所要時間が最短のポリシーを検索して全体的最適化ポリシーとする。別の例として、ニューラルネットワークモデルが適用されるシナリオには、ニューラルネットワークモデルが同一時間内で占有するメモリアクセス帯域幅リソースが少ないほどよいとのことが要求される。この場合、動的計画アルゴリズムは、複数のポリシー情報を分析し、複数のポリシー情報から、占有するメモリアクセス帯域幅リソースが最少のポリシーを検索して全体的最適化ポリシーとする。
【0073】
この技術的構成によれば、ポリシーマッピング関係を予め設定することにより、データベースが予め設定されることとされ、このデータベースには、複数の空間(すなわち、目標空間情報)に対応する最適化ポリシー(すなわち、目標空間情報)がキャッシュされる。新しいニューラルネットワークモデルをコンパイル最適化する必要がある場合、ニューラルネットワークモデルを複数の空間(すなわち、第1の空間情報)に区分してから、データベース(すなわち、ポリシーマッピング関係)から複数の空間に対応する最適化ポリシーを検索する。最適化ポリシーが検索されると、空間に対応する最適化ポリシーに対する計算は不要となり、ニューラルネットワークコンパイラのコンパイル最適化の時間が短縮される。
【0074】
いくつかの実施例において、
図8に示すように、上記の
図4に示す実施例のうえで、この方法は、ステップ801をさらに含む。
【0075】
ステップ801では、複数の第1の空間情報に目標空間情報とは異なる少なくとも1つの第2の空間情報が存在する場合、少なくとも1つの第2の空間情報にそれぞれ対応する第2のポリシー情報を決定する。
【0076】
ここで、複数のポリシー情報は、少なくとも1つの第2の空間情報にそれぞれ対応する第2のポリシー情報を含む。
【0077】
ポリシーマッピング関係から複数の第1の空間情報と一致する目標空間情報を検索し、複数の第1の空間情報に対応する目標空間情報がすべて検索されると、検索された複数の第1の空間情報の各々に対応する目標ポリシー情報を、それぞれ複数の第1の空間情報における各第1の空間情報に対応する第1のポリシー情報とする。これにより、ステップ403における複数のポリシー情報は、複数の第1の空間情報における各第1の空間情報に対応する第1のポリシー情報となる。
【0078】
複数の第1の空間情報において一部の第1の空間情報に対応する目標空間情報のみが検索されると、検索された目標空間情報の各々に対応する目標ポリシー情報を、それぞれ一部の第1の空間情報に対応する第1のポリシー情報とする。
【0079】
目標空間情報が検索されなかった第1の空間情報を第2の空間情報(すなわち、複数の第1の空間情報のうちに存在する、目標空間情報とは異なる少なくとも1つの第2の空間情報)と決定し、各第2の空間情報に対応する第2のポリシー情報を順に決定する。すなわち、複数のポリシー情報は、一部の第1空間情報に対応する第1のポリシー情報と、複数の第2の空間情報に対応する複数の第2のポリシー情報と、を含む。
【0080】
いくつかの実施例において、
図9に示すように、上記の
図4に示す実施例のうえで、上記ステップ801の「複数の第1の空間情報に目標空間情報とは異なる少なくとも1つの第2の空間情報が存在する場合、少なくとも1つの第2の空間情報にそれぞれ対応する第2のポリシー情報を決定する」における「少なくとも1つの第2の空間情報にそれぞれ対応する第2のポリシー情報を決定する」ステップは、ステップ901~ステップ903を含む。
【0081】
ステップ901では、第2の空間情報に基づいて、第2の空間情報に対応する複数の候補ポリシーを決定する。
【0082】
第1の空間情報は、階層空間を符号化して得られるものであるため、複数の第1の空間情報における少なくとも1つの第2の空間情報も符号化して得られるものである。ステップ701から分からように、符号化プロセス中、プロセッサは、複数のマッピング関係を記憶する。第2の空間情報は、符号化して得られるものであるため、複数のマッピング関係から第2の空間情報に対応する第2の空間を検索することができる。第2の空間は、少なくとも1つのニューラルネットワーク層とニューラルネットワーク層のデータ情報とを含む。第2の空間は、複数の階層空間のうちの一部である。
【0083】
ニューラルネットワーク層のデータ情報の詳細については、ステップ401の説明を参照することができ、ここでは説明を省略する。
【0084】
第2の空間情報に対応する複数の候補ポリシーを決定することは、具体的に、第2の空間におけるニューラルネットワーク層に対応する複数の候補ポリシーを決定することである。決定プロセスは、第2空間におけるニューラルネットワーク層のデータ情報に基づいて、第2の空間におけるニューラルネットワーク層の入力データのデータサイズを決定してから、入力データのデータサイズとニューラルネットワークアクセラレータのハードウェアリソースとに基づいて、複数の候補ポリシーを得る。
【0085】
ステップ902では、複数の計算ノードが第2の空間情報に対応する複数の候補ポリシーを実行する複数のコストパラメータを決定する。
【0086】
1つの第2の空間情報は、複数の候補ポリシーに対応することができるので、少なくとも1つの第2の空間情報に対応する複数の候補ポリシーの複数のコストパラメータを迅速に決定するために、少なくとも1つの第2の空間情報を複数の計算ノードに割り当て、計算ノードを利用して第2の空間情報に対応する複数の候補ポリシーの複数のコストパラメータを決定することができる。第2の空間情報を計算ノードに割り当てるための割り当て規則は、第2の空間情報に対応する複数の候補ポリシーの複数のコストパラメータを処理するに必要な計算リソースが、計算ノードの現在残りの計算リソースよりも少ないことである。
【0087】
したがって、ニューラルネットワークコンパイラは、プロセッサ(例えば、CPU)内の各計算ノードの負荷能力、処理対象のデータおよび残りの計算リソースを取得してから、第2の空間情報を処理するに必要な計算リソースを推定し、計算ノードの残りの計算リソースと第2の空間情報を処理するに必要な計算リソースとを比較して、第2の空間情報を処理するための計算ノードを決定する。計算ノードの決定プロセス中、各計算ノード間の負荷バランスも考慮することにより、単一の計算ノードの過負荷動作を回避することができる。
【0088】
複数の計算ノードがそれぞれ各第2の空間に対応する複数の候補ポリシーを実行することにより、各候補ポリシーに対応する複数のコストパラメータを得る。これにより、処理が高速化され、所要時間も短縮される。ここで、複数のコストパラメータには、処理時間、消費された計算リソース、占有された記憶リソース、および処理周期などが含まれる。
【0089】
ステップ903では、複数のコストパラメータに基づいて、複数の候補ポリシーから第2の空間情報に対応する第2のポリシー情報を決定する。
【0090】
ニューラルネットワークモデルの適用シナリオと複数のコストパラメータとを組み合わせて、複数の候補ポリシーから第2の空間情報に対応する第2のポリシー情報を決定する。例えば、ニューラルネットワークモデルの適用シナリオは、自動車のリアルタイムナビゲーションである。第2の空間情報に対応する複数の候補ポリシーには、候補ポリシー1および候補ポリシー2が含まれる。候補ポリシー1に対応するコストパラメータによると、候補ポリシー1が第2の空間情報に対応するニューラルネットワーク層の計算を実行するときの所要時間が長いが、占有する帯域幅リソースが少ない。候補ポリシー2に対応するコストパラメータによると、候補ポリシー2が第2の空間情報に対応するニューラルネットワーク層の計算を実行するときの所要時間が短いが、占有する帯域幅リソースが多い。運転中、ナビゲーション結果をリアルタイムに受信することができるためには、このシナリオでは、候補ポリシー2を第2のポリシー情報とする。
【0091】
いくつかの実施例において、
図10に示すように、上記の
図9に示す実施例のうえで、上記ステップ903は、ステップ1001~ステップ1002を含む。
【0092】
ステップ1001では、複数のコストパラメータに基づいて、複数の候補ポリシーから第2の最適化ポリシーを決定する。
【0093】
ステップ1002では、第2の最適化ポリシーを符号化して、第2の空間情報に対応する第2のポリシー情報を取得する。
【0094】
ステップ903によれば、ニューラルネットワークモデルの適用シナリオおよび複数のコストパラメータに基づいて、複数の候補ポリシーから第2の最適化ポリシーを決定してから、第2の最適化ポリシーを符号化して、第2のポリシー情報を取得することができる。第2のポリシー情報は、バリュー値で示されることができる。第2の最適化ポリシーは、多くのデータ情報を有するため、符号化することで第2の最適化ポリシーのデータ量を削減することができる。これにより、記憶負荷が軽減されることができるだけではなく、計算負荷も軽減されることができる。
【0095】
いくつかの実施例において、
図11に示すように、上記の
図10に示す実施例のうえで、上記方法は、ステップ1101をさらに含む。
【0096】
ステップ1101では、ポリシーマッピング関係に第2の空間情報に対応する第2のポリシー情報を追加する。
【0097】
ステップ801から分からように、複数の第1の空間情報には、目標空間情報とは異なる少なくとも1つの第2の空間情報が存在する可能性があるので、計算ノードにより第2の空間情報に対応する第2のポリシー情報を決定してから、第2の空間情報と第2の空間情報に対応する第2のポリシー情報とをポリシーマッピング関係へ更新することができる。これにより、ポリシーマッピング関係のデータ量を拡張することができ、次回のコンパイル最適化の際に、更新されたポリシーマッピング関係で検索することができ、検索範囲が広がり、第1のポリシー情報が検索される可能性が高まり、コンパイル最適化の所要時間がさらに短縮される。
【0098】
いくつかの実施例において、
図12に示すように、上記の
図11に示す実施例のうえで、上記ステップ403は、ステップ1201~ステップ1203を含む。
【0099】
ステップ1201では、第1のポリシー情報および第2のポリシー情報に基づいて、第1のポリシー情報に対応する第1の最適化ポリシーと第2のポリシー情報に対応する第2の最適化ポリシーとを決定する。
【0100】
第1のポリシー情報および第2のポリシー情報は、符号化による生成されるものであるため、プロセッサが記憶した複数のマッピング関係には、第1のポリシー情報および第2のポリシー情報が含まれている。第1のポリシー情報と第2のポリシー情報とに基づいて、ニューラルネットワークモデルに対応する全体的最適化ポリシーを決定する必要がある場合、複数のマッピング関係に基づいて、第1のポリシー情報に対応する第1の最適化ポリシーと第2のポリシー情報に対応する第2の最適化ポリシーとを検索することができる。
【0101】
ステップ1202では、動的計画アルゴリズムに従って、少なくとも1つの第1の最適化ポリシーと少なくとも1つの第2の最適化ポリシーとから、ニューラルネットワークモデルに対応する全体的最適化ポリシーを決定する。
【0102】
例示的に、
図5に示すニューラルネットワークモデル50を例とし、表1のように、ニューラルネットワークモデル50は、18つの階層空間に対応する。ポリシーマッピング関係に対して検索を行って、ポリシーマッピング関係に、ニューラルネットワーク層1~ニューラルネットワーク層3に対応する複数の階層空間と複数の階層空間にそれぞれ対応する第1の最適化ポリシーとのみが含まれていることが確定される。複数の階層空間は、それぞれ、階層空間1、階層空間2、階層空間3、階層空間6、階層空間7、階層空間11である。複数の階層空間にそれぞれ対応する第1の最適化ポリシーは、階層空間1に対応する第1の最適化ポリシー、階層空間2に対応する第1の最適化ポリシー、階層空間3に対応する第1の最適化ポリシー、階層空間6に対応する第1の最適化ポリシー、階層空間7に対応する第1の最適化ポリシー、階層空間11に対応する第1の最適化ポリシーである。
【0103】
ポリシーマッピング関係にニューラルネットワーク層1~ニューラルネットワーク層3に対応する複数の階層空間と複数の階層空間にそれぞれ対応する第1の最適化ポリシーとのみが含まれていることが確定されるため、ニューラルネットワーク層4またはニューラルネットワーク層5に関連する複数の階層空間と複数の階層空間にそれぞれ対応する第2の最適化ポリシーとを新たに決定する必要がある。
【0104】
例示的に、ステップ901~ステップ1002を利用して、ニューラルネットワーク層4またはニューラルネットワーク層5に関連する複数の階層空間と複数の階層空間にそれぞれ対応する第2の最適化ポリシーを決定することができる。ニューラルネットワーク層4またはニューラルネットワーク層5に関連する複数の階層空間は、それぞれ階層空間4、階層空間5、階層空間8、階層空間9、階層空間10、階層空間12、階層空間13、階層空間14、階層空間15、階層空間16、階層空間17、階層空間18である。ニューラルネットワーク層4またはニューラルネットワーク層5に関連する複数の階層空間にそれぞれ対応する第2の最適化ポリシーは、階層空間4に対応する第2の最適化ポリシー、階層空間5に対応する第2の最適化ポリシー、階層空間8に対応する第2の最適化ポリシー、階層空間9に対応する第2の最適化ポリシー、階層空間10に対応する第2の最適化ポリシー、階層空間12に対応する第2の最適化ポリシー、階層空間13に対応する第2の最適化ポリシー、階層空間14に対応する第2の最適化ポリシー、階層空間15に対応する第2の最適化ポリシー、階層空間16に対応する第2の最適化ポリシー、階層空間17に対応する第2の最適化ポリシー、階層空間18に対応する第2の最適化ポリシーである。
【0105】
動的計画アルゴリズムに従って、階層空間1に対応する第1の最適化ポリシー、階層空間2に対応する第1の最適化ポリシー、階層空間3に対応する第1の最適化ポリシー、階層空間6に対応する第1の最適化ポリシー、階層空間7に対応する第1の最適化ポリシー、階層空間11に対応する第1の最適化ポリシー、階層空間4に対応する第2の最適化ポリシー、階層空間5に対応する第2の最適化ポリシー、階層空間8に対応する第2の最適化ポリシー、階層空間9に対応する第2の最適化ポリシー、階層空間10に対応する第2の最適化ポリシー、階層空間12に対応する第2の最適化ポリシー、階層空間13に対応する第2の最適化ポリシー、階層空間14に対応する第2の最適化ポリシー、階層空間15に対応する第2の最適化ポリシー、階層空間16に対応する第2の最適化ポリシー、階層空間17に対応する第2の最適化ポリシー、および階層空間18に対応する第2の最適化ポリシーに基づいて、ニューラルネットワークモデル50に対応する全体的最適化ポリシーが、階層空間11に対応する第1の最適化ポリシー、階層空間4に対応する第2の最適化ポリシー、階層空間5に対応する第2の最適化ポリシーであることが決定される。
【0106】
ステップ1203では、ニューラルネットワークモデルに対応する全体的最適化ポリシーに基づいて、ニューラルネットワークアクセラレータで実行可能な命令を生成する。
【0107】
本開示の実施例におけるコンパイル側デバイスは、ニューラルネットワークアクセラレータで実行可能な命令を生成するときに、ニューラルネットワークモデルを複数の第1の空間情報に区分してから、ポリシーマッピング関係から複数の第1空間情報に対応する複数の第1のポリシー情報を検索し、複数の第1空間情報においてポリシーマッピング関係から検索されなかったものがある場合、この検索されなかった空間情報(すなわち、第2の空間情報)に対応する第1のポリシー情報を決定してから、複数のポリシー情報(すなわち、第1のポリシー情報および第2のポリシー情報)と動的計画アルゴリズムとを利用して、ニューラルネットワークモデルに対応する全体的最適化ポリシーであるニューラルネットワークモデルのコンパイル最適化結果を決定する。ニューラルネットワークモデルの規模が通常非常に大きいので、ポリシーマッピング関係の方式で、いくつかの空間(すなわち、目標空間情報)に対応する最適化ポリシー(すなわち、目標ポリシー情報)を予め記憶することができる。これにより、第1の空間情報が目標空間情報と同じである場合、目標空間情報に対応する目標ポリシー情報を、直接第1の空間情報に対応する第1のポリシー情報とすることができ、これにより、第1のポリシー情報を決定するプロセスが省略され、ニューラルネットワークコンパイラのコンパイル最適化時間が短縮される。
【0108】
図13は、本開示の実施例に係る命令生成装置であり、
図13に示すように、命令生成装置1300は、区分モジュール1301と、検索モジュール1302と、生成モジュール1303と、を備える。
【0109】
区分モジュール1301は、ニューラルネットワークモデルに対応する複数の第1の空間情報を決定し、第1の空間情報は、ニューラルネットワークモデルにおける少なくとも1つのニューラルネットワーク層を示すためのものである。
【0110】
検索モジュール1302は、第1の空間情報に基づいて、キャッシュからポリシーマッピング関係を検索して、少なくとも1つの第1の空間情報に対応する第1のポリシー情報を取得し、ポリシーマッピング関係は、複数の目標空間情報と、目標空間情報にそれぞれ対応する目標ポリシー情報と、を含み、複数の目標空間情報は、少なくとも1つの第1の空間情報を含む。
【0111】
生成モジュール1303は、動的計画アルゴリズムおよび複数のポリシー情報により、ニューラルネットワークモデルに対応する全体的最適化ポリシーを決定して、ニューラルネットワークアクセラレータで実行可能な命令を生成し、複数のポリシー情報は、少なくとも1つの第1の空間情報にそれぞれ対応する第1のポリシー情報を含む。
【0112】
いくつかの実施例において、命令生成装置1300は、決定モジュールをさらに含む。決定モジュールは、複数の第1の空間情報に目標空間情報とは異なる少なくとも1つの第2の空間情報が存在する場合、少なくとも1つの第2の空間情報にそれぞれ対応する第2のポリシー情報を決定し、複数のポリシー情報は、少なくとも1つの第2の空間情報にそれぞれ対応する第2のポリシー情報を含む。
【0113】
いくつかの実施例において、決定モジュールは、第1の決定ユニットと、第2の決定ユニットと、第3の決定ユニットと、を備える。第1の決定ユニットは、第2の空間情報に基づいて、第2の空間情報に対応する複数の候補ポリシーを決定し、第2の決定ユニットは、計算ノードが第2の空間情報に対応する複数の候補ポリシーを実行する複数のコストパラメータを決定し、第3の決定ユニットは、複数のコストパラメータに基づいて、複数の候補ポリシーから第2の空間情報に対応する第2のポリシー情報を決定する。
【0114】
いくつかの実施例において、第3の決定ユニットは、さらに、複数のコストパラメータに基づいて複数の候補ポリシーから第2の最適化ポリシーを決定し、第2の最適化ポリシーを符号化して、第2の空間情報に対応する第2のポリシーを取得する。
【0115】
いくつかの実施例において、命令生成装置1300は、ポリシーマッピング関係に第2の空間情報に対応する第2のポリシー情報を追加するための追加モジュールを備える。
【0116】
いくつかの実施例において、区分モジュール1301は、さらに、ニューラルネットワークモデルのモデルパラメータを決定し、ニューラルネットワークモデルのモデルパラメータに基づいて、ニューラルネットワークモデルにおけるニューラルネットワーク層に対応する複数の階層空間を取得し、複数の階層空間に基づいて、複数の第1の空間情報を取得し、モデルパラメータには、ニューラルネットワーク層の数、および/または、ニューラルネットワーク層の入出力タイプが含まれる。
【0117】
いくつかの実施例において、ニューラルネットワーク層の入出力タイプは、単入力単出力、単入力二出力および二入力二出力のうちの少なくとも1つを含み、モデルパラメータは、有向非巡回グラフまたは計算命令シーケンスで示される。
【0118】
いくつかの実施例において、区分モジュール1301は、さらに、複数の階層空間およびニューラルネットワークアクセラレータのハードウェアリソース情報を符号化して、第1の空間情報を取得する。
【0119】
いくつかの実施例において、生成モジュール1303は、さらに、第1のポリシー情報と第2のポリシー情報とに基づいて、第1のポリシー情報に対応する第1の最適化ポリシーと第2のポリシー情報に対応する第2の最適化ポリシーとを決定し、動的計画アルゴリズムに従って、少なくとも1つの第1の最適化ポリシーと少なくとも1つの第2の最適化ポリシーとから、ニューラルネットワークモデルに対応する最適化ポリシーを決定し、ニューラルネットワークモデルに対応する最適化ポリシーに基づいて、ニューラルネットワークアクセラレータで実行可能な命令を生成する。
【0120】
図14は、本開示の実施例に係る電子デバイスの構造図であり、
図14に示すように、電子デバイス1400は、1つまたは複数のプロセッサ1401およびメモリ1402を備える。
【0121】
プロセッサ1401は、中央処理装置(CPU)またはデータ処理機能および/または命令実行機能を有する他の形態の処理ユニットであることができ、所望の機能を実行するために、電子デバイス1400内の他のコンポーネントを制御することができる。
【0122】
メモリ1402は、揮発性メモリおよび/または不揮発性メモリなどの様々な形態のコンピュータ可読記憶媒体を含む1つまたは複数のコンピュータプログラム製品を備えることができる。揮発性メモリには、例えば、ランダムアクセスメモリ(RAM)および/またはキャッシュメモリ(cache)が含まれることができる。不揮発性メモリには、例えば、読み取り専用メモリ(ROM)、ハードディスク、フラッシュメモリなどが含まれ得る。コンピュータ可読記憶媒体には、1つまたは複数のコンピュータプログラム命令が記憶されることができ、プロセッサ1401は、プログラム命令を実行して、上記の本開示の各実施例の命令生成方法および/または他の所望の機能を実現することができる。
【0123】
一例では、電子デバイス1400は、バスシステムおよび/または他の形態の接続手段(図示せず)を介して互いに接続される、入力装置1403および出力装置1404をさらに備えることができる。
【0124】
簡略化のために、
図14には、電子デバイス1400内の、本開示に関連するコンポーネントの一部のみが示され、バスや入出力インターフェースなどのコンポーネントは省略されている。さらに、具体的な応用条件に応じて、電子デバイス1400は、他の任意の適切なコンポーネントをさらに備えることができる。
【0125】
本開示の実施例は、上記の方法およびデバイスに加えて、コンピュータプログラム命令を含むコンピュータプログラム製品であることができる。このコンピュータプログラム命令プロセッサにより実行されると、プロセッサに、本開示の上記例示的な方法部分に記載の各実施例に係る命令生成方法におけるステップを実行させる。
【0126】
コンピュータプログラム製品は、1つまたは複数のプログラミング言語の任意の組み合わせで本開示の実施例の操作を実行するためのプログラムコードを作成することができ、プログラミング言語は、Java(登録商標)やC++(登録商標)などのオブジェクト指向プログラミング言語と、「C」言語または類似なプログラミング言語などの従来の手続き型プログラミング言語とを含む。プログラムコードは、ユーザーのコンピューティングデバイスで全体的に実行されてもよく、ユーザーのデバイスで部分的に実行されてもよく、個別のソフトウェアパッケージとして実行されてもよく、一部はユーザーのコンピューティングデバイスで実行され別の一部はリモートコンピューティングデバイスで実行されてもよく、リモートコンピューティングデバイスあるいはサーバーで全体的に実行されてもよい。
【0127】
また、本開示の実施例は、コンピュータプログラム命令が記憶されているコンピュータ可読記憶媒体であることもできる。このコンピュータプログラム命令がプロセッサにより実行されると、プロセッサに、本開示の上記例示的な方法に記載の各実施例に係る命令生成方法におけるステップを実行させる。
【0128】
コンピュータ可読記憶媒体は、1つまたは複数の可読媒体の任意の組み合わせを使用することができる。可読記憶媒体は、可読信号媒体または可読記憶媒体であってもよい。可読記憶媒体は、例えば、電気、磁気、光、電磁、赤外線、または半導体のシステム、装置あるいはデバイス、またはそれらの任意の組み合わせを含むことができるが、これらに限定されない。可読記憶媒体のより具体的な例(非網羅的なリスト)には、1つまたは複数の導線を有する電気的な接続、モバイルハードドライブ、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能なプログラマブル読み取り専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM)、光記憶装置、磁気記憶装置、または上記の任意の適切な組み合わせが含まれる。
【0129】
以上、具体的な実施例を参照しながら本開示の基本的原理を説明してきたが、本開示に言及される利点、優位性、効果などは限定されず、例示されるものにすぎず、これらの利点、優位性、効果などは、本開示の各実施例が必ずしも有するものではない。また、以上で開示された具体的な細部は、限定されず、例示する役割および理解を容易にする役割を果たすためのものにすぎず、上記細部は、本開示を必ずしも上記の具体的な細部により実現されるように限定するものではない。
【0130】
以上の説明は、例示及び説明のために提供される。また、この説明は、本開示の実施例を本明細書に開示される形態に限定することを意図するものではない。以上の説明において、複数の例示的な態様および実施例が説明されたが、当業者であれば、それらの特定の変形、修正、変更、追加、およびサブコンビネーションを認識することができる。