IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-523782単一の起動において複数の動作を実行するためのリカレントニューラルネットワークセル活性化
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-02
(54)【発明の名称】単一の起動において複数の動作を実行するためのリカレントニューラルネットワークセル活性化
(51)【国際特許分類】
   G06F 9/30 20180101AFI20240625BHJP
   G06N 3/063 20230101ALI20240625BHJP
   G06N 3/044 20230101ALI20240625BHJP
【FI】
G06F9/30 350A
G06N3/063
G06N3/044
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023571386
(86)(22)【出願日】2022-06-13
(85)【翻訳文提出日】2023-11-16
(86)【国際出願番号】 EP2022066055
(87)【国際公開番号】W WO2022263385
(87)【国際公開日】2022-12-22
(31)【優先権主張番号】17/350,747
(32)【優先日】2021-06-17
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】リヒテナウ、セドリック
(72)【発明者】
【氏名】ブラッドベリ、ジョナサン
(72)【発明者】
【氏名】アルバラカット、ライス
(72)【発明者】
【氏名】ワイスハウプト、サイモン
【テーマコード(参考)】
5B033
【Fターム(参考)】
5B033AA03
5B033BE00
(57)【要約】
リカレントニューラルネットワークセル活性化を実行する命令が実行される。実行することは、リカレントニューラルネットワークセル活性化の複数の演算を実行して、リカレントニューラルネットワークセル活性化の結果を提供することを含む。複数の演算は、命令の単一の起動において実行される。リカレントニューラルネットワークセル活性化は、例えば、長短期記憶セル活性化又はゲート付きリカレントユニットセル活性化である。
【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にするためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は:
1つ又は複数のコンピュータ可読記憶媒体、及び方法を実行するために前記1つ又は複数のコンピュータ可読記憶媒体上に集合的に記憶されたプログラム命令
を備え、前記方法は:
リカレントニューラルネットワークセル活性化を実行する命令を実行する段階
を有し、前記実行する段階は:
前記リカレントニューラルネットワークセル活性化の複数の演算を実行して、前記リカレントニューラルネットワークセル活性化の結果を提供する段階
を含み、前記複数の演算は、前記命令の単一の起動において実行される、コンピュータプログラム製品。
【請求項2】
前記複数の演算は、1つ又は複数のシグモイド関数及び1つ又は複数の正接関数を含む、直前の請求項に記載のコンピュータプログラム製品。
【請求項3】
前記複数の演算は、テンソル要素単位加算及びテンソル要素単位乗算演算を含む、前述の請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項4】
前記複数の演算は、1つ又は複数のシグモイド関数、1つ又は複数の正接関数、1つ又は複数のテンソル要素単位加算演算及び1つ又は複数のテンソル要素単位乗算演算を含む、前述の請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項5】
前記命令への1つ又は複数の入力は、1つ又は複数の連結テンソルを含む、前述の請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項6】
前記結果は、出力テンソルであり、前記出力テンソルは、前記命令の別の起動への入力である、前述の請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項7】
前記リカレントニューラルネットワークセル活性化は、長短期記憶セル活性化を含む、前述の請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項8】
前記リカレントニューラルネットワークセル活性化は、ゲート付きリカレントユニットセル活性化を含む、前述の請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項9】
前記リカレントニューラルネットワークセル活性化の前記複数の演算を実行する段階は、アクセラレータによって実行され、中間計算データを生成し、前記方法は、前記アクセラレータに前記中間計算データを記憶する段階を更に有する、前述の請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項10】
前記複数の演算を実行する段階は、空間的に近い入力データに対して前記複数の演算を実行する段階を含む、前述の請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項11】
コンピューティング環境内の処理を容易にするためのコンピュータシステムであって、前記コンピュータシステムは:
メモリ;及び
前記メモリと通信する少なくとも1つのプロセッサ
を備え、ここで、前記コンピュータシステムは、方法を実行するように構成されており、前記方法は:
リカレントニューラルネットワークセル活性化を実行する命令を実行する段階
を有し、前記実行する段階は:
前記リカレントニューラルネットワークセル活性化の複数の演算を実行して、前記リカレントニューラルネットワークセル活性化の結果を提供する段階
を含み、前記複数の演算は、前記命令の単一の起動において実行される、コンピュータシステム。
【請求項12】
前記複数の演算は、1つ又は複数のシグモイド関数、1つ又は複数の正接関数、1つ又は複数のテンソル要素単位加算演算及び1つ又は複数のテンソル要素単位乗算演算を含む、直前の請求項に記載のコンピュータシステム。
【請求項13】
前記命令への1つ又は複数の入力は、1つ又は複数の連結テンソルを含む、2つの直前の請求項のいずれか1項に記載のコンピュータシステム。
【請求項14】
前記リカレントニューラルネットワークセル活性化は、長短期記憶セル活性化又はゲート付きリカレントユニットセル活性化を含む、3つの直前の請求項のいずれか1項に記載のコンピュータシステム。
【請求項15】
前記リカレントニューラルネットワークセル活性化の前記複数の演算を実行する段階は、アクセラレータによって実行され、中間計算データを生成し、前記方法は、前記アクセラレータに前記中間計算データを記憶する段階を更に有する、4つの直前の請求項のいずれか1項に記載のコンピュータシステム。
【請求項16】
コンピューティング環境内の処理を容易にするためのコンピュータ実装方法であって、前記コンピュータ実装方法は:
リカレントニューラルネットワークセル活性化を実行する命令を実行する段階
を備え、前記実行する段階は:
前記リカレントニューラルネットワークセル活性化の複数の演算を実行して、前記リカレントニューラルネットワークセル活性化の結果を提供する段階
を有し、前記複数の演算は、前記命令の単一の起動において実行される、コンピュータ実装方法。
【請求項17】
前記複数の演算は、1つ又は複数のシグモイド関数、1つ又は複数の正接関数、1つ又は複数のテンソル要素単位加算演算及び1つ又は複数のテンソル要素単位乗算演算を含む、直前の請求項に記載のコンピュータ実装方法。
【請求項18】
前記命令への1つ又は複数の入力は、1つ又は複数の連結テンソルを含む、2つの直前の請求項のいずれか1項に記載のコンピュータ実装方法。
【請求項19】
前記リカレントニューラルネットワークセル活性化は、長短期記憶セル活性化又はゲート付きリカレントユニットセル活性化を含む、3つの直前の請求項のいずれか1項に記載のコンピュータ実装方法。
【請求項20】
前記リカレントニューラルネットワークセル活性化の前記複数の演算を実行する段階は、アクセラレータによって実行され、中間計算データを生成し、前記アクセラレータに前記中間計算データを記憶する段階を更に有する、4つの直前の請求項のいずれか1項に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【0001】
1つ又は複数の態様は、概して、コンピューティング環境内の処理を容易にすることに関し、特に、そのような処理を改善することに関する。
【背景技術】
【0002】
データ及び/又は計算集約的であるコンピューティング環境における処理を向上するために、人工知能アクセラレータ(ニューラルネットワークプロセッサ又はニューラルネットワークアクセラレータとも称される)等のコプロセッサが利用される。そのようなアクセラレータは、例えば、行列又はテンソルに対する計算等の関与する計算を実行する際に使用される大量の計算パワーを提供する。
【0003】
テンソル計算は、一例として、機械学習のサブセットである深層学習を含む複雑な処理において使用される。人工知能の一態様である深層学習又は機械学習は、限定されないが、工学、製造、医療用技術、自動車技術、コンピュータ処理等を含む様々な技術において使用される。
【0004】
テンソル及びテンソル計算は、大量のデータ及び/又は詳細なデータを深層学習処理に入力することを可能にする。しかしながら、アクセラレータは、アクセラレータに対するデータ帯域幅によって制限される。従前では、この制限に対処しようと努力して、データ局所性及びアクセラレータにおけるデータ再使用が利用されている。テンソルの使用及び/又はそのようなテンソルを使用する処理における進歩は、コンピュータ処理を含む機械学習を使用する技術を改善するであろう。
【発明の概要】
【0005】
コンピューティング環境内の処理を容易にするためのコンピュータプログラム製品のプロビジョニングを通して従来技術の欠点が克服され、更なる利点が提供される。コンピュータプログラム製品は、1つ又は複数のコンピュータ可読記憶媒体、及び方法を実行するために1つ又は複数のコンピュータ可読記憶媒体上に集合的に記憶されたプログラム命令を含む。方法は、リカレントニューラルネットワークセル活性化を実行する命令を実行することを含む。実行することは、リカレントニューラルネットワークセル活性化の複数の演算を実行して、リカレントニューラルネットワークセル活性化の結果を提供することを含む。複数の演算は、命令の単一の起動において実行される。
【0006】
命令の単一の起動を使用して、複数の演算を実行することは、複雑度を低下させ、システムリソースの使用を削減し、システム性能を高める。
【0007】
1つの例では、複数の演算は、1つ又は複数のシグモイド関数及び1つ又は複数の正接関数を含む。1つの例では、複数の演算は、テンソル要素単位加算及びテンソル要素単位乗算演算を含む。
【0008】
一例として、複数の演算は、1つ又は複数のシグモイド関数、1つ又は複数の正接関数、1つ又は複数のテンソル要素単位加算演算及び1つ又は複数のテンソル要素単位乗算演算を含む。
【0009】
1つの例では、命令への1つ又は複数の入力は、1つ又は複数の連結テンソルを含む。連結テンソルは、例えば、リカレントニューラルネットワークのセル活性化を実行するアクセラレータ上で実行される命令によって直接使用されてよい。連結テンソルは、1つの演算においてアクセスされてよく、処理時間が節約されるとともに処理速度が高まる。さらに、管理されることになるテンソルポインタが少なくなり、アクセラレータの起動間でのテンソルデータのコピー又は再編成における削減が存在し、処理速度が改善される。
【0010】
1つの例では、結果は、出力テンソルであり、出力テンソルは、一例として、命令の別の起動への入力である。
【0011】
例として、リカレントニューラルネットワークセル活性化は、長短期記憶セル活性化又はゲート付きリカレントユニットセル活性化を含む。
【0012】
1つの例では、リカレントニューラルネットワークセル活性化の複数の演算を実行することは、アクセラレータによって実行され、中間計算データを生成する。中間計算データは、一例として、アクセラレータに記憶される。
【0013】
1つの例では、複数の演算を実行することは、空間的に近い入力データに対して複数の演算を実行することを含む。
【0014】
1つ又は複数の態様に関するコンピュータ実装方法及びシステムも、本明細書において説明されるとともに特許請求される。さらに、1つ又は複数の態様に関するサービスも説明され、本明細書において特許請求されてよい。
【0015】
追加の特徴及び利点が、本明細書において説明される技法を通して実現される。他の実施形態及び態様は、本明細書において詳細に説明され、特許請求される態様の一部とみなされる。
【図面の簡単な説明】
【0016】
1つ又は複数の態様は、本明細書の最後における特許請求の範囲の例として特に指摘され、明白に特許請求される。前述の、及び1つ又は複数の態様の目的、特徴、及び利点は、添付図面と併せて読まれると以下の詳細な説明から明らかである。
図1A】本発明の1つ又は複数の態様を組み込んで使用するコンピューティング環境の1つの例を示す図である。
図1B】本発明の1つ又は複数の態様に係る、図1Aのプロセッサの更なる詳細を示す図である。
図2A】本発明の1つ又は複数の態様に係る、結果テンソルの1つの例を示す図である。
図2B】本発明の1つ又は複数の態様に従って使用される中間結果を提供するために入力特徴によって連結重みを乗算する1つの例を示す図である。
図2C】本発明の1つ又は複数の態様に係る、図2Aの結果テンソルを提供するために図2Bの中間結果に加算されるバイアスの1つの例を示す図である。
図2D】本発明の1つ又は複数の態様に係る、連結出力テンソルの1つの例を示す図である。
図3A】本発明の1つ又は複数の態様に係る、2Dテンソルの1つの例を示す図である。
図3B】本発明の1つ又は複数の態様に係る、選択された次元のテンソルを作成する際に使用される処理の1つの例を示す図である。
図3C】本発明の1つ又は複数の態様に係る、選択された次元のテンソルを作成する際に使用される処理の1つの例を示す図である。
図4A】本発明の1つ又は複数の態様に係る、長短期記憶セル活性化の1つの例を示す図である。
図4B】本発明の1つ又は複数の態様に係る、ゲート付きリカレントユニットセル活性化の1つの例を示す図である。
図5A】本発明の1つ又は複数の態様に係る、チェーニングを使用する長短期記憶セル活性化の1つの例を示す図である。
図5B】本発明の1つ又は複数の態様に係る、チェーニングを使用する長短期記憶セル活性化の1つの例を示す図である。
図6A】本発明の1つ又は複数の態様に係る、ニューラルネットワーク処理支援命令のフォーマットの1つの例を示す図である。
図6B】本発明の1つ又は複数の態様に係る、ニューラルネットワーク処理支援命令によって使用される汎用レジスタの1つの例を示す図である。
図6C】本発明の1つ又は複数の態様に係る、ニューラルネットワーク処理支援命令によってサポートされる関数コードの例を示す図である。
図6D】本発明の1つ又は複数の態様に係る、ニューラルネットワーク処理支援命令によって使用される別の汎用レジスタの1つの例を示す図である。
図6E】本発明の1つ又は複数の態様に係る、ニューラルネットワーク処理支援命令のクエリ関数によって使用されるパラメータブロックの1つの例を示す図である。
図6F】本発明の1つ又は複数の態様に係る、ニューラルネットワーク処理支援命令の1つ又は複数の非クエリ関数によって使用されるパラメータブロックの1つの例を示す図である。
図6G】本発明の1つ又は複数の態様に係る、ニューラルネットワーク処理支援命令によって使用されるテンソル記述子の1つの例を示す図である。
図7】本発明の1つ又は複数の態様に係る、ニューラルネットワーク処理(NNP)データタイプ1データタイプのフォーマットの1つの例を示す図である。
図8A】本発明の1つ又は複数の態様に係る、ニューラルネットワーク処理支援命令によって使用される入力データレイアウトの例を示す図である。
図8B】本発明の1つ又は複数の態様に係る、ニューラルネットワーク処理支援命令によって使用される入力データレイアウトの例を示す図である。
図8C】本発明の1つ又は複数の態様に係る、ニューラルネットワーク処理支援命令によって使用される入力データレイアウトの例を示す図である。
図9図9の(A)は、本発明の1つ又は複数の態様に係る、図8Aの入力データレイアウトに対応する例示の出力を示す図である。図9の(B)は、本発明の1つ又は複数の態様に係る、図8Bの入力データレイアウトに対応する例示の出力を示す図である。図9の(C)は、本発明の1つ又は複数の態様に係る、図8Cの入力データレイアウトに対応する例示の出力を示す図である。
図10A】本発明の1つ又は複数の態様に係る、コンピューティング環境内の処理を容易にする1つの例を示す図である。
図10B】本発明の1つ又は複数の態様に係る、コンピューティング環境内の処理を容易にする1つの例を示す図である。
図11A】本発明の1つ又は複数の態様を組み込んで使用するコンピューティング環境の別の例を示す図である。
図11B】本発明の1つ又は複数の態様に係る、図11Aのメモリの更なる詳細の1つの例を示す図である。
図11C】本発明の1つ又は複数の態様に係る、図11Aのメモリの更なる詳細の別の例を示す図である。
図12A】本発明の1つ又は複数の態様を組み込んで使用するコンピューティング環境の更に別の例を示す図である。
図12B】本発明の1つ又は複数の態様に係る、図12Aのメモリの更なる詳細を示す図である。
図13】本発明の1つ又は複数の態様に係る、クラウドコンピューティング環境の1つの実施形態を示す図である。
図14】本発明の1つ又は複数の態様に係る、抽象化モデル層の1つの例を示す図である。
【発明を実施するための形態】
【0017】
本発明の1つ又は複数の態様によれば、長短期記憶(LSTM)アーキテクチャ及び/又はゲート付きリカレントユニット(GRU)アーキテクチャ上のリカレントニューラルネットワーク等のリカレントニューラルネットワークにおける使用のための選択されたデータレイアウトフォーマットのテンソルを作成する能力が提供される。一例として、選択されたデータレイアウトフォーマットは、例えば、長短期記憶セル活性化及び/又はゲート付きリカレントユニットセル活性化において使用される連結入力及び/又は出力フォーマットを含む。
【0018】
長短期記憶は、典型的には、例えば、状態を記憶するセル、及びセルに出入りする情報のフローを制御する複数のゲートを含む人工リカレントニューラルネットワークアーキテクチャである。ゲートは、例えば、入力ゲート、出力ゲート及び忘却ゲートを含む。ゲート付きリカレントユニットは、別のリカレントニューラルネットワークアーキテクチャである。それは、長短期記憶アーキテクチャに類似しているが、より少ないパラメータを有し得、出力ゲートを有しない。各ネットワークは、タイムステップを使用し、ここで、タイムステップごとに、演算は、出力を生成する入力に対して実行される。1タイムステップの出力は、次のタイムステップへの入力であり得る。各タイムステップについて、複数の活性化(例えば、シグモイド、tanh)及び他の演算(例えば、加算、乗算)が、隠れ状態(H)、入力及びセル(c)状態に適用される。これらの小ステップ(例えば、活性化、演算)の各々がプロセッサに対してローカルに効率的に実行され得る一方、これらのステップの各々についてアクセラレータを呼び出すことは、例えば、アクセラレータの起動時間に起因してリカレントニューラルネットワーク及び/又はシステムの全体性能に有害であり得る。それゆえ、本発明の1つ又は複数の態様によれば、(例えば、1タイムステップのための)個々の活性化及び演算は、組み合わされ、命令の単一の起動の一部として実行される。これは、例えば1つの起動しか存在しないので処理速度を大幅に高めるとともに効率性を提供し;中間計算データをメモリにライトバックするのではなくアクセラレータに記憶することができ;アクセラレータのSIMD(単一命令複数データ)幅及びパイプライン化される性質を使用して、1計算あたりのより少ないサイクルで並列でより多くの計算を行うことができ;LSTM/GRU演算のための向上した正確性及びより高い安定性をもたらすより高い精度を中間結果のために使用することができる。
【0019】
さらに、1つ又は複数の態様において、単一の命令は、選択されたデータレイアウトフォーマットを使用し、空間的に近い入力及び/又は出力データが提供され、アドレス変換リクエストが削減され、処理速度が改善される。選択されたデータレイアウトフォーマットは、効率性を提供し、ここで、例えば、リカレントニューラルネットワークのセル活性化等の演算は、汎用プロセッサに、セル活性化の各タイムステップについてデータを検査/再構成するように要求することなくチェーニングされることが可能である。
【0020】
選択されたデータレイアウトフォーマットの1つの例は、本発明の1つ又は複数の態様によれば、連結入力フォーマットである。そのようなフォーマットを提供するために、1つの例では、例えば、リカレントニューラルネットワークセルによって使用される重みテンソルは、選択された次元の再フォーマット化重みテンソル(例えば、2D再フォーマット化テンソル)に変換され、これらは、例えば、より大きい連結テンソルを形成するために線形方式で連結される。これは、例えば、結果として得られる連結テンソルに対して実行されるセル活性化の活性化及び他の演算を、例えば、アクセラレータに対して実行される1つの単一命令起動において実行することを可能にする。結果として得られる連結テンソルは、例えば、リカレントニューラルネットワーク上のセル活性化を実行しているアクセラレータに対する命令によって直接使用される選択された入力フォーマットである。
【0021】
選択されたデータレイアウトフォーマットの更なる例は、本発明の1つ又は複数の態様によれば、2D出力テンソル等の連結出力フォーマットである。フォーマットは、例えば、各タイムステップについて、例えば計算の次のタイムステップにフィードすることができるメモリ連続サブテンソルとして出力テンソルにアクセスすることができるように選択される。タイムステップは、1つのメモリ隣接テンソルとしてタイムステップからなる最終結果を返すために、メモリにおいて隣接状態を維持する。
【0022】
本発明の1つ又は複数の態様は、テンソルを再フォーマット化して、元のテンソルを表す選択された次元の(例えば、2Dテンソル)再フォーマット化テンソル(サブテンソルとも称され得る)を提供することを含む。これは、限定されないが、メモリアドレス計算、ロード/記憶動作及び/又はプリフェッチを含む処理を最適化する。一例として、テンソルは、再フォーマット化テンソルがメモリユニット(例えば、メモリページ)の境界上で開始し、元のテンソルの情報が選択された次元(例えば、2D)の再フォーマットテンソル(タイルとして知られている)内で適合するように再配置されるように、再フォーマット化される。再フォーマット化テンソルは、容易に計算可能なアドレスを有し、ブロックロード及び/又は記憶(例えば、1つの動作においてロード/記憶)されてよく、再フォーマット化テンソルを使用する際に効率性が提供される。
【0023】
本発明の1つ又は複数の態様に従って提供される連結入力/出力データフォーマットを使用する及び/又はリカレントニューラルネットワークセル活性化の複数の演算(例えば、活性化及び/又は他の演算)を組み合わせる命令の1つの例は、ニューラルネットワーク処理支援命令であり、これは、複数の機能を実行するように構成された単一の命令(例えば、ハードウェア/ソフトウェアインターフェースにおける単一の設計されたハードウェア機械命令)である。機能の各々は、単一の命令(例えば、単一の設計された命令)の一部として構成され、システムリソースの使用及び複雑度が削減され、システム性能が改善される。
【0024】
命令は、汎用プロセッサ命令セットアーキテクチャ(ISA)の一部であってよく、これは、汎用プロセッサ等のプロセッサ上のプログラムによってディスパッチされる。それは、汎用プロセッサによって実行されてよく、及び/又は、命令の1つ又は複数の機能は、汎用プロセッサに結合されているか又はその一部である、特定の機能のために構成されたコプロセッサ又はアクセラレータ等の専用プロセッサによって実行されてよい。他の変形例も可能である。
【0025】
本発明の1つ又は複数の態様を組み込んで使用するコンピューティング環境の1つの実施形態は、図1Aを参照して説明される。一例として、コンピューティング環境は、ニューヨーク州アーモンク所在のInternational Business Machines Corporationによって提供されるz/Architecture(登録商標)命令セットアーキテクチャに基づく。z/Architecture命令セットアーキテクチャの1つの実施形態は、「z/Architecture Principles of Operation」IBM Publication No.SA22-7832-12、第13版、2019年9月という名称の公刊物において記載されており、これは、その全体が参照によって本明細書に組み込まれる。しかしながら、z/Architecture命令セットアーキテクチャは、単なる1つの例示のアーキテクチャであり;International Business Machines Corporation及び/又は他のエンティティの他のアーキテクチャ及び/又は他のタイプのコンピューティング環境が、本発明の1つ又は複数の態様を含み、及び/又はこれらを使用してよい。z/Architecture及びIBMは、少なくとも1つの法域におけるInternational Business Machines Corporationの商標又は登録商標である。
【0026】
図1Aを参照すると、コンピューティング環境100は、例えば汎用コンピューティングデバイスの形式において示されている、例えばコンピュータシステム102を含む。コンピュータシステム102は、1つ又は複数のバス及び/又は他の接続を介して互いに結合された、1つ又は複数の汎用プロセッサ又は処理ユニット104(例えば、中央処理ユニット(CPU))、ニューラルネットワークプロセッサ105等の少なくとも1つの専用プロセッサ、メモリ106(例として、システムメモリ、メインメモリ、メインストレージ、中央ストレージ又はストレージとして知られている)、及び1つ又は複数の入力/出力(I/O)インターフェース108を含んでよいが、これらに限定されない。例えば、プロセッサ104、105及びメモリ106は、1つ又は複数のバス110を介してI/Oインターフェース108に結合され、プロセッサ104、105は、1つ又は複数のバス111を介して互いに結合される。
【0027】
バス111は、例えば、メモリ又はキャッシュコヒーレンスバスであり、バス110は、例えば、メモリバス又はメモリコントローラ、ペリフェラルバス、アクセラレーテッドグラフィックスポート、及び多様なバスアーキテクチャのうちの任意のものを使用するプロセッサ又はローカルバスを含む幾つかのタイプのバス構造の任意のもののうちの1つ又は複数を表す。限定ではなく例として、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA)、マイクロチャネルアーキテクチャ(MCA)、エンハンスドISA(EISA)、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、及びペリフェラルコンポーネントインターコネクト(PCI)を含む。
【0028】
例として、1つ又は複数の専用プロセッサ(例えば、ニューラルネットワークプロセッサ)は、1つ又は複数の汎用プロセッサとは別個であるが、これらに結合されてよく、及び/又は、1つ又は複数の汎用プロセッサ内に埋め込まれてよい。多くの変形例が可能である。
【0029】
メモリ106は、例えば、共有キャッシュ等のキャッシュ112を含んでよく、これは、例えば、1つ又は複数のバス111を介して、プロセッサ104のローカルキャッシュ114に、及び/又はニューラルネットワークプロセッサ105に結合されてよい。さらに、メモリ106は、1つ又は複数のプログラム又はアプリケーション116及び少なくとも1つのオペレーティングシステム118を含んでよい。例示のオペレーティングシステムは、ニューヨーク州アーモンク所在のInternational Business Machines Corporationによって提供されるz/OS(登録商標)オペレーティングシステムを含む。z/OSは、少なくとも1つの法域におけるInternational Business Machines Corporationの商標又は登録商標である。International Business Machines Corporation及び/又は他のエンティティによって提供される他のオペレーティングシステムが使用されてもよい。メモリ106は、1つ又は複数のコンピュータ可読プログラム命令120を含んでもよく、これは、本発明の態様の実施形態の機能を実行するように構成されてよい。
【0030】
その上、1つ又は複数の実施形態において、メモリ106は、プロセッサファームウェア122を含む。プロセッサファームウェアは、例えば、プロセッサのマイクロコード又はミリコードを含む。それは、例えば、ハードウェアレベル命令及び/又はより高いレベルの機械コードの実装において使用されるデータ構造を含む。1つの実施形態では、それは、例えば、基本ハードウェアに固有の信頼されたソフトウェア、マイクロコード又はミリコードを含むマイクロコード又はミリコードとして典型的には送達されるプロプライエタリコードを含み、システムハードウェアへのオペレーティングシステムアクセスを制御する。
【0031】
コンピュータシステム102は、例えばI/Oインターフェース108を介して、ユーザ端末、テープドライブ、ポインティングデバイス、ディスプレイ等の1つ又は複数の外部デバイス130、及び1つ又は複数のデータストレージデバイス134等と通信してよい。データストレージデバイス134は、1つ又は複数のプログラム136、1つ又は複数のコンピュータ可読プログラム命令138、及び/又はデータ等を記憶してよい。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【0032】
コンピュータシステム102は、例えばI/Oインターフェース108を介して、ネットワークインターフェース132と通信してもよく、これは、コンピュータシステム102が、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)、及び/又はパブリックネットワーク(例えば、インターネット)等の1つ又は複数のネットワークと通信することを可能にし、他のコンピューティングデバイス又はシステムとの通信が提供される。
【0033】
コンピュータシステム102は、取り外し可能/取り外し不能揮発性/不揮発性コンピュータシステム記憶媒体を含み、及び/又はこれらに結合されてよい。例えば、それは、取り外し不能不揮発性磁気媒体(典型的には、「ハードドライブ」と呼ばれる)、取り外し可能不揮発性磁気ディスク(例えば、「フロッピディスク」)に対して読み出し及び書き込みを行う磁気ディスクドライブ、及び/又はCD-ROM、DVD-ROM又は他の光学媒体等の取り外し可能不揮発性光学ディスクに対して読み出し又は書き込みを行う光学ディスクドライブを含み、及び/又はこれらに結合されてよい。他のハードウェア及び/又はソフトウェアコンポーネントを、コンピュータシステム102と併せて使用することができることが理解されるべきである。例としては、マイクロコード又はミリコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、及びデータアーカイブストレージシステム等が挙げられるが、これらに限定されない。
【0034】
コンピュータシステム102は、多数の他の汎用又は専用コンピューティングシステム環境又は構成とともに動作可能であってよい。コンピュータシステム102との使用に適し得る周知のコンピューティングシステム、環境、及び/又は構成の例としては、パーソナルコンピュータ(PC)システム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、及び上記のシステム又はデバイスのいずれかを含む分散クラウドコンピューティング環境等が挙げられるが、これらに限定されない。
【0035】
1つの例では、プロセッサ(例えば、プロセッサ104及び/又はプロセッサ105)は、命令を実行するのに使用される複数の機能コンポーネント(又はこれらのサブセット)を含む。図1Bにおいて示されているように、これらの機能コンポーネントは、例えば、実行されることになる命令をフェッチする命令フェッチコンポーネント150;フェッチされた命令を復号し、復号された命令のオペランドを取得する命令復号ユニット152;復号された命令を実行する1つ又は複数の命令実行コンポーネント154;必要な場合、命令実行のためにメモリにアクセスするメモリアクセスコンポーネント156;及び実行された命令の結果を提供するライトバックコンポーネント158を含む。コンポーネントのうちの1つ又は複数は、命令処理において1つ又は複数のレジスタ160にアクセスし、及び/又はこれらを使用してよい。さらに、コンポーネントのうちの1つ又は複数は、本発明の1つ又は複数の態様によれば、本明細書において説明されるように、連結入力及び/又は出力データフォーマットを提供する際、セル活性化関数の複数の演算を組み合わせる際、テンソル処理(限定されないが、再フォーマット化テンソルの生成及び/又は使用を含む)の際、及び/又は、例えば、ニューラルネットワーク処理支援命令のニューラルネットワーク処理支援処理(又は本発明の1つ又は複数の態様を使用し得る他の処理)の際に使用される1つ又は複数の他のコンポーネントの少なくとも一部を含むか、又はこれらへのアクセスを有してよい。1つ又は複数の他のコンポーネントは、例えば、1つ又は複数の組み合わせ/連結コンポーネント170、テンソルコンポーネント171、及び/又はニューラルネットワーク処理支援コンポーネント172(及び/又は1つ又は複数の他のコンポーネント)を含んでよい。
【0036】
本発明の1つ又は複数の態様によれば、コンピューティング環境内の処理は、専用プロセッサ(例えば、ニューラルネットワークプロセッサ105)等のプロセッサによる使用のための改善されたデータフォーマットを提供することによって容易にされる。例えば、連結入力データフォーマットレイアウトが提供され、ここで、複数の2Dテンソル等の選択された次元の複数のテンソルが連結されて、連結テンソルが作成される。同様に、1つの例では、連結出力データフォーマットが提供され、ここで、複数の出力テンソルが連結される。連結入力/出力データレイアウトフォーマットに関する更なる詳細は、図2A図2Dを参照して説明される。図において、tはタイムステップを指し、Nmbはバッチサイズを指し、sはサイズを指し、lは入力特徴の長さである。
【0037】
図2Aを参照すると、連結テンソル入力(本明細書において結果テンソルとも称される)200の1つの例が示されている。この例では、サイズsを有する複数の2Dテンソル202が(例えば、線形に)連結されて、サイズ4sを有するより大きい連結テンソル200が作成される。1つの例では、連結テンソル200は、特徴入力X(Xi)によって乗算された複数の(例えば、4つの)連結重みテンソル(例えば、W、W
【数1】
、W)を含む。例えば、図2Bにおいて示されているように、特徴入力X(210)は、重みの連結テンソル214によって乗算され(212)、中間結果(例えば、結果テンソル)が提供され、これは、図2Cを参照すると、バイアスのテンソル220に加算されて、結果が生成され、これは、例えば、連結入力テンソル200である。ニューラルネットワークでは、例として、特徴は観測されることになるもの(例えば、文における次の単語、特定の写真等)の表現であり、重みは学習可能パラメータであり、バイアスはオフセットである。1つの例では、乗算及び加算は、ニューラルネットワーク処理支援命令のニューラルネットワーク処理支援行列乗算演算ブロードキャスト23(例えば、NNPA-MATMUL-OP-BCAST23)演算として実行され、この一例が以下で説明される。
【0038】
1つの例では、図2Bの各重みテンソルは、テンソルの処理を容易にするために提供される再フォーマット化2Dテンソルである。重みテンソルは、2D再フォーマット化テンソルに独立して変換され、これらは、連結されて大きいテンソルが提供される。結果として得られるテンソルは、本発明の一態様によれば、リカレントニューラルネットワークのセル活性化を実行するアクセラレータ(例えば、プロセッサ105)上の命令(例えば、ニューラルネットワーク処理支援命令)によって直接使用される入力フォーマットである。これにより、セル活性化の行列乗算を、アクセラレータ上で実行された1つの単一の命令において複数のタイムステップにわたって実行することが可能になる。各再フォーマット化2Dテンソルは、本発明の一態様によれば、メモリユニットの境界(例えば、メモリページ境界)上で開始し、元のテンソルの情報が再フォーマット化テンソルにおいて再配置される。再フォーマット化テンソルの次元におけるテンソルの次元は、その次元における次の完全タイルに切り上げられる(例えば、固定サイズテンソル、例えば2Dテンソルを作成するためにパディングが提供される)。例えば、本明細書において説明されるように、固定サイズテンソルを作成するために、行パディング216及び/又はページパディング218が提供される。これは、メモリユニット境界(例えば、ページ境界)上の各テンソルにアクセスすることを可能にし、任意の2Dテンソルのアドレスの計算を容易にする。メモリユニット境界上での配置を提供することによって、アドレス変換リクエストが削減され、データ転送レートが高められる。さらに、1つの例では、各2Dテンソルは、一度にアクセラレータメモリにおける1つのメモリユニット(例えば、ページ)にアクセスする直接メモリアクセス(DMA)のような動作を介してロードされてよい。これにより、帯域幅が大幅に増大する。
【0039】
同様に、1つの例では、バイアステンソル220は、複数のバイアステンソル222を含む連結バイアステンソルである。各バイアステンソルは、選択された固定サイズであり、したがって、行パディング224及び/又はページパディング226は、本明細書において説明されるように提供される。
【0040】
連結入力テンソルに加えて、本発明の1つ又は複数の態様によれば、連結出力テンソルが提供され、その一例が図2Dにおいて示されている。図2Dにおいて示されているように、連結出力テンソル250は、各入力について、内部セル状態(c)テンソル270に連結された隠れ状態(h)テンソル260を含む。1つの例では、各テンソル260、270は、選択された次元(例えば、2D)及び選択されたサイズの再フォーマット化テンソルである。選択されたサイズのテンソルを提供するために、行パディング280及び/又はページパディング282は、本明細書において説明されるように提供される。連結出力テンソルは、例えば、連結2D再フォーマット化出力テンソルである。連結出力テンソルは、計算の次のタイムステップにフィードすることができるメモリ連続サブテンソルとしてアクセス可能であり、その一方、一例として、全てのタイムステップが、1つのメモリ隣接テンソルとして全てのタイムステップからなる最終結果を返すためにメモリにおいて隣接状態を維持する。入力テンソルと同様に、再フォーマット化テンソルの次元におけるテンソルの次元は、その次元における次の完全タイルに切り上げられる(例えば、固定サイズテンソル、例えば2Dテンソルを作成するためにパディングが提供される)。
【0041】
2Dテンソルに関する更なる詳細は、本発明の1つ又は複数の態様によれば、図3Aを参照して説明される。示されているように、2Dテンソル300は、メモリ境界上で開始し、複数の4Kページ(例えば、2Dテンソルにおいて付番されたページ0~11)等の複数のメモリユニットを使用する。各ページは、事前選択された数の行(例えば、32)302を含み、各行は、事前選択された数の要素、例えば、64個の要素を含む。或る行が事前選択された数の要素よりも少ないデータを有する場合、それは、例えば、ゼロ又はスペース等のような事前指定された値でパディングされる(304)。さらに、図3Aにおいて示されているように、事前選択された数の行を提供するほど十分なデータが存在しない場合、追加のパディング済み行を追加するために追加のパディング306(例えば、予測不能なデータ、既存のデータ、任意の値等)が提供される。
【0042】
2Dテンソルの設計されたデータフォーマットは、容易に計算可能なアドレス及びメモリ単位の隣接テンソルユニットを提供し、これにより、複数の複雑なアドレス計算のオーバヘッドの削減が可能になる。これは、ハードウェアによってサポートされるブロックロード/記憶動作及びプリフェッチエンジンを支援し、アクセラレータ(例えば、ニューラルネットワークプロセッサ105)に対する実効データ帯域幅が大幅に増大する(例えば、2x~5x)。
【0043】
2Dテンソルを作成することに関する更なる詳細は、本発明の一態様によれば、図3B図3Cを参照して説明される。1つの例では、処理は、本明細書において説明される4D特徴データレイアウトに基づいてテンソル(例えば、2D、3D、4D及び/又は他のテンソル)を作成する。一例として、この処理は、汎用プロセッサ104等のプロセッサによって実行される。この処理は、例として、2D、3D又は4Dテンソルを生成することが可能であるが、そのような例に限定されない。
【0044】
図3Bを参照すると、1つの例では、e2_limitが、作成されている2Dテンソルが例えば32行を有することを示すceil(E2/32)*32に等しく設定され(352)、E2は、次元2インデックスサイズを指す。さらに、e1_limitが、作成されている2Dテンソルが例えば1行あたり64個の要素を有することを示すceil(E1/64)*64に等しく設定され(354)、E1は、次元1インデックスサイズを指す。インデックスe4xは、ゼロに初期化される(356)。
【0045】
初期化に続いて、e4xがE4未満であるか否かについて判定がなされ(358)、E4は、次元4インデックスサイズを指す。e4xがE4未満ではない場合、処理は終了し(360);そうではない場合、処理は、インデックスe3xをゼロに初期化することを続ける(362)。e3xがE3未満であるか否かについて判定がなされ(364)、E3は、次元3インデックスサイズを指す。e3xがE3未満ではない場合、処理は反復し、ここで、e4xは、例えば1だけインクリメントされ(366)、処理は358に続く。一方、e3xがE3未満である場合、インデックスe2xは、ゼロに初期化される(368)。e2xがe2_limit未満であるか否かについて判定がなされる(370)。e2xがe2_limit未満ではない場合、処理は反復し、ここで、e3xは、例えば1だけインクリメントされ(372)、処理は364に続く。e2xがe2_limit未満である場合、インデックスe1xは、ゼロに初期化される(374)。
【0046】
図3Cを参照すると、e1xがe1_limit未満であるか否かについて判定がなされる(376)。e1xがe1_limit未満ではない場合、処理は反復し、ここで、e2xは、例えば1だけインクリメントされ(e2x=e2x+1)(378)、処理は370に続く(図3B)。e1xがe1_limit未満である場合、arr_pos(例えば、或る行における位置)は、
【数2】
に等しく設定され、ここで、
【数3】
は、床関数382である。
【0047】
e2xがE2よりも大きいか又はこれに等しいか否かについて判定がなされる(384)。e2xがE2未満ではない場合、e1xがe1よりも大きいか又はこれに等しいか否かについて更なる判定がなされる(386)。e1xがE1未満である場合、値は、input_array[e4x][e3x][e2x][e1x]に等しく設定され(388);e1xがE1よりも大きいか又はこれに等しい場合、値=E1padである(390)(行がパディングされる)。さらに、e2xがE2よりも大きいか又はこれに等しい場合(384)、値=E2padである(392)(パディングされる追加の行が2Dテンソルに追加される)。値の設定に続いて、OutputTensor[arr_pos]=値である。さらに、インデックスe1xが、例えば1だけインクリメントされ(e1x=e1x+1)(394)、処理は376に続く。
【0048】
更なる例として、テンソルは、本明細書において説明される4D_kernelレイアウトに基づいて作成されてよい。2D、3D、4D及び/又は他のテンソルを作成するために、図3B図3Cの処理が使用され、ただし、382は、
【数4】
に置き換えられ;394はOutputTensor[kern_pos]=値に置き換えられる。
【0049】
作成されたテンソル(例えば、元のテンソルの再フォーマット化から作成された再フォーマット化テンソル)は、1つ又は複数の命令によって使用されてよい。例えば、アドレス情報(例えば、例として、4Dテンソル又は2Dテンソルの開始)、テンソルの次元等は、正しいフォーマットにおいて(例えば、メモリのページの正しいロケーションにおいて)データをロード/記憶する際の使用のために、及び(例えば、テンソル計算において)データを使用するために、汎用プロセッサから専用プロセッサ(例えば、ニューラルネットワーク105)に転送される。他の実施形態では、汎用プロセッサは、作成された再フォーマット化テンソルを使用する。他の変形例が可能である。
【0050】
1つ又は複数の態様によれば、複数の再フォーマット化テンソルが連結されて、連結入力及び/又は出力テンソルが提供される。1つの例では、1つ又は複数の連結入力テンソルが、長短期記憶セル活性化又はゲート付きリカレントユニットセル活性化等のリカレントニューラルネットワークセル活性化に入力され、これは、1つ又は複数の連結出力テンソルを生成する。例示のセル活性化に関する更なる詳細が、図4A図4Bを参照して説明される。
【0051】
一例として、図4Aを参照すると、第1の入力テンソル400a(例えば、入力テンソル1)及び第2の入力テンソル400b(例えば、入力テンソル2)が、長短期記憶セル活性化401に入力される。例えば、第1の入力テンソル400a及び第2の入力テンソル400bは、連結テンソル(例えば、結果テンソル)であり、各々が、例えば、それぞれ、例えば4つの個々のテンソル400a1~400a4、及び400b1~400b4の連結を含み、これらの個々のテンソルの各々が、長短期記憶セル活性化401の加算演算に入力される。一例として、入力テンソル400a1、400b1は、加算演算402aに入力され;入力テンソル400a2、400b2は、加算演算402bに入力され;入力テンソル400a3、400b3は、加算演算402cに入力され;入力テンソル400a4、400b4は、加算演算402dに入力される。各加算演算は、例えば、NNPA-ADD演算に均等であり、その一例が本明細書において説明される。加算演算402aの出力がシグモイド活性化404aに入力され;加算演算402bの出力がシグモイド活性化404bに入力され;加算演算402cの出力が正接活性化406に入力され;加算演算402dの出力がシグモイド活性化404cに入力される。シグモイド活性化404a、404b及び404c及び正接活性化406は、例えば、それぞれ、NNPA-SIGMOID関数及びNNPA-TANH関数に均等であり、これらの例が、本明細書において説明される。シグモイド活性化404b及び正接活性化406の出力は、乗算演算408に入力され、これは、例えば、NNPA-MUL関数に均等であり、その一例が本明細書において説明される。
【0052】
シグモイド活性化404a及び乗算演算408の出力は、第3の入力テンソル400c(例えば、入力テンソル3)とともに、結合演算410に入力される。この例では、入力テンソル400cは、連結テンソルではなく、直前のタイムステップからの出力である。例えば、入力テンソル400cは、連結出力テンソルのセル状態部分である。結合演算410は、例えば、融合積和(FMA)演算であり、これは、例えば、NNPA-BATCHNORM関数に均等であり、その一例が本明細書において説明される。(他の例では、結合演算ではなく個々の演算が使用されてよい。)演算410では、シグモイド活性化404aからの出力及び入力テンソル400cが乗算されて、中間結果が提供される。中間結果は、乗算演算408の出力に加算されて、別の中間結果が提供される。当該別の中間結果(例えば、結合演算410の結果)は、正接活性化412に入力され、これは、例えば、NNPA-TANH関数に均等であり、その一例が本明細書において説明される。正接関数412の出力及びシグモイド関数404cの出力は、乗算演算414に入力され、これは、例えば、NNPA-MUL関数に均等であり、その一例が本明細書において説明される。NNPA-MUL414の出力は、出力テンソル420a(例えば、出力テンソル1)である。さらに、1つの例では、結合演算410の出力は、出力テンソル420b(例えば、出力テンソル2)である。一例として、出力テンソル420a及び420bは、図2Dを参照して説明されるもの等の連結出力テンソルである。
【0053】
図4Bを参照すると、ゲート付きリカレントユニットセル活性化の一例が説明される。1つの例では、第1の入力テンソル450a(例えば、入力テンソル1)及び第2の入力テンソル450b(例えば、入力テンソル2)は、ゲート付きリカレントユニットセル活性化451に入力される。例えば、第1の入力テンソル450a及び第2の入力テンソル450bは、連結テンソル(例えば、結果テンソル)であり、各々が、例えば、それぞれ、例えば3つの個々のテンソル450a1~450a3、及び450b1~450b3の連結を含み、これらの個々のテンソルの各々が、ゲート付きリカレントユニットセル活性化451の演算に入力される。一例として、入力テンソル450a1、450b1は、加算演算452aに入力され;入力テンソル450a2、450b2は、加算演算452bに入力される。各加算演算は、例えば、NNPA-ADD演算に均等であり、その一例が本明細書において説明される。加算演算452aの出力は、シグモイド活性化454aに入力され;加算演算452bの出力は、シグモイド活性化454bに入力される。シグモイド活性化454a、及び454bは、例えば、NNPA-SIGMOID関数に均等であり、その一例が本明細書において説明される。シグモイド活性化454a及び454bの出力は、それぞれ、乗算演算456a及び456bに入力され、これらは、例えば、NNPA-MUL関数に均等であり、その一例が本明細書において説明される。乗算演算456aへの別の入力は、入力テンソル450cである。この例では、入力テンソル450cは、連結テンソルではなく、直前のタイムステップからの出力である。例えば、入力テンソル450cは、連結出力テンソルのセル状態部分である。さらに、乗算演算456bへの別の入力は、入力テンソル450b3である。
【0054】
1つの例では、シグモイド関数454aの出力も、1の数値とともに、減算演算458に入力される。減算演算の1つの例は、NNPA-SUB関数であり、その一例が本明細書において説明される。
【0055】
乗算演算456bの出力及び入力テンソル450a3は、加算演算460に入力され、これは、例えば、NNPA-ADD関数に均等であり、その一例が本明細書において説明される。加算演算460の出力は、正接活性化462に入力され、これは、例えば、NNPA-TANH関数に均等であり、その一例が本明細書において説明される。減算演算458及び正接活性化462の出力は、乗算演算464に入力され、これは、例えば、NNPA-MUL関数に均等であり、その一例が本明細書において説明される。乗算演算464の出力及び乗算演算456aの出力は、加算演算466に入力され、これは、例えば、NNPA-ADD関数に均等であり、その一例が本明細書において説明される。加算演算466の出力は、出力テンソル468である。一例として、出力テンソル468は、図2Dを参照して説明されるもの等の連結出力テンソルである。
【0056】
上記で説明されたように、複数の活性化(例えば、シグモイド、正接)及び他の演算(例えば、加算、減算及び/又は乗算)は、結合され、1つのセル活性化の一部として実行され、これは、単一の命令(例えば、ニューラルネットワーク処理支援命令)の起動に基づいて(例えば、ニューラルネットワークプロセッサ105等のアクセラレータ上で)実行される。単一の命令は、個々の活性化及び他の演算を結合するために実装される。これは、中間結果に対する精度を失うことなく、例えば、乗算及び加算演算をともに結合することに起因してより高い正確性を提供する。さらに、より高い精度でアクセラレータに中間計算を保存することによってより高い数値的正確性を達成することができる。加えて、本発明の1つ又は複数の態様によれば、セル活性化の活性化及び他の演算は、連結入力テンソルを作成するのに使用される行列乗算とは別個であり、単一の演算の複雑度が低下し、他のリカレントニューラルネットワークのための基本ブロックの再使用が可能になる。すなわち、(例えば、長短期記憶アーキテクチャ又はゲート付きリカレントユニットアーキテクチャ上の)リカレントニューラルネットワークは、入力特徴(例えば、図2BのX)及び異なる重みテンソル(例えば、図2Bの連結されていない、再フォーマット化されていない重みテンソル)の間の幾つかの行列乗算に依拠し、これに、生成された中間結果に対する幾つかの活性化関数(例えば、図4A図4Bのシグモイド、正接)が後続する。典型的には、行列乗算及び活性化関数は、独立したテンソルバッファ上で別個に実行され、これにより、リカレントニューラルネットワークタイムステップを計算する幾つかの別個の命令がもたらされ、それらの個々の命令の間でデータをコピー/再編成することが要求され得、性能が大幅に低下する。例えば、オンチップアクセラレータ(例えば、ニューラルネットワークプロセッサ105)の利点は、アクセラレータ動作間の汎用プロセッサ上のデータ操作が必要とされる場合に、大幅に低下する。これは、より低い帯域幅、要求される直列化及びアクセラレータを開始するためのセットアップ時間に起因する。したがって、本発明の1つ又は複数の態様によれば、リカレントニューラルネットワークのセル活性化を実行するアクセラレータ上での命令によって直接使用されるデータレイアウトフォーマット(例えば、再フォーマット化連結テンソル)が提供される。
【0057】
さらに、1つ又は複数の態様によれば、汎用プロセッサがデータを検査/再構成する必要なくアクセラレータ動作がチェーニングされることを可能にするタイムステップのセル活性化を計算することに基づいて、連結出力テンソルが生成されるデータレイアウトフォーマットが選択される。さらに、命令は、アドレス変換を削減するために空間的に近い入力及び出力ソースを提供する。メモリ内で隣接してデータを配置することによって、必要とされるアドレス変換が少なくなる。これは、アクセラレータ(例えば、ニューラルネットワークプロセッサ105)内の処理の速度の全体的な上昇及びより高い精度の上昇に寄与する。
【0058】
全体チェーニング動作の1つの例が、図5A図5Bを参照して説明される。図5A図5Bでは、Nmbはバッチサイズであり、tはタイムステップであり、sはサイズであり、lは特徴の長さである。この例では、チェーニングを使用するためのセル活性化は、長短期記憶セル活性化500であり、その一例が図4Aを参照して本明細書において説明される。しかしながら、他の例では、それは、限定されないが、ゲート付きリカレントユニットセル活性化(その一例が図4Bを参照して本明細書において説明される)及び/又は他のセル活性化を含む他のセル活性化であってよい。
【0059】
図5Aを参照すると、セル活性化500の出力は、履歴(h)テンソル502及びセル状態(c)テンソル504を含み、これらは、連結出力テンソル510を提供するのに使用される。連結出力テンソルは、次に、セル活性化500の次のタイムステップに入力される(すなわち、チェーニング)。例えば、連結テンソル510の履歴テンソル510aは、行列乗算演算520に入力され、連結テンソル510のセル状態テンソル510bは、結合演算530(例えば、NNPA-BATCHNORM等の融合積和演算)に入力される。他の例では、結合演算ではなく個々の演算が使用されてよい。
【0060】
1つの例では、行列乗算演算520では、履歴テンソル510a及び連結重み付き行列540が乗算されて、中間結果が提供され、これは、連結バイアステンソル550に加算されて(図5B)、連結テンソル(例えば、入力テンソル2)が提供され、これは、セル活性化500に入力される。さらに、1つの例では、別の連結テンソル(例えば、入力テンソル1)もセル活性化500に入力される。入力テンソル1は、本明細書において説明されるとともに図5Bを参照して更に説明されるように、複数の重みテンソル560を連結して、連結重みテンソル562を提供することによって作成される。連結重みテンソル562は、例えば、行列乗算ブロードキャスト演算564(例えば、NNPA-MATMUL-OP-BCAST23)を使用して、特徴入力566によって乗算されて、中間結果が提供され、これは、例えば、行列乗算ブロードキャスト演算564を使用して、連結バイアステンソル570に加算されて、結果として得られる入力テンソル1が提供される。連結バイアステンソル570は、本明細書において説明されるように、複数のバイアステンソル572から作成される。
【0061】
連結重みテンソル562、連結バイアステンソル570及び/又は連結出力テンソル510(図5A)は、本発明の1つ又は複数の態様によれば、例えば、再フォーマット化テンソルである。再フォーマット化テンソルは、本明細書において説明されるように、メモリ境界(例えば、ページ境界)上で開始し、選択されたサイズのテンソルを完成させるためのパディングを含む。例えば、テンソルが選択された数の行(例えば、32行)を含むことになり、かつ再フォーマット化テンソルがより少ない行を有する場合、テンソルが選択された数の行を含むまでパディングされた行が追加される。加えて、及び/又は代替的には、1つの例では、各行は、選択された数の要素(例えば、64個の要素)を含むことになり、或る行が、当該行が含むことができるよりも少ない要素を有する場合、当該行が選択された数の要素を含むまで当該行にパディングが追加される。
【0062】
連結テンソル(例えば、連結テンソルの個々のテンソル)の層は、セル活性化への入力として選択される。例えば、図5Aを参照すると、入力テンソル1の個々の入力テンソルは、特定の演算に入力されるために選択される(525)。他の例が可能である。
【0063】
本発明の1つ又は複数の態様によれば、再フォーマット化テンソル及び/又は連結テンソルの作成及び/又は使用を可能にする、及び/又は命令の単一の起動によって実行されるセル活性化における活性化及び演算を組み合わせるデータレイアウトフォーマットをサポートする単一の設計された命令が提供される。そのような命令の1つの例は、ニューラルネットワーク処理支援命令である。1つの例では、命令は、汎用プロセッサ(例えば、プロセッサ104)上で開始され、命令によって指定される機能は、機能に依存して、汎用プロセッサ及び/又は専用プロセッサ(例えば、ニューラルネットワークプロセッサ105)のいずれか一方の上で実行される。例えば、1つの例では、ニューラルネットワーク処理支援命令のクエリ関数は、汎用プロセッサ上で実行され、非クエリ関数は、専用プロセッサ上で実行される。しかしながら、他の変形例が可能である。機能が専用プロセッサ上で実行されることになる(例えば、それは非クエリ関数であるか、又は別の例では、1つ又は複数の選択された機能である)場合、ニューラルネットワーク計算において使用されることになるテンソルデータに関するメモリアドレス情報等の情報が、例えば、機能を実行する際の使用のために汎用プロセッサによって専用プロセッサに提供される。専用プロセッサは、情報を取得し、機能を実行する。機能の実行が完了した後、処理は、汎用プロセッサに戻され、これにより、命令が完了する。他の例では、命令は、1つ又は複数の汎用プロセッサ又は1つ又は複数の専用プロセッサ上で開始、実行及び完了される。他の変形例が可能である。
【0064】
1つの例では、図6Aを参照すると、ニューラルネットワーク処理支援命令600は、レジスタ及び拡張演算コード(オペコード)を有するレジスタ演算を示すRREフォーマットを有する。図6Aにおいて示されているように、1つの例では、ニューラルネットワーク処理支援命令600は、ニューラルネットワーク処理支援演算を示す演算コード(オペコード)フィールド602(例えば、ビット0~15)を含む。1つの例では、命令のビット16~31は、予約され、ゼロを格納することになる。命令及び/又は命令の機能の本明細書における説明では、特定のロケーション、特定のフィールド及び/又はフィールドの特定のサイズが示される(例えば、特定のバイト及び/又はビット)。しかしながら、他のロケーション、フィールド及び/又はサイズが提供されてよい。さらに、ビットの特定の値、例えば1又はゼロへの設定が指定されてよいが、これは単なる一例である。ビットは、他の例では、設定される場合、反対の値等の異なる値に、又は別の値に設定されてよい。多くの変形例が可能である。
【0065】
1つの例では、命令は、命令によって暗示的に指定される複数の汎用レジスタを使用する。例えば、ニューラルネットワーク処理支援命令600は、暗示されたレジスタである汎用レジスタ0及び汎用レジスタ1を使用し、これらの例がそれぞれ図6B及び図6Dを参照して説明される。
【0066】
図6Bを参照すると、1つの例では、汎用レジスタ0は、関数コードフィールド、及び命令の完了時に更新され得るステータスフィールドを含む。一例として、汎用レジスタ0は、応答コードフィールド610(例えば、ビット0~15)、例外フラグフィールド612(例えば、ビット24~31)及び関数コードフィールド614(例えば、ビット56~63)を含む。さらに、1つの例では、汎用レジスタ0のビット16~23及び32~55は、予約され、ゼロを格納することになる。1つ又は複数のフィールドは、命令によって実行される特定の関数によって使用される。1つの例では、全てのフィールドが全ての関数によって使用されるわけではない。フィールドの各々が以下で説明される。
【0067】
応答コード(RC)610:このフィールド(例えば、ビット位置0~15)は、応答コードを格納する。ニューラルネットワーク処理支援命令の実行が例えば1の条件コードで完了する場合、応答コードが記憶される。無効入力条件に遭遇すると、非ゼロ値が応答コードフィールドに記憶され、これは、実行中に認識される無効入力条件の原因を示し、選択された条件コード、例えば1が設定される。応答コードフィールドに記憶されるコードは、1つの例では、以下のように定義される:
【0068】
応答コード 意味
【0069】
0001 パラメータブロックバージョン番号によって指定されるような、パラメータブロックのフォーマットは、モデルによってサポートされない。
【0070】
0002 指定された関数は、定義されないか又は機械上にインストールされない。
【0071】
0010 指定されたテンソルデータレイアウトフォーマットは、サポートされない。
【0072】
0011 指定されたテンソルデータタイプは、サポートされない。
【0073】
0012 指定された単一のテンソル次元は、最大次元インデックスサイズよりも大きい。
【0074】
0013 指定されたテンソルのサイズは、最大テンソルサイズよりも大きい。
【0075】
0014 指定されたテンソルアドレスは、4Kバイト境界上に整列されない。
【0076】
0015 関数固有保存エリアアドレスは、4Kバイト境界上に整列されない。
【0077】
F000-FFFF 関数固有応答コード。これらの応答コードは、特定の関数のために定義される。
【0078】
例外フラグ(EF)612:このフィールド(例えば、ビット位置24~31)は、例外フラグを含む。例外条件が命令の実行中に検出される場合、対応する例外フラグ制御(例えば、ビット)は、例えば、1に設定されることになり;そうではない場合、制御は、不変のままである。例外フラグフィールドは、命令の第1の起動に先立ってゼロに初期化されることになる。予約済みフラグは、命令の実行中に不変である。例外フラグフィールドに記憶されるフラグは、1つの例では、以下のように定義される:
【0079】
EF(ビット) 意味
【0080】
0 範囲違反。このフラグは、非数字値が、入力テンソルにおいて検出されたか、又は出力テンソルに記憶されたかのいずれかである場合に、設定される。このフラグは、例えば、命令が条件コード、例えば0で完了する場合にのみ有効である。
【0081】
1~7 予約済み。
【0082】
関数コード(FC)614:このフィールド(例えば、ビット位置56~63)は、関数コードを含む。ニューラルネットワーク処理支援命令のための割り当てられた関数コードの例は、図6Cにおいて示されている。他の全ての関数コードは不変である。割り当てられていない又はインストールされていない関数コードが指定される場合、例えば0002hexの応答コード、及び例えば1の選択された条件コードが設定される。このフィールドは、実行中に修正されない。
【0083】
示されているように、汎用レジスタ0に加えて、ニューラルネットワーク処理支援命令は、汎用レジスタ1も使用し、その一例が図6Dにおいて示されている。例として、24ビットアドレス指定モードにおけるビット40~63、31ビットアドレス指定モードにおけるビット33~63又は64ビットアドレス指定モードにおけるビット0~63は、パラメータブロック620のアドレスを含む。汎用レジスタ1のコンテンツは、例えば、ストレージにおけるパラメータブロックの最も左のバイトの論理アドレスを指定する。パラメータブロックは、ダブルワード境界上で指定されることになり;そうではない場合、指定例外が認識される。全ての関数について、汎用レジスタ1のコンテンツは、修正されない。
【0084】
アクセスレジスタモードにおいて、アクセスレジスタ1は、一例として、パラメータブロック、入力テンソル、出力テンソル及び関数固有保存エリアを格納するアドレス空間を指定する。
【0085】
1つの例では、パラメータブロックは、実行されることになる命令によって指定される関数に依存して異なるフォーマットを有してよい。例えば、クエリ関数は、1つのフォーマットのパラメータブロックを有し、命令の他の関数は、別のフォーマットのパラメータブロックを有する。別の例では、全ての関数が、同じパラメータブロックフォーマットを使用する。他の変形例も可能である。
【0086】
NNPAクエリ利用可能関数(QAF)演算等のクエリ関数によって使用されるパラメータブロックの1つの例は、図6Eを参照して説明される。示されているように、1つの例では、NNPAクエリ利用可能関数パラメータブロック630は、例えば、以下を含む:
【0087】
インストール済み関数ベクトル632:パラメータブロックのこのフィールド(例えば、バイト0~31)は、インストール済み関数ベクトルを含む。1つの例では、インストール済み関数ベクトルのビット0~255は、それぞれ、ニューラルネットワーク処理支援命令の関数コード0~255に対応する。ビットが例えば1である場合、対応する関数はインストールされ;そうではない場合、関数はインストールされない。
【0088】
インストール済みパラメータブロックフォーマットベクトル634:パラメータブロックのこのフィールド(例えば、バイト32~47)は、インストール済みパラメータブロックフォーマットベクトルを含む。1つの例では、インストール済みパラメータブロックフォーマットベクトルのビット0~127は、ニューラルネットワーク処理支援命令の非クエリ関数のためのパラメータブロックフォーマット0~127に対応する。ビットが例えば1である場合、対応するパラメータブロックフォーマットはインストールされ;そうではない場合、パラメータブロックフォーマットはインストールされない。
【0089】
インストール済みデータタイプ636:パラメータブロックのこのフィールド(例えば、バイト48~49)は、インストール済みデータタイプベクトルを含む。1つの例では、インストール済みデータタイプベクトルのビット0~15は、インストールされているデータタイプに対応する。ビットが例えば1である場合、対応するデータタイプはインストールされ;そうではない場合、データタイプはインストールされない。例示のデータタイプは、以下を含む(追加の、より少ない及び/又は他のデータタイプが可能である):
【0090】
ビット データタイプ
【0091】
0 NNPデータタイプ1
【0092】
1~15 予約済み
【0093】
インストール済みデータレイアウトフォーマット638:パラメータブロックのこのフィールド(例えば、バイト52~55)は、インストール済みデータレイアウトフォーマットベクトルを含む。1つの例では、インストール済みデータレイアウトフォーマットベクトルのビット0~31は、インストールされているデータレイアウトフォーマットに対応する。ビットが例えば1である場合、対応するデータレイアウトフォーマットはインストールされ;そうではない場合、データレイアウトフォーマットはインストールされない。例示のデータレイアウトフォーマットは、以下を含む(追加の、より少ない及び/又は他のデータタイプが可能である):
【0094】
ビット データレイアウトフォーマット
【0095】
0 4D特徴テンソル
【0096】
1 4Dカーネルテンソル
【0097】
2~31 予約済み
【0098】
最大次元インデックスサイズ640:パラメータブロックのこのフィールド(例えば、バイト60~63)は、例えば、任意の指定されたテンソルのために指定された次元インデックスサイズにおける要素の最大数を指定する32ビット符号なしバイナリ整数を含む。別の例では、最大次元インデックスサイズは、任意の指定されたテンソルのために指定された次元インデックスサイズにおけるバイトの最大数を指定する。他の例も可能である。
【0099】
最大テンソルサイズ642:パラメータブロックのこのフィールド(例えば、バイト64~71)は、例えば、テンソルフォーマットによって要求される任意のパッドバイトを含む任意の指定されたテンソルにおけるバイトの最大数を指定する32ビット符号なしバイナリ整数を含む。別の例では、最大テンソルサイズは、テンソルフォーマットによって要求される任意のパディングを含む任意の指定されたテンソルにおける総要素の最大数を指定する。他の例も可能である。
【0100】
インストール済みNNPデータタイプ1変換ベクトル344:パラメータブロックのこのフィールド(例えば、バイト72-73)は、インストール済みNNPデータタイプ1変換ベクトルを含む。1つの例では、インストール済みNNPデータタイプ1変換ベクトルのビット0~15は、NNPデータタイプ1フォーマットに対するインストール済みデータタイプ変換に対応する。ビットが1である場合、対応する変換はインストールされ;そうではない場合、変換はインストールされない。追加の、より少ない及び/又は他の変換が指定されてよい。
【0101】
ビット データタイプ
【0102】
0 予約済み
【0103】
1 BFPタイニーフォーマット
【0104】
2 BFPショートフォーマット
【0105】
3~15 予約済み
【0106】
クエリ関数のためのパラメータブロックの1つの例が図6Eを参照して説明されているが、NNPAクエリ利用可能関数演算を含むクエリ関数のためのパラメータブロックの他のフォーマットが使用されてよい。フォーマットは、1つの例では、実行されることになるクエリ関数のタイプに依存してよい。さらに、パラメータブロック及び/又はパラメータブロックの各フィールドは、追加の、より少ない及び/又は他の情報を含んでよい。
【0107】
クエリ関数のためのパラメータブロックに加えて、1つの例では、ニューラルネットワーク処理支援命令の非クエリ関数等の非クエリ関数のためのパラメータブロックフォーマットが存在する。ニューラルネットワーク処理支援命令の非クエリ関数等の非クエリ関数によって使用されるパラメータブロックの1つの例は、図6Fを参照して説明される。
【0108】
示されているように、1つの例では、例えばニューラルネットワーク処理支援命令の非クエリ関数によって利用されるパラメータブロック650は、例えば、以下を含む:
【0109】
パラメータブロックバージョン番号652:パラメータブロックのこのフィールド(例えば、バイト0~1)は、パラメータブロックのバージョン及びサイズを指定する。1つの例では、パラメータブロックバージョン番号のビット0~8は、予約され、ゼロを格納することになり、パラメータブロックバージョン番号のビット9~15は、パラメータブロックのフォーマットを指定する符号なしバイナリ整数を格納する。クエリ関数は、利用可能なパラメータブロックフォーマットを示すメカニズムを提供する。指定されるパラメータブロックのサイズ又はフォーマットがモデルによってサポートされない場合、例えば0001hexの応答コードは汎用レジスタ0に記憶され、命令は条件コード、例えば条件コード1を設定することによって完了する。パラメータブロックバージョン番号は、プログラムによって指定され、命令の実行中に修正されない。
【0110】
モデルバージョン番号654:パラメータブロックのこのフィールド(例えば、バイト2)は、命令(例えば、特定の非クエリ関数)を実行したモデルを識別する符号なしバイナリ整数である。継続フラグ(以下で説明される)が1である場合、モデルバージョン番号は、演算を再開するためにパラメータブロックの継続状態バッファフィールド(以下で説明される)のコンテンツを解釈する目的での演算への入力であってよい。
【0111】
継続フラグ656:パラメータブロックのこのフィールド(例えば、ビット63)、例えば1は、演算が部分的に完了していることを示し、継続状態バッファのコンテンツは、演算を再開するのに使用されてよい。プログラムは、継続フラグをゼロに初期化することであり、命令が演算を再開する目的で再実行されることになる場合には、継続フラグを変更せず;そうではない場合、結果は、予測不能である。
【0112】
継続フラグが演算の開始時に設定され、かつパラメータブロックのコンテンツが初期起動から変化している場合、結果は、予測不能である。
【0113】
関数固有保存エリアアドレス658:パラメータブロックのこのフィールド(例えば、バイト56~63)は、関数固有保存エリアの論理アドレスを含む。1つの例では、関数固有保存エリアアドレスは、4Kバイト境界上に整列されることになり;そうではない場合、例えば0015hexの応答コードは、汎用レジスタ0において設定され、命令は、例えば1の条件コードで完了する。アドレスは、現在のアドレス指定モードを受ける。関数固有保存エリアのサイズは、関数コードに依存する。
【0114】
関数固有保存エリア全体がプログラムイベント記録(PER)ストレージエリア指定に重複する場合、PERストレージ変更イベントが、適用可能な場合、関数固有保存エリアのために認識される。関数固有保存エリアの一部分のみがPERストレージエリア指定に重複する場合、以下のいずれが発生するかはモデル依存である:
【0115】
* PERストレージ変更イベントは、適用可能な場合、関数固有保存エリア全体のために認識される。
【0116】
* PERストレージ変更イベントは、適用可能な場合、記憶される関数固有保存エリアの一部分のために認識される。
【0117】
パラメータブロック全体がPERストレージエリア指定に重複する場合、PERストレージ変更イベントは、適用可能な場合、パラメータブロックのために認識される。パラメータブロックの一部分のみがPERストレージエリア指定に重複する場合、以下のいずれが発生するかはモデル依存である:
【0118】
* PERストレージ変更イベントは、適用可能な場合、パラメータブロック全体のために認識される。
【0119】
* PERストレージ変更イベントは、適用可能な場合、記憶されるパラメータブロックの一部分のために認識される。
【0120】
PERゼロアドレス検出イベントは、適用可能な場合、パラメータブロックのために認識される。ゼロアドレス検出は、1つの例では、テンソルアドレス又は関数固有保存エリアアドレスに適用しない。
【0121】
出力テンソル記述子(例えば、1~2)660/入力テンソル記述子(例えば、1~3)665:テンソル記述子の1つの例は、図6Gを参照して説明される。1つの例では、テンソル記述子660、665は、以下を含む:
【0122】
データレイアウトフォーマット682:テンソル記述子のこのフィールド(例えば、バイト0)は、データレイアウトフォーマットを指定する。有効データレイアウトフォーマットは、例えば、以下を含む(追加の、より少ない及び/又は他のデータレイアウトフォーマットが可能である):
【0123】
フォーマット記述 整列(バイト)
【0124】
0 4D特徴テンソル 4096
【0125】
1 4Dカーネルテンソル 4096
【0126】
2~255 予約済み
【0127】
サポートされていない又は予約されたデータレイアウトフォーマットが指定される場合、例えば0010hexの応答コードは、汎用レジスタ0に記憶され、命令は、条件コード、例えば1を設定することによって完了する。
【0128】
データタイプ684:このフィールド(例えば、バイト1)は、テンソルのデータタイプを指定する。サポートされたデータタイプの例は、以下で説明される(追加の、より少ない及び/又は他のデータタイプが可能である):
【0129】
値 データタイプ データサイズ(ビット)
【0130】
0 NNPデータタイプ1 16
【0131】
1~255 予約済み
【0132】
サポートされていない又は予約されたデータタイプが指定される場合、例えば0011hexの応答コードは、汎用レジスタ0に記憶され、命令は、条件コード、例えば1を設定することによって完了する。
【0133】
次元1~4インデックスサイズ686:集合的に、次元インデックスサイズ1~4(例えば、E4、E3、E2、E1)は、4Dテンソルの形状を指定する。各次元インデックスサイズは、ゼロよりも大きく、かつ最大次元インデックスサイズ未満か又はこれに等しいことになり(640、図6E);そうではない場合、例えば0012hexの応答コードは、汎用レジスタ0に記憶され、命令は、条件コード、例えば1を設定することによって完了する。総テンソルサイズは、最大テンソルサイズ未満か又はこれに等しいことになり(642、図6E);そうではない場合、例えば0013hexの応答コードは、汎用レジスタ0に記憶され、命令は、条件コード、例えば1を設定することによって完了する。
【0134】
1つの例では、NNPAデータタイプ1(すなわち、総テンソルサイズ)の要素を有する4D特徴テンソルにおけるバイトの数を判定するために、以下が使用される:次元インデックス4*次元インデックス3*ceil(次元インデックス2/32)*32*ceil(次元インデックス1/64)*64*2。
【0135】
テンソルアドレス688:テンソル記述子のこのフィールド(例えば、バイト24~31)は、テンソルの最も左のバイトの論理アドレスを含む。アドレスは、現在のアドレス指定モードを受ける。
【0136】
アドレスが関連付けられたデータレイアウトフォーマットの境界上に整列されない場合、例えば0014hexの応答コードは、汎用レジスタ0に記憶され、命令は、条件コード、例えば1を設定することによって完了する。
【0137】
アクセスレジスタモードでは、アクセスレジスタ1は、ストレージにおいて全てのアクティブ入力及び出力テンソルを格納するアドレス空間を指定する。
【0138】
図6Fに戻ると、パラメータブロック650は、1つの例では、関数固有パラメータ1~5(670)を更に含み、これらは、本明細書において説明されるように、固有関数によって使用されてよい。
【0139】
さらに、パラメータブロック650は、1つの例では、継続状態バッファフィールド675を含み、これは、この命令の動作が再開されることになる場合に使用されることになるデータ(又はデータのロケーション)を含む。
【0140】
動作への入力として、パラメータブロックの予約済みフィールドは、ゼロを格納するべきである。動作が終了すると、予約済みフィールドは、ゼロとして記憶され、又は不変のままであってよい。
【0141】
非クエリ関数のためのパラメータブロックの1つの例が図6Fを参照して説明されているが、ニューラルネットワーク処理支援命令の非クエリ関数を含む非クエリ関数のためのパラメータブロックの他のフォーマットが使用されてよい。フォーマットは、1つの例では、実行されることになる関数のタイプに依存してよい。さらに、テンソル記述子の1つの例が図6Gを参照して説明されているが、他のフォーマットが使用されてよい。さらに、入力及び出力テンソルのための異なるフォーマットが使用されてよい。他の変形例が可能である。
【0142】
ニューラルネットワーク処理支援命令の1つの実施形態によってサポートされる様々な関数に関する更なる詳細が以下で説明される。追加の、より少ない及び/又は他の関数がサポートされてよい。
【0143】
関数コード0:NNPA-QAF(クエリ利用可能関数)
【0144】
ニューラルネットワーク処理支援(NNPA)クエリ関数は、例えば、インストール済み関数の可用性、インストール済みパラメータブロックフォーマット、インストール済みデータタイプ、インストール済みデータレイアウトフォーマット、最大次元インデックスサイズ及び最大テンソルサイズ等の選択された情報を示すメカニズムを提供する。情報は、パラメータブロック(例えば、パラメータブロック630)等の選択されたロケーションにおいて取得及び配置される。動作が終了すると、パラメータブロックの予約済みフィールドは、ゼロとして記憶されてよく、又は不変のままであってよい。
【0145】
クエリ関数の1つの実施形態の実行において、汎用プロセッサ104等のプロセッサは、ニューラルネットワークプロセッサ105等のニューラルネットワークプロセッサの特定のモデル等の選択されたプロセッサの特定のモデルに関する情報を取得する。プロセッサ又は機械の特定のモデルは、特定の能力を有する。プロセッサ又は機械の別のモデルは、追加の、より少ない及び/又は異なる能力を有するか、及び/又は追加の、より少ない及び/又は異なる能力を有する異なる世代(例えば、現行の又は将来の世代)のものであってよい。取得される情報は、パラメータブロック(例えば、パラメータブロック630)、又は、更なる処理においてこの情報を使用し得る1つ又は複数のアプリケーションにとってアクセス可能な及び/又はこれらとともに使用される他の構造に配置される。1つの例では、パラメータブロック及び/又はパラメータブロックの情報は、メモリにおいて維持される。他の実施形態では、パラメータブロック及び/又は情報は、1つ又は複数のハードウェアレジスタにおいて維持されてよい。別の例として、クエリ関数は、オペレーティングシステムによって実行される優先動作であってよく、これは、この情報をアプリケーション又は非優先プログラムにとって利用可能にするためにアプリケーションプログラミングインターフェースを利用可能にする。また更なる例では、クエリ関数は、ニューラルネットワークプロセッサ105等の専用プロセッサによって実行される。他の変形例が可能である。
【0146】
情報は、例えば、クエリ関数を実行するプロセッサのファームウェアによって取得される。ファームウェアは、特定のプロセッサ(例えば、ニューラルネットワークプロセッサ)の特定のモデルの属性の知識を有する。この情報は、例えば、制御ブロック、レジスタ及び/又はメモリに記憶され、及び/又は別様にクエリ関数を実行するプロセッサにとってアクセス可能であってよい。
【0147】
取得される情報は、例えば、特定のプロセッサの少なくとも1つ又は複数のデータ属性に関するモデル依存詳細情報を含み、これは、例えば、1つ又は複数のインストール済み又はサポートされるデータタイプ、1つ又は複数のインストール済み又はサポートされるデータレイアウトフォーマット及び/又は特定のプロセッサの選択されたモデルの1つ又は複数のインストール済み又はサポートされるデータサイズを含む。この情報は、他のモデル(例えば、以前のモデル及び/又は将来のモデル)が同じデータタイプ、データサイズ、及び/又はデータレイアウトフォーマット等の同じデータ属性をサポートしない場合があるという点でモデル依存である。クエリ関数(例えば、NNPA-QAF関数)の実行が完了すると、一例として、条件コード0が設定される。条件コード1、2及び3は、1つの例では、クエリ関数に適用可能ではない。取得される情報に関する更なる情報が以下で説明される。
【0148】
示されているように、1つの例では、取得される情報は、例えば、ニューラルネットワークプロセッサの特定のモデルの1つ又は複数のデータ属性に関するモデル依存情報を含む。データ属性の1つの例は、ニューラルネットワークプロセッサのインストール済みデータタイプである。例えば、ニューラルネットワークプロセッサ(又は他のプロセッサ)の特定のモデルは、例として、NNPデータタイプ1データタイプ(ニューラルネットワーク処理データタイプ1データタイプとも称される)及び/又は他のデータタイプ等の1つ又は複数のデータタイプをサポートしてよい。NNPデータタイプ1データタイプは、深層学習トレーニング及び推論計算のための複数の利点を提供する16ビット浮動小数点フォーマットであり、これは、例えば:深層学習ネットワークの正確性を保存し;丸めモード及びコーナケースのハンドリングを単純化する異常フォーマットをなくし:算術演算のために最近傍値に自動的に丸めること;及び無限及び非数(NaN)の特別なエンティティが1つの値に結合される(NINF)ことを含み、これは、算術演算によって受け入れられてハンドリングされる。NINFは、指数オーバフロー及び無効演算(ゼロによる除算等)のためのより良好なデフォルトを提供する。これにより、多くのプログラムが、そのようなエラーを隠すことなく、かつ特別な例外ハンドラを使用することなく実行を継続することが可能になる。他のモデル依存データタイプも可能である。
【0149】
NNPデータタイプ1データタイプのフォーマットの1つの例が図7において示されている。示されているように、1つの例では、NNPデータタイプ1データは、フォーマット700において表されてよく、これは、例えば、符号702(例えば、ビット0)、指数部+31 704(例えば、ビット1~6)及び小数部706(例えば、ビット7~15)を含む。
【0150】
NNPデータタイプ1フォーマットの例示の特性は、以下で示される:
【0151】
特性 NNPデータタイプ1
【0152】
フォーマット長さ(ビット) 16ビット
【0153】
バイアス付き指数部長(ビット) 6ビット
【0154】
小数部長(ビット) 9ビット
【0155】
精度(p) 10ビット
【0156】
最大左単位表示指数(指数)Emax 32
【0157】
最小左単位表示指数(指数)Emin -31
【0158】
左単位表示(LUV)バイアス 31
【0159】
【数5】
【0160】
【数6】
【0161】
Dmin ―――
【0162】
【数7】
が、値が近似であることを示す場合、Nmaxは、(大きさにおける)最大の表現可能な有限数であり、Nminは、(大きさにおける)最小の表現可能な数である。
【0163】
NNPデータタイプ1データタイプに関する更なる詳細が以下で説明される:
【0164】
バイアス付き指数部:指数が符号なし数として表現されることを可能にするのに使用されるバイアスは、上記で示されている。バイアス付き指数部は、NNPデータタイプ1データタイプのクラスを参照して以下で説明されるように、全てゼロ及び全て1のバイアス付き指数部に特別な意味が付与されない点を除いて、バイナリ浮動小数点フォーマットの特性と同様である。
【0165】
仮数:NNPデータタイプ1数のバイナリ小数点は、最も左の小数部ビットの左にあるとみなされる。バイナリ小数点の左には、暗示された単位ビットが存在し、これは、正規数については1及びゼロについてはゼロであるとみなされる。暗示された単位ビットが左にアペンドされた小数部は、数の仮数である。
【0166】
正規NNPデータタイプ1の値は、底2をバイアスなし指数部のべき乗したものによって乗算された仮数である。
【0167】
非ゼロ数の値:非ゼロ数の値が以下で示される:
【0168】
数クラス 値
【0169】
正規数 ±2e-31×(1.f)
【0170】
ここで、eは、十進数において示されるバイアス付き指数部であり、fは、バイナリにおける小数部である。
【0171】
1つの実施形態では、数値及び関連する非数値エンティティを含むNNPデータタイプ1データの3つのクラスが存在する。各データアイテムは、符号、指数部及び仮数を含む。指数部は、全てのバイアス付き指数部が非負の符号なし数であり、最小のバイアス付き指数部がゼロであるようにバイアスされる。仮数は、明示的な小数部、及びバイナリ小数点の左に対する暗示的な単位ビットを含む。符号ビットは、プラスについてはゼロであり、マイナスについては1である。
【0172】
許容される全ての非ゼロの有限数は、一意のNNPデータタイプ1表現を有する。非正規化数は存在せず、この数は、同じ値について複数の表現を可能にし得、非正規化算術演算は存在しない。3つのクラスは、例えば、以下を含む:
【0173】
データクラス 符号 バイアス付き指数部 単位ビット* 小数部
【0174】
ゼロ ± 0 0 0
【0175】
正規数 ± 0 1 非0
【0176】
正規数 ± 非0、全て1ではない 1 任意
【0177】
正規数 ± 全て1 - 全て1ではない
【0178】
NINF ± 全て1 - 全て1
【0179】
ここで:-は、適用しないことを示し、*は、単位ビットが暗示されることを示し、NINFは、数又は無限ではない。
【0180】
クラスの各々に関する更なる詳細は、以下で説明される:
【0181】
ゼロ:ゼロは、ゼロのバイアス付き指数部及びゼロ小数部を有する。暗示された単位ビットは、ゼロである。
【0182】
正規数:正規数は、任意の値のバイアス付き指数部を有し得る。バイアス付き指数部が0である場合、小数部は、非ゼロであることになる。バイアス付き指数部が全て1である場合、小数部は、全て1であることにはならない。他のバイアス付き指数部値は、任意の小数部値を有してよい。暗示された単位ビットは、全ての正規数について1である。
【0183】
NINF:NINFは、全て1のバイアス付き指数部及び全て1の小数部によって表される。NINFは、NNPデータタイプ1(すなわち、6つの指数部ビット及び9つの小数部ビットを有する深層学習のために設計された16ビット浮動小数点)における表現可能な値の範囲にはない値を表す。通常、NINFは、それらが最後に可視のままであることになるように計算中に単に伝播される。
【0184】
1つの例ではNNPデータタイプ1データタイプがサポートされているが、他の特別な又は非標準データタイプ、並びに、限定されないが:幾つかの例を挙げると、IEEE754短精度バイナリ浮動小数点16ビット、IEEE半精度浮動小数点、8ビット浮動小数点、4ビット整数フォーマット及び/又は8ビット整数フォーマットを含む1つ又は複数の標準データタイプもサポートされ得る。これらのデータフォーマットは、ニューラルネットワーク処理について異なる品質を有する。一例として、より小さいデータタイプ(例えば、より少ないビット)は、より速く処理され得るとともにより少ないキャッシュ/メモリを使用し、より大きいデータタイプは、ニューラルネットワークにおいてより高い結果の正確性を提供する。サポートされることになる各データタイプは、クエリパラメータブロックにおいて(例えば、パラメータブロック630のインストール済みデータタイプフィールド636において)1つ又は複数の割り当てられたビットを有してよい。例えば、特定のプロセッサによってサポートされる特別な又は非標準データタイプは、インストール済みデータタイプフィールドにおいて示されるが、標準データタイプは示されない。他の実施形態では、1つ又は複数の標準データタイプも示される。他の変形例が可能である。
【0185】
1つの特定の例では、インストール済みデータタイプフィールド636のビット0は、NNPデータタイプ1データタイプのために予約され、それが、例えば1に設定される場合、それは、プロセッサがNNPデータタイプ1をサポートすることを示す。1つの例では、インストール済みデータタイプのビットベクトルは、最大で16個のデータタイプを表すように構成されており、ここで、ビットは、各データタイプに割り当てられる。しかしながら、他の実施形態におけるビットベクトルは、より多くの又はより少ないデータタイプをサポートしてよい。さらに、ベクトルが構成されてよく、ここで、1つ又は複数のビットが1つのデータタイプに割り当てられる。多くの例が可能であり、及び/又は追加の、より少ない及び/又は他のデータタイプがサポートされ、及び/又はベクトルにおいて示されてよい。
【0186】
1つの例では、クエリ関数は、モデル依存プロセッサ上にインストールされたデータタイプのインジケーションを取得し、例えば、1つ又は複数のビットをパラメータブロック630のインストール済みデータタイプフィールド636おいてに設定することによって、インジケーションをパラメータブロックに配置する。さらに、1つの例では、クエリ関数は、インストール済みデータレイアウトフォーマット(別のデータ属性)のインジケーションを取得し、例えば、1つ又は複数のビットをインストール済みデータレイアウトフォーマットフィールド638において設定することによって、情報をパラメータブロックに配置する。例示のデータレイアウトフォーマットは、例えば、4D特徴テンソルレイアウト及び4Dカーネルテンソルレイアウトを含む。これらのデータレイアウトフォーマットは、ニューラルネットワーク処理支援命令の関数の実行の処理効率性を高める方法でテンソルのためにストレージにおいてデータを配置する。例えば、効率的に動作するために、ニューラルネットワーク処理支援命令は、特定のデータレイアウトフォーマットにおいて提供される入力テンソルを使用する。例示のレイアウトが提供されているが、追加の、より少ない及び/又は他のレイアウトが、本明細書において説明される関数及び/又は他の関数のために提供されてよい。
【0187】
特定のプロセッサモデルのためのレイアウトの使用又は可用性は、インストール済みデータレイアウトフォーマットのベクトル(例えば、パラメータブロック630のフィールド638)によって提供される。ベクトルは、例えば、CPUがいずれのレイアウトがサポートされるのかをアプリケーションに伝達することを可能にするインストール済みデータレイアウトフォーマットのビットベクトルである。例えば、ビット0は、4D特徴テンソルレイアウトのために予約され、それが、例えば1に設定される場合、それは、プロセッサが4D特徴テンソルレイアウトをサポートすることを示し;ビット1は、4Dカーネルテンソルレイアウトのために予約され、それが、例えば1に設定される場合、それは、プロセッサが4Dカーネルテンソルレイアウトをサポートすることを示す。1つの例では、インストール済みデータレイアウトフォーマットのビットベクトルは、最大で16個のデータレイアウトを表すように構成されており、ここで、ビットは、各データレイアウトに割り当てられる。しかしながら、他の実施形態におけるビットベクトルは、より多くの又はより少ないデータレイアウトをサポートしてよい。さらに、ベクトルが構成されてよく、ここで、1つ又は複数のビットが1つのデータレイアウトに割り当てられる。多くの例が可能である。4D特徴テンソルレイアウト及び4Dカーネルテンソルレイアウトに関する更なる詳細が以下で説明される。ここでもやはり、他のレイアウトが性能を最適化するためにここで又は将来において使用されてよい。
【0188】
1つの例では、ニューラルネットワーク処理支援命令は、4Dテンソル、すなわち、4次元を有するテンソルを用いて、動作する。これらの4Dテンソルは、例えば、行優先で、本明細書において説明される汎用入力テンソルから取得され、すなわち、メモリアドレスの昇順でテンソル要素を列挙する場合、E1と呼ばれる内部次元は、0から開始してE1インデックスサイズ1までのE1インデックスサイズ値を通してまず増大され、その後、E2次元のインデックスが増加し、E1次元を通した増大が繰り返される。E4次元と呼ばれる外部次元のインデックスは、最後に増加する。
【0189】
より低い数の次元(例えば、3D又は1Dテンソル)を有するテンソルは、元のテンソル次元を超える4Dテンソルの1つ又は複数の次元が1に設定された4Dテンソルとして表されることになる。
【0190】
次元E4、E3、E2、E1を有する行優先汎用4Dテンソルの、4D特徴テンソルレイアウト(本明細書においてNNPAデータレイアウトフォーマット0 4D特徴テンソルとも称される)への変換が本明細書において説明される。
【0191】
結果として得られるテンソルは、例えば、例えば64要素ベクトルの4Dテンソル、又は以下の次元を有する5Dテンソルとして表すことができる:
【0192】
【数8】
ここで、
【数9】
は、ceil関数を指す。(換言すれば:E4*E3*ceil(E2/32)*32*ceil(E1/64)*64要素である。)
【0193】
汎用テンソルの要素[e4][e3][e2][e1]は、結果として得られる5Dテンソルの以下の要素にマッピングされてよい:
【0194】
【数10】
ここで、
【数11】
は、床関数であり、modは、モジュロである。(換言すれば:要素
【数12】
であり、ここで、
【数13】
及び
【数14】
である。)
【0195】
結果として得られるテンソルは、汎用テンソルよりも大きくてよい。汎用テンソルにおいて対応する要素を有しない結果として得られるテンソルの要素は、パッド要素と呼ばれる。
【0196】
64要素ベクトルのNNPAデータレイアウトフォーマット0 4D特徴テンソルの要素[fe4][fe1][fe3][fe2][fe0]又は要素の5Dテンソルとしてのその均等な表現を検討する。この要素は、パッド要素又は汎用4Dテンソルにおける対応する要素のいずれかであり、次元E4、E3、E2、E1は、以下の式を用いて判定することができる:
【0197】
・if fe2≧E2 thenこれは、E2(又はページ)パッド要素である。
【0198】
・else if fe1*64+fe0≧E1 thenこれは、E1(又は行)パッド要素である。
【0199】
・else汎用4Dテンソルにおける対応する要素は、以下である:
【0200】
[fe4][fe3][fe2][fe1*64+fe0]
【0201】
畳み込みニューラルネットワークベース人工知能モデルのために、特徴テンソルの4次元の意味は、概して、以下にマッピングすることができる:
【0202】
E4:N-ミニバッチのサイズ
【0203】
E3:H-3Dテンソル/画像の高さ
【0204】
E2:W-3Dテンソル/画像の幅
【0205】
E1:C-3Dテンソルのチャネル又はクラス
【0206】
機械学習又はリカレントニューラルネットワークベース人工知能モデルのために、4D特徴テンソルの4次元の意味は、概して、以下にマッピングされ得る:
【0207】
・E4:T-タイムステップ又はモデルの数
【0208】
・E3:予約済み、概して1に設定される
【0209】
・E2:Nmb-ミニバッチサイズ
【0210】
・E1:L-特徴
【0211】
NNPAデータレイアウトフォーマット0は、例えば、データ(ページ)の4kバイトブロック並びに生成済みテンソルの外部次元のための4kバイトブロックデータ整列を用いて、2次元データ局所性を提供する。
【0212】
パッド要素バイトは、入力テンソルについて無視され、出力テンソルについて予測不能である。パッドバイト上のPERストレージ変更は、予測不能である。
【0213】
次元E1、E2、E3及びE4を有する4D特徴テンソルレイアウトのための入力データレイアウトの1つの例が図8A図8Cにおいて示されており、4D特徴テンソルレイアウトのための例示の出力が図9の(A)~図9の(C)において示されている。図8Aを参照すると、3Dテンソル800が示されており、これは、次元E1、E2及びE3を有する。1つの例では、各3Dテンソルは、複数の2Dテンソル802を含む。それゆえ、示されている例では、複数の2Dテンソル(例えば、3つの2Dテンソル)が、3Dテンソルを作成し、複数の3Dテンソル(例えば、3つの3Dテンソル)が、4Dテンソルを作成する。各2Dテンソル802における数は、その要素の各々がメモリ内にあるメモリオフセットを記述する。入力は、図8A図8Cに対応する図9の(A)~図9の(C)において示されているように、メモリにおける元のテンソル(例えば、図8A図8Cの元の4Dテンソル)のデータをレイアウトするのに使用される。
【0214】
図9の(A)では、一例として、メモリ900のユニット(例えば、メモリページ)は、事前選択された数(例えば、32)の行902を含み、その各々は、例えば、e2_page_idxによって識別され;各行は、例えばe1_page_idxによって各々が識別される事前選択された数(例えば、64)の要素904を有する。行が事前選択された数の要素を含まない場合、それはパディングされ(906)、行又はE1パディングと称され;メモリユニットが事前選択された数の行を有しない場合、それはパディングされ(908)、ページ又はE2パディングと称される。例として、行パディングは、例えば、ゼロ又は他の値であり、ページパディングは、例えば、既存の値、ゼロ、又は他の値である。
【0215】
1つの例では、行の出力要素は、その対応する入力のE1方向における要素位置に基づいてメモリにおいて(例えば、ページにおいて)提供される。例えば、図8Aを参照すると、示されている3つの行列の要素位置0、1及び2(例えば、各行列における同じロケーションにおける要素位置)は、図9の(A)のページ0の行0等おいて示されている等である。この例では、4Dテンソルは、小さく、4Dテンソルを表す各2Dテンソルの要素の全てが1つのページに収まる。しかしながら、これは単なる1つの例である。2Dテンソルは、1つ又は複数のページを含んでよい。図3Aにおいて示されているように、その例における2Dテンソルは、12個のページを含む。しかしながら、それは単なる1つの例である。ここでもやはり、2Dテンソルは、1つ又は複数のページを含んでよい。2Dテンソルが4Dテンソルの再フォーマット化に基づいて作成される場合、2Dテンソルのページの数は、4Dテンソルのサイズに基づく。1つの例では、1つ又は複数のceil関数は、2Dテンソルにおける行の数及び各行における要素の数を判定するのに使用され、これは、使用されることになるページの数を示すことになる。他の変形例が可能である。
【0216】
再フォーマット化2Dテンソル(例えば、連結される)は、本発明の1つ又は複数の態様によれば、4D特徴テンソルレイアウトに基づき、本明細書において説明されるように、メモリに記憶される。セル活性化に入力される2Dテンソルは、例えば、E3及びE4が1に設定される4Dテンソルである。
【0217】
4D特徴テンソルレイアウトに加えて、1つの例では、ニューラルネットワークプロセッサは、4Dカーネルテンソルをサポートしてよく、これは、畳み込み等の人工知能(例えば、ニューラルネットワーク処理支援)動作を実行するときにメモリアクセスの数及びデータ収集段階を削減するために4Dテンソルの要素を再配置する。一例として、次元E4、E3、E2、E1を有する行優先の汎用4Dテンソルは、本明細書において説明されるように、NNPAデータレイアウトフォーマット1 4Dカーネルテンソル(4Dカーネルテンソル)に変換される:
【0218】
結果として得られるテンソルは、例えば64要素ベクトルの4Dテンソル、又は以下の次元を有する5Dテンソルとして表すことができる:
【0219】
【数15】
ここで、
【数16】
は、ceil関数を指す。(換言すれば:E4*E3*ceil(E2/32)*32*ceil(E1/64)*64要素である。)
【0220】
汎用テンソルの要素[e4][e3][e2][e1]は、結果として得られる5Dテンソルの以下の要素にマッピングされてよい:
【0221】
【数17】
ここで、
【数18】
は、床関数を指し、modは、モジュロである。換言すれば:要素
【数19】
であり、ここで、
【数20】
及び
【数21】
である。
【0222】
結果として得られるテンソルは、汎用テンソルよりも大きくてよい。汎用テンソルにおいて対応する要素を有しない結果として得られるテンソルの要素は、パッド要素と呼ばれる。
【0223】
64要素ベクトルのNNPAデータレイアウトフォーマット1 4D特徴テンソルの要素[fe1][fe4][fe3][fe2][fe0]又は要素の5Dテンソルとしてのその均等な表現を検討する。この要素は、パッド要素又は汎用4Dテンソルにおけるその対応する要素のいずれかであり、次元E4、E3、E2、E1は、以下の式を用いて判定することができる:
【0224】
if fe2≧E2 thenこれは、E2(又はページ)パッド要素である
【0225】
else if fe1*64+fe0≧E1 thenこれは、E1(又は行)パッド要素である
【0226】
else汎用4Dテンソルにおける対応する要素は、以下である:
【0227】
[fe4][fe3][fe2][fe1*64+fe0]
【0228】
畳み込みニューラルネットワークベース人工知能モデルのために、カーネルテンソルの4次元の意味は、概して、以下にマッピングすることができる:
【0229】
E4:H-3Dテンソル/画像の高さ
【0230】
E3:W-3Dテンソル/画像の幅
【0231】
E2:C-3Dテンソルのチャネルの数
【0232】
E1:K-カーネルの数
【0233】
NNPAデータレイアウトフォーマット1は、例えば、データ(ページ)の4kバイトブロック並びに効率的な処理のための生成済みテンソルの外部次元のための4kバイトブロックデータ整列内で、2次元カーネル並列性を提供する。
【0234】
パッドバイトは、入力テンソルについて無視される。パッドバイト上のPERストレージ変更は、予測不能である。
【0235】
ここでもやはり、例示のデータレイアウトフォーマットは、4D特徴テンソルレイアウト及び4Dカーネルテンソルレイアウトを含むが、他のデータレイアウトフォーマットは、プロセッサ(例えば、ニューラルネットワークプロセッサ105)によってサポートされてよい。サポートされるデータレイアウトのインジケーションが、1つ又は複数のビットを、例えばフィールド638において設定することによってクエリパラメータブロックにおいて取得及び配置される。
【0236】
クエリパラメータブロックは、本発明の1つ又は複数の態様によれば、他のデータ属性情報も含み、これは、例えば、データのためのサポートされるサイズ情報を含む。ニューラルネットワークプロセッサ等のプロセッサは、典型的には、テンソル次元の最大サイズ及び/又はテンソルの全体サイズを制限することができる内部バッファサイズ、処理ユニット、データバス構造、ファームウェア制限等に基づく制限を有する。したがって、クエリ関数は、これらの制限をアプリケーションに伝達するためのフィールドを提供する。例えば、プロセッサは、クエリ関数を実行することに基づいて、最大次元インデックスサイズ(例えば、65,536個の要素)及び最大テンソルサイズ(例えば、8GB)等の様々なデータサイズを取得し、それぞれ、パラメータブロック(例えば、パラメータブロック630)のフィールド640及び642においてこの情報を含む。追加の、より少ない及び/又は他のサイズ情報も、プロセッサ(例えば、ニューラルネットワークプロセッサ105)によってサポートされ、それゆえ、パラメータブロック、例えば、フィールド640、642及び/又は他のフィールドにおいて取得及び配置されてよい。他の実施形態では、制限は、より小さいか又はより大きい可能性があり、及び/又は、サイズは、要素ではなくバイト、又はバイトではなく要素等のような他の単位であり得る。さらに、他の実施形態は、全ての次元について同じ最大ではなく、各次元の異なる最大サイズを可能にする。多くの変形例が可能である。
【0237】
本発明の1つ又は複数の態様によれば、クエリ関数は、特定のプロセッサに関するモデル依存情報を判定するために提供される。(プロセッサは、標準データタイプ、標準データレイアウト等のような標準データ属性もサポートしてよく、これらは、暗示され、クエリ関数によって必ずしも提示されるわけではない;ただし、他の実施形態では、クエリ関数は、データ属性の全ての又は様々な選択されたサブセット等を示してよい。)例示の情報が提供されているが、他の情報が、他の実施形態では提供されてよい。プロセッサの及び/又は異なるプロセッサの異なるモデルについて異なり得る取得される情報は、人工知能及び/又は他の処理を実行するのに使用される。人工知能及び/又は他の処理は、例えば、ニューラルネットワーク処理支援命令の1つ又は複数の非クエリ関数を利用してよい。処理において利用される特定の非クエリ関数は、ニューラルネットワーク処理支援命令を1回又は複数回実行し、非クエリ固有関数を指定することによって実行される。
【0238】
ニューラルネットワーク処理支援命令によってサポートされる例示の非クエリ関数の更なる詳細が以下で説明される(追加の、より少ない及び/又は他の関数が他の実施形態ではサポートされてよい):
【0239】
関数コード16:NNPA-ADD(加算)
【0240】
NNPA-ADD関数が指定される場合、テンソル記述子1によって記述される入力テンソル1の各要素は、テンソル記述子2によって記述される入力テンソル2の対応する要素に加算され、結果として得られる総和は、出力テンソル記述子によって記述される出力テンソルの対応する要素に配置される。
【0241】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0242】
入力テンソル1、入力テンソル2及び出力テンソルの形状、データレイアウト及びデータタイプは、1つの例では、同じであることになり;そうではない場合、全体オペランドデータ例外が認識される。
【0243】
出力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。
【0244】
関数コード17:NNPA-SUB(減算)
【0245】
NNPA-SUB関数が指定される場合、テンソル記述子2によって記述される入力テンソル2の各要素は、テンソル記述子1によって記述される入力テンソル1の対応する要素から減算され、結果として得られる差は、出力テンソルの対応する要素に配置される。
【0246】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0247】
入力テンソル1、入力テンソル2及び出力テンソルの形状、データレイアウト及びデータタイプは、1つの例では、同じであることになり;そうではない場合、全体オペランドデータ例外が認識される。
【0248】
出力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。
【0249】
関数コード18:NNPA-MUL(乗算)
【0250】
NNPA-MUL関数が指定される場合、テンソル記述子1によって記述される入力テンソル1(乗数)の各要素及びテンソル記述子2によって記述される入力テンソル2(被乗数)の対応する要素の積は、出力テンソルの対応する要素に配置される。
【0251】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0252】
入力テンソル1、入力テンソル2及び出力テンソルの形状、データレイアウト及びデータタイプは、1つの例では、同じであることになり;そうではない場合、全体オペランドデータ例外が認識される。
【0253】
出力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。
【0254】
関数コード19:NNPA-DIV(除算)
【0255】
NNPA-DIV関数が指定される場合、テンソル記述子1(被除数)によって記述される入力テンソル1の各要素は、テンソル記述子2によって記述される入力テンソル2(除数)の対応する要素を除算され、商は、出力テンソルの対応する要素に配置される。
【0256】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0257】
入力テンソル1、入力テンソル2及び出力テンソルの形状、データレイアウト及びデータタイプは、1つの例では、同じであることになり;そうではない場合、全体オペランドデータ例外が認識される。
【0258】
出力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。
【0259】
関数コード20:NNPA-MIN(最小)
【0260】
NNPA-MIN関数が指定される場合、テンソル記述子1によって記述される入力テンソル1の各要素は、テンソル記述子2によって記述される入力テンソル2の対応する要素と比較される。2つの値のうちの小さい方が、出力テンソル記述子の対応する要素に配置される。両方の値が等しい場合、値は、出力テンソルの対応する要素に配置される。
【0261】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0262】
入力テンソル1、入力テンソル2及び出力テンソルの形状、データレイアウト及びデータタイプは、1つの例では、同じであることになり;そうではない場合、全体オペランドデータ例外が認識される。
【0263】
出力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。
【0264】
関数コード21:NNPA-MAX(最大)
【0265】
NNPA-MAX関数が指定される場合、テンソル記述子1によって記述される入力テンソル1の各要素は、テンソル記述子2によって記述される入力テンソル2の対応する要素と比較される。2つの値のうちの大きい方が、出力テンソル記述子の対応する要素に配置される。両方の値が同じである場合、値は、出力テンソルの対応する要素に配置される。
【0266】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0267】
入力テンソル1、入力テンソル2及び出力テンソルの形状、データレイアウト及びデータタイプは、1つの例では、同じであることになり;そうではない場合、全体オペランドデータ例外が認識される。
【0268】
出力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。
【0269】
関数コード32:NNPA-LOG(自然対数)
【0270】
NNPA-LOG関数が指定される場合、テンソル記述子1によって記述される入力テンソルの各要素について、その要素がゼロよりも大きい場合、出力テンソル記述子によって記述される出力テンソルにおける対応する要素は、その要素の自然対数である。そうではない場合、出力テンソルにおける対応する要素は、数値的に表現可能ではなく、ターゲットデータタイプにおける負の無限に関連付けられた値が記憶される。
【0271】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0272】
入力テンソル1及び出力テンソルの形状、データレイアウト及びデータタイプは、1つの例では、同じであることになり;そうではない場合、全体オペランドデータ例外が認識される。
【0273】
出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。
【0274】
関数コード33:NNPA-EXP(指数関数)
【0275】
NNPA-EXP関数が指定される場合、テンソル記述子1によって記述される入力テンソルの各要素について、出力テンソル記述子によって記述される出力テンソルにおける対応する要素は、その要素の指数関数である。
【0276】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0277】
入力テンソル1及び出力テンソルの形状、データレイアウト及びデータタイプは、1つの例では、同じであることになり;そうではない場合、全体オペランドデータ例外が認識される。
【0278】
出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。
【0279】
関数コード49:NNPA-RELU(正規化線形ユニット)
【0280】
NNPA-RELU関数が指定される場合、テンソル記述子1によって記述される入力テンソルの各要素について、その要素がゼロ未満か又はこれに等しい場合、出力テンソル記述子によって記述される出力テンソルにおける対応する要素はゼロである。そうではない場合、出力テンソルにおける対応する要素は、入力テンソルにおける要素の最小であり、関数固有パラメータ1において指定されるクリッピング値である。
【0281】
一例として、関数固有パラメータ1は、ReLU演算のためのクリッピング値を定義する。例えば、クリッピング値は、関数固有パラメータ1のビット16~31内にある。クリッピング値は、例えば、NNPAデータタイプ1フォーマットにおいて指定される。ゼロのクリッピング値は、最大の正の値を使用することを示し;換言すれば、クリッピングは実行されない。負の値が指定される場合、全体オペランドデータ例外が認識される。
【0282】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0283】
入力テンソル1及び出力テンソルの形状、データレイアウト及びデータタイプは、1つの例では、同じであることになり;そうではない場合、全体オペランドデータ例外が認識される。
【0284】
出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。関数固有パラメータ2~5は、1つの例では、ゼロを格納することになる。
【0285】
関数コード50:NNPA-TANH(正接)
【0286】
NNPA-TANH関数が指定される場合、テンソル記述子1によって記述される入力テンソルの各要素について、出力テンソル記述子によって記述される出力テンソルにおける対応する要素値は、その要素の双曲線正接である。
【0287】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0288】
入力テンソル1及び出力テンソルの形状、データレイアウト及びデータタイプは、1つの例では、同じであることになり;そうではない場合、全体オペランドデータ例外が認識される。
【0289】
出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。
【0290】
関数コード51:NNPA-SIGMOID
【0291】
NNPA-SIGMOID関数が指定される場合、テンソル記述子1によって記述される入力テンソルの各要素について、出力テンソル記述子によって記述される出力テンソルにおける対応する要素は、その要素のシグモイド関数である。
【0292】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0293】
入力テンソル1及び出力テンソルの形状、データレイアウト及びデータタイプは、1つの例では、同じであることになり;そうではない場合、全体オペランドデータ例外が認識される。
【0294】
出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。
【0295】
関数コード52:NNPA-SOFTMAX
【0296】
NNPA-SOFTMAX関数が指定される場合、入力テンソル1の次元1における各ベクトルについて、出力テンソルにおける対応するベクトルは、以下で説明されるように、計算される。
【0297】
* ベクトルの最大値が計算される。
【0298】
* ベクトルの次元1における各要素及び上記で計算された最大値の間の差の指数関数の総和が計算される。入力ベクトルの次元1における要素及び上記で計算された最大値の両方が数値であり、かつ差が非数値である場合、その要素についての指数関数の結果は、ゼロに強制される。
【0299】
* ベクトルにおける各要素について、中間の商は、要素及び上記で計算された最大値の間の差の指数関数を、上記で計算された総和によって除算したものから形成される。任意選択の活性化関数が、出力ベクトルにおける対応する要素を形成するためにこの中間の商に適用される。
【0300】
このプロセスは、例えば、次元1における全ての次元4インデックスサイズ×次元3インデックスサイズ×次元2インデックスサイズベクトルについて繰り返される。
【0301】
1つの例では、NNPA-SOFTMAX関数固有パラメータ1は、活性化関数を制御する。一例として、関数固有パラメータ1のACTフィールド(例えば、ビット28~31)は、活性化関数を指定する。例示の活性化関数は、以下を含む:
【0302】
ACT 活性化関数
【0303】
0 活性化関数は実行されない
【0304】
1 LOG
【0305】
2~15 予約済み
【0306】
予約された値がACTフィールドのために指定される場合、例えばF001hexの応答コードは、報告され、動作は、条件コード、例えば1で完了する。
【0307】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0308】
1つの例では、入力テンソルの次元3インデックスサイズが1に等しくない場合、例えば、F000hexの応答コードが記憶され、命令は、条件コード、例えば1で完了する。
【0309】
入力テンソル1及び出力テンソルの形状、データレイアウト及びデータタイプは、1つの例では、同じであることになり;そうではない場合、全体オペランドデータ例外が認識される。
【0310】
出力テンソル記述子2、入力テンソル記述子2及び入力テンソル記述子3は、1つの例では無視される。関数固有パラメータ2~5は、1つの例では、ゼロを格納することになる。
【0311】
8Kバイト関数固有保存エリアが、この関数によって使用されてよい。
【0312】
1つの実施形態では、次元1においてベクトルを取得するとき、要素は、指定されたデータレイアウトフォーマットに依存してメモリにおいて連続していない場合がある。入力テンソル1の次元1ベクトルの全ての要素が指定されたデータタイプにおいて表現可能な最大の大きさの負の数を格納する場合、結果は、より正確でなくなり得る。
【0313】
関数コード64:NNPA-BATCHNORM(バッチ正規化)
【0314】
NNPA-BATCHNORM関数が指定される場合、入力1テンソルの次元1における各ベクトルについて、出力テンソルの次元1における対応するベクトルは、ベクトルにおける各要素を、入力2テンソルを構成する次元1ベクトルにおける対応する要素によって乗算することによって計算される。完全精度積は、次に、入力3テンソルを構成する次元1ベクトルにおける対応する要素に加算され、次に、出力テンソルの指定されたデータタイプの精度に丸められる。このプロセスは、例えば、次元1における全ての次元4インデックスサイズ×次元3インデックスサイズ×次元2インデックスサイズベクトルについて繰り返される。
【0315】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0316】
1つの例では、以下の条件が真であることになり、そうではない場合、全体オペランドデータ例外が認識される:
【0317】
* 入力テンソル1及び出力テンソルの形状及びデータレイアウトは、同じであることになる。
【0318】
* 入力テンソル及び出力テンソルのデータタイプは、同じであることになる。
【0319】
* 入力テンソル1、2、3及び出力テンソルの次元1インデックスサイズは、同じであることになる。
【0320】
* 入力テンソル2及び3の次元2、3及び4インデックスサイズは、同じであることになる。
【0321】
出力テンソル記述子2及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。関数固有パラメータ2~5は、1つの例では、ゼロを格納することになる。
【0322】
関数コード80:NNPA-MAXPOOL2D
関数コード81:NNPA-AVGPOOL2D
【0323】
NNPA-MAXPOOL2D又はNNPA-AVGPOOL2D関数のいずれかが指定される場合、入力テンソル1記述子によって記述される入力テンソル1は、入力のウィンドウを要約するために指定された動作によって削減される。入力のウィンドウは、次元インデックス2及び3にわたって2Dスライディングウィンドウを移動することによって選択される。ウィンドウの要約は、出力テンソルにおける要素である。スライディングウィンドウ次元は、例えば、関数固有パラメータ4及び関数固有パラメータ5によって記述される。隣接した出力テンソル要素を計算するときに入力1テンソルにわたってスライディングウィンドウが移動する量はストライドと呼ばれる。スライディングウィンドウストライドは、例えば、関数固有パラメータ2及び関数固有パラメータ3によって指定される。NNPA-MAXPOOL2D演算が指定される場合、以下で定義される最大値演算は、ウィンドウ上で実行される。NNPA-AVGPOOL2D演算が指定される場合、以下で定義されるAVG演算は、ウィンドウ上で実行される。指定されたパディングタイプが有効である場合、ウィンドウにおける全ての要素が、結果として得られる出力要素を計算するのに使用される集合に加算される。指定されたパディングタイプが同じである場合、ウィンドウのロケーションに依存して、ウィンドウからの要素のサブセットのみが、結果として得られる出力要素を計算するのに使用される集合に加算されてよい。
【0324】
1つの例では、CollectElements演算は、要素を要素の集合に加算し、集合における要素の数をインクリメントする。ウィンドウ開始位置が移動するたびに、集合が空にされる。演算を実行するために必要とされない要素がアクセスされるか否かは予測不能である。
【0325】
最大値演算:1つの例では、ウィンドウにおける要素の集合の最大値は、集合における全ての要素を、互いに比較し、最大値を返すことによって計算される。
【0326】
Avg(平均)演算:1つの例では、ウィンドウにおける要素の集合の平均値は、集合における全ての要素の総和を、集合における要素の数によって除算したものとして計算される。
【0327】
1つの例では、フィールドは、以下のように割り当てられる:
【0328】
* プーリング関数固有パラメータ1は、パディングタイプを制御する。例えば、関数固有パラメータ1のビット29~31は、パディングタイプを指定するPADフィールドを含む。例示のタイプは、例えば、以下を含む:
【0329】
PAD パディングタイプ
【0330】
0 有効
【0331】
1 同じ
【0332】
2~7 予約済み
【0333】
予約された値がPADフィールドのために指定される場合、例えばF000hexの応答コードは、報告され、動作は、条件コード、例えば1で完了する。
【0334】
1つの例では、関数固有パラメータ1のビット位置0~28が予約され、ゼロを格納することになる。
【0335】
* 関数固有パラメータ2は、例えば、スライディングウィンドウが次元2において移動する要素の数を指定する次元2ストライド(D2S)を指定する32ビット符号なしバイナリ整数を格納する。
【0336】
* 関数固有パラメータ3は、例えば、スライディングウィンドウが次元3において移動する要素の数を指定する次元3ストライド(D3S)を指定する32ビット符号なしバイナリ整数を格納する。
【0337】
* 関数固有パラメータ4は、例えば、スライディングウィンドウが格納する次元2における要素の数を指定する次元2ウィンドウサイズ(D2WS)を指定する32ビット符号なしバイナリ整数を格納する。
【0338】
* 関数固有パラメータ5は、例えば、スライディングウィンドウが格納する次元3における要素の数を指定する次元3ウィンドウサイズ(D3WS)を指定する32ビット符号なしバイナリ整数を格納する。
【0339】
1つの例では、関数固有パラメータ2~5における指定された値は、最大次元インデックスサイズ未満か又はこれに等しいことになり、関数固有パラメータ4~5における指定された値は、ゼロよりも大きいことになり;そうではない場合、応答コード、例えば、0012hexが報告され、動作は、条件コード、例えば、1で完了する。
【0340】
次元2ストライド及び次元3ストライドが両方ともゼロであり、かつ次元2ウィンドウサイズ又は次元3ウィンドウサイズのいずれかが例えば1024よりも大きい場合、応答コード、例えばF001hexが記憶される。次元2ストライド及び次元3ストライドが両方とも、例えばゼロよりも大きく、かつ次元2ウィンドウサイズ又は次元3ウィンドウサイズのいずれかが例えば64よりも大きい場合、応答コード、例えばF002hexが記憶される。次元2ストライド及び次元3ストライドが両方とも、例えばゼロよりも大きく、かつ次元2ウィンドウストライド又は次元3ストライドのいずれかが例えば30よりも大きい場合、応答コード、例えばF003hexが記憶される。次元2ストライド及び次元3ストライドが両方とも、例えばゼロよりも大きく、かつ入力テンソル次元2インデックスサイズ又は入力テンソル次元3インデックスサイズのいずれかが例えば1024よりも大きい場合、応答コード、例えばF004hexが記憶される。上記の条件のうちの全てについて、命令は、条件コード、例えば1で完了する。
【0341】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0342】
1つの例では、以下の条件が真であることになり、そうではない場合、全体オペランドデータ例外が認識される:
【0343】
* 入力テンソル及び出力テンソルの次元4インデックスサイズ及び次元1インデックスサイズは、同じであることになる。
【0344】
* 入力テンソル及び出力テンソルのデータレイアウト及びデータタイプは、同じであることになる。
【0345】
* 次元2ストライド及び次元3ストライドが両方ともゼロである場合、以下の追加の条件が、1つの例では、真であることになる:
【0346】
* 入力テンソル次元2インデックスサイズは、次元2ウィンドウサイズに等しいことになる。
【0347】
* 入力テンソルの入力テンソル次元3インデックスサイズは、次元3ウィンドウサイズに等しいことになる。
【0348】
* 出力テンソルの次元2インデックスサイズ及び次元3インデックスサイズは、1であることになる。
【0349】
* 指定されたパディングは、有効であることになる。
【0350】
* 次元2ストライド又は次元3ストライドのいずれかが非ゼロである場合、両方のストライドは、1つの例では、非ゼロであることになる。
【0351】
* 次元2ストライド及び次元3ストライドが両方ともゼロよりも大きい場合、以下の追加の条件が、1つの例では、真であることになる:
【0352】
* 指定されたパディングが有効である場合、次元2ウィンドウサイズは、入力テンソルの次元2インデックスサイズ未満か又はこれに等しいことになる。
【0353】
* 指定されたパディングが有効である場合、次元3ウィンドウサイズは、入力テンソルの次元3インデックスサイズ未満か又はこれに等しいことになる。
【0354】
* 指定されたパディングが同じである場合、入力及び出力テンソルの次元2インデックスサイズ及び次元3インデックスサイズの間の以下の関係が満たされることになる(同じパディングのプーリング):
【0355】
【数22】
【0356】
【数23】
【0357】
ここで:
【0358】
IxDyIS テンソル記述子xにおいて定義される入力テンソルxの次元yインデックスサイズ。
【0359】
OxDyIS テンソル記述子xにおいて定義される出力テンソルxの次元yインデックスサイズ。
【0360】
D2S 次元2ストライド。
【0361】
D3S 次元3ストライド。
【0362】
* 指定されたパディングが有効である場合、入力及び出力テンソルの次元2インデックスサイズ及び次元3インデックスサイズの間の以下の関係が満たされることになる(有効パディングのプーリング):
【0363】
【数24】
【0364】
【数25】
【0365】
ここで、D2WSは、次元2ウィンドウサイズであり、D3WSは、次元3ウィンドウサイズである。
【0366】
出力テンソル記述子2、入力テンソル記述子2及び3、及び関数固有保存エリアアドレスフィールドは無視される。
【0367】
関数コード96:NNPA-LSTMACT(長短期記憶活性化)
【0368】
NNPA-LSTMACT関数が指定される場合、入力テンソル2記述子によって記述され、各次元4インデックス値について4つのサブテンソルに分割される入力テンソル2(例えば、再フォーマット化、連結入力テンソル)とともに、入力テンソル1記述子によって記述され、各次元4インデックス値について4つのサブテンソルに分割される入力テンソル1(例えば、再フォーマット化、連結入力テンソル)、及び入力テンソル3記述子によって記述される入力テンソル3は、LSTMACT演算への入力である。LSTMACT演算の終了時に、結果は、出力テンソル1(例えば、再フォーマット化、連結出力テンソル)記述子によって記述される出力テンソル1、及び出力テンソル2記述子によって記述される出力テンソル2(例えば、再フォーマット化、連結出力テンソル)に書き込まれる。
【0369】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、それぞれ応答コード0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0370】
1つの実施形態では、以下の条件が真であることになり、そうではない場合、全体オペランドデータ例外が認識される:
【0371】
* 入力テンソル3、及び出力テンソル1及び2の次元4インデックスサイズは、例えば1に等しいことになる。
【0372】
* 入力テンソル1及び入力テンソル2についての次元4インデックスサイズは、例えば4に等しいことになる。
【0373】
* 例えば、全ての入力テンソル及び2つの出力テンソルについての次元3インデックスサイズは、例えば1に等しいことになる。
【0374】
* 例えば、全ての入力テンソル及び2つの出力テンソルのデータレイアウト及びデータタイプは、同じであることになる。
【0375】
* 例えば、全ての入力テンソル及び2つの出力テンソルの次元1インデックスサイズは、同じであることになる。
【0376】
* 例えば、全ての入力テンソル及び2つの出力テンソルの次元2インデックスサイズは、同じであることになる。
【0377】
関数固有保存エリアアドレスフィールドは、1つの例では無視される。関数固有パラメータ1~5は、1つの例では、ゼロを格納することになる。
【0378】
長短期セル活性化の1つの実施形態に関する更なる詳細は、例えば、図4A及び図5A図5Bを参照して本明細書において説明される。
【0379】
関数コード97:NNPA-GRUACT(ゲート付きリカレントユニット活性化)
【0380】
NNPA-GRUACT関数が指定される場合、入力テンソル2記述子によって記述され、各次元4インデックス値について3つのサブテンソルに分割される入力テンソル2(例えば、再フォーマット化、連結入力テンソル)とともに、入力テンソル1記述子によって記述され、各次元4インデックス値について3つのサブテンソルに分割される入力テンソル1(例えば、再フォーマット化、連結入力テンソル)、及び入力テンソル3記述子によって記述される入力テンソル3は、GRUACT演算への入力である。GRUACT演算の終了時に、出力テンソル記述子によって記述される出力テンソル(例えば、再フォーマット化、連結出力テンソル)が記憶される。
【0381】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0382】
1つの実施形態では、以下の条件が真であることになり、そうではない場合、全体オペランドデータ例外が認識される:
【0383】
* 出力テンソル及び入力テンソル3についての次元4インデックスサイズは、例えば1に等しいことになる。
【0384】
* 入力テンソル1及び入力テンソル2についての次元4インデックスサイズは、例えば3に等しいことになる。
【0385】
* 例えば、全ての入力テンソル及び出力テンソルについての次元3インデックスサイズは、例えば1に等しいことになる。
【0386】
* 例えば、全ての入力テンソル及び出力テンソルの次元1インデックスサイズは、同じであることになる。
【0387】
* 例えば、全ての入力テンソル及び出力テンソルの次元2インデックスサイズは、同じであることになる。
【0388】
* 例えば、全ての入力テンソル及び出力テンソルのデータレイアウト及びデータタイプは、同じであることになる。
【0389】
出力テンソル記述子2及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。関数固有パラメータ2~5は、1つの例では、ゼロを格納することになる。
【0390】
ゲート付きリカレントユニットセル活性化の1つの実施形態に関する更なる詳細は、例えば、図4Bを参照して本明細書において説明される。
【0391】
関数コード112:NNPA-CONVOLUTION
【0392】
NNPA-CONVOLUTION関数が指定される場合、出力テンソル1記述子によって記述される出力テンソルにおける各出力要素について、次元インデックス3、2、及び1からなる3次元入力1ウィンドウは、入力テンソル1記述子によって記述される入力テンソル1から選択される。次元インデックス4、3、及び2からなる同じサイズの3次元入力2ウィンドウは、入力テンソル2記述子によって記述されるテンソル2から選択される。入力1ウィンドウにおける要素は、入力2ウィンドウにおける対応する要素によって乗算され、積の全てがともに加算されて、初期総和が作成される。初期総和は、入力テンソル3の対応する要素に加算されて、中間総和値が計算される。出力テンソルの要素は、中間総和に対して実行される指定された活性化関数の結果である。活性化関数が指定されない場合、出力要素は、中間総和に等しい。
【0393】
指定されたパディングタイプが有効である場合、ウィンドウにおける全ての要素が、結果として得られる初期総和を計算するのに使用される。指定されたパディングタイプが同じである場合、結果として得られる初期総和を計算するとき、ウィンドウのロケーションに依存して、入力1ウィンドウの幾つかの要素は、暗示されたゼロであり得る。
【0394】
演算を実行するために必要とされない要素がアクセスされるか否かは予測不能である。
【0395】
1つの例では、畳み込み関数によって使用される関数固有パラメータのフィールドは、以下のように割り当てられる:
【0396】
* NNPA-CONVOLUTION関数固有パラメータ1は、パディングタイプ及び活性化関数を制御する。1つの例では、関数固有パラメータ1のビット29~31は、パディングタイプを指定するPADフィールドを含む。例示のタイプは、以下である:
【0397】
PAD パディングタイプ
【0398】
0 有効
【0399】
1 同じ
【0400】
2~7 予約済み
【0401】
予約された値がPADフィールドのために指定される場合、例えばF000hexの応答コードは、報告され、動作は、条件コード、例えば1で完了する。
【0402】
さらに、1つの例では、NNPA-CONVOLUTION関数固有パラメータ1のビット24~27は、活性化関数を指定する活性化フィールドを含む。例示の関数は、以下である:
【0403】
ACT 活性化関数
【0404】
0 活性化関数は実行されない
【0405】
1 RELU
【0406】
2~15 予約済み
【0407】
RELUの活性化関数が指定される場合、結果として得られる出力要素値は、以下のように判定される:中間総和値がゼロ未満か又はこれに等しい場合、出力テンソルにおける対応する要素はゼロであり;そうではない場合、出力テンソルにおける対応する要素は、中間総和値及び関数固有パラメータ4において指定されたクリッピング値の最小である。
【0408】
予約された値がACTフィールドのために指定される場合、例えばF001hexの応答コードは、報告され、動作は、条件コード、例えば1で完了する。
【0409】
* 関数固有パラメータ2は、例えば、スライディングウィンドウが次元2において移動する要素の数を指定する次元2ストライド(D2S)を指定する32ビット符号なしバイナリ整数を格納する。
【0410】
* 関数固有パラメータ3は、例えば、スライディングウィンドウが次元3において移動する要素の数を指定する次元3ストライド(D3S)を指定する32ビット符号なしバイナリ整数を格納する。
【0411】
関数固有パラメータ2~3における指定された値は、最大次元インデックスサイズ未満であることになり;そうではない場合、例えば、0012hexの応答コードは、報告され、動作は、条件コード、例えば1で完了する。
【0412】
* 関数固有パラメータ4は、任意選択のRELU演算のためのクリッピング値を定義する。1つの例では、クリッピング値は、関数固有パラメータ4のビット16~31内にある。
【0413】
1つの例では、ACTフィールドがゼロである場合、このフィールドは、無視される。ACTフィールドがRELUを指定する場合、クリッピング値は、NNPデータタイプ1フォーマットにおいて指定される。ゼロのクリッピング値は、最大の正の値を使用することを示し;換言すれば、クリッピングは実行されない。非ゼロが指定される場合、全体オペランドデータ例外が認識される。
【0414】
1つの例では、入力テンソル2を除く指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は入力テンソル2における指定されたデータレイアウトが4Dカーネルテンソルを指定しない場合(例えば、データレイアウト=1)、応答コード、例えば、0010hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。1つの例では、任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0415】
次元2ストライド及び次元3ストライドが両方ともゼロであり、かつ入力テンソル2の次元3インデックスサイズ又は次元4インデックスサイズが例えば448よりも大きい場合、応答コード、例えばF002hexが記憶される。次元2ストライド及び次元3ストライドが両方ともゼロよりも大きく、かつ入力テンソル2の次元3インデックスサイズ又は次元4インデックスサイズのいずれかが例えば64よりも大きい場合、応答コード、例えばF003hexが記憶され、動作は、条件コード、例えば1で完了する。次元2ストライド又は次元3ストライドのいずれかが例えば13よりも大きい場合、応答コード、例えばF004hexが記憶され、動作は、条件コード、例えば1で完了する。
【0416】
1つの例では、以下の条件が真であることになり、そうではない場合、全体オペランドデータ例外が認識される:
【0417】
* 入力テンソル1、入力テンソル3、及び出力テンソルのデータレイアウトは、同じであることになる。
【0418】
* 全ての入力テンソル及び出力テンソルのデータタイプは、同じであることになる。
【0419】
* 入力3テンソルの次元2、次元3及び次元4インデックスサイズは、1であることになる。
【0420】
* 出力テンソルの次元4インデックスサイズは、入力1テンソルの次元4インデックスサイズに等しいことになる。
【0421】
* 出力テンソルの次元1インデックスサイズは、入力2テンソルの次元1インデックスサイズ及び入力3テンソルの次元1インデックスサイズに等しいことになる。
【0422】
* 入力1テンソルの次元1インデックスサイズは、入力2テンソルの次元2インデックスサイズに等しいことになる。
【0423】
* 次元2ストライド及び次元3ストライドが両方ともゼロである場合、以下の追加の条件が、1つの例では、真であることになる:
【0424】
* 入力1テンソル次元2インデックスサイズは、入力2テンソルの次元3インデックスサイズに等しいことになる。
【0425】
* 入力テンソルの入力1テンソル次元3インデックスサイズは、入力2テンソルの次元4インデックスサイズに等しいことになる。
【0426】
* 出力テンソルの次元2インデックスサイズ及び次元3インデックスサイズは、1であることになる。
【0427】
* 指定されたパディングは、有効であることになる。
【0428】
* 次元2ストライド又は次元3ストライドのいずれかが非ゼロである場合、両方のストライドが非ゼロであることになる。
【0429】
* 次元2ストライド及び次元3ストライドが両方ともゼロよりも大きい場合、以下の追加の条件が、1つの例では、真であることになる:
【0430】
* 指定されたパディングが有効である場合、入力1テンソルの次元2インデックスサイズは、入力テンソル2の次元3インデックスサイズよりも大きいか又はこれに等しいことになる。
【0431】
* 指定されたパディングが有効である場合、入力1テンソルの次元3インデックスサイズは、入力2テンソルの次元4インデックスサイズよりも大きいか又はこれに等しいことになる。
【0432】
* 指定されたパディングが同じである場合、入力1テンソル及び出力テンソルの次元2インデックスサイズ及び次元3インデックスサイズの間の以下の関係は、1つの例では、満たされることになる(同じパディングの畳み込み):
【0433】
【数26】
【0434】
【数27】
【0435】
ここで:
【0436】
O1D2IS 出力テンソルの次元2インデックスサイズ。
【0437】
O1D3IS 出力テンソルの次元3インデックスサイズ。
【0438】
I1D2IS 入力1テンソルの次元2インデックスサイズ。
【0439】
I1D3IS 入力1テンソルの次元3インデックスサイズ。
【0440】
D2S 次元2ストライド。
【0441】
D3S 次元3ストライド。
【0442】
* 指定されたパディングが有効である場合、入力1テンソルの次元2インデックスサイズ及び次元3インデックスサイズ、及び入力2テンソル及び出力テンソルの次元3インデックスサイズ及び次元4インデックスサイズの間の以下の関係は、1つの例では、満たされることになる(有効パディングの畳み込み):
【0443】
【数28】
【0444】
【数29】
【0445】
ここで:
【0446】
O1D2IS 出力テンソルの次元2インデックスサイズ。
【0447】
O1D3IS 出力テンソルの次元3インデックスサイズ。
【0448】
I1D2IS 入力1テンソルの次元2インデックスサイズ。
【0449】
I1D3IS 入力1テンソルの次元3インデックスサイズ。
【0450】
I2D3IS 入力2テンソルの次元3インデックスサイズ。
【0451】
I2D4IS 入力2テンソルの次元4インデックスサイズ。
【0452】
D2S 次元2ストライド。
【0453】
D3S 次元3ストライド。
【0454】
出力テンソル記述子2及び関数固有保存エリアアドレスフィールドは、1つの例では無視される。関数固有パラメータ5は、1つの例では、ゼロを格納することになる。
【0455】
関数コード113:NNPA-MATMUL-OP(行列乗算演算)
【0456】
NNPA-MATMUL-OP関数が指定される場合、出力テンソル記述子によって記述される出力テンソルにおける各要素は、1つの例では、以下で説明されるように計算される:
【0457】
* 以下で説明される次元1ベクトル取得動作を使用して、入力テンソル1記述子によって記述される入力テンソル1から次元1ベクトルが選択される。
【0458】
* 以下で説明される次元2ベクトル取得動作を使用して、入力テンソル2記述子によって記述される入力テンソル2から次元2ベクトルが選択される。
【0459】
* 以下で説明されるドット積演算を使用して、次元1ベクトル及び次元2ベクトルの中間ドット積が計算される。
【0460】
* 演算は、中間ドット積及び入力テンソル3記述子によって記述される入力テンソル3の要素に対して、出力テンソル要素としての同じ次元インデックス4及び次元インデックス1値とともに、実行される。結果として得られる要素は、出力テンソルに記憶される。融合演算は、関数固有パラメータ1によって判定され、以下で説明される。
【0461】
次元1ベクトル取得動作:指定された出力要素について、次元1ベクトルが、入力1テンソルから選択され、ここで、入力次元4インデックスは、出力次元4インデックスであり、入力次元3インデックスは、出力次元3インデックスであり、入力次元2インデックスは、出力次元2インデックスである。
【0462】
次元2ベクトル取得動作:指定された出力要素について、次元2ベクトルが、入力2テンソルから選択され、ここで、入力次元4インデックスは、出力次元4インデックスであり、入力次元3インデックスは、出力次元3インデックスであり、入力次元1インデックスは、出力次元1インデックスである。
【0463】
ドット積演算:同じサイズ及びデータタイプの2つのベクトルの中間ドット積は、入力ベクトル1における各要素及び入力ベクトル2の対応する要素の積の総和として計算される。
【0464】
融合演算:関数固有パラメータ1は、中間ドット積及び入力テンソル3からの対応する要素に対して実行される動作を制御する。1つの例では、NNPA-MATMUL-OP関数固有パラメータ1は、例えば、ビット24~31における演算フィールドを含む。演算フィールドは、実行される演算を指定する。例示の演算が、以下で示される:
【0465】
演算 演算タイプ
【0466】
0 加算
【0467】
1 ドット積が高いか否かを比較する
【0468】
2 ドット積が低くないか否かを比較する
【0469】
3 ドット積及び要素が等しいか否かを比較する
【0470】
4 ドット積及び要素が等しくないか否かを比較する
【0471】
5 ドット積が高くないか否かを比較する
【0472】
6 ドット積が低いか否かを比較する
【0473】
1つの例では、加算の演算タイプについて、入力テンソル3要素が中間ドット積に加算される。比較の演算タイプについて、中間ドット積は、入力テンソル3要素と比較され、出力テンソルについて指定されたデータタイプにおいて、比較が真である場合、結果は、例えば、+1の値に設定され;そうではない場合、それは、例えば、+0の値に設定される。
【0474】
1つの例では、OPERATIONフィールドの全ての他の値が予約される。
予約された値がOPERATIONフィールドのために指定される場合、例えばF000hexの応答コードは、報告され、動作は、条件コード、例えば1で完了する。
【0475】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0476】
1つの実施形態では、以下の条件が真であることになり、そうではない場合、全体オペランドデータ例外が認識される:
【0477】
* 全ての入力テンソル及び出力テンソルの次元4インデックスサイズは、同じであることになる。
【0478】
* 全ての入力テンソル及び出力テンソルの次元3インデックスサイズは、1に等しいことになる。
【0479】
* 入力テンソル3の次元2インデックスサイズは、1に等しいことになる。
【0480】
* 入力テンソル1及び出力テンソルの次元2インデックスサイズは、同じであることになる。
【0481】
* 入力テンソル1の次元1インデックスサイズ及び入力テンソル2の次元2インデックスサイズは、同じであることになる。
【0482】
* 入力テンソル2、入力テンソル3、及び出力テンソルの次元1インデックスサイズは、同じであることになる。
【0483】
* 全ての入力テンソル及び出力テンソルのデータレイアウト及びデータタイプは、同じであることになる。
【0484】
1つの実施形態では、出力テンソル記述子2及び関数固有保存エリアアドレスフィールドは無視される。関数固有パラメータ2~5は、一例では、ゼロを格納することになる。
【0485】
関数コード114:NNPA-MATMUL-OP-BCAST23(行列乗算演算-ブロードキャスト23)
【0486】
NNPA-MATMUL-OP-BCAST23関数が指定される場合、出力テンソル記述子によって記述される出力テンソルにおける各要素は、1つの例では、以下で説明されるように計算される:
【0487】
* 以下で説明される次元1ベクトル取得動作を使用して、入力テンソル1記述子によって記述される入力テンソル1から次元1ベクトルが選択される。
【0488】
* 以下で説明される次元2ベクトル取得動作を使用して、入力テンソル2記述子によって記述される入力テンソル2から次元2ベクトルが選択される。
【0489】
* 以下で説明されるドット積演算を使用して、次元1ベクトル及び次元2ベクトルのドット積が計算される。
【0490】
* 入力テンソル3記述子によって記述される入力テンソル3の要素は、出力テンソル要素としての同じ次元インデックス1値とともに、以前に計算されたドット積に加算され、出力テンソルに記憶される。
【0491】
次元1ベクトル取得動作:指定された出力要素について、次元1ベクトルが、入力1テンソルから選択され、ここで、入力次元4インデックスは、出力次元4インデックスであり、入力次元3インデックスは、出力次元3インデックスであり、入力次元2インデックスは、出力次元2インデックスである。
【0492】
次元2ベクトル取得動作:指定された出力要素について、次元2ベクトルが、入力2テンソルから選択され、ここで、入力次元4インデックスは1であり、入力次元3インデックスは、出力次元3インデックスであり、入力次元1インデックスは、出力次元1インデックスである。
【0493】
ドット積演算:同じサイズ及びデータタイプの2つのベクトルの中間ドット積は、入力ベクトル1における各要素及び入力ベクトル2の対応する要素の積の総和として計算される。
【0494】
1つの例では、指定されたテンソル記述子のうちの任意のものにおける指定されたデータレイアウトが4D特徴テンソルを指定しない場合(例えば、データレイアウト=0)又は任意の指定されたテンソル記述子におけるデータタイプがNNPデータタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード、例えば、それぞれ0010hex又は0011hexが、汎用レジスタ0において設定され、命令は、条件コード、例えば1で完了する。
【0495】
1つの実施形態では、以下の条件が真であることになり、そうではない場合、全体オペランドデータ例外が認識される:
【0496】
* 入力テンソル1及び出力テンソルの次元4インデックスサイズは、同じであることになる。
【0497】
* 入力テンソル2及び入力テンソル3の次元4インデックスサイズは、1に等しいことになる。
【0498】
* 全ての入力テンソル及び出力テンソルの次元3インデックスサイズは、1に等しいことになる。
【0499】
* 入力テンソル3の次元2インデックスサイズは、1に等しいことになる。
【0500】
* 入力テンソル1及び出力テンソルの次元2インデックスサイズは、同じであることになる。
【0501】
* 入力テンソル1の次元1インデックスサイズ及び入力テンソル2の次元2インデックスサイズは、同じであることになる。
【0502】
* 入力テンソル2、入力テンソル3、及び出力テンソルの次元1インデックスサイズは、同じであることになる。
【0503】
* 全ての入力テンソル及び出力テンソルのデータレイアウト及びデータタイプは、同じであることになる。
【0504】
1つの実施形態では、出力テンソル記述子2及び関数固有保存エリアアドレスフィールドは無視される。関数固有パラメータ1~5は、1つの例では、ゼロを格納することになる。
【0505】
ニューラルネットワーク処理支援命令について、1つの実施形態では、出力テンソルが入力テンソル又はパラメータブロックと重複する場合、結果は予測不能である。
【0506】
一例として、ニューラルネットワーク処理支援命令の実行が試みられ、パラメータブロックが、例えばダブルワード境界上に指定されない場合、指定例外が認識される。
【0507】
ニューラルネットワーク処理支援命令の実行が試みられ、例えば、テンソル記述子不一致が存在する場合、全体オペランドデータ例外が認識される。
【0508】
ニューラルネットワーク処理支援命令のための結果としてられる条件コードは、例えば以下を含む:0-通常完了;1-応答コードが設定される;2-;3-処理されるデータのCPUにより判定される量。
【0509】
1つの実施形態では、ニューラルネットワーク処理支援命令のための実行の優先度は、例えば、以下を含む:
【0510】
1.-7 一般的な場合のプログラム割り込み条件の優先度と同じ優先度を有する例外。
【0511】
8.A 指定される割り当てられていない又はインストールされていない関数コードに起因した条件コード1。
【0512】
8.B ダブルワード境界上に指定されないパラメータブロックに起因した指定例外。
【0513】
9. パラメータブロックへのアクセスのためのアクセス例外。
【0514】
10.モデルによってサポートされないパラメータブロックの指定されたフォーマットに起因した条件コード1。
【0515】
11.A 指定されたテンソルデータレイアウトがサポートされないことに起因した条件コード1。
【0516】
11.B テンソル記述子間の異なるデータレイアウトに起因した全体オペランドデータ例外。
【0517】
12.A 上記の項目8.A、10及び11.A及び以下の12.B.1に含まれる条件以外の条件に起因した条件コード1。
【0518】
12.B.1 NNPA-RELU(正規化線形ユニット)及びNNPA-CONVOLUTION(本明細書において説明されない他の利用可能な関数)のための無効な出力テンソルデータタイプに起因した条件コード1。
【0519】
12.B.2 NNPA-RELU関数固有パラメータ1及びNNPA-CONVOLUTION関数固有パラメータ4のための無効な値のための全体オペランドデータ例外。
【0520】
13.A 出力テンソルへのアクセスのためのアクセス例外。
【0521】
13.B 入力テンソルへのアクセスのためのアクセス例外。
【0522】
13.C 関数固有保存エリアへのアクセスのためのアクセス例外。
【0523】
14. 条件コード0。
【0524】
本明細書において説明されるように、単一の命令(例えば、ニューラルネットワーク処理支援命令)は、クエリ関数及び複数の非クエリ関数を含む複数の機能を実行するように構成されている。各非クエリ関数は、4Dテンソル(又は他のサイズのテンソル)等のテンソルに対して動作する。テンソルを使用する処理を容易にするために、本発明の1つ又は複数の態様によれば、テンソルは、処理を改善するために特定の特性を有する複数の、例えば、2Dテンソルに再フォーマット化される。例えば、再フォーマット化テンソルは、容易に計算可能なアドレスを有し、1つの演算においてロード/記憶されてよく、帯域幅が増大するとともにシステム性能が改善される。これは、例えば、メモリ境界上のテンソルを開始し、固定次元(パディングを使用して可能にされた)を有する結果である。
【0525】
1つの例では、テンソルの再フォーマット化は、非クエリ関数を指定するニューラルネットワーク処理支援命令を取得するプロセッサ(例えば、汎用プロセッサ104)に基づいて実行される。指定されるテンソルは、例えば、パラメータブロックにおいて提供されるテンソル記述子情報(例えば、図6Gのテンソル記述子660、665)を使用して再フォーマット化される。再フォーマット化テンソルに関するアドレス情報は、命令によって指定される機能を実行する際の使用のために専用プロセッサ(例えば、ニューラルネットワークプロセッサ105)に提供される。
【0526】
1つの例では、命令(例えば、ニューラルネットワーク処理支援命令)は、リカレントニューラルネットワークセル活性化(例えば、長短期記憶セル活性化、ゲート付きリカレントユニットセル活性化及び/又は他のセル活性化)を実装し、ここで、入力及び/又は出力データは、演算間のデータの再フォーマット化を防止するためにテンソルのメモリにおいて連結データレイアウトを使用する。一例として、入力データの連結のために、重みテンソルは、独立して2D変換され、乗算演算に先立つタイムステップ内で連結される。命令の単一の起動は、中間結果のために、タイムステップにわたる入力特徴の全ての乗算を一度に計算する。中間結果は、活性化を計算するためにメモリアドレス連続テンソルにおいて提供される。
【0527】
出力データの連結のために、結果テンソルは、タイムステップの2D再フォーマット化結果の連結を含む。各タイムステップ結果テンソルは、リカレントニューラルネットワーク計算の完了結果のメモリアドレス連続テンソルを含む。タイムステップの結果テンソルは、データ操作又はコピー動作を伴うことなく次のタイムステップの計算において直接使用することができる。
【0528】
1つ又は複数の更なる態様では、個々の活性化及び演算は、アクセラレータにおいて一度に実行される1つの命令に組み合わされる。リカレントニューラルネットワークは、1つの例では、長短期記憶ネットワーク又はゲート付きリカレントユニットネットワークに依拠する。各タイムステップについて(演算ごとに)、複数の活性化(例えば、シグモイド、tanh)及び他の演算(例えば、加算、減算及び/又は乗算)が、隠れ状態(例えば、以前に学習された)、入力及状態及びセル状態に適用される。これらの段階の各々についてアクセラレータ(例えば、ニューラルネットワークプロセッサ105)を呼び出すことは、少なくともアクセラレータの起動時間に起因してプロセッサ及び/又はシステムの全体性能にとって有害である。本発明の一態様に従って、アクセラレータにおいて一度に実行される1つの命令に組み合わされる個々の活性化及び演算に基づいて大幅な高速化が達成される。本発明の一態様に従って、個々の活性化及び結合関数を組み合わせて単一の命令が実装される。それゆえ、1つのみの起動が存在し;中間計算データがメモリにライトバックされるのではなくアクセラレータに記憶され;アクセラレータのSIMD幅及びパイプライン化される性質を使用して、コンピュータあたりのより少ないサイクルで並列でより多くの計算を行うことができ;長短期記憶及び/又はゲート付きリカレントユニット演算のための向上した正確性及びより高い安定性をもたらすより高い精度が中間結果のために使用される。例えば、乗算及び加算演算の結合は、中間結果に対する精度を失うことなく、より高い正確性を提供する。さらに、より高い精度でアクセラレータに中間計算を保存することによってより高い数値的正確性が達成され得る。
【0529】
さらに、本発明の1つ又は複数の態様によれば、セル活性化に入力される連結結果テンソルを提供するのに使用される行列乗算演算は、セル活性化とは別個であり、単一の演算の複雑度が低下し、他のリカレントニューラルネットワークのための基本ブロックの再使用が可能になる。設計された命令は、アドレス変換を削減するために空間的に近い入力及び出力データソースを提供する。
【0530】
1つ又は複数の態様によれば、内部フォーマットにおける入力の活性化が計算され、計算は組み合わされ、入力数値フォーマットにおける1つ又は複数の出力が生成される。一例として、内部フォーマットは、例えば、ニューラルネットワークプロセッサのためのモデル依存フォーマットである。1つの例では、使用される内部フォーマットは、正確性を高めるか又は計算時間及び電力を削減するために入力/出力数値フォーマットとは異なる数値精度を有してよい。
【0531】
さらに、1つ又は複数の態様によれば、複数の活性化が1つの命令においてカプセル化される。命令は、活性化を非常に小さい塊に分解することなくモジュール性を提供する。さらに、命令は、活性化のための連結入力及び出力フォーマットを使用し、処理時間における節約及び処理速度における向上が提供される。
【0532】
本発明の1つ又は複数の態様は、コンピュータ技術に密接に結び付けられており、コンピュータ内の処理を容易にし、その性能が改善される。再フォーマット化連結テンソル及び/又はそのようなテンソルを定義及び/又は使用する命令は、コンピュータ処理、人工知能、リカレントニューラルネットワーク、医療用処理、工学、自動車技術、製造等のような多くの技術分野において使用されてよい。本明細書において説明されるように、再フォーマット化連結テンソルを使用することによって、様々な技術分野において使用される複雑な計算を実行する際の最適化を含む特定の最適化が提供され、帯域幅を増大させることによってそれらの分野が改善され、効率性が提供され、及び/又は実行時間が削減される。
【0533】
本発明の1つ又は複数の態様に関するようなコンピューティング環境内の処理を容易にする1つの実施形態の更なる詳細は、図10A及び図10Bを参照して説明される。
【0534】
図10Aを参照すると、リカレントニューラルネットワークセル活性化を実行する命令が実行される(1000)。実行することは、例えば、リカレントニューラルネットワークセル活性化の複数の演算を実行して、リカレントニューラルネットワークセル活性化の結果を提供することを含む(1002)。一例として、複数の演算は、命令の単一の起動において実行される(1004)。
【0535】
命令の単一の起動を使用して、複数の演算を実行することは、複雑度を低下させ、システムリソースの使用を削減し、システム性能を高める。
【0536】
1つの例では、複数の演算は、1つ又は複数のシグモイド関数及び1つ又は複数の正接関数を含む(1006)。1つの例では、複数の演算は、テンソル要素単位加算及びテンソル要素単位乗算演算を含む(1008)。
【0537】
一例として、複数の演算は、1つ又は複数のシグモイド関数、1つ又は複数の正接関数、1つ又は複数のテンソル要素単位加算演算及び1つ又は複数のテンソル要素単位乗算演算を含む(1010)。
【0538】
1つの例では、命令への1つ又は複数の入力は、1つ又は複数の連結テンソルを含む(1012)。連結テンソルは、例えば、リカレントニューラルネットワークのセル活性化を実行するアクセラレータ上で実行される命令によって直接使用されてよい。連結テンソルは、1つの演算においてアクセスされてよく、処理時間が節約されるとともに処理速度が高まる。さらに、管理されることになるテンソルポインタが少なくなり、アクセラレータの起動間でのテンソルデータのコピー又は再編成における削減が存在し、処理速度が改善される。
【0539】
1つの例では、図10Bを参照すると、結果は、出力テンソルであり(1014)、出力テンソルは、一例として、命令の別の起動への入力である(1016)。
【0540】
例として、リカレントニューラルネットワークセル活性化は、長短期記憶セル活性化を含み(1020)、又はリカレントニューラルネットワークセル活性化は、ゲート付きリカレントユニットセル活性化を含む(1022)。
【0541】
1つの例では、リカレントニューラルネットワークセル活性化の複数の演算を実行することは、アクセラレータによって実行され、中間計算データを生成する(1024)。中間計算データは、一例としてアクセラレータに記憶される(1026)。
【0542】
1つの例では、複数の演算を実行することは、空間的に近い入力データに対して複数の演算を実行することを含む(1028)。
【0543】
他の変形例及び実施形態が可能である。
【0544】
本発明の態様は、多くのタイプのコンピューティング環境によって使用されてよい。本発明の1つ又は複数の態様を組み込んで使用するコンピューティング環境の別の例は、図11Aを参照して説明される。一例として、図11Aのコンピューティング環境は、ニューヨーク州アーモンク所在のInternational Business Machines Corporationによって提供されるz/Architecture(登録商標)命令セットアーキテクチャに基づく。しかしながら、z/Architecture命令セットアーキテクチャは、単なる1つの例示のアーキテクチャである。ここでもやはり、コンピューティング環境は、限定されないが、Intel(登録商標)x86アーキテクチャを含む他のアーキテクチャ、International Business Machines Corporationの他のアーキテクチャ、及び/又は他の会社のアーキテクチャに基づいてよい。Intelは、米国及び他の国におけるIntel Corporation又はその子会社の商標又は登録商標である。
【0545】
1つの例では、コンピューティング環境10は、中央電子処理装置(CEC)11を含む。中央電子処理装置11は、例えば、1つ又は複数の汎用プロセッサ(中央処理ユニット(CPU)13として知られている)及び1つ又は複数の専用プロセッサ(例えば、ニューラルネットワークプロセッサ31)等の1つ又は複数のプロセッサに、及び入力/出力(I/O)サブシステム14に結合されたメモリ12(システムメモリ、メインメモリ、メインストレージ、中央ストレージ、ストレージとして知られている)等の複数のコンポーネントを含む。
【0546】
例として、1つ又は複数の専用プロセッサは、1つ又は複数の汎用プロセッサとは別個であってよく、及び/又は少なくとも1つの専用プロセッサは、少なくとも1つの汎用プロセッサ内に埋め込まれてよい。他の変形例も可能である。
【0547】
I/Oサブシステム14は、中央電子処理装置の一部、又はそこから分離されたものであり得る。それは、メインストレージ12、及び中央電子処理装置に結合された入力/出力制御ユニット15及び入力/出力(I/O)デバイス16の間の情報のフローを指示する。
【0548】
多くのタイプのI/Oデバイスが使用されてよい。1つの特定のタイプは、データストレージデバイス17である。データストレージデバイス17は、1つ又は複数のプログラム18、1つ又は複数のコンピュータ可読プログラム命令19、及び/又はデータ等を記憶することができる。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成することができる。
【0549】
中央電子処理装置11は、取り外し可能/取り外し不能揮発性/不揮発性コンピュータシステム記憶媒体を含み、及び/又はこれに結合され得る。例えば、それは、取り外し不能不揮発性磁気媒体(典型的には、「ハードドライブ」と呼ばれる)、取り外し可能不揮発性磁気ディスク(例えば、「フロッピディスク」)に対して読み出し又は書き込みを行う磁気ディスクドライブ、及び/又は、CD-ROM、DVD-ROM又は他の光学媒体等の取り外し可能不揮発性光学ディスクに対して読み出し又は書き込みを行う光学ディスクドライブを含み、及び/又はこれらに結合され得る。他のハードウェア及び/又はソフトウェアコンポーネントを、中央電子処理装置11と併せて使用することができることが理解されるべきである。例としては:マイクロコード又はミリコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、及びデータアーカイブストレージシステム等が挙げられるが、これらに限定されない。
【0550】
さらに、中央電子処理装置11は、多数の他の汎用又は専用コンピューティングシステム環境又は構成とともに動作可能であり得る。中央電子処理装置11との使用に適し得る周知のコンピューティングシステム、環境、及び/又は構成の例としては、パーソナルコンピュータ(PC)システム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、及び上記のシステム又はデバイスのいずれかを含む分散クラウドコンピューティング環境等が挙げられるが、これらに限定されない。
【0551】
中央電子処理装置11は、1つ又は複数の実施形態において、論理パーティション及び/又は仮想化サポートを提供する。1つの実施形態では、図11Bにおいて示されているように、メモリ12は、例えば、1つ又は複数の論理パーティション20、論理パーティションを管理するハイパーバイザ21、及びプロセッサファームウェア22を含む。ハイパーバイザ21の1つの例は、ニューヨーク州アーモンク所在のInternational Business Machines Corporationによって提供されるプロセッサリソース/システムマネージャ(PR/SM(商標))である。PR/SMは、少なくとも1つの法域におけるInternational Business Machines Corporationの商標又は登録商標である。
【0552】
各論理パーティション20は、別個のシステムとして機能することが可能である。すなわち、各論理パーティションは、独立してリセットされ、ニューヨーク州アーモンク所在のInternational Business Machines Corporationによって提供されるz/OS(登録商標)オペレーティングシステム等のゲストオペレーティングシステム23、又はカップリングファシリティ制御コード(CFCC)等の他の制御コード24を実行し、異なるプログラム25を用いて動作することができる。論理パーティションにおいて実行されるオペレーティングシステム又はアプリケーションプログラムは、全体でかつ完全なシステムへのアクセスを有するように見えるが、実際には、その一部のみが利用可能である。z/OSオペレーティングシステムが一例として提供されているが、International Business Machines Corporation及び/又は他の会社によって提供される他のオペレーティングシステムが、本発明の1つ又は複数の態様に従って使用され得る。
【0553】
メモリ12は、例えば、CPU13(図11A)に結合されており、これらは、論理パーティションに割り当てることができる物理プロセッサリソースである。例えば、論理パーティション20は、1つ又は複数の論理プロセッサを含んでよく、これらの各々は、論理パーティションに動的に割り当てることができる物理プロセッサリソース13の全て又は一定割合を表す。
【0554】
また更なる実施形態では、中央電子処理装置は、仮想機械サポート(論理パーティションサポートを用いるか又は用いないもののいずれか)を提供する。図11Cにおいて示されているように、中央電子処理装置11のメモリ12は、例えば、1つ又は複数の仮想機械26、仮想機械を管理するハイパーバイザ27等の仮想機械マネージャ、及びプロセッサファームウェア28を含む。ハイパーバイザ27の1つの例は、ニューヨーク州アーモンク所在のInternational Business Machines Corporationによって提供されるz/VM(登録商標)ハイパーバイザである。ハイパーバイザは、時として、ホストと称される。z/VMは、少なくとも1つの法域におけるInternational Business Machines Corporationの商標又は登録商標である。
【0555】
中央電子処理装置の仮想機械サポートは、各々が異なるプログラム29を用いて動作し、Linux(登録商標)オペレーティングシステム等のゲストオペレーティングシステム30を実行することが可能である多数の仮想機械26を動作させる能力を提供する。各仮想機械26は、別個のシステムとして機能することが可能である。すなわち、各仮想機械は、独立してリセットされ、ゲストオペレーティングシステムを実行し、異なるプログラムを用いて動作し得る。仮想機械において実行されるオペレーティングシステム又はアプリケーションプログラムは、全体でかつ完全なシステムへのアクセスを有するように見えるが、実際には、その一部のみが利用可能である。z/VM及びLinuxが例として提供されているが、他の仮想機械マネージャ及び/又はオペレーティングシステムが、本発明の1つ又は複数の態様に従って使用され得る。登録商標であるLinux(登録商標)は、世界的に当該商標の所有者であるLinus Torvaldsの独占的ライセンシであるLinux Foundationからのサブライセンスに従って使用されている。
【0556】
本発明の1つ又は複数の態様を組み込んで使用するコンピューティング環境の別の実施形態は、図12Aを参照して説明される。この例では、コンピューティング環境36は、例えば、例えば1つ又は複数のバス40及び/又は他の接続を介して互いに結合されたネイティブ中央処理ユニット(CPU)37、メモリ38、及び、1つ又は複数の入力/出力デバイス及び/又はインターフェース39を含む。例として、コンピューティング環境36は、ニューヨーク州アーモンク所在のInternational Business Machines Corporationによって提供されるPowerPC(登録商標)プロセッサ;カリフォルニア州パロアルト所在のHewlett Packard Co.によって提供されるIntel(登録商標)Itanium(登録商標)IIプロセッサを用いるHP Superdome;及び/又はInternational Business Machines Corporation、Hewlett Packard、Intel Corporation、Oracle及び/又は他社によって提供されるアーキテクチャに基づく他の機械を含んでよい。PowerPCは、少なくとも1つの法域におけるInternational Business Machines Corporationの商標又は登録商標である。Itaniumは、米国及び他の国におけるIntel Corporation又はその子会社の商標又は登録商標である。
【0557】
ネイティブ中央処理ユニット37は、環境内の処理中に使用される1つ又は複数の汎用レジスタ及び/又は1つ又は複数の専用レジスタ等の1つ又は複数のネイティブレジスタ41を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
【0558】
その上、ネイティブ中央処理ユニット37は、メモリ38に記憶されている命令及びコードを実行する。1つの特定の例では、中央処理ユニットは、メモリ38に記憶されたエミュレータコード42を実行する。このコードは、1つのアーキテクチャにおいて構成されたコンピューティング環境が別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータコード42は、PowerPCプロセッサ、HP Superdomeサーバ又は他のもの等の、z/Architecture命令セットアーキテクチャ以外のアーキテクチャに基づく機械が、z/Architecture命令セットアーキテクチャをエミュレートすること、及びz/Architecture命令セットアーキテクチャに基づいて開発されたソフトウェア及び命令を実行することを可能にする。
【0559】
エミュレータコード42に関する更なる詳細は、図12Bを参照して説明される。メモリ38に記憶されたゲスト命令43は、ネイティブCPU37以外のアーキテクチャにおいて実行されるように開発されたソフトウェア命令(例えば、機械命令と相関する)を備える。例えば、ゲスト命令43は、z/Architecture命令セットアーキテクチャに基づくプロセッサ上で実行されるように設計されている場合があるが、その代わりに、例えばIntel Itanium IIプロセッサであり得るネイティブCPU37上でエミュレートされる。1つの例では、エミュレータコード42は、メモリ38から1つ又は複数のゲスト命令43を取得すること、及び任意選択で、取得された命令のためにローカルバッファリングを提供することを行うための命令フェッチルーチン44を含む。それは、取得されたゲスト命令のタイプを判定すること、及びゲスト命令を1つ又は複数の対応するネイティブ命令46に変換することを行うための命令変換ルーチン45も含む。この変換は、例えば、ゲスト命令によって実行されることになる機能を識別すること、及びその機能を実行するネイティブ命令を選択することを含む。
【0560】
さらに、エミュレータコード42は、ネイティブ命令を実行するためのエミュレーション制御ルーチン47を含む。エミュレーション制御ルーチン47は、ネイティブCPU37に、1つ又は複数の以前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行すること、及びそのような実行の最後に、次のゲスト命令又はゲスト命令のグループの取得をエミュレートするための命令フェッチルーチンに制御を返すことを行わせてよい。ネイティブ命令46の実行は、メモリ38からレジスタにデータをロードすること;レジスタからメモリにデータを戻して記憶すること;又は変換ルーチンによって判定されるような幾つかのタイプの算術又は論理演算を実行することを含んでよい。
【0561】
各ルーチンは、例えば、メモリに記憶され、ネイティブ中央処理ユニット37によって実行されるソフトウェアにおいて実装される。他の例では、ルーチン又は動作のうちの1つ又は複数は、ファームウェア、ハードウェア、ソフトウェア又はこれらの何らかの組み合わせにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ41を使用して、又はメモリ38におけるロケーションを使用することによって、エミュレートされてよい。実施形態において、ゲスト命令43、ネイティブ命令46及びエミュレータコード42は、同じメモリ内に存在し得るか、又は異なるメモリデバイス間に分散され得る。
【0562】
エミュレートされ得る命令は、本発明の1つ又は複数の態様によれば、本明細書において説明されるニューラルネットワーク支援処理命令を含む。さらに、他の命令及び/又はテンソル処理の1つ又は複数の態様(限定されないが、テンソルの定義、生成、再フォーマット化及び/又は連結を含む)は、本発明の1つ又は複数の態様によれば、エミュレートされてよい。
【0563】
上記で説明されたコンピューティング環境は、使用され得るコンピューティング環境の単なる例である。限定されないが、パーティション化されていない環境、パーティション化されている環境、クラウド環境及び/又はエミュレートされた環境を含む他の環境が使用されてよく;実施形態は、任意の1つの環境に限定されない。コンピューティング環境の様々な例が本明細書において説明されているが、本発明の1つ又は複数の態様は、多くのタイプの環境とともに使用されてよい。本明細書において提供されるコンピューティング環境は単なる例である。
【0564】
各コンピューティング環境は、本発明の1つ又は複数の態様を含むように構成されることが可能である。
【0565】
1つ又は複数の態様が、クラウドコンピューティングに関連し得る。
【0566】
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書において記載される教示の実装はクラウドコンピューティング環境に限定されるものではないことが理解されるべきである。むしろ、本発明の実施形態は、現在既知の、又は今後開発される他の任意のタイプのコンピューティング環境と組み合わせて実装されることが可能である。
【0567】
クラウドコンピューティングは、最小の管理労力又はサービスプロバイダとのインタラクションで迅速にプロビジョニング及びリリースすることができる構成可能コンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械、及びサービス)の共有プールへの簡便なオンデマンドネットワークアクセスを可能にするためのサービス配信のモデルである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、及び少なくとも4つの展開モデルを含み得る。
【0568】
特性は、以下のとおりである:
【0569】
オンデマンドセルフサービス:クラウド消費者は、サービスプロバイダとの人的対話を必要とすることなく、必要に応じて自動的に、サーバ時間及びネットワークストレージ等のコンピューティング能力を一方的にプロビジョニングすることができる。
【0570】
幅広いネットワークアクセス:この能力は、ネットワークを介して利用可能であり、異種のシン又はシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、及びPDA(登録商標))による使用を促す標準メカニズムを通してアクセスされる。
【0571】
リソースプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを使用して複数の消費者に役立つようプールされ、異なる物理リソース及び仮想リソースが、需要に従って動的に割り当て及び再割り当てされる。消費者は概して提供されたリソースの正確なロケーションに対して制御又は知識を有していないが、より高いレベルの抽象化(例えば、国、州、又はデータセンタ)においてロケーションを指定することが可能である場合があるという点で、ロケーションの独立性がある。
【0572】
迅速な弾力性:この能力は、迅速かつ弾力的に、幾つかの事例では自動的にプロビジョニングして、早急にスケールアウトし、かつ迅速にリリースして早急にスケールインすることができる。消費者にとって、多くの場合、プロビジョニングに利用可能な能力は無制限に見え、任意の時点において任意の量で購入することができる。
【0573】
測定されるサービス:クラウドシステムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅及びアクティブユーザアカウント)に適切な或るレベルの抽象化における計測能力を活用することによって、自動的にリソース使用を制御及び最適化する。リソース使用量をモニタリング、制御及び報告することができ、それにより、利用されるサービスのプロバイダ及び消費者の両方に透明性が提供される。
【0574】
サービスモデルは、以下のとおりである:
【0575】
ソフトウェアアズアサービス(SaaS):消費者に提供される能力は、クラウドインフラストラクチャ上で稼働するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブブラウザ(例えば、ウェブベースの電子メール)等のシンクライアントインターフェースを通して様々なクライアントデバイスからアクセス可能である。消費者は、考えられる例外としての限定されたユーザ固有のアプリケーション構成設定を除き、ネットワーク、サーバ、オペレーティングシステム、ストレージ又は更には個々のアプリケーション能力を含む、基礎をなすクラウドインフラストラクチャを管理又は制御しない。
【0576】
プラットフォームアズアサービス(PaaS):消費者に提供される能力は、クラウドインフラストラクチャ上に、プロバイダによってサポートされるプログラミング言語及びツールを使用して作成される、消費者が作成又は取得したアプリケーションを展開することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、又はストレージを含む、基礎をなすクラウドインフラストラクチャを管理又は制御しないが、展開されたアプリケーション、及び場合によってはアプリケーションホスティング環境構成を制御する。
【0577】
インフラストラクチャアズアサービス(IaaS):消費者に提供される能力は、処理、ストレージ、ネットワーク及び他の基本的なコンピューティングリソースをプロビジョニングすることであり、ここで消費者は、オペレーティングシステム及びアプリケーションを含むことができる任意のソフトウェアを展開及び実行することが可能である。消費者は、基礎をなすクラウドインフラストラクチャを管理又は制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーションを制御するとともに、場合によっては選択されたネットワーキングコンポーネント(例えば、ホストファイアウォール)を限定的に制御する。
【0578】
展開モデルは、以下のとおりである:
【0579】
プライベートクラウド:このクラウドインフラストラクチャは、或る組織のためにのみ動作する。それは、その組織又はサードパーティによって管理されてよく、オンプレミス又はオフプレミスで存在してよい。
【0580】
コミュニティクラウド:このクラウドインフラストラクチャは、幾つかの組織によって共有され、共有される関心事項(例えば、ミッション、セキュリティ要件、ポリシ及びコンプライアンス考慮事項)を有する特定のコミュニティをサポートする。それは、それらの組織又はサードパーティによって管理されてよく、オンプレミス又はオフプレミスで存在してよい。
【0581】
パブリッククラウド:このクラウドインフラストラクチャは、一般大衆又は大規模な業界団体に利用可能とされ、クラウドサービスを販売する組織によって所有される。
【0582】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ又はそれよりも多くのクラウド(プライベート、コミュニティ、又はパブリック)の複合体であり、2つ又はそれよりも多くのクラウドは、独自のエンティティのままであるが、データ及びアプリケーションのポータビリティ(例えば、クラウド間の負荷分散のためのクラウドバースト)を可能にする標準技術又はプロプライエタリ技術によってともに結合される。
【0583】
クラウドコンピューティング環境は、ステートレス性、低結合性、モジュール性及びセマンティック相互運用性に焦点を当てたサービス指向である。クラウドコンピューティングの中核には、相互接続されたノードのネットワークを含むインフラストラクチャが存在する。
【0584】
ここで図13を参照すると、例示的なクラウドコンピューティング環境50が示されている。示されているように、クラウドコンピューティング環境50は、例えば、携帯情報端末(PDA)又は携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、及び/又は自動車コンピュータシステム54N等の、クラウド消費者によって使用されるローカルコンピューティングデバイスが通信し得る、1つ又は複数のクラウドコンピューティングノード52を備える。ノード52は、互いに通信してよい。これらは、本明細書の上記で説明されたようなプライベートクラウド、コミュニティクラウド、パブリッククラウド、又はハイブリッドクラウド、又はこれらの組み合わせ等の1つ又は複数のネットワーク内で物理的に又は仮想的にグループ化されてよい(図示せず)。これにより、クラウドコンピューティング環境50は、インフラストラクチャ、プラットフォーム及び/又はソフトウェアを、クラウド消費者がそのためにローカルコンピューティングデバイス上にリソースを維持する必要がないサービスとして提供することが可能になる。図13において示されているコンピューティングデバイス54A~Nのタイプは、単に例示を意図し、コンピューティングノード52及びクラウドコンピューティング環境50は、任意のタイプのネットワーク及び/又はネットワークアドレス指定可能接続を介して(例えば、ウェブブラウザを使用して)、任意のタイプのコンピュータ化デバイスと通信することができることが理解される。
【0585】
ここで図14を参照すると、クラウドコンピューティング環境50(図13)によって提供される機能抽象化層のセットが示されている。図14において示されているコンポーネント、層、及び機能は、単に例示を意図するものであり、本発明の実施形態がそれらに限定されないことが事前に理解されるべきである。示されているように、以下の層及び対応する機能が提供される:
【0586】
ハードウェア及びソフトウェア層60は、ハードウェア及びソフトウェアコンポーネントを備える。ハードウェアコンポーネントの例としては:メインフレーム61;RISC(縮小命令セットコンピュータ)アーキテクチャベースサーバ62;サーバ63;ブレードサーバ64;記憶デバイス65;及びネットワーク及びネットワーキングコンポーネント66が挙げられる。幾つかの実施形態では、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67及びデータベースソフトウェア68を含む。
【0587】
仮想化層70は、仮想エンティティの次の例:仮想サーバ71;仮想ストレージ72;仮想プライベートネットワークを含む仮想ネットワーク73;仮想アプリケーション及びオペレーティングシステム74;及び仮想クライアント75が提供され得る抽象化層を提供する。
【0588】
1つの例では、管理層80は、以下で説明される機能を提供してよい。リソースプロビジョニング81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソース及び他のリソースの動的な調達を提供する。計測及び価格設定82は、リソースがクラウドコンピューティング環境内で利用されるときのコスト追跡、及び、これらのリソースの消費に対する課金又は請求を提供する。1つの例では、これらのリソースは、アプリケーションソフトウェアライセンスを含んでよい。セキュリティは、クラウド消費者及びタスクに対する識別情報検証、並びに、データ及び他のリソースに対する保護を提供する。ユーザポータル83は、消費者及びシステムアドミニストレータに対してクラウドコンピューティング環境へのアクセスを提供する。サービス水準管理84は、要求されるサービス水準が満たされるように、クラウドコンピューティングリソース割り当て及び管理を提供する。サービス水準合意(SLA)計画及び履行85は、将来の要件がSLAに従って予期されるクラウドコンピューティングリソースの事前の取り決め及び調達を提供する。
【0589】
ワークロード層90は、クラウドコンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロード及び機能の例としては:マッピング及びナビゲーション91;ソフトウェア開発及びライフサイクル管理92;仮想クラスルーム教育配信93;データ解析処理94;トランザクション処理95;及びテンソル及び/又はニューラルネットワーク支援処理96が挙げられる。
【0590】
本発明の態様は、統合のあらゆる可能な技術詳細レベルにおけるシステム、方法、及び/又はコンピュータプログラム製品であってよい。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(又は複数の媒体)を含んでよい。
【0591】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるための命令を保持及び記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、又は前述したものの任意の適した組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、次のもの:ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピディスク、機械的にエンコードされたデバイス、例えば、パンチカード又は命令を記録した溝内の隆起構造、及び前述したものの任意の適した組み合わせを含む。コンピュータ可読記憶媒体は、本明細書において使用される場合、電波若しくは他の自由に伝播する電磁波、導波路又は他の伝送媒体を通して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又はワイヤを通して伝送される電気信号等の一時的信号それ自体とは解釈されるべきではない。
【0592】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピューティング/処理デバイスに、又は、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又は無線ネットワークを介して、外部コンピュータ又は外部記憶デバイスに、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを含んでよい。各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【0593】
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は1つ又は複数のプログラミング言語の任意の組み合わせで記述されたソースコード又はオブジェクトコードのいずれかであってよく、1つ又は複数のプログラミング言語は、Smalltalk(登録商標)、C++等のようなオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語等の手続き型プログラミング言語を含む。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に実行されてもよいし、スタンドアロンソフトウェアパッケージとしてユーザのコンピュータ上で部分的に実行されてもよいし、部分的にユーザのコンピュータ上で、かつ、部分的にリモートコンピュータ上で実行されてもよいし、又はリモートコンピュータ又はサーバ上で完全に実行されてもよい。後者のシナリオでは、リモートコンピュータが、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよいし、又はその接続が、(例えば、インターネットサービスプロバイダを使用してインターネットを介して)外部コンピュータに対して行われてもよい。幾つかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズすることができる。
【0594】
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して説明されている。フローチャート図及び/又はブロック図の各ブロック、及びフローチャート図及び/又はブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装することができることが理解されよう。
【0595】
これらのコンピュータ可読プログラム命令をコンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供して機械を生成することができ、それにより、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図の単数又は複数のブロックで指定された機能/動作を実装する手段を作成するようになる。また、これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体に記憶することができ、当該命令は、コンピュータ、プログラマブルデータ処理装置、及び/又は他のデバイスに対し、特定の方法で機能するよう命令することができ、それにより、命令を記憶したコンピュータ可読記憶媒体は、フローチャート及び/又はブロック図の単数又は複数のブロックで指定された機能/動作の態様を実装する命令を含む製品を含むようになる。
【0596】
また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードして、一連の動作段階をコンピュータ、他のプログラマブル装置又は他のデバイス上で実行させ、コンピュータ実装プロセスを生成することができ、それにより、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行される命令は、フローチャート及び/又はブロック図の単数又は複数のブロックで指定された機能/動作を実装するようになる。
【0597】
図におけるフローチャート及びブロック図は、本発明の様々な実施形態に係るシステム、方法、及びコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、及び動作を示す。これに関して、フローチャート又はブロック図における各ブロックは、指定される論理機能を実装する1つ又は複数の実行可能命令を含む命令のモジュール、セグメント、又は部分を表し得る。幾つかの代替的な実装では、ブロックに記載される機能が、図に記載される順序とは異なる順序で行われ得る。例えば、連続して示されている2つのブロックは、実際には、1つの段階として達成されてもよいし、同時に、実質的に同時に、部分的に又は全体的に時間重複する形式で実行されてもよいし、又はブロックは、関与する機能に依存して逆の順序で実行される場合もあり得る。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図におけるブロックの組み合わせは、指定された機能又は動作を実行するか、又は専用ハードウェア及びコンピュータ命令の組み合わせを実行する専用ハードウェアベースシステムによって実装することができることにも留意されたい。
【0598】
上記に加えて、顧客環境の管理をオファーするサービスプロバイダによって、1つ又は複数の態様が提供され、オファーされ、展開され、管理され、サービス提供される等が行われ得る。例えば、サービスプロバイダは、1つ又は複数の顧客のために1つ又は複数の態様を実行するコンピュータコード及び/又はコンピュータインフラストラクチャを作成、維持、サポートする等を行うことができる。その引き換えとして、サービスプロバイダは、例として、加入及び/又は手数料同意の下で顧客から支払いを受け取り得る。加えて又は代替的に、サービスプロバイダは、1つ又は複数のサードパーティに対する広告コンテンツの販売から、支払いを受け取り得る。
【0599】
1つの態様では、アプリケーションは、1つ又は複数の実施形態を実行するために展開されてよい。1つの例として、アプリケーションの展開は、1つ又は複数の実施形態を実行するために動作可能なコンピュータインフラストラクチャを提供することを含む。
【0600】
更なる態様として、コンピューティングシステムにコンピュータ可読コードを統合することを含むコンピューティングインフラストラクチャが展開されてよく、ここで、コンピューティングシステムと組み合わされたコードは、1つ又は複数の実施形態を実行することが可能である。
【0601】
また更なる態様として、コンピュータ可読コードをコンピュータシステムに統合することを含むコンピューティングインフラストラクチャを統合するためのプロセスが提供されてよい。コンピュータシステムは、コンピュータ可読媒体を含み、ここで、コンピュータ媒体は、1つ又は複数の実施形態を含む。コンピュータシステムと組み合わされたコードは、1つ又は複数の実施形態を実行することが可能である。
【0602】
様々な実施形態が上記で説明されているが、これらは単なる例である。例えば、他のアーキテクチャのコンピューティング環境を、1つ又は複数の態様の組み込み及び/又は使用するのに使用することができる。さらに、異なる命令又は動作が使用されてよい。加えて、異なるタイプのレジスタ及び/又は異なるレジスタが使用されてよい。さらに、他データフォーマット、データレイアウト及び/又はデータサイズがサポートされてよい。1つ又は複数の実施形態では、1つ又は複数の汎用プロセッサ、1つ又は複数の専用プロセッサ又は汎用及び専用プロセッサの組み合わせが使用されてよい。多くの変形例が可能である。
【0603】
様々な態様が本明細書に説明されている。さらに、本発明の態様の趣旨から逸脱することなく多くの変形例が可能である。別段矛盾していない限り、本明細書に説明された各態様又は特徴及びその変形は、他の任意の態様又は特徴と組み合わされてよいことに留意されたい。
【0604】
さらに、他のタイプのコンピューティング環境が利益を得て、使用され得る。一例として、プログラムコードを記憶及び/又は実行するのに適したデータ処理システムが使用可能であり、これは、システムバスを通してメモリ要素に直接又は間接的に結合された少なくとも2つのプロセッサを含む。メモリ要素は、例えば、プログラムコードを実際に実行する間に利用されるローカルメモリ、大容量ストレージ、及び実行中にコードが大容量ストレージから索出されなければならない回数を削減するために、少なくとも一部のプログラムコードの一時的ストレージを提供するキャッシュメモリを含む。
【0605】
入力/出力又はI/Oデバイス(限定されないが、キーボード、ディスプレイ、ポインティングデバイス、DASD、テープ、CD、DVD、サムドライブ、及び他のメモリ媒体等を含む)は、直接又は介在するI/Oコントローラを介してのいずれかで、システムに結合することができる。ネットワークアダプタもまた、データ処理システムが介在するプライベート又はパブリックネットワークを通して他のデータ処理システム又はリモートプリンタ又は記憶デバイスに結合されることを可能するために、システムに結合され得る。モデム、ケーブルモデム及びイーサネット(登録商標)カードは、利用可能なタイプのネットワークアダプタ一部にすぎない。
【0606】
本明細書において使用される術語は、特定の実施形態を説明することのみを目的としており、限定することを意図しない。本明細書において使用される場合、文脈がそうではないことを明確に示さない限り、単数形「a」、「an」、及び「the」は、複数形も含むことを意図する。用語「備える(comprises)」及び/又は「備える(comprising)」は、本明細書において使用される場合、記載された特徴、整数、段階、動作、要素、及び/又はコンポーネントの存在を指定するが、1つ又は複数の他の特徴、整数、段階、動作、要素、コンポーネント及び/又はこれらのグループの存在又は追加を除外するものではないことを更に理解されたい。
【0607】
以下の特許請求の範囲における全てのミーンズ又はステッププラスファンクション要素の対応する構造、材料、行為、及び均等物は、存在する場合、他の特許請求される要素との組み合わせで機能を実行するための任意の構造、材料、又は行為を、具体的に特許請求されるものとして含むものとして意図される。1つ又は複数の実施形態の説明は、例示及び説明の目的のために提示されているが、網羅的であることも又は開示された形式に限定されることも意図するものではない。当業者であれば、多くの修正及び変形例が明らかとなるであろう。様々な態様及び実際の適用を最良に説明するために、及び他の当業者が企図される特定の使用に適するように様々な修正を有する様々な実施形態を理解することを可能にするために、実施形態が選択及び説明された。
図1A
図1B
図2A
図2B
図2C
図2D
図3A
図3B
図3C
図4A
図4B
図5A
図5B
図6A
図6B
図6C
図6D
図6E
図6F
図6G
図7
図8A-8C】
図9
図10A
図10B
図11A
図11B
図11C
図12A
図12B
図13
図14
【手続補正書】
【提出日】2024-01-10
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にするためのコンピュータプログラムであって、コンピュータに:
カレントニューラルネットワークセル活性化を実行する命令を実行する手順
を実行させ、前記実行する手順は
前記リカレントニューラルネットワークセル活性化の複数の演算を実行して、前記リカレントニューラルネットワークセル活性化の結果を提供する手順
含み、前記複数の演算は、前記命令の単一の起動において実行される、コンピュータプログラム。
【請求項2】
前記複数の演算は、1つ又は複数のシグモイド関数及び1つ又は複数の正接関数を含む、請項1に記載のコンピュータプログラム。
【請求項3】
前記複数の演算は、テンソル要素単位加算及びテンソル要素単位乗算演算を含む、請項1に記載のコンピュータプログラム。
【請求項4】
前記複数の演算は、1つ又は複数のシグモイド関数、1つ又は複数の正接関数、1つ又は複数のテンソル要素単位加算演算及び1つ又は複数のテンソル要素単位乗算演算を含む、請項1に記載のコンピュータプログラム。
【請求項5】
前記命令への1つ又は複数の入力は、1つ又は複数の連結テンソルを含む、請項1に記載のコンピュータプログラム。
【請求項6】
前記結果は、出力テンソルであり、前記出力テンソルは、前記命令の別の起動への入力である、請項1に記載のコンピュータプログラム。
【請求項7】
前記リカレントニューラルネットワークセル活性化は、長短期記憶セル活性化を含む、請項1に記載のコンピュータプログラム。
【請求項8】
前記リカレントニューラルネットワークセル活性化は、ゲート付きリカレントユニットセル活性化を含む、請項1に記載のコンピュータプログラム。
【請求項9】
前記リカレントニューラルネットワークセル活性化の前記複数の演算を実行する手順は、アクセラレータによって実行され、中間計算データを生成し、前記コンピュータに、前記アクセラレータに前記中間計算データを記憶する手順をに実行させる、請項1に記載のコンピュータプログラム。
【請求項10】
前記複数の演算を実行する手順は、空間的に近い入力データに対して前記複数の演算を実行する手順を含む、請項1に記載のコンピュータプログラム。
【請求項11】
コンピューティング環境内の処理を容易にするためのコンピュータシステムであって、前記コンピュータシステムは:
メモリ;及び
前記メモリと通信する少なくとも1つのプロセッサ
を備え、ここで、前記コンピュータシステムは、方法を実行するように構成されており、前記方法は:
リカレントニューラルネットワークセル活性化を実行する命令を実行する段階
を有し、前記実行する段階は:
前記リカレントニューラルネットワークセル活性化の複数の演算を実行して、前記リカレントニューラルネットワークセル活性化の結果を提供する段階
を含み、前記複数の演算は、前記命令の単一の起動において実行される、コンピュータシステム。
【請求項12】
前記複数の演算は、1つ又は複数のシグモイド関数、1つ又は複数の正接関数、1つ又は複数のテンソル要素単位加算演算及び1つ又は複数のテンソル要素単位乗算演算を含む、請項11に記載のコンピュータシステム。
【請求項13】
前記命令への1つ又は複数の入力は、1つ又は複数の連結テンソルを含む、請項11に記載のコンピュータシステム。
【請求項14】
前記リカレントニューラルネットワークセル活性化は、長短期記憶セル活性化又はゲート付きリカレントユニットセル活性化を含む、請項11に記載のコンピュータシステム。
【請求項15】
前記リカレントニューラルネットワークセル活性化の前記複数の演算を実行する段階は、アクセラレータによって実行され、中間計算データを生成し、前記方法は、前記アクセラレータに前記中間計算データを記憶する段階を更に有する、請項11に記載のコンピュータシステム。
【請求項16】
コンピューティング環境内の処理を容易にするためのコンピュータ実装方法であって、前記コンピュータ実装方法は:
リカレントニューラルネットワークセル活性化を実行する命令を実行する段階
を備え、前記実行する段階は:
前記リカレントニューラルネットワークセル活性化の複数の演算を実行して、前記リカレントニューラルネットワークセル活性化の結果を提供する段階
を有し、前記複数の演算は、前記命令の単一の起動において実行される、コンピュータ実装方法。
【請求項17】
前記複数の演算は、1つ又は複数のシグモイド関数、1つ又は複数の正接関数、1つ又は複数のテンソル要素単位加算演算及び1つ又は複数のテンソル要素単位乗算演算を含む、請項16に記載のコンピュータ実装方法。
【請求項18】
前記命令への1つ又は複数の入力は、1つ又は複数の連結テンソルを含む、請項16に記載のコンピュータ実装方法。
【請求項19】
前記リカレントニューラルネットワークセル活性化は、長短期記憶セル活性化又はゲート付きリカレントユニットセル活性化を含む、請項16に記載のコンピュータ実装方法。
【請求項20】
前記リカレントニューラルネットワークセル活性化の前記複数の演算を実行する段階は、アクセラレータによって実行され、中間計算データを生成し、前記アクセラレータに前記中間計算データを記憶する段階を更に有する、請項16に記載のコンピュータ実装方法。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0607
【補正方法】変更
【補正の内容】
【0607】
以下の特許請求の範囲における全てのミーンズ又はステッププラスファンクション要素の対応する構造、材料、行為、及び均等物は、存在する場合、他の特許請求される要素との組み合わせで機能を実行するための任意の構造、材料、又は行為を、具体的に特許請求されるものとして含むものとして意図される。1つ又は複数の実施形態の説明は、例示及び説明の目的のために提示されているが、網羅的であることも又は開示された形式に限定されることも意図するものではない。当業者であれば、多くの修正及び変形例が明らかとなるであろう。様々な態様及び実際の適用を最良に説明するために、及び他の当業者が企図される特定の使用に適するように様々な修正を有する様々な実施形態を理解することを可能にするために、実施形態が選択及び説明された
[項目1]
コンピューティング環境内の処理を容易にするためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は:
1つ又は複数のコンピュータ可読記憶媒体、及び方法を実行するために前記1つ又は複数のコンピュータ可読記憶媒体上に集合的に記憶されたプログラム命令
を備え、前記方法は:
リカレントニューラルネットワークセル活性化を実行する命令を実行する段階
を有し、前記実行する段階は:
前記リカレントニューラルネットワークセル活性化の複数の演算を実行して、前記リカレントニューラルネットワークセル活性化の結果を提供する段階
を含み、前記複数の演算は、前記命令の単一の起動において実行される、コンピュータプログラム製品。
[項目2]
前記複数の演算は、1つ又は複数のシグモイド関数及び1つ又は複数の正接関数を含む、直前の項目に記載のコンピュータプログラム製品。
[項目3]
前記複数の演算は、テンソル要素単位加算及びテンソル要素単位乗算演算を含む、前述の項目のいずれか1項に記載のコンピュータプログラム製品。
[項目4]
前記複数の演算は、1つ又は複数のシグモイド関数、1つ又は複数の正接関数、1つ又は複数のテンソル要素単位加算演算及び1つ又は複数のテンソル要素単位乗算演算を含む、前述の項目のいずれか1項に記載のコンピュータプログラム製品。
[項目5]
前記命令への1つ又は複数の入力は、1つ又は複数の連結テンソルを含む、前述の項目のいずれか1項に記載のコンピュータプログラム製品。
[項目6]
前記結果は、出力テンソルであり、前記出力テンソルは、前記命令の別の起動への入力である、前述の項目のいずれか1項に記載のコンピュータプログラム製品。
[項目7]
前記リカレントニューラルネットワークセル活性化は、長短期記憶セル活性化を含む、前述の項目のいずれか1項に記載のコンピュータプログラム製品。
[項目8]
前記リカレントニューラルネットワークセル活性化は、ゲート付きリカレントユニットセル活性化を含む、前述の項目のいずれか1項に記載のコンピュータプログラム製品。
[項目9]
前記リカレントニューラルネットワークセル活性化の前記複数の演算を実行する段階は、アクセラレータによって実行され、中間計算データを生成し、前記方法は、前記アクセラレータに前記中間計算データを記憶する段階を更に有する、前述の項目のいずれか1項に記載のコンピュータプログラム製品。
[項目10]
前記複数の演算を実行する段階は、空間的に近い入力データに対して前記複数の演算を実行する段階を含む、前述の項目のいずれか1項に記載のコンピュータプログラム製品。
[項目11]
コンピューティング環境内の処理を容易にするためのコンピュータシステムであって、前記コンピュータシステムは:
メモリ;及び
前記メモリと通信する少なくとも1つのプロセッサ
を備え、ここで、前記コンピュータシステムは、方法を実行するように構成されており、前記方法は:
リカレントニューラルネットワークセル活性化を実行する命令を実行する段階
を有し、前記実行する段階は:
前記リカレントニューラルネットワークセル活性化の複数の演算を実行して、前記リカレントニューラルネットワークセル活性化の結果を提供する段階
を含み、前記複数の演算は、前記命令の単一の起動において実行される、コンピュータシステム。
[項目12]
前記複数の演算は、1つ又は複数のシグモイド関数、1つ又は複数の正接関数、1つ又は複数のテンソル要素単位加算演算及び1つ又は複数のテンソル要素単位乗算演算を含む、直前の項目に記載のコンピュータシステム。
[項目13]
前記命令への1つ又は複数の入力は、1つ又は複数の連結テンソルを含む、2つの直前の項目のいずれか1項に記載のコンピュータシステム。
[項目14]
前記リカレントニューラルネットワークセル活性化は、長短期記憶セル活性化又はゲート付きリカレントユニットセル活性化を含む、3つの直前の項目のいずれか1項に記載のコンピュータシステム。
[項目15]
前記リカレントニューラルネットワークセル活性化の前記複数の演算を実行する段階は、アクセラレータによって実行され、中間計算データを生成し、前記方法は、前記アクセラレータに前記中間計算データを記憶する段階を更に有する、4つの直前の項目のいずれか1項に記載のコンピュータシステム。
[項目16]
コンピューティング環境内の処理を容易にするためのコンピュータ実装方法であって、前記コンピュータ実装方法は:
リカレントニューラルネットワークセル活性化を実行する命令を実行する段階
を備え、前記実行する段階は:
前記リカレントニューラルネットワークセル活性化の複数の演算を実行して、前記リカレントニューラルネットワークセル活性化の結果を提供する段階
を有し、前記複数の演算は、前記命令の単一の起動において実行される、コンピュータ実装方法。
[項目17]
前記複数の演算は、1つ又は複数のシグモイド関数、1つ又は複数の正接関数、1つ又は複数のテンソル要素単位加算演算及び1つ又は複数のテンソル要素単位乗算演算を含む、直前の項目に記載のコンピュータ実装方法。
[項目18]
前記命令への1つ又は複数の入力は、1つ又は複数の連結テンソルを含む、2つの直前の項目のいずれか1項に記載のコンピュータ実装方法。
[項目19]
前記リカレントニューラルネットワークセル活性化は、長短期記憶セル活性化又はゲート付きリカレントユニットセル活性化を含む、3つの直前の項目のいずれか1項に記載のコンピュータ実装方法。
[項目20]
前記リカレントニューラルネットワークセル活性化の前記複数の演算を実行する段階は、アクセラレータによって実行され、中間計算データを生成し、前記アクセラレータに前記中間計算データを記憶する段階を更に有する、4つの直前の項目のいずれか1項に記載のコンピュータ実装方法。
【国際調査報告】