JP2022045615A - 演算装置及び演算方法 - Google Patents
演算装置及び演算方法 Download PDFInfo
- Publication number
- JP2022045615A JP2022045615A JP2020151296A JP2020151296A JP2022045615A JP 2022045615 A JP2022045615 A JP 2022045615A JP 2020151296 A JP2020151296 A JP 2020151296A JP 2020151296 A JP2020151296 A JP 2020151296A JP 2022045615 A JP2022045615 A JP 2022045615A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- parameter
- update information
- model
- learning
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Feedback Control In General (AREA)
Abstract
【課題】機械学習を効率的に行うことが可能な演算装置及び演算方法を提供する。【解決手段】一つの実施形態によれば、演算装置は、不揮発性の第1メモリと、第2メモリと、コントローラとを備える。第1メモリは、機械学習の対象となるモデルを記憶する。第2メモリは、前記第1メモリより記憶容量が小さい。コントローラは、前記第1メモリに記憶された前記モデルに学習データを入力して得られた損失値に基づき前記モデルの第1パラメータを更新する学習処理を実行し、更新前後の前記第1パラメータの差分を示す累積更新情報を前記第2メモリに記憶する。また、コントローラは、前記第1メモリに記憶された前記モデルから読み出した前記第1パラメータに前記第2メモリに記憶された前記累積更新情報を反映した第2パラメータを用いて前記学習処理を実行し、当該第2パラメータを更新した第3パラメータと前記第1パラメータとの差分を前記累積更新情報として前記第2メモリに記憶する。【選択図】図4
Description
本実施形態は、演算装置及び演算方法に関する。
従来、ディープラーニング等の機械学習によりモデルの作成が行われている。機械学習を行う際には、モデルを保存しておくためのメモリが必要となる。また、機械学習をより高速に行うため、モデルの保存用にDRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等の高速なメモリを使用することが行われている。
近年、モデルの大規模化が進んでおり、それに伴い保存用メモリの大容量化が求められる。そのため、大容量化が容易なNAND型のフラッシュメモリをモデルの保存用として利用することが想定される。しかし、機械学習によってパラメータが更新される度にデータの書き換えが発生するため、NAND型のフラッシュメモリのエンデュランス(書き換え回数)を考慮する必要がある。
一つの実施形態は、機械学習を効率的に行うことが可能な演算装置及び演算方法を提供することを目的とする。
一つの実施形態によれば、演算装置は、不揮発性の第1メモリと、第2メモリと、コントローラとを備える。第1メモリは、機械学習の対象となるモデルを記憶する。第2メモリは、前記第1メモリより記憶容量が小さい。コントローラは、前記第1メモリに記憶された前記モデルに学習データを入力して得られた損失値に基づき前記モデルの第1パラメータを更新する学習処理を実行し、更新前後の前記第1パラメータの差分を示す累積更新情報を前記第2メモリに記憶する。また、コントローラは、前記第1メモリに記憶された前記モデルから読み出した前記第1パラメータに前記第2メモリに記憶された前記累積更新情報を反映した第2パラメータを用いて前記学習処理を実行し、当該第2パラメータを更新した第3パラメータと前記第1パラメータとの差分を前記累積更新情報として前記第2メモリに記憶する。
以下に添付図面を参照して、実施形態に演算装置及び演算方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
図1は、実施形態に係る演算装置1を含んだ学習システムの構成の一例を示す模式的な図である。学習システムは、演算装置1とホスト5とを有する。演算装置1は、ホスト5と接続可能に構成されている。
ここで、ホスト5は、例えばパーソナルコンピュータやサーバ等の情報処理装置である。ホスト5は、CPU(Central Processing Unit)等のプロセッサ(図示せず)の他、記憶装置51を備える。
記憶装置51は、例えばHDD(Hard Disk Drive)等で実現され、多数の学習データ51aを記憶する。学習データ51aは、後述するモデル11を機械学習(以下単に学習ともいう)するためのデータセットである。学習データ51aは、例えば、モデル11に入力する各種の入力データと、当該入力データに対応して出力される出力データと比較するための教師データとを含む。なお、学習の対象となる分野や事象は特に問わないものとする。
演算装置1は、第1メモリ10と、第2メモリ20と、コントローラ30とを備える。第1メモリ10、第2メモリ20、及びコントローラ30は、バス等により電気的に接続される。
第1メモリ10は、例えばNAND型のフラッシュメモリ(以下、NANDメモリとも称する)や、NANDメモリを備えるSSD(Solid State Drive)等の不揮発性のメモリで構成され、学習の対象となるモデル11を記憶する。モデル11は、少なくとも1つの隠れ層(中間層)を有する多層パーセプトロン(Multi-Layer Perceptron:MLP)等のニューラルネットワークの構成を有している(図2参照)。
第2メモリ20は、例えばDRAMやSRAM等のメモリで構成される。本実施形態では、第2メモリ20は、モデル11を学習する際の作業メモリとして使用される。なお、本実施形態では、第2メモリ20の記憶容量は、第1メモリ10よりも小さいものとなっている。
コントローラ30は、CPU31と、ROM32と、RAM33と、HOSTI/F34と、第1メモリI/F35と、第2メモリI/F36とを有する。これらの各部は、例えばバス等を介して、互いに通信可能に接続される。
CPU31は、コントローラ30及び演算装置1を制御するプロセッサの一例である。CPU31は、MPU(Micro Processing Unit)、GPU(Graphic Processing Unit)、FPGA(field-programmable gate array)、又はASIC(application specific integrated circuit)等であってもよい。
ROM32は、各種プログラムを記憶する。RAM33は、バッファ、あるいはCPU31のワークエリアとして使用されるメモリである。CPU31は、ROM32に記憶されRAM33に展開されたプログラムに従って動作することによって、各種の処理を実行する。
HOSTI/F34は、CPU31による制御の下で、ホスト5との間のデータ転送を実行する。第1メモリI/F35は、CPU31による制御の下で、第1メモリ10との間のデータ転送を実行する。第2メモリI/F36は、CPU31による制御の下で、第2メモリ20との間のデータ転送を実行する。
上述の構成において、演算装置1(具体的にはコントローラ30)は、学習データ51aを用いることで、第1メモリ10に記憶されたモデル11を学習する学習処理を実行する。具体的には、コントローラ30は、第1メモリ10に記憶されたモデル11からパラメータを読み出し、そのモデル11に学習データ51aを入力して得られた出力値と正解値(教師データ)との相違度を表す損失値に基づいて、パラメータを更新する学習処理を実行する。ここで、モデル11は、例えば図2に示すようなニューラルネットワークによって構成される。
図2は、第1メモリ10が記憶するモデル11の構成を模式的に示す図である。図2に示すように、モデル11は、入力層111、中間層(隠れ層)112、及び出力層113を含むニューラルネットワークで構成される。ここでは、入力層111~出力層113の層数がL層(但し、L≧3)であるとしている。
各層は複数のノードNによって構成される。また、層と層との間はノードN間の結合によって接続され、その接続の強さを示す重みがパラメータWによって規定される。例えば、パラメータWは層毎に多次元配列で表現される。なお、第1メモリ10に記憶されたばかりの初期状態のモデル11では、パラメータWはランダムな値(乱数)となっている。後述する学習処理では、勾配降下法等の手法を用いることでパラメータWの値を調整するための演算が行われる。
ところで、ディープラーニングによって生成されるモデル11ではパラメータWの数が膨大となるため、モデル11を記憶する記憶容量も大容量なものが必要となる。そのため、本実施形態では、第1メモリ10の記憶容量を、第2メモリ20よりも大容量なものとしている。かかる構成とすることで、第1メモリ10は、ディープラーニング等によって生成される大規模なモデルを記憶することが可能となっている。
一方、本実施形態では、第2メモリ20は、モデル11を学習する際の作業メモリとして使用される。具体的には、第2メモリ20は、第1メモリ10から読み出されたパラメータWと、更新後のパラメータWとの差分値を示す情報(以下、累積更新情報ともいう)を記憶する。
なお、図1では、第2メモリ20とコントローラ30とを別体としたが、コントローラ30が第2メモリ20を内蔵する形態としてもよい。また、ホスト5が演算装置1を内蔵する形態としてもよい。
次に、コントローラ30が有する機能的な構成について説明する。図3は、実施形態に係るコントローラ30の機能的な構成の一例を示す模式的な図である。
図3に示すように、コントローラ30は、学習処理部311と、圧縮伸張部312と、更新部313とを備える。学習処理部311、圧縮伸張部312、及び更新部313のそれぞれの機能は、例えば、CPU31がROM32に記憶されたプログラムを実行することによって実現される。また、学習処理部311、圧縮伸張部312、及び更新部313のそれぞれの機能は、例えばCPU31とホスト5のプロセッサとの協働によって実現されてもよい。
学習処理部311は、ホスト5の記憶装置51に記憶された学習データ51aを用いて、第1メモリ10に記憶されたモデル11の学習処理を実行する。具体的には、学習処理部311は、第2メモリ20が記憶する累積更新情報を更新しながら、第1メモリ10に記憶されたモデル11のパラメータを調整する学習処理を実行する。なお、学習処理部311が行う学習処理の詳細については後述する。
圧縮伸張部312は、累積更新情報のデータ量を圧縮する圧縮処理と、圧縮された累積更新情報を伸張する伸張処理とを実行する。具体的には、圧縮伸張部312は、学習処理部311と協働することで、第2メモリ20に累積更新情報が記憶される際に、当該累積更新情報のデータ量を圧縮して第2メモリ20に記憶する。また、圧縮伸張部312は、学習処理部311や更新部313と協働することで、第2メモリ20から累積更新情報が読み出される際に、累積更新情報を伸張して出力する。
圧縮方法は、特に問わず公知の技術を用いることが可能である。例えば、圧縮伸張部312は、ハフマン符号化等の可逆圧縮方法を用いて累積更新情報を圧縮してもよい。この場合、圧縮伸張部312は、圧縮方法に対応する伸張方法を用いて累積更新情報の伸張を行うものとする。
また、圧縮方法は、非可逆の圧縮方法であってもよい。例えば、圧縮伸張部312は、学習処理部311と協働することで、累積更新情報で表される差分値のうち、重要度の低い差分値をゼロ等に無効化するプルーニングを行ってもよい。この場合、圧縮伸張部312は、累積更新情報によって表される差分値の絶対値が閾値以上となるもの残し、残りをゼロ等とする無効化処理を行ってもよい。また、例えば、圧縮伸張部312は、累積更新情報によって表される差分値の絶対値が小さいものから順に、所定個数分や所定の割合分の差分値を無効化する処理を行ってもよい。そして、圧縮伸張部312は、無効化処理を施した累積更新情報を圧縮行格納方式(Compressed Sparse Row)等を用いて圧縮することで、累積更新情報のデータ量を圧縮する。
非可逆圧縮の他の例として、累積更新情報で表される差分値を表現するビット数を減らす量子化を行うことで、累積更新情報のデータ量を圧縮してもよい。例えば、累積更新情報が単精度浮動小数(32bit)で表される場合、圧縮伸張部312は、当該累積更新情報を8bitの整数等で表すことで、累積更新情報のデータ量を圧縮する。
このように、演算装置1では、累積更新情報のデータ量を圧縮した状態で第2メモリ20に記憶することができるため、第2メモリ20の記憶容量を有効に使用することができる。これにより、演算装置1では、多数の累積更新情報を第2メモリ20に記憶することができるため、パラメータWの数が膨大となるディープラーニング等のモデル11に対応することができる。
なお、上述した非可逆圧縮の例であるプルーニングを用いて累積更新情報を圧縮した場合、圧縮伸張部312は、圧縮行格納方式等で圧縮方式に応じた伸張方法で累積更新情報の伸張処理を実行する。また、上述した非可逆圧縮の例である量子化を用いて累積更新情報を圧縮した場合、圧縮伸張部312は、元のビット数に戻すための伸張処理を実行する。例えば、圧縮伸張部312は、8bitの整数に圧縮した累積更新情報のビット数を、単精度浮動小数に変換(キャスト)するための伸張処理を実行する。また、プルーニング及び量子化の何れか又は両方を用いて圧縮した後、上述したハフマン符号化等の可逆圧縮で圧縮する形態としてもよい。この場合、圧縮伸張部312は、累積更新情報に施した可逆圧縮を伸張する伸張処理をあわせて実行することになる。
更新部313は、第2メモリ20に記憶された更新情報を第1メモリ10に記憶されたモデル11に反映することで、モデル11が記憶するパラメータWを更新する更新処理を実行する。具体的には、更新部313は、学習処理部311と協働することで、モデル11のパラメータWを所定のタイミングで更新する。
次に、図4を参照して、上述した学習処理部311、圧縮伸張部312、及び更新部313の動作について説明する。図4は、コントローラ30の動作を説明するための図である。図4では、学習処理に伴うデータの流れを模式的に示している。
まず、学習処理部311は、ホスト5の記憶装置51から読み出した学習データ51aを第1メモリ10に記憶されたモデル11に入力し、モデル11の出力値と正解値との差異を算出する。これにより、学習処理部311は、現在のパラメータWでの損失値(予測精度)を評価するフォワード処理を実行する。学習処理部311は、フォワード処理で得られた評価結果に基づき、モデル11の各層のパラメータWを出力層113側から入力層111側にかけて順次更新するバックワード処理を開始する。
バックワード処理では、学習処理部311は、第1メモリ10に記憶されたモデル11から学習処理の対象となる層(以下、対象層ともいう)を選択し、対象層に係る第1パラメータW1を読み出す。具体的には、学習処理部311は、出力層113から入力層111にかけて層毎に対象層を選択する。
続いて、学習処理部311は、対象層に対応する累積更新情報dW2が第2メモリ20に記憶されている場合、該当する累積更新情報dW2を第2メモリ20から読み出す。累積更新情報dW2については後述する。ここで、圧縮伸張部312は、第2メモリ20から累積更新情報dW2が読み出される際に、累積更新情報dW2に伸張処理A21を施す。
次いで、学習処理部311は、下記式(1)に基づき、第1メモリ10から読み出した第1パラメータW1に、第2メモリ20から読み出した累積更新情報dW2を反映する加算処理A11を実行することで、第2パラメータW2を導出する。
W2=W1+dW2 …(1)
W2=W1+dW2 …(1)
ここで、第2パラメータW2は、後述するように、これまでの学習処理の結果(パラメータ更新結果)を反映した最新のパラメータWを表すものとなる。なお、累積更新情報dW2が第2メモリ20に記憶されていない場合、つまり対象層についての学習処理が初回の場合には、累積更新情報dW2は加算されないため、第2パラメータW2=第1パラメータW1となる。
続いて、学習処理部311は、勾配降下法等のアルゴリズムを用いることで、第2パラメータW2から、損失値を小さくする勾配gWを算出する学習処理A12を実行する。例えば、勾配gWを算出する評価関数をfとすると、学習処理部311は、下記式(2)に示すように、評価関数fに第2パラメータW2を入力することで、第2パラメータW2についての勾配gWを算出する。なお、評価関数fは特に問わず、機械学習に係る公知の技術を用いることが可能である。
gW=f(W2) …(2)
gW=f(W2) …(2)
続いて、学習処理部311は、第2パラメータW2と勾配gWとに基づき、第2パラメータW2を更新した第3パラメータW3を算出する。具体的には、学習処理部311は、下記式(3)に基づいて第3パラメータW3を算出する。ここで、γは、学習率であり、例えば1以下の定数が設定される。
W3=W2-γ×gW …(3)
W3=W2-γ×gW …(3)
次いで、学習処理部311は、下記式(4)により、第1パラメータW1と第3パラメータW3との差分値を、新たな累積更新情報dW2newとして算出する。ここで、累積更新情報dW2newは、下記式(4)を式(1)、(3)に基づき変形することで、式(4)’の関係式で表すことができる。
dW2new=W3-W1 …(4)
=dW2-γ×gW …(4)’
dW2new=W3-W1 …(4)
=dW2-γ×gW …(4)’
次いで、学習処理部311は、算出した累積更新情報dW2newを、対象層を識別する情報と関連付けて第2メモリ20に記憶する。なお、圧縮伸張部312は、第2メモリ20に累積更新情報dW2newが記憶される際に、当該累積更新情報dW2newに圧縮処理A22を施すものとする。そして、累積更新情報dW2newは、第2メモリ20において、累積更新情報dW2として記憶される。第2メモリ20において、同一の対象層に関連付けられた既存の累積更新情報dW2が存在する場合には、既存の累積更新情報dW2は累積更新情報dW2newで上書きされる。
学習処理部311は、モデル11の各層について上記のバックワード処理を所定回数実行する。そして、各層の学習処理が完了後、学習処理部311は、学習データ51aを切り替える等により、上記のフォワード処理とバックワード処理を繰り返す。すなわち、学習処理部311は、再び出力層113から対象層の選択を開始する。
この場合、第2メモリ20に対象層に対応する累積更新情報dW2が記憶されているため、学習処理部311は、第2メモリ20から該当する累積更新情報dW2を読み出す。次いで、学習処理部311は、上記式(1)に基づき、第1メモリ10から読み出した第1パラメータW1と、累積更新情報dW2とを加算することで、第2パラメータW2を算出する。
ここで、第2パラメータW2は、上記式(4)から明らかなように、対象層に対する前回の学習処理で算出した、更新後の第3パラメータW3と同値となる。つまり、第2パラメータW2は、これまでの学習処理の結果を反映した最新のパラメータを表すものとなる。そして、学習処理部311は、上記式(2)~(4)により、新たに算出した第3パラメータW3を用いて累積更新情報dW2newを算出し、累積更新情報dW2として第2メモリ20に記憶する。
学習処理部311は、上述した処理をモデル11の層毎に繰り返し実行することで、モデル11のパラメータWを第1メモリ10に維持(記憶)しながら、当該パラメータWを第2メモリ20を使用して更新する学習処理を実行する。したがって、本実施形態の演算装置1では、第1メモリ10としてNANDメモリやSSD等の書き換え回数に上限のある記憶メディアを使用した場合であっても、第1メモリ10の書き換え回数を抑制した状態でモデル11の学習処理を効率的に行うことができる。
また、更新部313は、学習処理の進行状況に応じて、第2メモリ20に記憶された累積更新情報dW2を、第1メモリ10に記憶されたモデル11のパラメータに反映する更新処理A31を実行する。具体的には、更新部313は、第2メモリ20に記憶された各層の累積更新情報dW2を、モデル11の対応する層の第1パラメータW1に反映(加算)する。また、更新部313は、モデル11の更新に伴い、第2メモリ20に記憶された累積更新情報dW2を無効化(例えばクリア)する。
これにより、第1メモリ10に記憶されたモデル11の各層の第1パラメータW1を最新の状態に更新することができる。なお、第2メモリ20から累積更新情報dW2が読み出される際には、圧縮伸張部312により、累積更新情報dW2の伸張処理A21が実行されるものとする。
更新部313が更新処理を実行するタイミングは任意に設定することが可能である。一例として、更新部313は、一つの学習データ51aについて、モデル11を構成する全ての層について上述した学習処理が完了したタイミングで更新処理を実行してもよい。
また、例えば、多数の学習データ51aを含むデータセットが、複数のサブセットに分割されているような場合、更新部313は、所定の個数のサブセットについて学習処理が完了したタイミングで更新処理を実行してもよいし、全てのサブセットについての学習処理が完了したタイミング(1エポックの処理が完了したタイミング)で更新処理を実行してもよいし、全てのサブセットについての学習処理が所定回数完了したタイミング(所定回数エポックの処理が完了したタイミング)で更新処理を実行してもよい。
例えば、学習データ51aとして用意された入力データと教師データとの組の総数が1億個であり、当該学習データ51aを10000個のサブセットに分割したとすると、1エポックの学習では、サブセット毎に10000回の処理が行われることになる。この場合、更新部313は、10000回の処理(すなわち1つのサブセットの処理)が行われる度に更新処理を実行してもよいし、所定数のサブセットの処理毎に更新処理を実行してもよい。
例えば、更新部313は、1エポックの処理が実行されたタイミングで更新処理を実行してもよい。更には、1度の学習処理で例えば上述した1エポックの学習データ51aを100回繰り返して処理するような場合、更新部313は、100エポックの処理が完了したタイミングで更新処理を実行してもよい。
また、更新処理のタイミングは、上記した学習データ51aの切り替えタイミングや、エポックの境界に限らないものとする。例えば、更新部313は、損失値の変化量や、実行時間(1時間毎等)等の任意の指標に基づいて更新処理を実行してもよい。一例として、更新部313は、損失値の変化量が微小を示す閾値範囲となった場合に更新処理を実行してもよい。
また、上記した更新処理のタイミングは組み合わせてもよい。例えば、1エポックの学習データ51aを100回繰り返して処理するような場合、更新部313は、1エポック毎に更新処理を行うとともに、損失値の変化量が閾値範囲となったことを条件に更新処理を実行してもよい。
以下、コントローラ30が行う学習処理の一例について説明する。図5は、コントローラ30が行う学習処理の一例を示すフローチャートである。なお、本処理では、学習データ51aのデータセットが複数のサブセットに区分されているものとする。また、第1メモリ10に記憶されたモデル11の層数は、図2に示したように、入力層111を含むvL層(但し、L≧3)のニューラルネットワークである例を説明する。
まず、学習処理部311は、学習処理を開始すると、処理の対象となる1つのサブセットに含まれた1つの学習データ51aを読み出す(S11)。次いで、学習処理部311は、S11で読み出した学習データ51aを第1メモリ10に記憶されたモデル11に入力し、現在のパラメータWでの損失値を評価するフォワード処理を実行する(S12)。
続いて、学習処理部311は、対象層を指定するためのインデックスiを「0」に設定して(S13)、S14~S22の処理を実行する。
まず、学習処理部311は、第1メモリ10に記憶されたモデル11から、対象層となるL-i層の第1パラメータW1を読み出す(S14)。また、学習処理部311は、第2メモリ20からL-i層に対応する累積更新情報dW2を読み出す(S15)。なお、圧縮伸張部312は、第2メモリ20から累積更新情報dW2が読み出される際に、当該累積更新情報dW2に対し伸張処理を施すものとする。
続いて、学習処理部311は、上記式(1)に基づき、S14で読み出した第1パラメータW1に、S15で読み出した累積更新情報dW2を加算することで、第2パラメータW2を算出する(S16)。次いで、学習処理部311は、上記式(2)の評価関数に第2パラメータW2を入力し、勾配gWを算出する(S17)。
続いて、学習処理部311は、上記式(3)に基づき、第2パラメータW2と勾配gWとから更新後の第3パラメータW3を算出する(S18)。次いで、学習処理部311は、上記式(4)に基づき、第3パラメータW3と第1パラメータW1との差分値を、累積更新情報dW2newとして算出する(S19)。そして、学習処理部311は、算出した累積更新情報dW2newを新たな累積更新情報dW2として、L-i層を示す情報と対応付けて第2メモリ20に記憶して(S20)、S21に移行する。なお、圧縮伸張部312は、累積更新情報dW2が第2メモリ20に書き込まれる際に、当該累積更新情報dW2に圧縮処理を施すものとする。
続いて、学習処理部311は、インデックスiを1インクリメント(S21)した後、インデックスiの値がL-1に達したか、つまり入力層111に達したか否かを判定する(S22)。ここで、インデックスiの値がL-1に達していない場合(S22;No)、学習処理部311は、S14に処理を戻す。これにより、出力層113から入力層111までの全ての層に対し、S14~S22の処理がそれぞれ実行される。
一方、インデックスiの値がL-1に達したと判定した場合(S22;Yes)、更新部313は、更新処理を実行するタイミングか否かを判定する(S23)。
ここで、例えば、1エポック毎に更新処理を実行することが設定されている場合、更新部313は、更新処理を実行するタイミングと判定する(S23;Yes)。この場合、更新部313は、第2メモリ20に記憶された各層の累積更新情報dW2を、第1メモリ10に記憶されたモデル11に反映する更新処理を実行する(S24)。次いで、更新部313は、第2メモリ20に記憶された累積更新情報dW2を無効化(S25)した後、処理はS26に進む。なお、ここでも圧縮伸張部312は、第2メモリ20から累積更新情報dW2が読み出される際に、当該累積更新情報dW2に対し伸張処理を施すものとする。
また、例えば、損失値の変化量に応じて更新処理を実行することが設定されている等、当該変化量が更新処理の実行条件を満たさない場合、更新部313は、更新処理を実行するタイミングではないと判定し(S23;No)、S26に移行する。
続くS26では、学習処理部311は、全てのサブセットを処理したか否かを判定する(S26)。ここで、未処理のサブセットが存在する場合には(S26;No)、学習処理部311は、未処理のサブセットを1つ選択し(S27)、S11に処理を戻す。これにより、新たなサブセットに含まれる学習データ51aの各々に対し、S12~S25の処理がそれぞれ実行される。
また、全てのサブセットを処理した場合(S26;Yes)、つまり1エポック分の処理が完了した場合、処理はS28に進む。
ここで、学習処理部311は、学習処理を終了するか否かを判定する(S28)。例えば、100エポック分処理することが設定されている場合、学習処理部311は、100エポック分の処理が完了するまでこの処理を継続する(S28;No)。この場合、学習処理部311は、S11に処理を戻すことで、新たな学習データ51aの最初のデータセットに対して、再び一連する処理を開始する。一方、学習処理の終了条件を満たした場合には(S28;Yes)、学習処理部311はこの処理を終了する。
上述したように、本実施形態に係る演算装置1は、第2メモリ20に記憶された累積更新情報dW2を第1メモリ10のモデル11に反映する更新処理を、第1パラメータW1を更新する度に実行するのではなく、例えば1エポック等のタイミングで実行する。したがって、第1メモリ10に記憶されたモデル11の更新回数は、第1パラメータW1の更新毎にモデル11を更新する手法と比較して、低く抑えられることになる。但し、累積更新情報dW2は、上述したように、これまでの学習処理の結果が累積されたものであるため、モデル11の更新回数を減らしてもモデル11の精度を高く維持することができる。
ここで、図6を参照して、モデル11の更新回数と精度との関係について説明する。図6は、実施形態に係るモデル11の更新回数と精度との関係を説明するための図である。
なお、図6は、画像認識用の機械学習を行った場合のシミュレーション結果を基に、更新回数と認識精度との関係を模式的に示したものである。ここで、認識精度は、画像に表された対象を正しく認識できたことを正解とする認識処理を、所定の画像枚数分行った際の正解率を意味する。また、図6では、モデル11と対比するため、第1パラメータW1の更新毎にモデル11を更新する手法で生成されたモデル(以下、参考モデルともいう)の更新回数と認識精度とをあわせて図示している。
図6において、横軸はモデル11と参考モデルとの更新回数の相対値(比)を表すものであり、縦軸は認識精度(%)を表すものである。また、図6において、実線で表すグラフG1は、実施形態に係るモデル11の更新回数と認識精度との関係を示すものであり、破線で表すグラフG2は、参考モデルの更新回数と認識精度との関係を示している。なお、図6では、認識精度が同値となる、モデル11及び参考モデルの各々の更新回数を「1」としている。
実施形態に係るモデル11では、更新回数を「1」の状態から「1/10」に減らした場合であっても、学習回数は更新回数と同数とはならず、次回の更新タイミングまでに行われた複数回分の学習処理の結果が累積更新情報dW2としてモデル11に反映される。そのため、グラフG1に示すように、モデル11を用いた場合の認識精度は、更新回数を「1/10」に減らした場合であっても、更新回数を「1」と同程度の認識精度を維持することができる。また、同様に、更新回数を「1/100」に減らした場合であっても、高い認識精度のまま維持することができる。
一方、参考モデルでは、更新回数を減らした場合、学習回数は更新回数と同数となるため、更新回数の減少数に応じて認識精度が低下することになる、そのため、グラフG2に示すように、参考モデルでは更新回数を「1/10」に減らすと認識精度が大きく劣化することになる。
このように、本実施形態に係る演算装置1は、モデル11の更新回数、すなわち第1メモリ10の書き換え回数を抑えた状態であっても、精度の高いモデル11を生成することができる。したがって、演算装置1は、モデル11の学習処理を効率よく実行することができる。
以上のように、本実施形態に係る演算装置1は、第1メモリ10に記憶されたモデル11に学習データ51aを入力して得られた損失値に基づいて第1パラメータW1を更新する学習処理を実行し、更新前後の第1パラメータW1の差分を示す累積更新情報dW2を第2メモリ20に記憶する。また、演算装置1は、第1メモリ10に記憶されたモデル11から読み出した第1パラメータW1に第2メモリ20に記憶された累積更新情報dW2を反映した第2パラメータを用いて前記学習処理を実行し、当該第2パラメータW2を更新した第3パラメータW3と第1パラメータW1との差分を累積更新情報として前記第2メモリに記憶する。
この構成によれば、第1メモリ10に記憶されたモデル11の第1パラメータW1を維持した状態で、当該第1パラメータW1を更新する学習処理を、第2メモリ20を用いて実行することができる。これにより、実施形態に係る演算装置1では、第1メモリ10としてNANDメモリやSSD等の書き換え回数に上限のある記憶メディアを使用した場合であっても、第1メモリ10の書き換え回数を抑制した状態で学習処理を行うことができる。したがって、実施形態に係る演算装置1及びこの演算装置1による演算方法によれば、学習を効率的に行うことができる。また、実施形態に係る技術によれば、ディープラーニング等のパラメータの数が膨大となるモデル11であっても、HDDに比べより高速にアクセス可能なNANDメモリやSSD等の記憶メディアを用いてモデル11の学習を行うことができるため、学習の高速化を図ることができる。
以上説明した実施形態によれば、機械学習を効率的に行うことができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 演算装置、5 ホスト、10 第1メモリ、20 第2メモリ、30 コントローラ、31 CPU、32 ROM、33 RAM、34 HOSTI/F、35 第1メモリI/F、36 第2メモリI/F、311 学習処理部、312 圧縮伸張部、313 更新部。
Claims (12)
- 機械学習の対象となるモデルを記憶する不揮発性の第1メモリと、
前記第1メモリよりも記憶容量が小さい第2メモリと、
前記第1メモリに記憶された前記モデルに学習データを入力して得られた損失値に基づき前記モデルの第1パラメータを更新する学習処理を実行し、更新前後の前記第1パラメータの差分を示す累積更新情報を前記第2メモリに記憶するコントローラと、
を備え、
前記コントローラは、前記第1メモリに記憶された前記モデルから読み出した前記第1パラメータに前記第2メモリに記憶された前記累積更新情報を反映した第2パラメータを用いて前記学習処理を実行し、当該第2パラメータを更新した第3パラメータと前記第1パラメータとの差分を前記累積更新情報として前記第2メモリに記憶する演算装置。 - 前記コントローラは、前記モデルを構成するニューラルネットワークの層毎に前記第1パラメータを読み出して前記学習処理を実行し、前記層毎に前記累積更新情報を前記第2メモリに記憶する、請求項1に記載の演算装置。
- 前記コントローラは、前記累積更新情報のデータ量を圧縮して前記第2メモリに記憶する、請求項1又は2に記載の演算装置。
- 前記コントローラは、前記累積更新情報をプルーニング又は量子化してデータ量を圧縮する、請求項3に記載の演算装置。
- 前記コントローラは、前記累積更新情報にデータ量を可逆圧縮し、前記累積更新情報を前記第2メモリから読み出す際に伸張する、請求項3又は4に記載の演算装置。
- 前記コントローラは、前記学習処理の進行状況に応じて、前記第2メモリに記憶された前記累積更新情報を、前記第1メモリに記憶された前記モデルに反映する更新処理を実行する、請求項1に記載の演算装置。
- 前記コントローラは、前記モデルを構成するニューラルネットワークの全ての層の学習処理が完了したタイミングで前記更新処理を実行する、請求項6に記載の演算装置。
- 前記コントローラは、所定のエポック数毎に前記更新処理を実行する、請求項6に記載の演算装置。
- 前記コントローラは、前記損失値の変化量に応じて前記更新処理を実行する、請求項6に記載の演算装置。
- 前記第1メモリは、NAND型フラッシュメモリで構成される、請求項1に記載の演算装置。
- 前記第2メモリは、DRAM又はSRAMで構成される、請求項1に記載の演算装置。
- 機械学習の対象となるモデルを記憶する不揮発性の第1メモリと、前記第1メモリよりも記憶容量が小さい第2メモリと、を備える演算装置で実行される演算方法であって、
前記第1メモリに記憶された前記モデルに学習データを入力して得られた損失値に基づいて前記モデルの第1パラメータを更新する学習処理を実行し、
更新前後の前記第1パラメータの差分を示す累積更新情報を前記第2メモリに記憶し、
前記モデルから読み出した前記第1パラメータに前記第2メモリに記憶された前記累積更新情報を反映した第2パラメータを用いて前記学習処理を実行し、
前記第2パラメータを更新した第3パラメータと、前記第1パラメータとの差分を前記累積更新情報として前記第2メモリに記憶する、演算方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020151296A JP2022045615A (ja) | 2020-09-09 | 2020-09-09 | 演算装置及び演算方法 |
US17/195,865 US20220076122A1 (en) | 2020-09-09 | 2021-03-09 | Arithmetic apparatus and arithmetic method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020151296A JP2022045615A (ja) | 2020-09-09 | 2020-09-09 | 演算装置及び演算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022045615A true JP2022045615A (ja) | 2022-03-22 |
Family
ID=80469788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020151296A Pending JP2022045615A (ja) | 2020-09-09 | 2020-09-09 | 演算装置及び演算方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220076122A1 (ja) |
JP (1) | JP2022045615A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11037330B2 (en) * | 2017-04-08 | 2021-06-15 | Intel Corporation | Low rank matrix compression |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150324686A1 (en) * | 2014-05-12 | 2015-11-12 | Qualcomm Incorporated | Distributed model learning |
JP2018156573A (ja) * | 2017-03-21 | 2018-10-04 | 東芝メモリ株式会社 | メモリ装置および情報処理システム |
US11615340B2 (en) * | 2019-05-23 | 2023-03-28 | EMC IP Holding Company LLC | Methods and apparatus for application prediction through machine learning based analysis of IO patterns |
-
2020
- 2020-09-09 JP JP2020151296A patent/JP2022045615A/ja active Pending
-
2021
- 2021-03-09 US US17/195,865 patent/US20220076122A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220076122A1 (en) | 2022-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6794593B2 (ja) | 多階層ニューラルネットワークモデルを最適化して適用する方法及び装置、及び記憶媒体 | |
CN111652368B (zh) | 一种数据处理方法及相关产品 | |
JP6998968B2 (ja) | ディープニューラルネットワークの実行方法、実行装置、学習方法、学習装置及びプログラム | |
US10938413B2 (en) | Processing core data compression and storage system | |
JP7372347B2 (ja) | データ圧縮方法およびコンピューティングデバイス | |
US11604584B2 (en) | Storage system | |
EP3738080A1 (en) | Learning compressible features | |
JP2020149156A (ja) | データ圧縮装置、データ処理装置、データ圧縮方法、プログラム、及び学習済みモデル | |
JP2023505647A (ja) | ニューラルネットワークモデルの圧縮 | |
US20220076122A1 (en) | Arithmetic apparatus and arithmetic method | |
US10891758B2 (en) | Geometry encoder | |
US10318891B1 (en) | Geometry encoder | |
JP2022510944A (ja) | 非可逆復元を伴う非可逆有意圧縮 | |
CN116306879A (zh) | 数据处理方法、装置、电子设备以及存储介质 | |
GB2571818A (en) | Selecting encoding options | |
JP7438544B2 (ja) | ニューラルネットワーク処理装置、コンピュータプログラム、ニューラルネットワーク製造方法、ニューラルネットワークデータの製造方法、ニューラルネットワーク利用装置、及びニューラルネットワーク小規模化方法 | |
KR102454420B1 (ko) | 초해상화를 수행하는 인공 신경망의 가중치를 처리하는 방법 및 장치 | |
Tang et al. | Training Compact DNNs with ℓ1/2 Regularization | |
KR20220100030A (ko) | 패턴 기반 캐시 블록 압축 | |
US11899934B2 (en) | Compression device, compression and decompression device, and memory system | |
US20230087752A1 (en) | Information processing method | |
JP2023178733A (ja) | 学習モデル量子化プログラム及び方法 | |
Lee et al. | Development of Parameter Bit Operation Framework for Deep Neural Networks | |
KR20230000686A (ko) | 전자 장치 및 전자 장치의 제어 방법 | |
CN112016672A (zh) | 基于灵敏度剪枝及量化压缩神经网络的方法与介质 |