(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-03
(45)【発行日】2024-06-11
(54)【発明の名称】ハイブリッド・データ-モデル並列処理方法、システム、プログラム
(51)【国際特許分類】
G06N 3/10 20060101AFI20240604BHJP
G06F 9/50 20060101ALI20240604BHJP
【FI】
G06N3/10
G06F9/50 150Z
(21)【出願番号】P 2022520634
(86)(22)【出願日】2020-09-29
(86)【国際出願番号】 IB2020059113
(87)【国際公開番号】W WO2021070006
(87)【国際公開日】2021-04-15
【審査請求日】2023-02-24
(32)【優先日】2019-10-11
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ベンカタラマニ、スワガス
(72)【発明者】
【氏名】スリニバサン、ビジャヤラクシュミ
(72)【発明者】
【氏名】ハイデルベルガー、フィリップ
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2016-115340(JP,A)
【文献】特表2019-500110(JP,A)
【文献】国際公開第2019/165946(WO,A1)
【文献】米国特許出願公開第2019/0114548(US,A1)
【文献】Mohammad Shoeybi et al.,MEGATRON-LM: TRAINING MULTI-BILLION PARAMETER LANGUAGE MODELS USING MODEL PARALLELISM,arXiv [オンライン],version 1,2019年09月17日,頁1~15,[検索日 2024.02.05] インターネット<URL:https://arxiv.org/abs/1909.08053v1>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/10
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
ニューラル・ネットワークを用いたデータ処理方法であって、前記方法が、
ニューラル・ネットワーク層のワークロードをプロセッサのアレイへ分割するためのハイブリッド並列処理手法を選択するステップであって、前記プロセッサのアレイ内の各プロセッサは、データを第1の方向および第2の方向に隣接するプロセッサへ転送することができる、前記選択するステップと、
前記選択されたハイブリッド並列処理手法を用いて前記ニューラル・ネットワーク層に対応するタスクを前記プロセッサのアレイに割り当てるステップであって、前記ハイブリッド並列処理手法は、データを前記プロセッサのアレイ内のプロセッサ間で前記第1の方向に転送するときに第1の並列処理手法を用いるステップと、データを前記プロセッサのアレイ内のプロセッサ間で前記第2の方向に転送するときには第2の、異なる並列処理手法を用いるステップと、
を含む、前記割り当てるステップ
と、
前記プロセッサのアレイは、データを前記プロセッサ間で前記第2の方向に転送するときよりも、データを前記プロセッサ間で前記第1の方向に転送するときにより大きいバンド幅を有しており、
前記ニューラル・ネットワーク層のパフォーマンスを複数の異なるハイブリッド並列処理手法を用いて推定するステップと、
前記ニューラル・ネットワーク層がより特徴が多いかまたは重みが大きいかを前記推定されたパフォーマンスに基づいて判定するステップと、
前記ニューラル・ネットワーク層がより特徴が多いと判定すると、モデル並列処理を前記第1の並列処理手法として、およびデータ並列処理を前記第2の並列処理手法として用いるステップ
を含む、方法。
【請求項2】
前記ニューラル・ネットワーク層がより重みが大きいと判定すると、データ並列処理を前記第1の並列処理手法として、およびモデル並列処理を前記第2の並列処理手法として用いるステップをさらに含む、請求項
1に記載の方法。
【請求項3】
前記プロセッサのアレイは、2Dトーラスを形成し、前記第1の方向と前記第1の方向とは直角を成す、請求項1に記載の方法。
【請求項4】
前記ニューラル・ネットワーク層に対応する前記タスクは、前記ニューラル・ネットワーク層を含むニューラル・ネットワークをトレーニングするために用いられるトレーニング・データを含む、請求項1に記載の方法。
【請求項5】
前記ニューラル・ネットワークにおける複数の層のパフォーマンスを複数の異なるハイブリッド並列処理手法を用いて推定するステップと、
前記複数の異なるハイブリッド並列処理手法のうちの1つを前記複数の層の各々に割り当てるステップと
をさらに含む、請求項
4に記載の方法。
【請求項6】
プロセッサのアレイ、および
ニューラル・ネットワーク・アサイナであって、
ニューラル・ネットワーク層のワークロードをプロセッサのアレイへ分割するためのハイブリッド並列処理手法を選択し、前記プロセッサのアレイ内の各プロセッサは、データを第1の方向および第2の方向に隣接するプロセッサへ転送することができ、
前記選択されたハイブリッド並列処理手法を用いて前記ニューラル・ネットワーク層に対応するタスクを前記プロセッサのアレイに割り当て、前記ハイブリッド並列処理手法は、データを前記プロセッサのアレイ内のプロセッサ間で前記第1の方向に転送するときに第1の並列処理手法を用いるステップと、データを前記プロセッサのアレイ内のプロセッサ間で前記第2の方向に転送するときには第2の、異なる並列処理手法を用いるステップとを含む
ように構成された、前記ニューラル・ネットワーク・アサイナ
と、
前記プロセッサのアレイは、データを前記プロセッサ間で前記第2の方向に転送するときよりも、データを前記プロセッサ間で前記第1の方向に転送するときにより大きいバンド幅を有し、
前記ニューラル・ネットワーク・アサイナは、
前記ニューラル・ネットワーク層のパフォーマンスを複数の異なるハイブリッド並列処理手法を用いて推定して、
前記ニューラル・ネットワーク層がより特徴が多いかまたは重みが大きいかを前記推定されたパフォーマンスに基づいて判定し、
前記ニューラル・ネットワーク層がより特徴が多いと判定すると、モデル並列処理を前記第1の並列処理手法として、およびデータ並列処理を前記第2の並列処理手法として用いるように構成された、前記ニューラル・ネットワーク・アサイナ
を備える、システム。
【請求項7】
前記ニューラル・ネットワーク・アサイナは、
前記ニューラル・ネットワーク層がより重みが大きいと判定すると、データ並列処理を前記第1の並列処理手法として、およびモデル並列処理を前記第2の並列処理手法として用いる
ように構成された、請求項
6に記載のシステム。
【請求項8】
前記プロセッサのアレイは、2Dトーラスを形成し、前記第1の方向と前記第2の方向とは直角を成す、請求項
6に記載のシステム。
【請求項9】
請求項
1~
5の何れか1項に記載の方法を、コンピュータに実行させる、コンピュータ・プログラム。
【請求項10】
請求項
9に記載の前記コンピュータ・プログラムを、コンピュータ可読ストレージ媒体に記憶した、ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラル・ネットワークにおける層をプロセッサのアレイに割り当てるためにハイブリッド並列処理手法を用いることに関する。
【0002】
ニューラル・ネットワーク(NN:neural network)をトレーニングするのは時間のかかるプロセスである。結果として、多くのトレーニング・プラットフォームは、NNの各層のワークロードを分割するためにプロセッサのアレイ(例えば、2Dトーラス)を用いる。ワークロードを複数のプロセッサ間に分割するためのいくつかの知られた手法がある。1つのかかる手法は、ワークロードが層の特徴(または入力)によって分割されるデータ並列処理である。この手法では、各プロセッサは、トレーニング・データの特定のバッチ(またはミニバッチ)についてすべてのタスクを行うことができる。イメージ・プロセッサNNを例として用いると、各プロセッサがそれぞれの画像を処理するために割り当てられてよい。そうするためには、その層に対する重み(またはカーネル)が各々のプロセッサへ送信されなければならない。重みが特徴より大きいNN層(本明細書では重みが大きい層と呼ばれる)において、データ並列手法を用いるのは、各バッチまたはミニバッチ・トレーニングの終わりに重みが同期されるチップ間の重み削減のゆえに非効率的である。これは、コストのかかるチップ間動作であり、しばしば、データ並列処理に伴う主要なペイン・ポイントである。
【0003】
別の手法は、層に対するワークロードが出力の次元に分割されるモデル並列処理である。すなわち、第1のいくつかの特徴が1つのプロセッサで計算されて、次のいくつかの特徴が別のプロセッサで計算されるなどである。そうすると、層のすべての重みを各プロセッサへ送る必要がなくなり、従って、重み削減を回避する。しかしながら、典型的にNNでは、あらゆる出力特徴が入力チャネル全体を必要とする。すなわち、少数の特徴を計算するために、各プロセッサは、層の全入力(例えば、前の層からの出力)を依然として必要とする。モデル並列処理を用いると、入力がすべてのプロセッサに複製される(「アクティベーション」を行うと言われる)。NNにおいて次の層が始まりうる前に、各プロセッサは、あらゆる他のチップによって算出された出力を受信する必要がある-すなわち、すべてのプロセッサのアクティベーションが互いに通信される。従って、モデル並列処理は、重みが大きい層についてデータ並列処理より効率的であるが、特徴が多い層(特徴(または入力)データが重みデータより大きい)については効率が劣る。
【発明の概要】
【0004】
本発明の一実施形態は、ニューラル・ネットワーク層のワークロードをプロセッサのアレイへ分割するためのハイブリッド並列処理手法を選択するステップを含む方法であり、プロセッサのアレイ内の各プロセッサは、データを第1の方向および第2の方向に隣接するプロセッサへ転送することができる。方法は、選択されたハイブリッド並列処理手法を用いてニューラル・ネットワーク層に対応するタスクをプロセッサのアレイに割り当てるステップも含み、ハイブリッド並列処理手法は、データをプロセッサのアレイ内のプロセッサ間で第1の方向に転送するときに第1の並列処理手法を用いるステップと、データをプロセッサのアレイ内のプロセッサ間で第2の方向に転送するときには第2の、異なる並列処理手法を用いるステップとを含む。
【0005】
本発明の別の実施形態は、プロセッサのアレイおよびニューラル・ネットワーク・アサイナを含むシステムである。アサイナは、ニューラル・ネットワーク層のワークロードをプロセッサのアレイへ分割するためのハイブリッド並列処理手法を選択し、プロセッサのアレイ内の各プロセッサは、データを第1の方向および第2の方向に隣接するプロセッサへ転送することができ、選択されたハイブリッド並列処理手法を用いてニューラル・ネットワーク層に対応するタスクをプロセッサのアレイに割り当て、ハイブリッド並列処理手法は、データをプロセッサのアレイ内のプロセッサ間で第1の方向に転送するときに第1の並列処理手法を用いるステップと、データをプロセッサのアレイ内のプロセッサ間で第2の方向に転送するときには第2の、異なる並列処理手法を用いるステップとを含むように構成される。
【0006】
本発明の別の実施形態は、それをもって具現されたコンピュータ可読プログラム・コードを有するコンピュータ可読ストレージ媒体であり、コンピュータ可読プログラム・コードは、オペレーションを行うために1つ以上のコンピュータ・プロセッサによって動作可能である。オペレーションは、ニューラル・ネットワーク層のワークロードをプロセッサのアレイへ分割するためのハイブリッド並列処理手法を選択するステップであって、プロセッサのアレイ内の各プロセッサは、データを第1の方向および第2の方向に隣接するプロセッサへ転送することができる、選択するステップと、選択されたハイブリッド並列処理手法を用いてニューラル・ネットワーク層に対応するタスクをプロセッサのアレイに割り当てるステップであって、ハイブリッド並列処理手法は、データをプロセッサのアレイ内のプロセッサ間で第1の方向に転送するときに第1の並列処理手法を用いるステップと、データをプロセッサのアレイ内のプロセッサ間で第2の方向に転送するときには第2の、異なる並列処理手法を用いるステップとを含む、割り当てるステップとを含む。
【0007】
本発明の実施形態が、次に、添付図面を参照して、例としてのみ、記載される。
【図面の簡単な説明】
【0008】
【
図1】本明細書に記載される一実施形態による、NNトレーニング・システムを示す。
【
図2】本明細書に記載される一実施形態による、NNトレーニング・ハードウェアを示す。
【
図3】本明細書に記載される一実施形態による、NNおける様々な次元を示す。
【
図4】本明細書に記載される一実施形態による、NN層の実行をプロセッサのアレイの中で分割するのに最適な手法を決定するためのフローチャートである。
【
図5】本明細書に記載される一実施形態による、ハイブリッド並列処理手法を選択するためのフローチャートである。
【
図6】本明細書に記載される一実施形態による、xおよびyリングを形成するプロセッサのアレイを示す。
【
図7】本明細書に記載される一実施形態による、NN層について並列処理手法を選択するためのマトリックスを示す。
【
図8】本明細書に記載される一実施形態による、NN層の特性に基づく並列処理手法の順位付けを示す。
【発明を実施するための形態】
【0009】
データ並列処理またはモデル並列処理のいずれかに限定されるのではなく、本明細書における実施形態は、データ並列およびモデル並列処理の混合(ミックス)を使用して、プロセッサのアレイ(例えば、集積回路(IC)またはチップのアレイ)に亘って層のワークロードを分割できるハイブリッド並列処理手法を導入する。一実施形態において、プロセッサのアレイは、第1の(X)方向におけるxリング、および第2の(Y)方向におけるyリングを含む。アレイを構成する場合、1つの方向におけるプロセッサのバンド幅(帯域幅)は、他の方向におけるバンド幅より大きくてよい。すなわち、システム設計者は、X方向のプロセッサ間で通信するための通信リンクを、Y方向よりも意図的に多く割り当てることができる。次に、各層がより特徴が多い(フィーチャーヘビー)かまたは重みが大きい(ウェイトヘビー)かに従ってそれらを特徴付けることができる。この特徴付けによって、NN層のワークロードを単にデータ並列処理手法または単にモデル並列処理手法を用いるのではなく、ハイブリッド並列処理手法を用いてアレイに割り当てることができる。例えば、NN層は、特徴が多いよりも少し重みが大きいかもしれない。モデル並列処理は、重みが大きい層の実行効率がたいので、NN層のワークロードは、勾配縮小を速いX方向リンクに沿って実現するためにデータ並列処理がX方向(バンド幅がより大きい)に用いられて、モデル並列処理は、Y方向(バンド幅はより低いが、モデル並列処理は、重みが大きい層について本質的により効率的である)に用いられる、第1のハイブリッド並列処理手法を用いて分割され得る。逆に、NN層は重みが大きいよりも特徴が多ければ、第2のハイブリッド並列処理手法を用いてワークロードを分割することができる。この場合、X方向にモデル並列化を用い特徴アクティベーションの悪影響を最小限に抑え、Y方向にデータ並列化を用いる(データ並列化は重みが大きい層について本質的により効率的であるため)。
【0010】
ハイブリッド並列処理手法は、1つの方向におけるバンド幅が直交方向におけるバンド幅とは異なるプロセッサのアレイに用いることができるが、バンド幅がアレイの両方向で同じ場合にもハイブリッド並列処理手法を用いることができる。
【0011】
図1は、本明細書に記載される一実施形態による、NNトレーニング・システム100を示す。トレーニング・システム100は、選択された手法145をNNトレーニング・ハードウェア150に割り当てられたNNにおける各層のワークロードを分割するために用いるコンピューティング・システム105を含む。本明細書における実施形態は、NNをトレーニングするときに層のワークロードを分割することを記載するが、それらは、そのようなものに限定される。NNをトレーニングするとき以外の他の状況において、ワークロードを以下に考察される手法を用いて分割するのが有利なことがある。
【0012】
コンピューティング・システム105は、いくつもの処理コアをもついくつもの処理要素を表すプロセッサ110と、揮発性メモリ要素、不揮発性メモリ要素、およびそれらの組み合わせを含むことができるメモリ115とを含む。図示されるように、メモリ115は、コンピューティング・システム105において実行する2つのソフトウェア・アプリケーション:NNアサイナ120およびパフォーマンス・エスティメータ125を含む。NNアサイナ120は、NNにおける層のワークロードをNNトレーニング・ハードウェア150に割り当てるために用いられる選択された手法145を決定する。一実施形態において、NNアサイナ120は、パフォーマンス・エスティメータ125がNNにおける各層について発生させる情報に応答して手法145を選択する。すなわち、NNアサイナ120は、NNにおける様々な層について異なる手法145を選択してよい。
【0013】
パフォーマンス・エスティメータ125は、層のパフォーマンスを様々な並列処理手法を用いて推定するためにNN層をモデリング(またはシミュレーション)する。この例では、パフォーマンス・エスティメータ125は、層を評価して、データ並列処理手法130、モデル並列処理手法135、および1つ以上のハイブリッド並列処理手法140を用いたときのそれらのパフォーマンスを決定する。一実施形態において、ハイブリッド並列処理手法140は、タスクのワークロードをNNトレーニング・ハードウェア150中の様々なハードウェア要素間で分割するために組み合わせて用いられる、2つの別の並列処理手法を混合したいずれかの手法である。すなわち、ハイブリッド並列処理手法140は、データ並列処理手法130とモデル並列処理手法135とを組み合わせた1つ以上の手法とすることができる。しかしながら、ハイブリッド並列処理手法140は、手法130、135の組み合わせには限定されず、層のワークロードをトレーニング・ハードウェア150の中で分割するために用いられる他のタイプの並列処理手法の組み合わせを含むこともできるであろう。
【0014】
NNトレーニング・ハードウェア150は、各々が複数のコア160を含む複数のプロセッサ155を含む。コア160は、複数のPE170を用いて形成された複数の処理要素(PE:processing element)アレイ(例えば、シストリック・アレイ)を含む。以下に考察されるように、選択された手法145は、層のワークロードをプロセッサ155間で分割する。例えば、データ並列処理手法130が選択された手法145であれば、ワークロードがミニバッチによって分割されて、各ミニバッチが異なるプロセッサ155に割り当てられる(例えば、画像処理NNをトレーニングするときに用いられる画像が各プロセッサ155へ送られる)。モデル並列処理手法135が選択された手法145であれば、各プロセッサ155には出力データ中の特徴のサブセットが割り当てられる(サブセットは1つ以上である)。プロセッサ155は、次に、それらの割り当てられたタスクを完了するために並列に動作することができる。例えば、各プロセッサ155は、画像を同時に処理することができ、または各プロセッサ155は、その割り当てられた特徴のサブセットを同時に処理することができる。
【0015】
図2は、本明細書に記載される一実施形態による、NNトレーニング・ハードウェアを示す。
図2は、水平(X方向)および垂直(Y方向)の両方で近接(隣接)するプロセッサ155に相互接続されたプロセッサ155を含む2Dアレイ200を示す。そのようにして、プロセッサは、処理されたデータを共有できる。このデータの共有は、ハイブリッド並列処理手法を考察するときに以下により詳細に記載される。
【0016】
各プロセッサ155は、複数のコア160を含み、これらのコア160は、それらがNNトレーニング・ハードウェア中の外部メモリ205(例えば、RAM)と通信することを許容するオンチップ相互接続202を用いて通信可能に結合される。次には、各コア160が複数のPEアレイ165を含み、これらのPEアレイ165は、イン・チップ・メモリを形成するいくつものキャッシュ(例えば、レベル1および2キャッシュ)を表すスクラッチパッド・メモリ210に結合される。
【0017】
各PEアレイ165は、アレイまたはグリッド(例えば、シストリック・アレイ)を形成するために相互接続された複数のPE170を含む。PEアレイ165の入力および出力は、先入れ先出し(FIFO:first-in first-out)バッファ215を含む。各PE170は、レジストリ・ファイル225に結合された積和(MAC:multiply-accumulate)ユニット220を含む。
【0018】
NN層のワークロードを
図2に示される様々なハードウェア・コンポーネントに分割することができる。しかしながら、以下の手法は、NN層のワークロードをプロセッサ155間で分割することに焦点を合わせる。各プロセッサ155に割り当てられたワークロードをコア160、PEアレイ165、およびPE170の間でさらに分割するために、次に、他の手法を用いることができる。すなわち、以下の実施形態は、ワークロードをプロセッサ155間で分配するために最適な並列処理手法を選択することを考察するが、追加の並列処理手法を用いて、ワークロードをプロセッサ155中のハードウェア要素間でさらに分割することができる。
【0019】
図3は、本明細書に記載される一実施形態による、NNにおける様々な次元を示す。すなわち、
図3は、NNにおける畳み込み層を区分するために用いることができる様々な次元を示す。畳み込み層のワークロードは、3つのデータ構造:入力(Inp)、出力(Out)、および重み(カーネル)を入力することができる。Ninは、NNにおける前の1つまたは複数の層から受信されたデータ中の特徴(またはフェイス)の数である。すなわち、入力は、Ninの深さを有する。各特徴またはフェイスは、NiおよびNjによって表現される次元(例えば、Ni×Njの特徴サイズ)を有する。畳み込みを行うときに、特徴中の各画素は、カーネルのうちの1つを用いて処理される(例えば、ドット積)。NNは、Nout数のカーネルを有し、各カーネルがKiの高さ、Kjの幅、およびNinの深さを有する。
【0020】
畳み込みは、カーネルのうちの1つと、入力中の特徴のうちの1つにおける画素とのドット積を行うことによって機能する。これは、出力に格納されたスカラー値(例えば、画素)を出力する。結果として、出力の深さは、カーネルの数と同じNout(例えば、出力における特徴の数)である。入力の特徴またはフェイス中の他の画素についてドット積を行うときにスライドを用いてカーネルを移動させると、出力の特徴(またはフェイス)を結果としてもたらす。1のストライドを仮定すると、出力の特徴またはフェイスは、入力の特徴と同じ幅および高さ(NiおよびNj)を有する。
【0021】
畳み込みを行うと、畳み込み層のワークロードを分割するための4つの次元:Nin,Nij,KijおよびNoutを結果としてもたらす。しかし、NNをトレーニングすることは、ミニバッチ(mb:minibatch)も含み、ミニバッチでは、複数の出力結果を発生させるためにすべてが同じ重み(カーネル)を用いる異なる入力トレーニング・データ(例えば、異なるトレーニング画像)を用いてNNをトレーニングすることができる。従って、mbは、畳み込み層のワークロードをN{Inp、Out、Nij、Kij、mb}として表すために他の4つの次元とともに用いることができる5番目の次元である。
【0022】
他のタイプの層を異なる次元を用いて表現することができる。例えば、NNにおける全結合層についてマトリックス乗算を行うときに、NijおよびKij値は1である。いずれにしても、異なるタイプ(および数)の次元を有し得る異なるタイプの層を分けるために本明細書における実施形態を用いることができる。
【0023】
図4は、本明細書に記載される一実施形態による、NN層の実行をプロセッサのアレイの中で分割するのに最適な手法を決定するための方法400のフローチャートである。ブロック405において、NNアサイナは、NNにおける層を選択する。一実施形態において、方法400は、NNにおける各層を通して反復して、最適な並列処手法を選択するために用いられる。
【0024】
ブロック410において、NNアサイナは、層の実行をプロセッサの2Dアレイ上に分割するのに最適な手法を決定する。すなわち、NNアサイナは、
図1に示される手法(データ並列処理手法130、モデル並列処理手法135、またはハイブリッド並列処理手法140)のうちのどれが特定の層について最適な手法であるかを決定してよい。
【0025】
一実施形態において、プロセッサの2Dアレイは、プロセッサが相互接続された2Dトーラスである。例えば、プロセッサは、2つの異なる方向(例えば、x/yまたは北/南)に近接(隣接)するプロセッサに通信可能に結合され得る。一実施形態において、プロセッサ間通信のためのバンド幅は、方向によって異なってよい。例えば、2Dアレイは、X方向におけるプロセッサ間の通信がY方向におけるプロセッサ間の通信より高いバンド幅を有するように設計され得る。ワークロードを2Dアレイ内のプロセッサ間で分割するときに用いるのに最適な手法を選択することについての詳細が以下の
図5に記載される。
【0026】
ブロック415において、NNアサイナは、さらなる層がNNに残っているかを判定する。すなわち、NNアサイナは、それがNNにおける各層について最適な並列処理手法を選択したかを判定する。選択していなければ、方法400はブロック405へ戻るが、選択していれば、方法はブロック420へ進む。
【0027】
ブロック420において、NNをトレーニングするときに、NNアサイナは、最適な手法に従ってタスクをプロセッサの2Dアレイに割り当てる。データ並列処理またはモデル並列処理が選択された手法であれば、プロセッサは、これらの手法に従ってデータを送信することによってデータを両方向で交換する。すなわち、データ並列処理が選択されれば、プロセッサは、重み/カーネルを2DアレイのXおよびY両方向(勾配方向とも呼ばれる)に交換する。モデル並列処理が選択されれば、プロセッサは、入力特徴を両方向に沿って交換する。
【0028】
しかしながら、ハイブリッド並列処理手法が選択されれば、プロセッサは、データを1つの方向ではデータ並列処理に従って、および他の方向ではモデル並列処理に従って交換する。それに依って、大きい方のバンド幅をもつ2Dアレイの方向に実装された並列処理手法は、少ない方のバンド幅を有する他の方向に実装された手法と比較して改善されたパフォーマンスを有する。このトレードオフの詳細が以下に考察される。
【0029】
図5は、本明細書に記載される一実施形態による、ハイブリッド並列処理手法を選択するための方法500のフローチャートである。方法500は、NNにおける層について最適な並列処理手法を選択するために方法400においてブロック410を行うためのいくつかの手法を記載する。明確にするために、方法500は、
図6と並行して記載される。
【0030】
ブロック505において、パフォーマンス・エスティメータは、複数の並列処理手法を用いたときの層のパフォーマンスを推定する。例えば、各層で、パフォーマンス・エスティメータは、その層がNNトレーニング・ハードウェア上で異なる並列処理手法、例えば、データ並列処理、モデル並列処理、またはハイブリッド並列処理の各々を用いてどのように実行するであろうかを推定するためにモデルまたはシミュレーションを用いることができる。
【0031】
一実施形態において、パフォーマンス・エスティメータは、各並列処理手法を層ごとにモデリングまたはシミュレーションするのではなく、推定される手法の数を限るためにヒューリスティックスを用いてよい。例えば、パフォーマンス・エスティメータは、どの並列処理手法が用いられるべきかを迅速に決定するために用いることできる重み対特徴比を発生させてよい。予め定義された閾値によれば、層が特徴データより著しく多い重みデータを有するならば、パフォーマンス・エスティメータは、さらなるモデリングまたはシミュレーションを行うことなく、モデル並列処理が最適な並列処理手法であると仮定してよい。逆に、層が重みデータより著しく多い特徴データを有することを重み対特徴比が示すならば、データ並列処理が最適な並列処理手法と見做される。従って、パフォーマンス・エスティメータは、各並列処理手法を層ごとにモデリングまたはテストする必要がない。
【0032】
上述のように、プロセッサの2Dアレイは、少なくとも1つの次元が別の次元より大きいプロセッサ間通信のためのバンド幅を有する複数の次元を含むことができる。
図6は、本明細書に記載される一実施形態による、2Dアレイ600においてxおよびyリングを形成するプロセッサのアレイを示す。xリング610は、プロセッサ155がX方向に通信するために用いる通信リンクを示すのに対して、yリング605は、プロセッサ155がY方向に通信するために用いる通信リンクを示す。
【0033】
一実施形態において、2Dアレイ600は、xおよびyリングを形成する通信リンクのための限られたリソースを含んでよい。両方のリングのために同じ数のリソースを割り当てる代わりに、2Dアレイ600は、xおよびyリングに対して異なるバンド幅を有する。すなわち、2Dアレイ600は、プロセッサ間通信のためのバンド幅がデータ転送の方向によって異なる非対称アレイ(または非対称トーラス)である。例えば、各プロセッサ間リンクは、複数の物理的接続を含んでよい。yリング605より多くのバンド幅をxリング610に割り当てるために、2Dアレイは、Y方向におけるプロセッサ間リンクよりX方向における各プロセッサ間リンクに割り当てられたより多くの物理的接続を有してよい。結果として、プロセッサ155は、データをY方向に(例えば、上下に近接もしくは隣接するプロセッサへ)転送するよりも迅速にX方向に(例えば、左右に近接、もしくは隣接するプロセッサへ)転送することが可能である。そうすると、本明細書に記載されるハイブリッド並列処理手法が活用されて、この手法では、データをプロセッサ155間で(大きい方のバンド幅を利用するために)X方向に転送するときに効率が劣る並列処理手法を用いることができるのに対して、データをプロセッサ155間でY方向に転送するときにはより能率的な並列処理手法が用いられる。しかしながら、いくつかのNN層については、これが正しくないことがあり、より効率的な並列処理手法を大きい方のバンド幅をもつ方向に用いるのが最適である。
【0034】
図2および6は、プロセッサの2Dアレイを示すが、実施形態は、そのようなものに限定されない。NNがプロセッサのN次元アレイ(Nが3より大きい)を用いて実装されるならば、次元(または方向)のうちの少なくとも1つが少なくとも1つの他の次元より大きいバンド幅を有するように設計することができる。そのようにして、異なる次元が異なる並列処理手法を用いるハイブリッド並列処理モデルを選択するために、本明細書に記載される実施形態を用いることができる。
【0035】
方法500に戻ると、ブロック510において、NNアサイナは、ブロック505において発生させたパフォーマンス推定を用いて、データまたはモデル並列処理が層について最適な並列処理手法であるかを判定する。最適であれば、方法500は、NNアサイナがデータまたはモデル並列処理手法を層に割り当てるブロック515へ進む。すなわち、タスクを分割してNNトレーニング・ハードウェアを構成するときに、データは、それがデータ並列処理手法またはモデル並列処理手法のいずれにせよ、同じ並列処理手法を用いて2Dアレイの両方向に転送される。そのようにして、たとえ方向のうちの1つが他の方向より大きいバンド幅を有しても、両方向に同じ並列処理モデルが用いられる。
【0036】
最適でなければ、方法500は、NNアサイナが、現在評価されている層は重みが大きいよりも特徴が多いかを、パフォーマンス推定を用いて、判定するブロック520へ進む。上述のように、特徴が重みより大きいNN層(例えば、重い層)においては、データ並列処理手法がモデル並列処理手法より効率的である。すなわち、いくつかのNNでは、あらゆる出力特徴が入力チャネル全体を必要とする。すなわち、少数の特徴を計算するために、各プロセッサは、層の全入力(例えば、前の層からの出力)を依然として必要とする。モデル並列処理を用いると、入力がすべてのプロセッサ中に複製されるか、またはアクティベーションがすべてのプロセッサ上で行われる。従って、層が特徴の多い層であれば、方法500は、NNアサイナが、2Dアレイにおいて最も多くのバンド幅をもつ方向に用いるためにモデル並列処理手法を選択するブロック535へ進む。そのように、これらのアクティベーションが大きい方のバンド幅をもつプロセッサ間リンク上で送信されるので、NNの効率的なオペレーションに対するアクティベーションの悪影響は少ない。ブロック540において、NNアサイナは、2Dアレイにおいて最少量のバンド幅をもつ方向に用いるためにデータ並列処理手法を選択する。
【0037】
対照的に、層がより重みが大きい層であれば、方法は、ブロック520から、NNアサイナが、2Dアレイにおいて最も多くのバンド幅をもつ方向に用いるためにデータ並列処理手法を選択するブロック525へ、そしてNNアサイナが、最も少ないバンド幅をもつ方向に用いるためにモデル並列処理手法を選択するブロック530へ進む。データ並列処理が大きい方のバンド幅をもつリンク上で用いられるため、勾配縮小の悪影響は低減される。このように、方法500は、2つの異なるハイブリッド並列処理手法を用いることを示す。1方のハイブリッド手法は、ブロック535および540であり、これらのブロックでは、モデル並列処理がプロセッサのアレイの高い方のバンド幅の次元に用いられて、データ並列処理が低い方のバンド幅の次元に用いられ、他方は、ブロック525および530であり、これらのブロックでは、データ並列処理がプロセッサのアレイの高い方のバンド幅の次元に用いられて、モデル並列処理が低い方のバンド幅の次元に用いられる。
【0038】
しかしながら、上述のように、特徴が多い層のためにデータ並列処理を大きい方のバンド幅を有する方向に用いるか、または重みが大きい層のためにモデル並列処理を大きい方のバンド幅を有する方向に用いる方がより効率的なことがある。例えば、長・短期記憶(LSTM:long short-term memory)は、重みが大きいが、モデル並列処理が大きい方のバンド幅をもつ方向に用いられて、データ並列処理が小さい方のバンド幅をもつ方向に用いられるハイブリッド並列処理を好む。この場合、勾配縮小は、非常にまれであり(すべての時間ステップが完了した後にのみ生じる)、パフォーマンスに強い影響を与えることなく遅い方の方向リンク上に発生しうる。
【0039】
方法500は、バンド幅が異なる非対称アレイの文脈で考察されたが、XおよびY方向におけるバンド幅が同じプロセッサの対称アレイにも方法500を用いることができる。例えば、NNハードウェアがテストすべきミニバッチより多くのプロセッサを含むことがある。その場合、NNアサイナは、各プロセッサにバッチ(例えば、画像)を割り当てることができるので、データ並列処理のみを用いるのは非効率的である。その場合、ハイブリッド並列処理モデルを用いると、効率を改善できる。別の例では、NNアサイナがすべてのプロセッサに分配するのに十分な特徴を有さないことがある(例えば、Noutがアレイ内のプロセッサの数より少ない)。従って、モデル並列処理のみを用いるのは非効率的かもしれないが、ハイブリッド並列処理モデルを用いて次元を分割すると、NNトレーニング・ハードウェアのより効率的な使用を結果としてもたらすことがある。これらの例では、対称アレイにおける方向が同じバンド幅を有するので、どの並列処理がどの方向に用いられるかは重要でない。
【0040】
図7は、本明細書に記載される一実施形態による、NN層について並列処理手法を選択するためのマトリックス700を示す。マトリックス700は、4つの並列処理手法およびそれら相互の関係を示す。x軸が2DアレイのX方向に用いられる並列処理手法を示すのに対して、y軸は、2DアレイのY方向に用いられる並列処理手法を示す。
【0041】
『All-Data』並列処理手法は、ワークロードを分割するときにデータ並列処理のみが用いられる。そのようにして、2DアレイのX方向およびY方向における並列処理がデータ並列処理を用いて行われる。
【0042】
『DataXModelY』並列処理手法は、データ並列処理が2DアレイのX方向に用いられるが、モデル並列処理が2DアレイのY方向に用いられる第1のハイブリッド並列処理手法である。
【0043】
『ModelXDataY』並列処理手法は、モデル並列処理が2DアレイのX方向に用いられるが、データ並列処理が2DアレイのY方向に用いられる第2のハイブリッド並列処理手法である。
【0044】
『All-Model』並列処理手法は、ワークロードを分割するときにモデル並列処理のみが用いられる。そのようにして、2DアレイのX方向およびY方向における並列処理がモデル並列処理を用いて行われる。
【0045】
図8は、本明細書に記載される一実施形態による、NN層の特性に基づく並列処理手法の順位付けを示す。ハイブリッド並列処理手法は、データおよびモデル並列処理手法の利点と欠点との間のトレードオフを表す。主として特徴が多い層であるNN層について、All-Data並列処理手法を2Dアレイの両方向に用いると、NNトレーニング・ハードウェアの最も効率的な使用につながるであろう。逆に、主として重みが大きい層であるNN層について、All-Model並列処理手法を2Dアレイの両方向に用いると、NNトレーニング・ハードウェアの最も効率的な使用につながるであろう。
【0046】
ハイブリッド並列処理手法(すなわち、DataXModelYおよびModelXDataY)を用いると、主として特徴が多くもまたは重みが大きくもない層についてはAll-dataまたはAll-Model手法と比較して効率が改善することがある。すなわち、これら両極端の間にある層については、ハイブリッド並列処理手法を用いる方が効率的なことがある。すなわち、パフォーマンス・エスティメータが、重みが大きいよりも特徴が多い方に近いと判定する層について、ModelXDataY並列処理は、(2DアレイのX方向がY方向より多くのバンド幅を有すると仮定すると)改善された効率を結果としてもたらすことがある。すなわち、モデル並列処理がX方向に行われるのに対して、データ並列処理は、Y方向に行われる。従って、これは、モデル並列処理が、バンド幅が最も大きいX方向に行われるのに対して、本質的により効率的なデータ並列処理は、バンド幅がより少ないY方向に用いられるので、NNのトレーニング・ハードウェアがモデル並列処理のより遅い入力アクティベーションの悪影響を軽減することを可能にする。例えば、小さい特徴サイズをもつ畳み込み層(例えば、ResNetおよびGoogLeNetにおける畳み込み層の最終セット)は、わずかに特徴が多く、アクティベーション/誤差ローテーションを最適化するためにModelXDataY並列処理を好む。
【0047】
特徴が多いよりも重みが大きい方に近いNN層について、DataXModelYハイブリッド並列処理は、データ並列処理が重み/勾配縮小の悪影響を最小限に抑える大きい方のバンド幅をもつ方向(すなわち、X方向)に行われるのに対して、本質的により効率的なモデル処理は、低い方のバンド幅をもつ方向に行われるので、改善された効率を結果としてもたらすことがある。例えば、小さい全結合層(例えば、VGG/ResNetの最後の層)は、適度に重みが大きく、DataXModelYを好む、なぜなら、それらが速いX方向リンクに沿って勾配縮小を実現するからである。
【0048】
本発明の様々な実施形態の記載が説明のために提示されたが、それらが網羅的であることも、または開示される実施形態に限定されることも意図されない。記載される実施形態の範囲および趣旨から逸脱することなく、多くの変更および変形が当業者には明らかであろう。本明細書に用いられる用語法は、実施形態の原理、実用用途、または市場に見られる技術を超える技術的改良を最もよく説明するため、あるいは本明細書に開示される実施形態を他の当業者が理解できるようにするために選ばれた。
【0049】
上記では、本開示に提示された実施形態が参照される。しかしながら、本開示の範囲は、具体的に記載された実施形態には限定されない。代わりに、異なる実施形態に関連するか否かに係わらず、企図された実施形態を実装し、実行するために、以下の特徴および要素の任意の組み合わせが企図される。さらに、本明細書に開示された実施形態は、他の可能な解決法に対する、または先行技術に対する優位性を達成するかもしれないが、特定の利点が所与の実施形態によって達成されるか否かに係わらず、本開示の範囲を限定しない。従って、先に提示された態様、特徴、実施形態および利点は、例示的であるに過ぎず、請求項(単数または複数)に明示的に列挙される場合を除いて、添付の請求項の要素または限定であるとは見做されない。同様に、「本発明」への言及は、本明細書に開示されるいずれかの発明の主題の一般化と解釈されるべきではなく、請求項(単数または複数)に明示的に列挙される場合を除いて、添付の請求項の要素または限定であると見做されてはならない。
【0050】
本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいは、本明細書ではすべてが全般的に「回路」、「モジュール」または「システム」と呼ばれてよいソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形をとってよい。
【0051】
本発明は、システム、方法、もしくはコンピュータ・プログラム製品またはそれらの組み合わせであってよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有する(1つまたは複数の)コンピュータ可読ストレージ媒体を含んでよい。
【0052】
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持して格納できる有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、以下には限定されないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または上記のものの任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、リード・オンリ・メモリ(ROM:read-only memory)、消去可能プログラマブル・リード・オンリ・メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM:portable compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フレキシブルディスク、パンチ・カードまたはその上に記録された命令を有する溝中の隆起構造のような機械的に符号化されたデバイス、および上記のものの任意の適切な組み合わせを含む。コンピュータ可読ストレージ媒体は、本明細書では、それ自体が一時的な信号、例えば、電波または他の自由に伝搬する電磁波、導波路もしくは他の送信媒体を通して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを通して送信される電気信号であると解釈されるべきではない。
【0053】
本明細書に記載されるコンピュータ可読プログラム命令をコンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスへ、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはそれらの組み合わせを介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードできる。ネットワークは、銅送信ケーブル、光送信ファイバ、無線送信、ルータ、ファイヤウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバまたはそれらの組み合わせを備えてよい。各コンピューティング/処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信して、それらのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0054】
本発明のオペレーションを実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk(登録商標)、C++または同様のもののようなオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語のような、従来の手続き型プログラミング言語を含めて、1つ以上のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で実行してよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)またはワイド・エリア・ネットワーク(WAN:wide area network)を含めて、任意のタイプのネットワークを通してユーザのコンピュータへ接続されてもよく、あるいは外部コンピュータへの接続が(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)行われてもよい。いくつかの実施形態では、例えば、プログラマブル・ロジック回路素子、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む、電子回路素子が、本実施形態の態様を行うために、コンピュータ可読プログラム命令の状態情報を利用して電子回路素子をパーソナライズすることによってコンピュータ可読プログラム命令を実行してよい。
【0055】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート説明図および/またはブロック図を参照して本明細書に記載される。フローチャート説明図および/またはブロック図の各ブロック、およびフローチャート説明図および/またはブロック図中のブロックの組み合わせをコンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【0056】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する、それらの命令が、フローチャートおよび/またはブロック図の1つもしくは複数のブロックで指定された機能/動作を実装するための手段を生み出すような、マシンを作り出すために汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてよい。これらのコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体に格納されてもよく、これらの命令は、その中に格納された命令を有するコンピュータ可読ストレージ媒体が、フローチャートおよび/またはブロック図の1つもしくは複数のブロックで指定された機能/動作の態様を実装する命令を含んだ製造品を備えるような、特定の仕方で機能するようにコンピュータ、プログラマブル・データ処理装置、および/または他のデバイスに命令できる。
【0057】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートおよび/またはブロック図の1つもしくは複数のブロックで指定された機能/動作を実装するような、コンピュータ実装プロセスを作り出すために一連の動作ステップがコンピュータ、他のプログラマブル装置、または他のデバイス上で行われるようにするためにコンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上へロードされてもよい。
【0058】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、およびオペレーションを示す。この点において、フローチャートまたはブロック図中の各ブロックは、指定されたロジック機能(単数または複数)を実装するための1つ以上の実行可能な命令を備える、モジュール、セグメント、または命令の部分を表してよい。いくつかの代わりの実装では、ブロック中に記された機能が図中に記された順序以外で生じてもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、または関与する機能によっては、ブロックがときには逆の順序で実行されてもよい。ブロック図および/またはフローチャート説明図の各ブロック、およびブロック図および/またはフローチャート説明図中のブロックの組み合わせを、指定された機能または動作を行い、あるいは専用ハードウェアとコンピュータ命令との組み合わせを実行する専用ハードウェア・ベース・システムによって実装できることにも気付くであろう。
【0059】
本発明の実施形態は、クラウド・コンピューティング・インフラストラクチャを通してユーザに提供されてよい。クラウド・コンピューティングは、一般に、ネットワークを通じたサービスとしてのスケーラブルなコンピューティング・リソースの提供を指す。より形式的には、クラウド・コンピューティングは、コンピューティング・リソースとその基礎をなす技術的アーキテクチャ(例えば、サーバ、ストレージ、ネットワーク)との間の抽象化を提供するコンピューティング能力として定義されてよく、最小限の管理努力またはサービス・プロバイダ・インタラクションによって迅速に提供されて、リリースされることが可能なコンフィギュラブルなコンピューティング・リソースの共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にする。従って、クラウド・コンピューティングは、コンピューティング・リソースを提供するために用いられる基礎をなす物理的システム(またはそれらのシステムのロケーション)にかかわらず、ユーザが「クラウド」における仮想コンピューティング・リソース(例えば、ストレージ、データ、アプリケーション、さらには完全に仮想化されたコンピューティング・システム)にアクセスすることを許容する。
【0060】
典型的に、クラウド・コンピューティング・リソースは、実際に用いられたコンピューティング・リソース(例えば、ユーザによって消費されたストレージ空間の量、またはユーザによってインスタンス化された、仮想化システムの数)に対してのみユーザが課金される、従量課金ベースでユーザに提供される。ユーザは、クラウドにあるいずれのリソースにもいつでも、インターネットのどこからでもアクセスすることができる。本発明の文脈では、ユーザは、アプリケーション(例えば、NNアサイナもしくはパフォーマンス・エスティメータ)またはクラウドにおいて利用可能な関連データにアクセスしてよい。例えば、NNアサイナもしくはパフォーマンス・エスティメータがクラウドにおけるコンピューティング・システム上で実行して、NNにおける各層について最適な並列処理手法を選択することができるであろう。かかる場合、NNアサイナもしくはパフォーマンス・エスティメータは、最適な手法を選択して、それらの選択をクラウドにおけるストレージ・ロケーションに格納できるであろう。その場合、ユーザは、クラウドに接続されたネットワーク(例えば、インターネット)にアタッチされたいずれかのコンピューティング・システムからこの情報にアクセスすることが可能である。
【0061】
上記は、本発明の実施形態を対象とするが、その基本的な範囲から逸脱することなく、本発明の他のさらなる実施形態が考案されてよく、その範囲は、添付の請求項によって決定される。