(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024095236
(43)【公開日】2024-07-10
(54)【発明の名称】機械学習プログラム、機械学習方法、及び、情報処理装置
(51)【国際特許分類】
G06N 3/082 20230101AFI20240703BHJP
【FI】
G06N3/082
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022212372
(22)【出願日】2022-12-28
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】坂井 靖文
(57)【要約】
【課題】アテンション構造を含むニューラルネットワークの軽量化を実現する。
【解決手段】機械学習プログラムは、アテンション構造160を備えるニューラルネットワーク180の訓練済機械学習モデルにおける、前記アテンション構造の入力テンソルに対する演算処理結果としてQueryを出力するQ層161及びKeyを出力するK層162の各々の要素について、第1削減割合に基づく要素の削減後のQ層からのテンソルQTに含まれる1以上の要素と、第2削減割合に基づく要素の削減後のK層からのテンソルKTに含まれる1以上の要素とのうち、同一のインデックスを持つ要素どうしのみを前記テンソルQT及びKTに残すように、前記テンソルQT及びKTのうちの少なくとも一方に含まれる要素を削除する、処理をコンピュータに実行させる。
【選択図】
図19
【特許請求の範囲】
【請求項1】
アテンション構造を備えるニューラルネットワークの訓練済機械学習モデルにおける、前記アテンション構造の入力テンソルに対する演算処理結果としてQueryを出力するQ層及びKeyを出力するK層の各々の要素について、
第1削減割合に基づく要素の削減後のQ層からのテンソルQTに含まれる1以上の要素と、第2削減割合に基づく要素の削減後のK層からのテンソルKTに含まれる1以上の要素と、のうち、同一のインデックスを持つ要素どうしのみを前記テンソルQT及び前記テンソルKTに残すように、前記テンソルQT及び前記テンソルKTのうちの少なくとも一方に含まれる要素を削除する、
処理をコンピュータに実行させる、機械学習プログラム。
【請求項2】
前記削除する処理は、
前記テンソルQTに含まれるゼロ以外の要素の第1インデックスと、前記テンソルKTに含まれるゼロ以外の要素の第2インデックスとの論理積を算出し、
前記論理積に含まれないインデックスの要素を、前記テンソルQT又は前記テンソルKTから削除する、処理を含む、
請求項1に記載の機械学習プログラム。
【請求項3】
前記アテンション構造がマルチヘッドアテンション構造であって、前記Q層と、前記K層と、前記アテンション構造において前記入力テンソルに対する演算処理結果としてValueを出力するV層と、の各々が複数のヘッドのそれぞれのテンソルを出力する場合、前記V層の後段に、テンソルの1以上の要素のパディングを行なうパディング層を挿入し、
第3削減割合に基づく要素の削減後のV層からのテンソルVTのヘッド間で要素数が同一の数となるように、前記パディング層によるパディングを行なう、
処理を前記コンピュータに実行させる、請求項1又は請求項2に記載の機械学習プログラム。
【請求項4】
前記テンソルQTと、前記テンソルKTと、前記テンソルVTと、のそれぞれのヘッドのうち、全ての要素がゼロであるヘッドと同一のヘッドインデックスを持つヘッドを、前記テンソルQT、前記テンソルKT及び前記テンソルVTから削除する、
処理を前記コンピュータに実行させる、請求項3に記載の機械学習プログラム。
【請求項5】
前記アテンション構造は、前記要素の削除及び前記ヘッドの削除後のテンソルQTと前記要素の削除及び前記ヘッドの削除後のテンソルKTとの行列積を正規化して得た行列積と、前記ヘッドの削除及び前記パディング後のテンソルVTと、に基づく行列積を出力する、
請求項4に記載の機械学習プログラム。
【請求項6】
前記ニューラルネットワークは、前記アテンション構造から出力される前記行列積の要素を結合した結果を出力する、
請求項5に記載の機械学習プログラム。
【請求項7】
アテンション構造を備えるニューラルネットワークの訓練済機械学習モデルにおける、前記アテンション構造の入力テンソルに対する演算処理結果としてQueryを出力するQ層及びKeyを出力するK層の各々の要素について、
第1削減割合に基づく要素の削減後のQ層からのテンソルQTに含まれる1以上の要素と、第2削減割合に基づく要素の削減後のK層からのテンソルKTに含まれる1以上の要素とのうち、同一のインデックスを持つ要素どうしのみを前記テンソルQT及び前記テンソルKTに残すように、前記テンソルQT及び前記テンソルKTのうちの少なくとも一方に含まれる要素を削除する、
処理をコンピュータが実行する、機械学習方法。
【請求項8】
アテンション構造を備えるニューラルネットワークの訓練済機械学習モデルにおける、前記アテンション構造の入力テンソルに対する演算処理結果としてQueryを出力するQ層及びKeyを出力するK層の各々の要素について、
第1削減割合に基づく要素の削減後のQ層からのテンソルQTに含まれる1以上の要素と、第2削減割合に基づく要素の削減後のK層からのテンソルKTに含まれる1以上の要素とのうち、同一のインデックスを持つ要素どうしのみを前記テンソルQT及び前記テンソルKTに残すように、前記テンソルQT及び前記テンソルKTのうちの少なくとも一方に含まれる要素を削除する、
制御部を備える、情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習プログラム、機械学習方法、及び、情報処理装置に関する。
【背景技術】
【0002】
画像処理等のAI(Artificial Intelligence)タスクに利用されるNN(Neural Network)は、その構成を複雑にすることで高い性能(例えば高い推論精度)を実現できる傾向にある。一方で、NNの構成の複雑化により、計算機によるNNの実行における演算回数、及び、当該計算機がNNの実行に用いるメモリサイズが増加し得る。
【0003】
当該演算回数の削減、換言すれば演算時間の短縮(高速化)、並びに、当該メモリサイズの削減、換言すればNNの機械学習モデルの軽量化を図るための手法として、「プルーニング」(枝刈り;Pruning)が知られている。
【0004】
プルーニングは、NNのエッジ(重み)、ノード、及び、チャネルの少なくともいずれか1種類の要素を削減する(刈り取る)ことで、機械学習モデルのデータサイズを小さくし、演算時間及び通信時間を削減する手法である。
【0005】
過剰なプルーニングは、NNの推論精度の劣化を引き起こす。このため、推論精度を維持したまま、又は、推論精度の低下量を所定の水準に留めたまま、NNのプルーニングを行なうことが重要である。
【0006】
例えば、プルーニングにおいて、NNの推論精度に大きな影響を与えないレイヤ(層)を選択する手法が知られている。当該手法は、例えば、畳込み層に続くバッチノーマライゼーション(BN;Batch Normalization)層に用いられるパラメータに基づき、プルーニングを行なう畳込み層のチャネルを決定する手法である。
【0007】
また、マルチヘッドアテンション(Multi-Head Attention:MHA)構造等のアテンション構造を備えるNNが知られている。アテンション構造は、入力部に3つの全結合層を含む。3つの全結合層は、それぞれ、Q(Query)、K(Key)及びV(Value)のテンソルを出力する層である。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】米国特許出願公開第2022/0036194号明細書
【発明の概要】
【発明が解決しようとする課題】
【0009】
NNの推論精度に大きな影響を与えないレイヤを選択する手法は、BN層が接続された畳込み層に対して適用されるが、それ以外のレイヤ、例えば、BN層が接続されていない畳込み層、及び、全結合層等への適用は想定されていない。
【0010】
例えば、NNの推論精度に大きな影響を与えないレイヤを選択する手法を、上述した複数のレイヤに適用できるようにした場合において、当該NNがアテンション構造を含む場合を考える。この場合、当該手法によりプルーニングを行なうと、アテンション構造の入力部における3つの全結合層は、いずれもプルーニングされず、機械学習モデル全体のプルーニング率は低下するため、プルーニングによる機械学習モデルのデータサイズの圧縮(軽量化)効果が低減する。
【0011】
1つの側面では、本発明は、アテンション構造を備えるニューラルネットワークの軽量化を実現させることを目的の1つとする。
【課題を解決するための手段】
【0012】
1つの側面では、機械学習プログラムは、コンピュータに、以下の処理を実行させてよい。前記処理は、アテンション構造を備えるニューラルネットワークの訓練済機械学習モデルにおける、前記アテンション構造の入力テンソルに対する演算処理結果としてQueryを出力するQ層及びKeyを出力するK層の各々の要素について、第1削減割合に基づく要素の削減後のQ層からのテンソルQTに含まれる1以上の要素と、第2削減割合に基づく要素の削減後のK層からのテンソルKTに含まれる1以上の要素とのうち、同一のインデックスを持つ要素どうしのみを前記テンソルQT及び前記テンソルKTに残すように、前記テンソルQT及び前記テンソルKTのうちの少なくとも一方に含まれる要素を削除してよい。
【発明の効果】
【0013】
1つの側面では、本発明は、アテンション構造を備えるニューラルネットワークの軽量化を実現できる。
【図面の簡単な説明】
【0014】
【
図1】プルーニングを行なう畳込み層のチャネルを決定する処理の一例を説明するための図である。
【
図3】NNのレイヤにおける
図1及び
図2の手法の適用可否の一例を示す図である。
【
図4】一実施形態に係るサーバの機能構成例を示すブロック図である。
【
図5】精度保証できるプルーニング率の算出例を示す図である。
【
図6】プルーニング前後のモデルの精度の算出例を示す図である。
【
図10】プルーニングするチャネルの決定手法の一例を説明する図である。
【
図11】プルーニング誤差の算出例を説明する図である。
【
図12】プルーニングするノードの決定手法の一例を説明する図である。
【
図13】プルーニング誤差の算出例を説明する図である。
【
図14】プルーニングする重みの決定手法の一例を説明する図である。
【
図15】プルーニング誤差の算出例を説明する図である。
【
図16】アテンション構造を備えるNNの一例を示す図である。
【
図18】アテンション構造の詳細な一例を示す図である。
【
図19】アテンション構造を含むNNへの一実施形態に係る手法の適用例を説明するための図である。
【
図20】モデルに対する要素削除、ゼロパディング及びヘッド削除の処理の一例を説明するための図である。
【
図21】一実施形態に係る手法の適用有無に応じた、NNのプルーニング前後の精度、及び、データサイズの圧縮率の一例を示す図である。
【
図22】一実施形態に係るサーバによる処理の動作例を説明するためのフローチャートである。
【
図23】一実施形態に係る手法における信頼半径の更新に応じたプルーニング誤差比較結果の一例を示す図である。
【
図24】第1変形例に係るサーバの機能構成例を示すブロック図である。
【
図25】信頼半径を増加させる場合の信頼半径更新処理の一例を説明する図である。
【
図26】信頼半径を減少させる場合の信頼半径更新処理の一例を説明する図である。
【
図27】第1変形例に係るサーバによる処理の動作例を説明するためのフローチャートである。
【
図28】第2変形例に係るサーバの機能構成例を示すブロック図である。
【
図29】信頼半径の初期値の設定例を説明する図である。
【
図30】第2変形例に係るサーバによる処理の動作例を説明するためのフローチャートである。
【
図31】コンピュータのハードウェア(HW)構成例を示すブロック図である。
【発明を実施するための形態】
【0015】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形又は技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【0016】
〔1〕一実施形態
図1は、プルーニングを行なう畳込み層のチャネルを決定する処理の一例を説明するための図であり、
図2は、L1正則化学習の一例を示す図である。
図1では、NNの推論精度に大きな影響を与えないレイヤを選択する手法として、計算機が、畳込み層に続くBN層100で利用されるスケーリング係数γを用いて、プルーニングを行なう畳込み層のチャネルを決定する手法を説明する。なお、
図1のチャネル111~113に示すグラフは、出力テンソルの分布を表す。
【0017】
図1に示すように、計算機は、畳込み層からBN層100に入力される複数のチャネル111(#1~#n;nは2以上の整数)のそれぞれに対して、正規化処理(normalization)101を実行する。例えば、計算機は、正規化処理101において、下記式(1)に従い、チャネル111ごとに平均値μ及び分散σ
2を算出することで、平均“0”、分散“1”の正規化された分布を表す複数のチャネル112(#1~#n)を取得する。下記式(1)において、z
in及びz
midは、それぞれ、チャネル111及び112を示し、μ
B及びσ
B
2は、それぞれ、現在のミニバッチBにおける平均値及び分散を示す。
【数1】
【0018】
また、計算機は、複数のチャネル112(#1~#n)に対してスケーリング(scaling)102を実行する。例えば、計算機は、スケーリング102において、複数のチャネル112のそれぞれに対して、下記式(2)に従い、スケーリング係数γを乗算し、乗算結果にバイアスβを加算することで、パラメータγ及びβによりスケールされた分布を表す複数のチャネル113(#1~#n)を出力する。下記式(2)において、z
outはチャネル113を示す。なお、パラメータγ及びβは、機械学習により最適化されてよい。
【数2】
【0019】
ここで、γが小さい場合におけるスケーリング102の結果となるチャネル113(
図1の例ではチャネル#n)の出力は、ほぼ無くなる。これは、当該チャネルをプルーニングにより削除しても、NNの推論精度に大きな影響を与えないことを意味する。そこで、計算機は、小さい(例えば“0”になる)γを探索することで、チャネル単位でのプルーニングの対象となるチャネルを判定する。
【0020】
例えば、計算機は、L1正則化学習をγに適用することで、小さい(小さくなる)γを探索する。L1正則化学習は、NNが出力で計算する損失関数に、L1の正則化項を追加して機械学習を行なうことで、学習対象のパラメータを「疎」にできることで知られている機械学習手法である。
【0021】
図2に例示するように、計算機は、或るベクトル121に対して、損失関数122を用いたL1正則化学習を行なうことで、L1正則化が行なわれたベクトル123を取得する。損失関数122は、下記式(3)に示すように、クロスエントロピー等の元の損失関数(第1項)と、L1ノルム(Σg(γ)=Σ|γ|)を使用するL1正則化項(第2項)とを加算した関数Lであってよい。
【数3】
【0022】
L1正則化学習により、ベクトル123の各パラメータは、ベクトル121の各パラメータがゼロになるか、非ゼロになるかのいずれかを示すパラメータとなる(2分化される)。このようなL1正則化学習を利用することで、計算機は、γがゼロになる(ゼロに近くなる)チャネルをプルーニングの対象のチャネルとして特定することができる。
【0023】
図1及び
図2に示すL1正則化学習を利用したプルーニング対象の特定は、BN層が接続された畳込み層に対して適用されるが、それ以外のレイヤ、例えば、BN層が接続されていない畳込み層、及び、全結合層等への適用は想定されていない。
【0024】
図3は、NN130の層(レイヤ)131~139における
図1及び
図2の手法の適用可否の一例を示す図である。
図3に示すように、畳込み層131及び133並びにBN層132及び134は、
図1及び
図2に示すL1正則化学習を適用可能な層であり、畳込み層135~137並びに全結合層138及び139は、
図1及び
図2に示すL1正則化学習を適用不可能な層である。
【0025】
そこで、一実施形態では、レイヤの種類に依らずに、レイヤごとのプルーニング率を決定することで、NNの軽量化を実現するための手法を説明する。
【0026】
〔1-1〕一実施形態に係るサーバの機能構成例
図4は、一実施形態に係るサーバ1の機能構成例を示すブロック図である。サーバ1は、プルーニング率を出力する計算機、コンピュータ又は情報処理装置の一例である。
図4に示すように、サーバ1は、例示的に、メモリ部11、取得部12、機械学習部13、プルーニング率算出部(以下、単に「算出部」と表記する)14、及び、出力部15を備えてよい。取得部12、機械学習部13、算出部14、及び、出力部15は、制御部16の一例である。
【0027】
メモリ部11は、記憶領域の一例であり、サーバ1が利用する種々のデータを記憶する。
図4に示すように、メモリ部11は、例示的に、未学習モデル11a、機械学習用データ11b、機械学習済モデル11c、プルーニング率11d、及び、軽量化済モデル11eを記憶可能であってよい。
【0028】
取得部12は、未学習モデル11a及び機械学習用データ11bを取得し、メモリ部11に格納する。例えば、取得部12は、未学習モデル11a及び機械学習用データ11bの一方又は双方を、サーバ1で生成してもよいし、図示しないネットワークを介してサーバ1の外部のコンピュータから受信してもよい。
【0029】
未学習モデル11aは、未学習パラメータを含むNNの機械学習前のモデルであってよい。当該NNは、種々のレイヤを含んでよく、例えばDNN(Deep NN)であってもよい。当該NNは、例えば、BN層が接続されていない畳込み層、又は、全結合層を含んでもよいし、BN層が接続された畳込み層を含んでもよく、一例として、
図3に例示するNN130であってもよい。
【0030】
機械学習用データ11bは、例えば、未学習モデル11aの機械学習(訓練)に用いる訓練用のデータセットであってよい。一例として、画像処理を実現するためのNNの機械学習を行なう場合、機械学習用データ11bには、例えば、画像データ等の訓練データと、当該訓練データに対する正解ラベルとを含む教師データのペアが複数含まれてよい。
【0031】
機械学習部13は、機械学習フェーズにおいて、機械学習用データ11bに基づいて、未学習モデル11aを機械学習する機械学習処理を実行する。例えば、機械学習部13は、未学習モデル11aの機械学習処理により、機械学習済モデル11cを生成してよい。機械学習済モデル11cは、機械学習済パラメータを含むNNモデルであってよい。
【0032】
なお、機械学習済モデル11cは、未学習モデル11aに含まれるパラメータの更新により得られてよく、例えば、機械学習処理を通じて、未学習モデル11aから機械学習済モデル11cに変化した結果のモデルと捉えられてもよい。機械学習処理は、既知の種々の手法により実現されてよい。
【0033】
算出部14は、機械学習済モデル11cに対するプルーニング率算出処理の実行によりプルーニング率11dを算出し、メモリ部11に格納する。
【0034】
例えば、算出部14は、プルーニング率候補のうちの1つを選択するための閾値を層ごとに算出する閾値算出部14aと、プルーニング率候補によりプルーニングしたモデルの推論精度に基づき、採用するプルーニング率11dを決定する決定部14bとを備えてよい。
【0035】
出力部15は、算出部14により生成(取得)されたプルーニング率11dに基づく出力データを出力する。出力データとしては、例えば、プルーニング率11dそのもの、及び、軽量化済モデル11eの一方又は双方を含んでよい。
【0036】
軽量化済モデル11eは、機械学習済モデル11cに対してプルーニング率11dに基づくプルーニングの実施により得られる、機械学習済モデル11cを軽量化したモデルのデータである。例えば、出力部15は、機械学習部13と協働して、プルーニング率11dを適用して機械学習済モデル11cのプルーニング及び再学習を実行することで軽量化済モデル11eを取得し、メモリ部11に格納してもよい。なお、軽量化済モデル11eは、例えば、機械学習済モデル11cとは別に生成されてもよいし、プルーニング及び再学習を通じて、機械学習済モデル11cを更新したデータであってもよい。
【0037】
出力部15は、出力データの出力において、例えば、出力データを図示しない他のコンピュータに送信(提供)してもよいし、出力データをメモリ部11に蓄積してサーバ1又は他のコンピュータから取得可能に管理してもよい。或いは、出力部15は、出力データの出力において、出力データを示す情報をサーバ1等の出力装置に画面出力してもよく、その他の種々の態様により出力データを出力してよい。
【0038】
〔1-2〕プルーニング率算出処理の一例
次に、サーバ1の算出部14によるプルーニング率算出処理の一例を説明する。以下の説明では、プルーニング率の算出対象が、レイヤのパラメータの一例である重み行列Wであるものとする。
【0039】
算出部14は、プルーニングにより発生する層ごとのテンソルの誤差を利用することで、層の種類に依らずに、プルーニング率を決定する。一例として、算出部14は、下記の(i)~(iii)の手順により、プルーニング率を算出してよい。
【0040】
(i)算出部14(閾値算出部14a)は、精度保証できるプルーニング率を、層ごとに決定(算出)する。
【0041】
なお、「精度保証」とは、例えば、機械学習済モデル11cに対するプルーニングにより得られる軽量化済モデル11eを利用した推論の精度(推論精度)が所定の基準を超えることを保証することである。
【0042】
図5は、精度保証できるプルーニング率の算出例を示す図である。
図5に例示するように、閾値算出部14aは、(i)において、プルーニング対象の機械学習済モデル11cに含まれる各層の重み行列Wに適用するプルーニング率を、複数の層のそれぞれの重み行列Wごとに決定する。なお、
図5では、層131~133に着目して説明するが、これに限定されるものではなく、
図3に例示する層131~139のいずれにおいても
図5の説明が適用されてよい。
【0043】
ここで、プルーニング率は、層(レイヤ)の要素を削減する割合(削減割合)の一例であり、機械学習済モデル11cにおけるプルーニング対象を「疎」にする割合を示し、
図2の例では、ベクトル123において“0”にした箇所の数を意味する。
【0044】
図5に例示するように、閾値算出部14aは、層131の重み行列W
1(層132に接続される重み行列W
1)、及び、層132の重み行列W
2(層133に接続される重み行列W
2)のそれぞれについて、複数のプルーニング率候補の中から1つのプルーニング率を選択する。プルーニング率候補は、削減割合候補の一例であり、例えば、0%~100%の間の2つ以上の割合であってよく、複数の層で共通であってもよいし、層ごとに異なる割合であってもよく、これらの組み合わせであってもよい。
図5の例では、プルーニング率候補は、0%、20%、40%、60%であるものとする。
【0045】
閾値算出部14aは、例えば、プルーニング率候補のそれぞれによりプルーニングを行なった場合のプルーニング前後のテンソルの誤差を求め、閾値T
Wよりも誤差が小さいプルーニング率候補のうちの最大のプルーニング率候補を決定する。
図5の例では、閾値算出部14aは、W
1について、閾値T
w1よりも誤差が小さい最大のプルーニング率候補を40%と決定する(矢印141参照)。また、閾値算出部14aは、W
2について、閾値T
w2よりも誤差が小さい最大のプルーニング率候補を20%と決定する(矢印142参照)。
【0046】
閾値Twは、プルーニング前後のテンソルの誤差の閾値であり、精度保証できるプルーニング率の上限である。例えば、閾値算出部14aは、プルーニング対象をプルーニングした場合の損失関数を近似式、例えば1次テイラー展開することで、層ごとに閾値Twを算出してよい。閾値Twの算出手法の詳細は後述する。
【0047】
なお、(i)で算出されるプルーニング率は、(ii)及び(iii)の処理との関係で、「仮算出」されるプルーニング率と位置付けられてよい。
【0048】
以上のように、閾値算出部14aは、複数の層を含むNNの機械学習済モデル11cにおける、複数の層の各々の要素の削減前後のテンソルの誤差の閾値Tを算出する。また、閾値算出部14aは、複数の閾値Tと、複数の層の各々において複数の削減割合候補の各々により要素を削減する場合の削減前後のテンソルの誤差とに基づき、複数の層の各々に適用する削減割合候補を選択する。
【0049】
(ii)算出部14(決定部14b)は、(i)で決定したプルーニング率を用いてプルーニング(軽量化)した機械学習モデルの精度と、プルーニング未実行の機械学習モデルの精度とに基づき、プルーニング率を決定する。
【0050】
例えば、決定部14bは、近似式(1次テイラー展開)による誤差を考慮し、(i)で決定した各層のプルーニング率でプルーニングしたモデルの精度Accpと精度マージンAccmとの和と、プルーニングしないモデルの精度Accwoとを比較する。精度マージンAccmは、推論精度の低下を許容できるマージンであり、設計者により設定されてよい。なお、マージンは“0”であってもよく、この場合、決定部14bは、精度Accpと、プルーニングしないモデルの精度Accwoとを比較すればよい。
【0051】
図6は、プルーニング前後のモデルの精度の算出例を示す図である。例えば、決定部14bは、全ての層(W
1、W
2、・・・)に対してプルーニングしないモデル(機械学習済モデル11c)の精度Acc
woを算出する(矢印143参照)。プルーニングしないモデルは、各層のプルーニング率を0%としてプルーニングしたモデルと位置付けられてもよい。また、決定部14bは、各層を(i)で算出したプルーニング率(W
1=40%、W
2=20%、・・・)でプルーニングしたモデルの精度Acc
pを算出する(矢印144参照)。
【0052】
決定部14bは、精度の和Accp+Accmが精度Accwo以上である場合に、(i)で決定したプルーニング率を採用すると決定する。例えば、決定部14bは、(i)で決定したプルーニング率をプルーニング率11dとしてメモリ部11に保存する。
【0053】
一方、決定部14bは、精度の和Accp+Accmが精度Accwo未満である場合、(i)で決定したプルーニング率を破棄すると決定する。例えば、決定部14bは、(i)で決定したプルーニング率を破棄して、直前の(ii)で決定した(或いは初期の)プルーニング率11dを採用すると決定する。
【0054】
(iii)算出部14(決定部14b)は、(i)及び(ii)を複数回に亘って繰り返し適用することで、精度保証できる最大のプルーニング率を探索する。
【0055】
図7は、プルーニング率の探索例を示す図である。
図7の例では、算出部14が3つの層(131~133)のプルーニング率を3回に亘って実施する場合を示す。例えば、或るレイヤをプルーニング率20%でプルーニングするということは、当該レイヤの要素(例えばチャネル)が“4”個である場合、“4”の20%である“1”個の要素をプルーニング(削減)することを意味する。
【0056】
図7に例示するように、1回目(符号145参照)の探索では、(i)において、閾値算出部14aが、閾値T
wを算出し、閾値T
wに基づき、層131~133のプルーニング率を“0%,0%,0%”(初期値)から“40%,20%,40%”に決定した場合を想定する。例えば、決定部14bは、(ii)において、推論精度の比較でAcc
p+Acc
m<Acc
woと判定すると、(i)で決定されたプルーニング率を破棄し、決定前の“0%,0%,0%”を採用する。
【0057】
2回目(符号146参照)の探索では、(i)において、閾値算出部14aが、閾値Twを算出(更新)し、更新した閾値Twに基づき、層131~133のプルーニング率を“0%,0%,0%”から“20%,20%,40%”に決定した場合を想定する。例えば、決定部14bは、(ii)において、推論精度の比較でAccp+Accm≧Accwoと判定すると、“20%,20%,40%”を採用し、プルーニング率11dとしてメモリ部11に格納する。
【0058】
3回目(符号147参照)の探索では、(i)において、閾値算出部14aが、閾値Twを算出(更新)し、更新した閾値Twに基づき、層131~133のプルーニング率を“20%,20%,40%”から“20%,40%,40%”に決定した場合を想定する。例えば、決定部14bは、(ii)において、推論精度の比較でAccp+Accm≧Accwoと判定すると、“20%,40%,40%”を採用し、プルーニング率11dとしてメモリ部11に格納(更新)する。
【0059】
決定部14bは、例えば予め設定された回数等の所定の回数に亘って、プルーニング率の探索を行なってよい。
【0060】
以上のように、決定部14bは、機械学習済モデル11cによる推論精度と、機械学習済モデル11cにおける複数の層の各々の要素を、適用する削減割合候補に応じて削減して得られる削減済モデルの機械学習後の推論精度とに基づき、複数の層の各々に適用する削減割合を決定する。
【0061】
次に、上述したプルーニング率算出処理の具体例を説明する。
図8は、閾値の導出手法の一例を説明する図であり、
図9は、閾値の上限と閾値との一例を示す図である。
【0062】
閾値算出部14aは、プルーニングした場合の損失関数を1次テイラー展開することで、精度保証できるプルーニング率の閾値を層ごとに算出する。例えば、プルーニングにより発生する層ごとのテンソルの誤差をΔw、プルーニングした場合の損失関数をL(w+Δw)、プルーニング対象のモデルの損失関数をL(w)、プルーニングしない場合の損失関数(L
ideal)をL
wo+L
mとすると、精度保証できるプルーニング率の閾値は、下記式(4)により算出される。なお、L
woはプルーニングしない場合のモデルの損失関数であり、L
mは設計者が設定する損失関数のマージンである。
【数4】
【0063】
上記式(4)の左辺(
図8の破線枠参照)は、プルーニングした場合の損失関数L(w+Δw)のテイラー展開であり、プルーニング対象のレイヤごとの重み勾配“∂L(W)/∂w”を含む。レイヤごとの勾配は、逆伝播により算出されてよい。また、上記式(4)の右辺(
図8の一点鎖線枠参照)は、プルーニングをしても損失関数は理想値(例えばFP32の損失関数)よりも小さくなる、という制約である。
【0064】
このように、閾値算出部14aは、複数の層の各々の要素を削減する際の機械学習済モデル11cの損失関数の値と、複数の層の各々の重み勾配とに基づき閾値Tを算出する。
【0065】
上記式(4)を整理すると、下記式(5)に示すように、プルーニングしたときの損失関数が理想損失関数よりも小さくなるという制約を満たす、「プルーニングの誤差」の条件を導出できる。換言すれば、精度(損失関数)を保証する、プルーニングによる誤差の上限(閾値)を導出できる。閾値算出部14aは、下記式(5)の右辺を閾値Tに設定する。
【数5】
【0066】
図9に例示するように、閾値算出部14aは、レイヤごとに設定される閾値Tと、プルーニングによるL1ノルムの誤差とを比較する。そして、閾値算出部14aは、閾値Tよりも誤差が小さくなるプルーニング率候補のうちの最大の値のプルーニング率候補(
図9の例では40%)を、(i)の結果としてのプルーニング率に決定する。
【0067】
一例として、閾値算出部14aは、下記式(6)に従い、プルーニング対象のレイヤごとに、プルーニング誤差(左辺)が閾値(右辺)以下となるプルーニング率を決定してよい。下記式(6)において、“||ΔW||
1”はプルーニング対象となった重みのL1ノルムであり、“n”はプルーニング対象のレイヤの重みの要素数である。
【数6】
【0068】
上記式(6)に示すように、閾値Tは、近似により導出したパラメータとなる。近似誤差によるプルーニング率の決定の誤りを防ぐために、閾値Tには、上限が設定されてよい(
図9参照)。例えば、閾値算出部14aは、信頼領域法に基づき、「信頼半径」により閾値Tの大きさを制限してよい。信頼半径は、閾値上限の一例である。一例として、閾値算出部14aは、全層の閾値TのL2ノルムが、信頼半径以下となるように閾値Tをスケーリングしてよい。
図9の例において、T
hは各層の閾値Tによるベクトルを示し、“||T
h||
2”は、全層の閾値TのL2ノルムを示す。
【0069】
例えば、閾値算出部14aは、決定部14bによる(ii)の処理での精度の比較結果に応じて、プルーニング率に加えて、信頼半径を(例えば定数倍等により)更新してもよい。なお、信頼半径の初期値は、例えば設計者等により設定されてよい。
【0070】
一例として、閾値算出部14aは、精度の和Accp+Accmが精度Accwo以上である場合に、信頼半径を定数K(“K>1.0”)倍し、精度の和Accp+Accmが精度Accwo未満である場合、信頼半径を定数k(“0<k<1.0”)倍してよい。
【0071】
〔1-3〕プルーニング対象の種類に応じた説明
次に、プルーニング対象の種類に応じた、プルーニングの手法及びプルーニング誤差の算出手法の例を説明する。プルーニング対象の種類としては、例えば、チャネルプルーニング、ノードプルーニング、及び、重みプルーニング等が挙げられる。算出部14は、プルーニング対象の種類に応じて、プルーニング対象に対応する重みを用いて、プルーニング対象及びプルーニング誤差を決定してよい。
【0072】
〔1-3-1〕チャネルプルーニングの例
図10は、プルーニングするチャネルの決定手法の一例を説明する図であり、
図11は、プルーニング誤差の算出例を説明する図である。
【0073】
なお、
図10及び
図11では、畳込み演算の処理フローを示している。また、添字の付いたH及びWは、入力データ、カーネル、出力データのサイズを示し、添字の付いたChは、入力データ、カーネル、出力データのチャネル数を示す。以下、プルーニング対象の他の種類に係る説明においても同様である。
【0074】
(プルーニングするチャネルの決定手法の一例)
プルーニング対象の種類がチャネルである場合、算出部14は、出力データのチャネルに対応するカーネル単位でL1ノルムを算出(計算)する。例えば、算出部14は、
図10の“pruning前”に示すように、プルーニング前のCh
1個全てのカーネルについて、それぞれのL1ノルムを算出する。これにより、Ch
1個分のL1ノルムが算出される。
【0075】
次いで、算出部14は、
図10の“pruning後”に例示するように、算出したL1ノルムの小さい順に、設定されたプルーニング率に応じて、対応する出力データのチャネルをプルーニングする。
【0076】
(プルーニング誤差の算出例)
図11に例示するように、算出部14は、プルーニング対象のカーネルのL1ノルムを算出する。プルーニング対象のカーネルのL1ノルムは、プルーニング前の全カーネルのL1ノルムから、プルーニング後の全カーネルのL1ノルムを減じたもの、すなわち、プルーニング前後のL1ノルムの差である。
【0077】
算出部14は、算出したL1ノルムを、プルーニング前の全カーネルの要素数で割ることで、プルーニング誤差を取得してよい。
【0078】
〔1-3-2〕ノードプルーニングの例
図12は、プルーニングするノードの決定手法の一例を説明する図であり、
図13は、プルーニング誤差の算出例を説明する図である。
【0079】
(プルーニングするノードの決定手法の一例)
プルーニング対象の種類がノードである場合、算出部14は、出力ノードに接続される重み単位で、L1ノルムを算出する。
図12の“pruning前”の例では、算出部14は、実線、破線、一点鎖線の各単位でL1ノルムを算出する。
【0080】
次いで、算出部14は、
図12の“pruning後”に例示するように、算出したL1ノルムの小さい順に、設定されたプルーニング率に応じて、対応する出力ノードをプルーニングする。例えば、算出部14は、L1ノルムが小さかった重み群に対応する出力ノードをプルーニング対象のノードに決定する。
【0081】
(プルーニング誤差の算出例)
図13に例示するように、算出部14は、プルーニング対象の重み群のL1ノルムを算出する。プルーニング対象の重み群のL1ノルムは、プルーニング前の全重みのL1ノルムから、プルーニング後の全重みのL1ノルムを減じたものである。
【0082】
算出部14は、算出したL1ノルムを、プルーニング前の全重みの要素数で割ることで、プルーニング誤差を取得してよい。
図13の“pruning後”の例では、算出部14は、二点鎖線の重み群のL1ノルムを算出し、プルーニング前の全重みの要素数(=“6”;線の本数)でL1ノルムを除算する。
【0083】
〔1-3-3〕重みプルーニングの例
図14は、プルーニングする重みの決定手法の一例を説明する図であり、
図15は、プルーニング誤差の算出例を説明する図である。
【0084】
(プルーニングする重みの決定手法の一例)
プルーニング対象の種類が重みである場合、算出部14は、全ての重みについて、要素単位でL1ノルムを算出する。
図14の“pruning前”の例では、重みの要素数=“6”であるため、算出部14は、“6”個のL1ノルムを算出する。
【0085】
次いで、算出部14は、
図14の“pruning後”に例示するように、算出したL1ノルムの小さい順に、設定されたプルーニング率に応じて、対応する重みをプルーニングする。例えば、算出部14は、L1ノルムが小さかった重みをプルーニング対象の重みに決定する。
【0086】
(プルーニング誤差の算出例)
図15に例示するように、算出部14は、プルーニング対象の重みのL1ノルムを算出する。プルーニング対象の重みのL1ノルムは、プルーニング前の全重みのL1ノルムから、プルーニング後の全重みのL1ノルムを減じたものである。
【0087】
算出部14は、算出したL1ノルムを、プルーニング前の全重みの要素数で割ることで、プルーニング誤差を取得してよい。
図15の“pruning後”の例では、算出部14は、破線の重みのL1ノルムを算出し、プルーニング前の全重みの要素数(=“6”;線の本数)でL1ノルムを除算する。
【0088】
〔1-4〕アテンション構造を備えるNNのプルーニング処理の説明
図16は、アテンション構造160を備えるNN150の一例を示す図である。
図16には、NN150がTransformerと呼ばれるNNである場合を例に挙げる。なお、NN150は、Transformerに限定されるものではなく、アテンション構造160を備える種々のNNであってもよい。
【0089】
NN150は、Embedding層151a及び151b、Positional Encoding152a及び152b、エンコーダ150a、デコーダ150b、全結合層(
図16では「Linear」と表記)155、並びに、Softmax156を備える。
【0090】
エンコーダ150aは、Add&Norm153a及び153b、Feed Forward154a、並びに、MHA160aを備える。デコーダ150bは、Add&Norm153c、153d及び153e、Feed Forward154b、並びに、MMHA(Masked MHA)160b及びMHA160cを備える。Transformerは既知のNNであるため、NN150における各層の説明は省略する。
【0091】
図16に示すNN150において、MHA160a、MMHA160b、MHA160cの各々は、アテンション構造160の一例である。
【0092】
図17は、アテンション構造160の一例を示す図である。アテンション構造160には、トークン及び特徴量の2つの次元を有する入力テンソルが入力される。なお、特徴量とは要素数の一例である。
【0093】
以下、アテンション構造160がMHA構造である場合を例に挙げて説明するが、これに限定されるものではなく、アテンション構造160は、ヘッドが1つである(シングルヘッド)アテンション構造であってもよい。
【0094】
図17に例示するように、アテンション構造160は、全結合層161~163、166、アテンション層164、及び、concat部(
図17では「Concat」と表記)165を含む。
【0095】
全結合層161~163は、アテンション構造160の入力部の一例であり、入力テンソルに対する演算を行ない、Q、K及びVのそれぞれのテンソルを出力する層である。以下の説明では、Qのテンソルを出力する全結合層161をQ層、Kのテンソルを出力する全結合層162をK層、Vのテンソルを出力する全結合層163をV層と表記する場合がある。
【0096】
アテンション層164は、例えば、スケール化内積アテンション(Scaled Dot-Product Attention)と呼ばれる層(構造)を含む。
図17に示す例では、アテンション層164は、ヘッダ数であるH個(1以上の整数)のスケール化内積アテンションを含んでよい。
【0097】
concat部165は、結合部の一例であり、アテンション層164から入力される複数のテンソルを結合し、結合結果のテンソルを出力するconcat演算を行なう。
【0098】
全結合層166は、concat部165から入力されるテンソルに対して演算を行ない、演算結果のテンソルを出力する。
【0099】
図18は、アテンション構造160の詳細な一例を示す図である。
図18では、アテンション構造160が、トークン数=1、特徴量数=16の入力テンソル170を入力とし、ヘッド数H=4のMHAである場合を例に挙げる。
【0100】
Q層は、入力テンソル170を入力としてQのテンソル171aを出力する。K層は、入力テンソル170を入力としてKのテンソル171bを出力する。V層は、入力テンソル170を入力としてVのテンソル171cを出力する。
【0101】
アテンション層164は、Split164a~164c、Matmul164d及び164f、並びに、Softmax164eを含んでよい。
【0102】
Split164a~164cは、テンソル171a~171cを、特徴量の次元でヘッド数Hに分割することで、テンソル171a~171cをマルチヘッド化する。
【0103】
例えば、Split164aは、16次元の特徴量を含むテンソル171aを入力として、テンソル171aをヘッド数である4個に分割することで、4個の4次元のテンソル172aを出力する。Split164bは、16次元の特徴量を含むテンソル171bを入力として、テンソル171bを4個に分割することで、4個の4次元のテンソル172bを出力する。Split164cは、16次元の特徴量を含むテンソル171cを入力として、テンソル171cを4個に分割することで、4個の4次元のテンソル172cを出力する。
【0104】
Matmul164dは、Qのテンソル172a及びKのテンソル172bを入力として、QとKとの行列積を算出する。
【0105】
例えば、Qのテンソル172aをQ
headとし、Q
headの要素をq
fとし、Kのテンソル172bをK
headとし、K
headの要素をk
fとし、Matmul164dによる行列積の結果をA
headとすると、行列積A
headは、以下のように算出される。なお、headは、各ヘッドのインデックスであり、
図18の例では0~3の整数である。fは、各特徴量のインデックスであり、
図18の例では0~15の整数である。
A
0=Q
0・K
0
T=q
0・k
0+q
1・k
1+q
2・k
2+q
3・k
3
A
1=Q
1・K
1
T=q
4・k
4+q
5・k
5+q
6・k
6+q
7・k
7
A
2=Q
2・K
2
T=q
8・k
8+q
9・k
9+q
10・k
10+q
11・k
11
A
3=Q
3・K
3
T=q
12・k
12+q
13・k
13+q
14・k
14+q
15・k
15
【0106】
上記のように、Matmul164dにおける行列積の演算では、QとKとの間で同一のインデックスの要素どうしの積(内積)が算出される。
【0107】
従って、アテンション構造160には、以下の(制約1’)及び(制約2)が課されているといえる。
(制約1’)QheadとKheadとのヘッド数が同一(同数)であること。
(制約2)QheadとKheadとのヘッド間の特徴量数が同一(同数)であること。
【0108】
Softmax164eは、Matmul164dで算出された行列積の結果を正規化することで、Att(Attention Weight)173を出力する。例えば、Softmax164eは、下記式に従い、Att173を算出してよい。
Att=Softmax(Ahead)
【0109】
或いは、Softmax164eは、下記式に従い、Att173を算出してもよい。下記式において、d
xは、A
headの次元数(
図18の例では4)であり、Softmax{}は正規化を行なう関数である。
Att=Softmax{A
head/√(d
x)}
【0110】
Matmul164fは、Att173と、Vのテンソル172cとを入力として、重み(Att173)とVとの行列積を算出する。例えば、Matmul164fは、行列積の算出結果として、4個のテンソル174を出力する。
【0111】
例えば、Att173をAnheadとし、Vのテンソル172cをVheadとし、Vheadの要素をvfとし、Matmul164fによる行列積の結果をCheadとすると、行列積Cheadは、以下のように算出される。
C0=An0・V0=[An0・v0,An0・v1,An0・v2,An0・v3]
C1=An1・V1=[An1・v4,An1・v5,An1・v6,An1・v7]
C2=An2・V2=[An2・v8,An2・v9,An2・v10,An2・v11]
C3=An3・V3=[An3・v12,An3・v13,An3・v14,An3・v15]
【0112】
以上のように、Matmul164fにおける行列積の演算では、重み(Att173)とVとの間で同一のヘッドのインデックスどうしの積(内積)が算出される。
【0113】
従って、アテンション構造160には、以下の(制約1”)が課されているといえる。
(制約1”)重み(Qhead及びKhead)とVheadとのヘッド数が同一(同数)であること。
【0114】
なお、(制約1’)及び(制約1”)を統合し、以下の(制約1)と捉えてもよい。
(制約1)QheadとKheadとVheadとのヘッド数が同一(同数)であること。
【0115】
concat部165は、複数(
図18の例では4個)のテンソル174(ミニテンソル)の要素を結合して1つのテンソル175を出力する。
【0116】
例えば、concat部165による結合の結果(テンソル175)をCとすると、結果Cは、以下のように算出される。
C=[C0,C1,C2,C3]
=[An0・v0,An0・v1,An0・v2,An0・v3
,An1・v4,An1・v5,An1・v6,An1・v7
,An2・v8,An2・v9,An2・v10,An2・v11
,An3・v12,An3・v13,An3・v14,An3・v15]
【0117】
以上のように、concat部165における結合の演算(concat演算)では、concat部165に入力されるテンソル175(C0,C1,C2,C3)のテンソルサイズ(次元の要素数)が揃っていることが前提となる。
【0118】
従って、アテンション構造160には、以下の(制約3)が課されているといえる。
(制約3)Vheadのヘッド間で特徴量数が同一(同数)であること。
【0119】
このように、アテンション構造160に入力テンソル170を入力し、テンソル175を得るためには、上述した(制約1)~(制約3)が満たされていることが条件となる。なお、アテンション構造160がシングルヘッドアテンション構造である場合には、制約は、(制約1)~(制約3)に代えて、下記の(制約2’)のみとなる。
(制約2’)QheadとKheadとの間の特徴量数が同一(同数)であること。
【0120】
図5~
図9等を参照して説明したプルーニング率算出部14によるプルーニング手法により、全結合層161~163(Q層、K層、V層)のプルーニング率がそれぞれ独立して(例えば少なくとも1つが異なるように)選択された場合を想定する。
【0121】
この場合、全結合層161~163から出力されるテンソル171a~171cのうち、少なくとも1つのテンソルサイズが他のテンソルサイズと異なり、Att173やテンソル175が算出不可能となってしまう。また、プルーニングが機械学習モデルの全てのレイヤに対して独立して行なわれるため、アテンション構造160におけるQ層、K層及びV層のいずれのレイヤの出力ノード数が最大となるかをプルーニング前に把握することは困難である。
【0122】
Att173やテンソル175が算出不可能になることを回避するためには、例えば、アテンション構造160における全結合層161~163を一律に、プルーニング率の決定対象から除外することが考えられる。しかし、この場合、NNに含まれるアテンション構造の数が増加するほど、NNの機械学習モデル全体のプルーニング率が低下し、プルーニングによる機械学習モデルのデータサイズの圧縮(軽量化)効果が低減する。
【0123】
そこで、一実施形態に係る算出部14は、テンソルの一部の要素(例えばチャネル)を削除する要素削除部を、全結合層161及び162の出力側(後段)に設ける。また、一実施形態に係る算出部14は、アテンション構造160がMHA構造である場合、入力されるテンソルの一部のヘッドを削除するヘッド削除部を、全結合層161~163の出力側(後段)に設ける。さらに、一実施形態に係る算出部14は、アテンション構造160がMHA構造である場合、ゼロパディング層を、全結合層163の出力側(後段)に挿入する。要素又はヘッドの「削除」は、例えば、要素又はヘッドのプルーニング(削減)であってよい。
【0124】
ゼロパディング層は、テンソルの所定の要素(例えばチャネル)を“0”(ゼロ)でパディングするためのレイヤである。パディングとは、テンソルにゼロ等の値を埋め込むことで、テンソルのサイズ(例えばチャネル数)を大きくする操作である。ゼロパディング層は、テンソルの1以上の要素のパディングを行なうパディング層の一例である。パディング層としては、ゼロパディング層に限定されるものではなく、“0”に近い値等の種々の値をテンソルに埋め込むレイヤが用いられてもよい。
【0125】
図19は、アテンション構造160を含むNN150への一実施形態に係る手法の適用例を説明するための図である。例えば、
図19は、
図18に示すアテンション構造160を含むNN150への、要素削除部、ヘッド削除部及びパディング層適用後のモデル180を示す。
【0126】
なお、
図19に示す処理は、プルーニング対象であるNN150にアテンション構造160が含まれる場合に、プルーニング率候補を選択して実行されてよく、含まれない場合には当該処理の実行が抑止されてよい。例えば、算出部14は、NN150にアテンション構造160が含まれるか否かを、NN150の構成、例えば各レイヤ及びレイヤ間の接続関係等の構成を定義する構成情報(図示省略)を参照して判定してもよい。また、算出部14は、構成情報に基づき、アテンション構造160ごとに、全結合層161~163を特定してよい。
【0127】
また、
図19では、上述した(i)において、算出部14が出力データのチャネルに対応するカーネル単位でL1ノルムを算出(計算)し、L1正則化学習(
図2参照)等によってプルーニング率を仮算出した場合を例に挙げる。
【0128】
図19に例示するように、算出部14は、全結合層161及び162(Q層、K層)の後段、一例として、Split164a及び164bの後段に、要素削除部181を設ける。また、算出部14は、全結合層163(V層)の後段、一例として、Split164cの後段に、パディング層(
図19では「Padding」と表記)182を挿入(配置)する。さらに、算出部14は、全結合層161~163(Q層、K層、V層)の後段、一例として、Split164a~164cの後段に、ヘッド削除部183を設ける。
【0129】
要素削除部181及びヘッド削除部183は、算出部14により実行されるプルーニング処理を示す機能ブロックと捉えられてよい。
【0130】
算出部14は、アテンション構造160がMHA構造である場合、下記(I)~(III)の全ての条件を満たすように、要素削除部181による要素削除、パディング層182によるゼロパディング、ヘッド削除部183によるヘッド削除を実行してよい。例えば、算出部14は、仮算出したプルーニング率に基づき、Q層、K層、V層のチャネル数を特定し、特定したチャネル数に応じて、これらの処理を行なってよい。
【0131】
(I)第1の削減割合に基づく要素の削減後のQ層からのテンソル172aと、第2の削減割合に基づく要素の削減後のK層からのテンソル172bと、第3の削減割合に基づく要素の削減後のV層からのテンソル172cと、のそれぞれのヘッド数が一致する。
【0132】
(II)テンソル172aと、テンソル172bとにおいて同一のヘッド間の要素数が同一の数となる。
【0133】
(III)テンソル172cのヘッド間で要素数が同一の数となる。
【0134】
また、アテンション構造160がシングルヘッドアテンション構造である場合、算出部14は、上記(I)~(III)に代えて、下記(II’)の条件を満たすように、要素削除部181による要素削除を実行してよい。
【0135】
(II’)テンソル172aと、テンソル172bとの間の要素数が同一の数となる。
【0136】
なお、Q層からのテンソル172aは、テンソルQTの一例であり、K層からのテンソル172bは、テンソルKTの一例であり、V層からのテンソル172cは、テンソルVTの一例である。以下の説明では、テンソル172a、172b、172cのそれぞれを、単に「Q」、「K」、「V」と表記する場合がある。
【0137】
これにより、アテンション構造160において、Q、K、Vのテンソルの要素数(サイズ)を同一にすることができる。従って、アテンション構造160の全結合層161~163がプルーニングされることを許容でき、プルーニングによる機械学習モデルのデータサイズの圧縮率を向上させることができる。
【0138】
図20は、モデル180に対する要素削除、ゼロパディング及びヘッド削除の処理の一例を説明するための図である。
図20の例では、簡単のため、入力テンソルの特徴量数が9である、換言すれば、Q層、K層、V層(例えばSplit164a~164c)の各々の出力が、ヘッド数H:3、各ヘッドのチャネル数:3であるものとする。
【0139】
図20の符号Aは、Q層、K層、V層の各々から出力されるプルーニング前のテンソル172a~172c(Q、K、V)の一例を示す。
【0140】
図20の符号Bは、Q層、K層、V層の各々から出力されるプルーニング後(或いはプルーニング途中)のテンソル172a~172cの一例を示す。
【0141】
図20の符号Cは、要素削除部181による要素の削除の一例を示す。例えば、要素削除部181は、Q層のテンソル172a及びK層のテンソル172bの各々に含まれる1以上の要素のうち、同一のインデックスを持つ要素どうしのみをテンソル172a及び172bに残すように、テンソル172a及び172bのうちの少なくとも一方に含まれる要素を削減する。インデックスは、特徴量(要素)のインデックス又は識別情報の一例であり、上述したfに相当する。
【0142】
例えば、要素削除部181は、Q及びKの各ヘッド間で、Qに含まれる非ゼロ要素(0以外の要素)のインデックス(第1インデックス)と、Kに含まれる非ゼロ要素のインデックス(第2インデックス)との論理積(AND)を算出してよい。そして、要素削除部181は、Q及びKのうち、論理積が示すインデックスの要素のみを残し、論理積の結果に含まれないインデックスの要素を削除(プルーニング)してよい。
【0143】
図20の例では、要素削除部181は、符号C1に示すように、特徴量のインデックス1において、k1の要素が0である(存在しない)ため、ヘッド0のq1をプルーニングする。また、要素削除部181は、符号C2に示すように、特徴量のインデックス3において、k3の要素が0である(存在しない)ため、ヘッド1のq3をプルーニングする。
【0144】
要素削除部181による要素のプルーニングにより、後段のMatmul164dでの演算において不要になる要素を削減することができる。
【0145】
例えば、Matmul164dで演算される行列積Aheadは、ヘッド数H:3、各ヘッドのチャネル数:3の場合、以下のように算出される。
A0=Q0・K0
T=q0・k0+q1・k1+q2・k2
A1=Q1・K1
T=q3・k3+q4・k4+q5・k5
A2=Q2・K2
T=q6・k6+q7・k7+q8・k8
【0146】
Matmul164dでは、要素Qf及びKfの内積(要素積)の算出の際に、Qf及びKfのうちのいずれかが0である場合、例えば、fが論理積の結果に含まれないインデックスである場合、要素Qf及びKfの内積が0になる。この場合、Matmul164dでは、当該要素Qf及びKfの内積のために無駄な演算リソースが使用される。
【0147】
これに対し、要素削除部181による要素のプルーニングによれば、要素Qf及びKfの内積の演算自体を省略することができるため、Q及びKの要素のうち、論理積の結果に含まるインデックスの要素のみを、Att173の算出に用いることができる。
【0148】
要素削除部181の処理により、Q及びKのヘッド間で特徴量数が揃う(一致する)ことになり、上記(制約2)又は(制約2’)を満たすことができる。すなわち、符号Cに示す要素削除(ゼロ要素削除)は、上記(II)又は(II’)の条件に従った処理である。
【0149】
図20の符号Dは、符号Bに示すプルーニング後のテンソル172cに対する、算出部14によるゼロパディングの一例を示す。
【0150】
符号Dに示すように、算出部14は、Vのヘッド間で要素数が同一の数となるようにゼロパディングを行なう。例えば、算出部14は、Vの各ヘッドのうちの最大の要素数を有するテンソル以外のテンソルの要素数が当該最大の要素数となるようにゼロ行列を挿入する。
【0151】
図20の例では、符号D1に示すように、算出部14は、ヘッド1の要素数:3(v3、v4、v5)又はヘッド2の要素数:3(v6、v7、v8)に合わせるように、ヘッド0(要素数:2(v0、v1))にパディング層182によってゼロ(ゼロ行列)を1つ挿入する。
【0152】
これにより、Vのヘッド間で特徴量数が揃う(一致する)ことになり、上記(制約3)を満たすことができる。すなわち、符号Dに示すゼロパディングは、上記(III)の条件に従った処理である。
【0153】
図20の符号Eは、ヘッド削除部183によるヘッドの削除の一例を示す。例えば、ヘッド削除部183は、Q層、K層、V層の各々のテンソル172a~172cにおいて、全ての要素が0であるヘッドが存在する場合、テンソル172a~172cの各々から、当該ヘッドと同一のヘッド番号のヘッドをプルーニングする。換言すれば、ヘッド削除部183は、Q層、K層、V層の各々のテンソル172a~172cの各ヘッドのうち、全ての要素が0であるヘッドと同一のヘッド番号を持つヘッドを、Q、K、Vから削除する。ヘッド番号は、ヘッドのインデックス又は識別情報の一例であり、上述したheadに相当する。
【0154】
図20の例では、Vのヘッド1には要素(v3、v4、v5)が存在する一方、符号E1、E2に示すように、Qのヘッド1、Kのヘッド1にそれぞれ要素が存在しない。そこで、ヘッド削除部183は、符号E3に示すように、Vのヘッド1自体(ヘッド1の全要素v3、v4、v5)をプルーニングする。
【0155】
これにより、Q、K、V間でヘッド数が揃う(一致する)ことになり、上記(制約1)を満たすことができる。すなわち、符号Eに示すヘッド削除は、上記(I)の条件に従った処理である。
【0156】
図20の符号Fは、Q、Kを用いたMatmul164dによる行列積の演算である。Matmul164dでは、入力されるQ、Kにおいて、符号Cにおける要素削除により、符号Eにおけるヘッド削除を経て残存するヘッドの全ての要素に「積」の相手となる非ゼロ要素が存在することになるため、行列積の実行が可能となる。行列積は、テンソル積の一例である。
【0157】
例えば、Matmul164dは、行列積の演算結果として、以下の結果F1を出力する。
A0=Q0・K0
T=q0・k0
A2=Q2・K2
T=q6・k6+q7・k7+q8・k8
【0158】
図20の符号Gは、結果F1を用いたSoftmax164eによる正規化処理の演算である。例えば、Softmax164eは、正規化処理の演算結果として、以下の結果F1を出力する。結果F1は、
図19に示すAtt173の一例である。
An
0=Softmax(A
0)
An
2=Softmax(A
2)
【0159】
図20の符号Hは、結果G1とVとを用いたMatmul164fによる行列積の演算である。Matmul164fでは、入力されるQ、K、Vにおいて、符号Eにおけるヘッド削除により不要なヘッドが削除され、残存するヘッドの全ての要素に「積」の相手となる要素が存在することになるため、行列積の実行が可能となる。
【0160】
なお、Matmul164fに入力されるV(符号E2参照)は、以下である。
V0=[v0,v1, 0]
V2=[v6,v7,v8]
【0161】
例えば、Matmul164fは、結果G1とV(符号E4)との行列積の演算結果として、以下の結果H1を出力する。結果H1は、
図19に示すテンソル174の一例である。
C
0=An
0・V
0=[An
0・v
0,An
0・v
1,An
0・
0]
C
2=An
2・V
2=[An
2・v
6,An
2・v
7,An
2・v
8]
【0162】
このように、アテンション構造160は、要素及びヘッド削除後のQと要素及びヘッド削除後のKとの行列積を正規化して得られた行列積(符号G1)と、パディング及びヘッド削除後のV(符号E2)と、に基づく行列積(符号H1)を出力する。
【0163】
図20の符号Iは、結果H1を用いたconcat部165によるconcat演算である。concat部165では、符号Dにおけるゼロパディングにより、入力されるVにおけるヘッド間の要素数が同一になり、結合する複数のベクトル(結果H1)の特徴量数が同一になるため、結合が可能となる。
【0164】
例えば、concat部165は、結果H1のconcat演算結果として、以下の結果I1を出力する。結果I1は、
図19に示すテンソル175の一例である。
C=[C
0,C
2]
=[An
0・V
0,An
0・V
1,An
0・
0,
An
2・V
6,An
2・v
7,An
2・v
8]
【0165】
以上のように、ゼロパディング処理により、Q、K、Vごとに、テンソルの要素数(サイズ)を同一にすることができる。従って、Q層、K層、V層についても、仮算出されたプルーニング率候補を用いてプルーニングすることが可能となり、アテンション構造160を含む機械学習モデルのデータサイズの圧縮率を向上させることができる。
【0166】
なお、仮に、符号Eにおけるヘッド削除が行なわれない場合、符号HにおけるMatmul164fの行列積の演算結果H1’は、以下のようになる。
C0=An0・V0=[An0・v0,An0・v1,An0・ 0]
C1=An1・V1=0・v1
C2=An2・V2=[An2・v6,An2・v7,An2・v8]
【0167】
このように、符号Eにおけるヘッド削除ヘッドが行なわれない場合、符号CにおいてQ、Kのヘッド1の要素が全てゼロであるため、符号FにおけるMatmul164dの演算結果のうちのヘッド1の要素もゼロとなる。結果として、Matmul164fの演算結果H1’におけるヘッド1の要素は全てゼロとなるため、ヘッド1に関する演算は、情報の無い、無駄な演算であるといえる。
【0168】
これに対し、一実施形態に係る手法によれば、例えば、Matmul164dからの結果F1及びMatmul164fからの結果H1のテンソルのサイズは、要素削除及びヘッド削除により、テンソル164a~164cのサイズよりも小さくなる。
【0169】
従って、一実施形態に係る手法によれば、Q層、K層、V層のプルーニングに起因するモデル180での不要な演算の実行を抑制でき、モデル180の機械学習処理及びモデル180を利用した推論処理を高速化することができる。
【0170】
なお、符号Cに示す要素削除処理は、例えば、符号Eに示すヘッド削除処理の後に実行されてもよい。これにより、要素削除処理において削除対象候補となる要素数が減少する可能性があり、算出部14の処理時間を短縮できる場合がある。
【0171】
なお、符号Dに示すゼロパディング処理は、例えば、符号Eに示すヘッド削除処理の後に実行されてもよい。これにより、ヘッド削除処理において削除されるヘッドに対してゼロパディングが行なわれる可能性を低減でき、算出部14の処理時間を短縮できる場合がある。
【0172】
図18~
図20を参照して説明した処理は、閾値算出部14aによる(i)の処理の一部であってもよく、閾値算出部14aにより実行されてもよい。
【0173】
また、
図18~
図20を参照して説明した処理の実行後における算出部14の処理は、(ii)及び(iii)の処理と同様である。
【0174】
上述した要素削除処理、ゼロパディング処理及びヘッド削除処理は、要素がチャネルである場合の実施に限定されるものではなく、要素が重みである場合、及び、要素がノードである場合、の一方又は双方の場合に実施されてもよい。
【0175】
図21は、一実施形態に係る手法の適用有無に応じた、NNのプルーニング前後の精度、及び、データサイズの圧縮率の一例を示す図である。
図21では、モデルが、QQP(二値分類タスク)の訓練が行なわれたBERT(Bidirectional Encoder Representations from Transformers)baseである場合を例に挙げる。
【0176】
なお、
図21において、「ゼロパディング層の挿入無し」とは、要素削除処理、ゼロパディング処理及びヘッド削除処理を適用せずに、アテンション構造160(MHA構造)の全結合層161~163をプルーニングの対象外とした場合を意味する。「ゼロパディング層の挿入有り」とは、要素削除処理、ゼロパディング処理及びヘッド削除処理を適用し、アテンション構造160(MHA構造)の全結合層161~163をプルーニングした場合を意味する。
【0177】
図21に例示するように、要素削除処理、ゼロパディング処理及びヘッド削除処理を適用する場合、これらを適用しない場合と比較して、精度の劣化を抑制しつつ、軽量化済モデル11eのデータサイズの圧縮率を向上できる。
【0178】
〔1-5〕動作例
次に、
図22を参照して、一実施形態に係るサーバ1の動作例を説明する。
図22は、一実施形態に係るサーバ1による処理の動作例を説明するためのフローチャートである。
【0179】
図22に例示するように、機械学習部13は、取得部12が取得した未学習モデル11aの機械学習をプルーニングなしで実行する(ステップS1)。
【0180】
算出部14は、プルーニングしない場合の推論精度(認識率)Accwoを算出する(ステップS2)。
【0181】
閾値算出部14aは、信頼半径の初期値を設定する(ステップS3)。
【0182】
閾値算出部14aは、プルーニング率を設定するための、層ごとの閾値T、及び、層ごとのプルーニング誤差を算出し(ステップS4)、全層の閾値TのL2ノルムが信頼半径よりも大きいか否かを判定する(ステップS5)。全層の閾値TのL2ノルムが信頼半径以下である場合(ステップS5でNO)、処理がステップS7に移行する。
【0183】
全層の閾値TのL2ノルムが信頼半径よりも大きい場合(ステップS5でYES)、閾値算出部14aは、全層の閾値TのL2ノルム=信頼半径となるように閾値をスケール(更新)し(ステップS6)、処理がステップS7に移行する。
【0184】
ステップS7において、閾値算出部14aは、層ごとのプルーニング率を仮算出する。例えば、閾値算出部14aは、層ごとに、設定されたプルーニング率候補からプルーニング率を仮設定する。
【0185】
算出部14は、プルーニング率を仮算出した層にアテンション構造160の全結合層161~163が含まれるか否かを判定する(ステップS8)。プルーニング率を仮算出した層に全結合層161~163が含まれない場合(ステップS8でNO)、処理がステップS11に移行する。
【0186】
プルーニング率を仮算出した層にアテンション構造160の全結合層161~163が含まれる場合(ステップS8でYES)、算出部14は、全結合層163(V層)の出力にパディング層182を挿入し(ステップS9)、ステップS10の処理を実行して、処理がステップS11に移行する。
【0187】
ステップS10では、算出部14は、全結合層161~163の各々の出力(Q、K、V)のヘッド数、要素数(チャネル数)について、上述した条件(I)~(III)が満たされるように、要素削除、パディング層182へのゼロパディング、ヘッド削除を行なう。なお、ステップS4~S10は、上記(i)の処理の一例である。
【0188】
機械学習部13は、閾値算出部14aが仮算出したプルーニング率で機械学習済モデル11cをプルーニングし、プルーニング後のモデルの再機械学習を実行する。算出部14は、再機械学習後のモデルの推論精度Accpを算出する(ステップS11)。
【0189】
決定部14bは、推論精度Accp+マージンAccmが推論精度Accwo以上か否かを判定する(ステップS12)。推論精度(認識率)の評価により、近似誤差によるプルーニング率選択の誤りを補償することできる。
【0190】
推論精度Accp+マージンAccmが推論精度Accwo以上である場合(ステップS12でYES)、決定部14bは、仮算出したプルーニング率で機械学習済モデル11cをプルーニングすると決定し(ステップS13)、仮算出したプルーニング率をプルーニング率11dとしてメモリ部11に格納する。また、閾値算出部14aは、信頼半径を定数倍して増加させ(ステップS14)、処理がステップS17に移行する。
【0191】
一方、推論精度Accp+マージンAccmが推論精度Accwo未満である場合(ステップS12でNO)、決定部14bは、仮算出したプルーニング率を破棄する(ステップS15)。閾値算出部14aは、信頼半径を定数倍して減少させ(ステップS16)、処理がステップS17に移行する。なお、ステップS10~S16は、上記(ii)の処理の一例である。
【0192】
ステップS17において、決定部14bは、所定回数に亘って探索(ステップS4~S16の処理)を行なったか否か、換言すれば、閾値算出、プルーニング率候補選択及びプルーニング率決定の処理の実施回数が所定の条件を満たすか否かを判定する。所定回数に亘って探索を行なっていない場合(ステップS17でNO)、処理がステップS4に移行する。
【0193】
所定回数に亘って探索を行なった場合(ステップS17でYES)、出力部15は、決定したプルーニング率11dを出力し(ステップS18)、処理が終了する。なお、ステップS17は、上記(iii)の処理の一例である。
【0194】
以上のように、一実施形態に係るサーバ1は、閾値算出部14aにより、NNに使用されるテンソルの、プルーニングより発生する誤差を算出し、損失関数の値と、NNの逆伝播により得られる勾配とから、閾値を生成する。また、閾値算出部14aが、算出されたプルーニングの誤差と閾値とを比較し、プルーニング率を仮算出する。さらに、決定部14bが、算出されたプルーニング率で再学習した後のモデルの推論精度と、プルーニングしない場合のモデルの推論精度とを比較し、レイヤごとにプルーニング率を決定する。このとき、閾値算出部14aは、プルーニングした場合の推論精度がプルーニングしない場合の推論精度よりも劣化したと判定された場合、閾値が小さくなるように閾値の上限を再設定し、再度プルーニング率の探索を行なう。
【0195】
これにより、一実施形態に係るサーバ1によれば、層の種類に依らず、各層のプルーニング率を決定することができる。例えば、サーバ1は、BN層が接続されていない畳込み層、全結合層等を含む機械学習済モデル11cに適用するプルーニング率を層ごとに決定することができる。
【0196】
また、サーバ1によれば、NNにアテンション構造160が含まれる場合でも、アテンション構造160の全結合層161~163を適切にプルーニングでき、軽量化済モデル11eのデータサイズの圧縮率を向上できる。
【0197】
〔1-6〕変形例
次に、一実施形態に係る変形例を説明する。なお、以下の説明では、簡単のため、推論精度のマージンAcc
mが“0”である場合、換言すれば、推論精度の比較において、推論精度Acc
pが推論精度Acc
wo以上か否かが判定される場合を想定する。また、以下の説明では、NNがアテンション構造160を含まない場合を例に挙げるが、
図16~
図21を参照して説明した処理は、以下の第1及び第2変形例のいずれにおいても同様に適用可能である。
【0198】
〔1-6-1〕第1変形例
一実施形態に係る手法では、プルーニング率の探索回数(上記(iii)の処理の試行回数)が、例えば設計者により手動で(マニュアルで)設定されるハイパーパラメータである。このため、例えば、探索回数が少なく設定された場合、機械学習済モデル11cが十分に軽量化されない可能性があり、探索回数が多く設定された場合、機械学習済モデル11cは十分に軽量化されるものの、探索時間が長くなる可能性がある。
【0199】
図23は、一実施形態に係る手法における信頼半径の更新に応じたプルーニング誤差比較結果の一例を示す図である。
【0200】
図23に例示するように、m(mは“1”以上の整数)回目の探索の誤差比較結果において、プルーニング率“10%”が算出(決定)された場合を想定する。この場合、信頼半径は、定数K倍により増加するように更新される。しかし、更新後の信頼半径が、m回目で決定されたプルーニング率候補よりも1つ大きいプルーニング率候補による誤差未満である場合、m+1回目の探索の誤差比較結果においても、再びプルーニング率“10%”が算出される。
【0201】
このように、信頼半径を定数K又は定数k倍する場合、信頼半径によって閾値の更新量が制限されるため、複数の探索において同じプルーニング率候補が採用される場合がある。同じプルーニング率の組み合わせが複数回に亘って探索される状態は、モデルのプルーニングが十分に試行されないままプルーニング率の探索回数が増加することに繋がる。
【0202】
そこで、第1変形例では、信頼半径の更新に着目し、NNを軽量化するための適切なプルーニング率の探索時間(探索回数)を短縮(減少)させる手法を説明する。
【0203】
図24は、第1変形例に係るサーバ1Aの機能構成例を示すブロック図である。
図24に例示するように、サーバ1Aは、
図4のサーバ1とは異なる算出部14Aを備えてよい。算出部14Aは、
図4の算出部14とは異なる閾値算出部14a’及び決定部14b’を備えてよい。
【0204】
算出部14Aは、探索ごとに、異なるプルーニング率の組み合わせを探索する。ここで、全てのレイヤのプルーニング率“0%”の組み合わせが選択された状態は、算出部14Aがこれ以上プルーニング率の探索を行なわないと判断した状態であるものとする。このような前提において、算出部14A(決定部14b’)は、全てのレイヤのプルーニング率が“0%”の組み合わせを選択した場合に、探索を打ち切る。
【0205】
閾値算出部14a’は、決定部14b’による推論精度の比較結果に応じて、レイヤi(iは1以上の整数)ごとに、探索したプルーニング率よりも1つ大きな値のプルーニング率の誤差又は探索したプルーニング率の誤差と、閾値との差分の絶対値“Ediff,i”を測定する。
【0206】
例えば、閾値算出部14a’は、推論精度Accpが推論精度Accwo以上である場合には、探索したプルーニング率よりも1つ大きな値のプルーニング率の誤差と、閾値との差分の絶対値“Ediff,i”を測定する。
【0207】
一方、閾値算出部14a’は、推論精度Accpが推論精度Accwo未満である場合、探索したプルーニング率の誤差と、閾値との差分の絶対値“Ediff,i”を測定する。
【0208】
閾値算出部14a’は、下記式(7)に例示するように、算出した全レイヤの差分の絶対値“Ediff,i”のうちの、最も小さな値(差分)“Ediff”を取得する。
Ediff= min(Ediff,1, Ediff,2, ..., Ediff,i) (7)
【0209】
閾値算出部14a’は、決定部14b’による推論精度の比較結果に応じて、信頼半径の定数倍、並びに、信頼半径と差分“Ediff”との和又は差、のうちの変動量が大きい方を採用して、信頼半径を更新する。
【0210】
例えば、閾値算出部14a’は、推論精度Accpが推論精度Accwo以上である場合には、信頼半径の定数K倍、並びに、信頼半径と差分“Ediff”との和、のうちの変動量が大きい方を採用して、信頼半径が増加するように更新する。
【0211】
一方、閾値算出部14a’は、推論精度Accpが推論精度Accwo未満である場合には、信頼半径の定数k倍、並びに、信頼半径と差分“Ediff”との差、のうちの変動量が大きい方を採用して、信頼半径が減少するように更新する。
【0212】
このように、閾値算出部14a’は、複数の層のそれぞれのプルーニング率候補の組み合わせが、プルーニング率候補を選択する処理(換言すれば探索)の実行ごとに互いに異なる組み合わせとなるように、信頼半径を更新する。
【0213】
図25は、信頼半径を増加させる場合の信頼半径更新処理の一例を説明する図である。
図25に示すように、m回目に探索されたプルーニング率が“(レイヤ1,レイヤ2)=(10%,0%)”である場合を想定する。閾値算出部14a’は、レイヤ1のプルーニング率“20%”の誤差と信頼半径との差分の絶対値“E
diff,1”、及び、レイヤ2のプルーニング率“10%”の誤差と信頼半径との差分の絶対値“E
diff,2”を算出する。閾値算出部14a’は、上記式(7)に従い、値の小さい差分“E
diff,2”を“E
diff”として取得する。
【0214】
そして、閾値算出部14a’は、m+1回目(次回)の信頼半径を、下記式(8)に従い決定(更新)する。
(m+1回目の信頼半径)
= max((m回目の信頼半径・定数K), (m回目の信頼半径 + Ediff)) (8)
【0215】
これにより、m+1回目の信頼半径には、少なくとも「信頼半径と差分との和」以上の値が選択されるため、m+1回目では、プルーニング率としてm回目とは異なるビット幅が算出される。
【0216】
図25の例では、m+1回目の探索における信頼半径(閾値の上限)は、レイヤ2のプルーニング率“10%”の誤差と一致する。従って、m+1回目の探索では、前回と異なるプルーニング率の組み合わせである、プルーニング率“(レイヤ1,レイヤ2)=(10%,10%)”が探索される。
【0217】
図26は、信頼半径を減少させる場合の信頼半径更新処理の一例を説明する図である。
図26に示すように、m回目に探索されたプルーニング率が“(レイヤ1,レイヤ2)=(10%,0%)”である場合を想定する。閾値算出部14a’は、レイヤ1のプルーニング率“10%”の誤差と信頼半径との差分の絶対値“E
diff,1”、及び、レイヤ2のプルーニング率“0%”の誤差と信頼半径との差分の絶対値“E
diff,2”を算出する。閾値算出部14a’は、上記式(7)に従い、値の小さい差分“E
diff,1”を“E
diff”として取得する。
【0218】
そして、閾値算出部14a’は、m+1回目(次回)の信頼半径を、下記式(9)に従い決定(更新)する。
(m+1回目の信頼半径)
= max((m回目の信頼半径・定数), (m回目の信頼半径 - Ediff)) (9)
【0219】
これにより、m+1回目の信頼半径には、少なくとも「信頼半径と差分との差」以上の値が選択されるため、m+1回目では、プルーニング率としてm回目とは異なるビット幅が算出される。
【0220】
図26の例では、m+1回目の探索における信頼半径(閾値の上限)は、レイヤ1のプルーニング率“0%”の誤差と一致する。従って、m+1回目の探索では、前回と異なるプルーニング率の組み合わせである、プルーニング率“(レイヤ1,レイヤ2)=(0%,0%)”が探索される。
【0221】
上記式(8)及び(9)を一般化すると、次回の信頼半径は、下記式(10)により表現できる。
次回の信頼半径 = 今回の信頼半径 * max(定数, Qscale_min) (10)
【0222】
ここで、上記式(10)において、定数はK又はkであり、“Qscale_min”は、下記式(11)で表される“Qscale”であり、“Qscale”は、下記式(12)で表される。
Qscale_min = min(全ての量子化対象ベクトルで計算されたQscale) (11)
Qscale = 1 + Qdiff / Qth (12)
【0223】
上記式(12)において、“Qdiff”は、“仮算出されたビット幅(プルーニング率)よりも1つ狭いビット幅の量子化誤差と閾値との差分”であり、“Qth”は、閾値である。
【0224】
次に、
図27を参照して、第1変形例に係るサーバ1Aの動作例を説明する。
図27は、第1変形例に係るサーバ1Aによる処理の動作例を説明するためのフローチャートである。
図27は、
図22に示すサーバ1に係るフローチャートにおけるステップS14、S16、S17を、ステップS21、S22、S23にそれぞれ置き換えたものである。なお、第1変形例においても、閾値算出部14a’は、ステップS3において、信頼半径の初期値を設定する。
【0225】
ステップS21では、閾値算出部14a’は、信頼半径を定数K倍、又は、「差分の和」のうちの大きい方で増加させ、処理がステップS23に移行する。
【0226】
ステップS22では、閾値算出部14a’は、信頼半径を定数k倍、又は、「差分の差」のうちの大きい方で減少させ、処理がステップS23に移行する。
【0227】
ステップS23では、決定部14b’は、全層のプルーニング率11dが“0%”であるか否か、換言すれば、プルーニング率が所定の条件を満たすか否かを判定する。少なくとも1つの層のプルーニング率11dが“0%”ではない場合(ステップS23でNO)、処理がステップS4に移行する。
【0228】
全層のプルーニング率11dが“0%”である場合(ステップS23でYES)、出力部15は、決定したプルーニング率11dを出力し(ステップS18)、処理が終了する。
【0229】
以上のように、第1変形例では、閾値算出部14a’による信頼半径の更新手法、及び、決定部14b’による探索の終了判定の終了条件を、一実施形態とは異なるものとする。これにより、サーバ1Aは、NNを十分に軽量化するための適切なプルーニング率を、最短時間(最短回数)で探索することができる。また、設計者等による探索回数の設定(指定)を省略できる。
【0230】
〔1-6-2〕第2変形例
一実施形態及び第1変形例に係る手法では、信頼半径の初期値が設計者等により設定されるハイパーパラメータである。
【0231】
信頼半径の初期値が大きく設定される場合と小さく設定される場合とでは、同じ探索回数であってもモデルサイズが異なる場合がある。また、信頼半径の初期値が大きく設定される場合、信頼半径の初期値が小さく設定される場合と比較して、モデルサイズが十分に軽量化されるまでの探索回数が多くなる場合がある。
【0232】
このように、信頼半径の初期値に応じて、最終的なモデルサイズ及びプルーニング率の探索回数が変動する、換言すれば、サーバ1及び1Aの性能にばらつきが生じる可能性がある。
【0233】
そこで、第2変形例では、サーバ1及び1Aの性能のばらつきを抑える手法を説明する。
【0234】
図28は、第2変形例に係るサーバ1Bの機能構成例を示すブロック図である。
図28に例示するように、サーバ1Bは、
図4のサーバ1とは異なる算出部14Bを備えてよい。算出部14Bは、
図4の算出部14とは異なる閾値算出部14a”及び決定部14b”を備えてよい。
【0235】
モデルのプルーニングでは、小さなプルーニング率を用いて徐々にモデルをプルーニングすることで、大きなプルーニング率で一気にプルーニングするよりも、精度を維持でき、且つ、高い圧縮率でモデルを圧縮できることが知られている。
【0236】
また、上記式(5)に示すように、閾値Tは勾配の逆数に応じて設定されるため、閾値Tが大きい層は、勾配が小さい層であることを意味する。勾配が小さい層は、プルーニングしても精度への影響が小さい層であることを意味する。
【0237】
そこで、サーバ1B(閾値算出部14a”)は、例えば、信頼半径の初期値を、初回の探索でのプルーニング率が最も小さくなるような値に設定する。このために、閾値算出部14a”は、例えば、信頼半径の初期値を、全層のうちの、閾値Tが最も大きい層がプルーニングされ、残りの層がプルーニングされない(プルーニング率“0%”となる)ような値に設定してよい。
【0238】
サーバ1Bは、上述のように信頼半径の初期値を設定することで、信頼半径の初期値をマニュアルで例えば大きく設定した場合よりも、モデルサイズをより圧縮でき、又は、精度を維持することができる。
【0239】
図29は、信頼半径の初期値の設定例を説明する図である。なお、
図29の上段に示すように、信頼半径の初期値が設定されない場合、探索されるプルーニング率の組み合わせは、“(レイヤ1,レイヤ2)=(10%,20%)”である。
【0240】
図29に例示するように、閾値算出部14a”は、プルーニング率の初回の探索において、全層のうち、最も閾値が大きな層の閾値(max(Th))と、その層の最も小さな(“0%”を除く)プルーニング率による誤差(Error)とを測定する。
【0241】
Thは、各層の閾値T
1、T
2、・・・によるベクトルを示し、
図29の例ではTh=[T
1、T
2]である。閾値(max(Th))は、閾値が最も大きな層の閾値であり、
図29の例では、T
2である。誤差(Error)は、閾値が最も大きな層の最小プルーニング率の誤差であり、
図29の例では、レイヤ2のプルーニング率“10%”の誤差を測定する。
【0242】
次いで、閾値算出部14a”は、測定した閾値及び誤差を用いて、下記式(13)に従い、信頼半径の初期値を設定する。下記式(13)において、“||Th||
2”は、全層の閾値のL2ノルムである。
【数7】
【0243】
閾値算出部14a”は、算出した信頼半径の初期値により、閾値が最も大きい層(レイヤ2)のプルーニング率として最小のプルーニング率“10%”が選択され、残りの層(レイヤ1)ではプルーニング率“0%”が選択されるように、閾値T1、T2を設定する。
【0244】
これにより、
図29の下段に示すように、信頼半径の初期値が設定され、閾値T
1、T
2が設定されると、探索されるプルーニング率の組み合わせは、“(レイヤ1,レイヤ2)=(0%,10%)”となる。プルーニング対象の層(レイヤ2)は、閾値が最も大きい、換言すれば、勾配が最も小さい層であるため、プルーニングによる精度への影響を小さく抑えることができる。
【0245】
なお、閾値算出部14a”の信頼半径の初期値の設定処理以外の機能は、一実施形態に係る閾値算出部14a、及び、第1変形例に係る閾値算出部14a’の一方又は双方と同様であってよい。また、決定部14b”は、一実施形態に係る決定部14b、及び、第1変形例に係る決定部14b’の一方又は双方と同様であってよい。
【0246】
すなわち、第2変形例に係る手法は、一実施形態及び第1変形例の一方又は双方との組み合わせにより実現されてよい。
【0247】
次に、
図30を参照して、第2変形例に係るサーバ1Bの動作例を説明する。
図30は、第2変形例に係るサーバ1Bによる処理の動作例を説明するためのフローチャートである。
図30は、
図22に示すサーバ1に係るフローチャートにおけるステップS3を削除し、ステップS4とステップS5との間にステップS31及びS32を追加し、ステップS14、S16、S17をステップS33、S34、S35にそれぞれ置き換えたものである。
【0248】
ステップS31では、閾値算出部14a”は、ステップS4で層ごとの閾値を算出後、初回の探索か否かを判定する。初回の探索ではない場合(ステップS31でNO)、処理がステップS5に移行する。
【0249】
初回の探索である場合(ステップS31でYES)、閾値算出部14a”は、閾値が最大の層の、閾値、及び、最小プルーニング率誤差に基づき、信頼半径の初期値を設定し(ステップS32)、処理がステップS5に移行する。
【0250】
ステップS33、S34、S35は、それぞれ、
図22に示すステップS14、S16、S17と、
図27に示すステップS21、S22、S23と、のうちのいずれであってもよい。
【0251】
以上のように、第2変形例では、閾値算出部14a”による信頼半径の初期値の設定手法を、一実施形態及び第1変形例とは異なるものとする。これにより、サーバ1Bは、最終的なモデルサイズ及びプルーニング率の探索回数の変動を抑制でき、サーバ1及び1Aの性能のばらつきを抑えることができる。
【0252】
また、サーバ1Bは、設計者等による手動での信頼半径の初期値(ハイパーパラメータ)の設定を抑止し、機械学習済モデル11cのレイヤに応じて動的に、信頼半径の初期値を設定することができる。従って、モデルごとに適切なプルーニング率を設定することができ、モデルに依らず、最終的なモデルサイズ及びプルーニング率の探索回数の変動を抑制できるため、サーバ1及び1Aの性能のばらつきを抑えることができる。
【0253】
〔1-7〕ハードウェア構成例
一実施形態並びに第1及び第2変形例に係るサーバ1、1A及び1Bは、それぞれ、仮想マシン(VM;Virtual Machine)であってもよいし、物理マシンであってもよい。また、サーバ1、1A及び1Bのそれぞれの機能は、1台のコンピュータにより実現されてもよいし、2台以上のコンピュータにより実現されてもよい。さらに、サーバ1、1A及び1Bのそれぞれの機能のうちの少なくとも一部は、クラウド環境により提供されるHW(Hardware)リソース及びNW(Network)リソースを用いて実現されてもよい。
【0254】
図31は、コンピュータ10のハードウェア(HW)構成例を示すブロック図である。以下、サーバ1、1A及び1Bのそれぞれの機能を実現するハードウェア(HW)として、コンピュータ10を例に挙げて説明する。なお、サーバ1、1A及び1Bのそれぞれの機能を実現するHWリソースとして、複数のコンピュータが用いられる場合は、各コンピュータが
図31に例示するHW構成を備えてよい。
【0255】
図31に示すように、コンピュータ10は、HW構成として、例示的に、プロセッサ10a、グラフィック処理装置10b、メモリ10c、記憶部10d、IF(Interface)部10e、IO(Input / Output)部10f、及び読取部10gを備えてよい。
【0256】
プロセッサ10aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ10aは、コンピュータ10内の各ブロックとバス10jで相互に通信可能に接続されてよい。なお、プロセッサ10aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【0257】
プロセッサ10aとしては、例えば、CPU、MPU、APU、DSP、ASIC、FPGA等の集積回路(IC;Integrated Circuit)が挙げられる。なお、プロセッサ10aとして、これらの集積回路の2以上の組み合わせが用いられてもよい。CPUはCentral Processing Unitの略称であり、MPUはMicro Processing Unitの略称である。APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
【0258】
グラフィック処理装置10bは、IO部10fのうちのモニタ等の出力装置に対する画面表示制御を行なう。また、グラフィック処理装置10bは、機械学習モデルを利用した機械学習処理及び推論処理を実行するアクセラレータとしての構成を有してよい。グラフィック処理装置10bとしては、種々の演算処理装置、例えば、GPU(Graphics Processing Unit)、APU、DSP、ASIC又はFPGA等の集積回路(IC)が挙げられる。
【0259】
例えば、プロセッサ10aは、コンピュータ10の各種機能の全部若しくは一部を実現するプログラム10h(機械学習プログラム)を実行してよい。プロセッサ10aは、例えば、プログラム10hに基づき、サーバ1、1A又は1B(
図4、
図24又は
図28参照)の取得部12、算出部14、14A又は14B、並びに、出力部15の機能を実現してもよい。また、例えば、グラフィック処理装置10bは、行列演算等のNNの計算に用いられる演算処理を実行してよく、例えば、サーバ1、1A又は1B(
図4、
図24又は
図28参照)の機械学習部13の機能を実現してもよい。
【0260】
メモリ10cは、種々のデータやプログラム等の情報を格納するHWの一例である。メモリ10cとしては、例えばDRAM(Dynamic Random Access Memory)等の揮発性メモリ、及び、PM(Persistent Memory)等の不揮発性メモリ、の一方又は双方が挙げられる。
【0261】
記憶部10dは、種々のデータやプログラム等の情報を格納するHWの一例である。記憶部10dとしては、HDD(Hard Disk Drive)等の磁気ディスク装置、SSD(Solid State Drive)等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。
【0262】
また、記憶部10dは、プログラム10hを格納してよい。例えば、サーバ1、1A及び1Bのプロセッサ10aは、記憶部10dに格納されたプログラム10hをメモリ10cに展開して実行することにより、サーバ1、1A及び1Bの制御部16(
図4、
図24又は
図28参照)としての機能を実現できる。
【0263】
また、
図4、
図24又は
図28に例示するメモリ部11は、メモリ10c及び記憶部10dの少なくとも1つが有する記憶領域により実現されてよい。
【0264】
IF部10eは、ネットワークとの間の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部10eは、イーサネット(登録商標)等のLAN(Local Area Network)、或いは、FC(Fibre Channel)等の光通信等に準拠したアダプタを含んでよい。当該アダプタは、無線及び有線の一方又は双方の通信方式に対応してよい。例えば、サーバ1、1A及び1Bは、IF部10eを介して、図示しないコンピュータと相互に通信可能に接続されてよい。
図4、
図24又は
図28に例示する取得部12及び出力部15の一方又は双方の機能は、IF部10eにより実現されてもよい。また、例えば、プログラム10hは、当該通信IFを介して、ネットワークからコンピュータ10にダウンロードされ、記憶部10dに格納されてもよい。
【0265】
IO部10fは、入力装置、及び、出力装置、の一方又は双方を含んでよい。入力装置としては、例えば、キーボード、マウス、タッチパネル等が挙げられる。出力装置としては、例えば、モニタ、プロジェクタ、プリンタ等が挙げられる。また、IO部10fは、入力装置及び出力装置が一体となったタッチパネル等を含んでもよい。出力装置は、グラフィック処理装置10bに接続されてよい。例えば、
図4、
図24又は
図28に例示する出力部15は、IO部10fの出力装置にプルーニング率11dを出力し表示させてもよい。
【0266】
読取部10gは、記録媒体10iに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部10gは、記録媒体10iを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部10gとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体10iにはプログラム10hが格納されてもよく、読取部10gが記録媒体10iからプログラム10hを読み出して記憶部10dに格納してもよい。
【0267】
記録媒体10iとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
【0268】
上述したコンピュータ10のHW構成は例示である。従って、コンピュータ10内でのHWの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。例えば、サーバ1、1A及び1Bにおいて、IO部10f及び読取部10gの少なくとも一方は、省略されてもよい。
【0269】
〔2〕その他
上述した実施形態並びに第1及び第2変形例に係る技術は、以下のように変形、変更して実施することができる。
【0270】
例えば、
図4、
図24又は
図28に示すサーバ1、1A又は1Bが備える取得部12、機械学習部13、算出部14、14A又は14B、並びに、出力部15は、併合してもよく、それぞれ分割してもよい。
【0271】
また、例えば、
図4、
図24又は
図28に示すサーバ1、1A又は1Bは、複数の装置がネットワークを介して互いに連携することにより、各処理機能を実現する構成であってもよい。一例として、サーバ1、1A又は1Bにおいて、取得部12及び出力部15はWebサーバ及びアプリケーションサーバ、機械学習部13及び算出部14、14A又は14Bはアプリケーションサーバ、メモリ部11はDBサーバ、等であってもよい。この場合、Webサーバ、アプリケーションサーバ及びDBサーバが、ネットワークを介して互いに連携することにより、サーバ1、1A又は1Bとしての処理機能を実現してもよい。
【0272】
さらに、例えば、
図16~
図21を参照して説明した、アテンション構造160を含むNNに対する要素削除処理、ゼロパディング処理及びヘッド削除処理を適用する手法は、
図4、
図24又は
図28に示すサーバ1、1A又は1Bによるプルーニング処理への適用に限定されるものではない。例えば、要素削除処理、ゼロパディング処理及びヘッド削除処理を適用する手法は、NNのレイヤごとにプルーニング率を決定する種々の手法に適用されてもよい。
【0273】
〔3〕付記
以上の実施形態並びに第1及び第2変形例に関し、さらに以下の付記を開示する。
【0274】
(付記1)
アテンション構造を備えるニューラルネットワークの訓練済機械学習モデルにおける、前記アテンション構造の入力テンソルに対する演算処理結果としてQueryを出力するQ層及びKeyを出力するK層の各々の要素について、
第1削減割合に基づく要素の削減後のQ層からのテンソルQTに含まれる1以上の要素と、第2削減割合に基づく要素の削減後のK層からのテンソルKTに含まれる1以上の要素とのうち、同一のインデックスを持つ要素どうしのみを前記テンソルQT及び前記テンソルKTに残すように、前記テンソルQT及び前記テンソルKTのうちの少なくとも一方に含まれる要素を削除する、
処理をコンピュータに実行させる、機械学習プログラム。
【0275】
(付記2)
前記削除する処理は、
前記テンソルQTに含まれるゼロ以外の要素の第1インデックスと、前記テンソルKTに含まれるゼロ以外の要素の第2インデックスとの論理積を算出し、
前記論理積に含まれないインデックスの要素を、前記テンソルQT又は前記テンソルKTから削除する、処理を含む、
付記1に記載の機械学習プログラム。
【0276】
(付記3)
前記アテンション構造がマルチヘッドアテンション構造であって、前記Q層と、前記K層と、前記アテンション構造において前記入力テンソルに対する演算処理結果としてValueを出力するV層と、の各々が複数のヘッドのそれぞれのテンソルを出力する場合、前記V層の後段に、テンソルの1以上の要素のパディングを行なうパディング層を挿入し、
第3削減割合に基づく要素の削減後のV層からのテンソルVTのヘッド間で要素数が同一の数となるように、前記パディング層によるパディングを行なう、
処理を前記コンピュータに実行させる、付記1又は付記2に記載の機械学習プログラム。
【0277】
(付記4)
前記テンソルQTと、前記テンソルKTと、前記テンソルVTと、のそれぞれのヘッドのうち、全ての要素がゼロであるヘッドと同一のヘッドインデックスを持つヘッドを、前記テンソルQT、前記テンソルKT及び前記テンソルVTから削除する、
処理を前記コンピュータに実行させる、付記3に記載の機械学習プログラム。
【0278】
(付記5)
前記アテンション構造は、前記要素の削除及び前記ヘッドの削除後のテンソルQTと前記要素の削除及び前記ヘッドの削除後のテンソルKTとの行列積を正規化して得た行列積と、前記ヘッドの削除及び前記パディング後のテンソルVTと、に基づく行列積を出力する、
付記4に記載の機械学習プログラム。
【0279】
(付記6)
前記ニューラルネットワークは、前記アテンション構造から出力される前記行列積の要素を結合した結果を出力する、
付記5に記載の機械学習プログラム。
【0280】
(付記7)
前記パディング層は、入力されるテンソルにゼロ行列を挿入するゼロパディングを行なう層である、
付記3~付記6のいずれか1項に記載の機械学習プログラム。
【0281】
(付記8)
アテンション構造を備えるニューラルネットワークの訓練済機械学習モデルにおける、前記アテンション構造の入力テンソルに対する演算処理結果としてQueryを出力するQ層及びKeyを出力するK層の各々の要素について、
第1削減割合に基づく要素の削減後のQ層からのテンソルQTに含まれる1以上の要素と、第2削減割合に基づく要素の削減後のK層からのテンソルKTに含まれる1以上の要素とのうち、同一のインデックスを持つ要素どうしのみを前記テンソルQT及び前記テンソルKTに残すように、前記テンソルQT及び前記テンソルKTのうちの少なくとも一方に含まれる要素を削除する、
処理をコンピュータが実行する、機械学習方法。
【0282】
(付記9)
前記削除する処理は、
前記テンソルQTに含まれるゼロ以外の要素の第1インデックスと、前記テンソルKTに含まれるゼロ以外の要素の第2インデックスとの論理積を算出し、
前記論理積に含まれないインデックスの要素を、前記テンソルQT又は前記テンソルKTから削除する、処理を含む、
付記8に記載の機械学習方法。
【0283】
(付記10)
前記アテンション構造がマルチヘッドアテンション構造であって、前記Q層と、前記K層と、前記アテンション構造において前記入力テンソルに対する演算処理結果としてValueを出力するV層と、の各々が複数のヘッドのそれぞれのテンソルを出力する場合、前記V層の後段に、テンソルの1以上の要素のパディングを行なうパディング層を挿入し、
第3削減割合に基づく要素の削減後のV層からのテンソルVTのヘッド間で要素数が同一の数となるように、前記パディング層によるパディングを行なう、
処理を前記コンピュータが実行する、付記8又は付記9に記載の機械学習方法。
【0284】
(付記11)
前記テンソルQTと、前記テンソルKTと、前記テンソルVTと、のそれぞれのヘッドのうち、全ての要素がゼロであるヘッドと同一のヘッドインデックスを持つヘッドを、前記テンソルQT、前記テンソルKT及び前記テンソルVTから削除する、
処理を前記コンピュータが実行する、付記10に記載の機械学習方法。
【0285】
(付記12)
前記アテンション構造は、前記要素の削除及び前記ヘッドの削除後のテンソルQTと前記要素の削除及び前記ヘッドの削除後のテンソルKTとの行列積を正規化して得た行列積と、前記ヘッドの削除及び前記パディング後のテンソルVTと、に基づく行列積を出力する、
付記11に記載の機械学習方法。
【0286】
(付記13)
前記ニューラルネットワークは、前記アテンション構造から出力される前記行列積の要素を結合した結果を出力する、
付記12に記載の機械学習方法。
【0287】
(付記14)
前記パディング層は、入力されるテンソルにゼロ行列を挿入するゼロパディングを行なう層である、
付記10~付記13のいずれか1項に記載の機械学習方法。
【0288】
(付記15)
アテンション構造を備えるニューラルネットワークの訓練済機械学習モデルにおける、前記アテンション構造の入力テンソルに対する演算処理結果としてQueryを出力するQ層及びKeyを出力するK層の各々の要素について、
第1削減割合に基づく要素の削減後のQ層からのテンソルQTに含まれる1以上の要素と、第2削減割合に基づく要素の削減後のK層からのテンソルKTに含まれる1以上の要素とのうち、同一のインデックスを持つ要素どうしのみを前記テンソルQT及び前記テンソルKTに残すように、前記テンソルQT及び前記テンソルKTのうちの少なくとも一方に含まれる要素を削除する、
制御部を備える、情報処理装置。
【0289】
(付記16)
前記制御部は、前記削除する処理において、
前記テンソルQTに含まれるゼロ以外の要素の第1インデックスと、前記テンソルKTに含まれるゼロ以外の要素の第2インデックスとの論理積を算出し、
前記論理積に含まれないインデックスの要素を、前記テンソルQT又は前記テンソルKTから削除する、
付記15に記載の情報処理装置。
【0290】
(付記17)
前記制御部は、
前記アテンション構造がマルチヘッドアテンション構造であって、前記Q層と、前記K層と、前記アテンション構造において前記入力テンソルに対する演算処理結果としてValueを出力するV層と、の各々が複数のヘッドのそれぞれのテンソルを出力する場合、前記V層の後段に、テンソルの1以上の要素のパディングを行なうパディング層を挿入し、
第3削減割合に基づく要素の削減後のV層からのテンソルVTのヘッド間で要素数が同一の数となるように、前記パディング層によるパディングを行なう、
付記15又は付記16に記載の情報処理装置。
【0291】
(付記18)
前記制御部は、
前記テンソルQTと、前記テンソルKTと、前記テンソルVTと、のそれぞれのヘッドのうち、全ての要素がゼロであるヘッドと同一のヘッドインデックスを持つヘッドを、前記テンソルQT、前記テンソルKT及び前記テンソルVTから削除する、
付記17に記載の情報処理装置。
【0292】
(付記19)
前記アテンション構造は、前記要素の削除及び前記ヘッドの削除後のテンソルQTと前記要素の削除及び前記ヘッドの削除後のテンソルKTとの行列積を正規化して得た行列積と、前記ヘッドの削除及び前記パディング後のテンソルVTと、に基づく行列積を出力する、
付記18に記載の情報処理装置。
【0293】
(付記20)
前記ニューラルネットワークは、前記アテンション構造から出力される前記行列積の要素を結合した結果を出力する、
付記19に記載の情報処理装置。
【符号の説明】
【0294】
1、1A、1B サーバ
10 コンピュータ
11 メモリ部
11a 未学習モデル
11b 機械学習用データ
11c 機械学習済モデル
11d プルーニング率
11e 軽量化済モデル
12 取得部
13 機械学習部
14、14A、14B プルーニング率算出部(算出部)
14a、14a’、14a” 閾値算出部
14b、14b’、14b” 決定部
15 出力部
16 制御部