(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-10
(45)【発行日】2025-03-18
(54)【発明の名称】データ処理方法、データ処理装置、データ処理システムおよびデータ処理プログラム
(51)【国際特許分類】
G06N 3/063 20230101AFI20250311BHJP
G06F 12/06 20060101ALI20250311BHJP
【FI】
G06N3/063
G06F12/06 522A
(21)【出願番号】P 2020142827
(22)【出願日】2020-08-26
【審査請求日】2023-08-24
(73)【特許権者】
【識別番号】515130201
【氏名又は名称】株式会社Preferred Networks
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】渡部 源太郎
【審査官】佐藤 直樹
(56)【参考文献】
【文献】国際公開第2020/076392(WO,A1)
【文献】特開2017-162342(JP,A)
【文献】国際公開第2019/182059(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/063
G06F 12/06
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワーク
のフォワード処理の少なくとも1つの層の演算コストに関する値と前記少なくとも1つの層の中間データのサイズに関する値とに基づいて、前記中間データを1以上の第1メモリに保存するかどうかを決定し、
前記中間データは前記少なくとも1つの層から出力され、前記1以上の第1メモリに保存された前記中間データを、前記フォワード処理に続くバックワード処理を行う際に使用し、
前記1以上の第1メモリに保存されなかった前記中間データを、前記バックワード処理を行う際に、前記フォワード処理の少なくとも一部を再計算することにより取得する、
1以上のコンピュータが実行するデータ処理方法。
【請求項2】
前記演算コストに関する値と前記中間データのサイズに関する値とに基づく指標に基づいて前記中間データを前記1以上の第1メモリに保存するかどうかを決定する、
請求項1に記載のデータ処理方法。
【請求項3】
前記演算コストに関する値を前記中間データのサイズに関する値で除することにより得られる値に基づいて前記中間データを前記1以上の第1メモリに保存するかどうかを決定する、
請求項1又は請求項2に記載のデータ処理方法。
【請求項4】
ニューラルネットワーク
のフォワード処理の少なくとも1つの層の演算コストと前記少なくとも1つの層の中間データのサイズとに基づいて、前記中間データを1以上の第1メモリに保存するかどうかを決定し、
前記演算コストを前記中間データのサイズで除することにより得られる値に基づいて前記中間データを前記1以上の第1メモリに保存するかどうかを決定する、
1以上のコンピュータが実行するデータ処理方法。
【請求項5】
前記再計算により取得された少なくとも一部の前記中間データを、1以上の第2メモリに保存し、前記バックワード処理で使用する、
請求項1乃至請求項3のいずれか1項に記載のデータ処理方法。
【請求項6】
前記1以上の第1メモリは、DRAMであり、前記中間データを前記1以上の第1メモリに保存すると決定した場合、前記中間データをSRAMを介して前記1以上の第1メモリに保存する、
請求項1乃至請求項5のいずれか1項に記載のデータ処理方法。
【請求項7】
前記ニューラルネットワークは少なくとも第1層及び第2層から構成され、
前記フォワード処理において、前記第1層から第1中間データを出力し、第1中間データを前記第2層に入力して第2中間データを出力し、
前記第1層の演算コストに関する値と前記第1中間データのサイズに関する値とに基づいて、前記第1中間データを前記1以上の第1メモリに保存するかどうかを決定し、
前記第2層の演算コストに関する値と前記第2中間データのサイズに関する値とに基づいて、前記第2中間データを前記1以上の第1メモリに保存するかどうかを決定し、
前記フォワード処理に続くバックワード処理において、前記1以上の第1メモリに前記第1中間データが保存されている場合、前記1以上の第1メモリから読み出された前記第1中間データを用いて、前記第2層のパラメータの勾配を算出する、
請求項1乃至請求項4のいずれか1項に記載のデータ処理方法。
【請求項8】
前記バックワード処理において、前記1以上の第1メモリに前記第1中間データは保存されているが、前記第2中間データが保存されていない場合、前記第1中間データを前記第2層に入力することにより前記第2中間データを再計算する、
請求項7に記載のデータ処理方法。
【請求項9】
前記バックワード処理において、前記第1メモリに前記第1中間データが保存されていない場合、再計算により前記第1中間データを取得する、
請求項7に記載のデータ処理方法。
【請求項10】
1以上のプロセッサと、前記1以上のプロセッサに接続される1以上の第1メモリとを有するデータ処理装置であって、
ニューラルネットワーク
のフォワード処理の少なくとも1つの層の演算コストに関する値と前記少なくとも1つの層の中間データのサイズに関する値とに基づいて、前記中間データを前記1以上の第1メモリに保存するかどうかを決定し、
前記中間データは前記少なくとも1つの層から出力され、前記1以上の第1メモリに保存された前記中間データを、前記フォワード処理に続くバックワード処理を行う際に使用し、
前記1以上の第1メモリに保存されなかった少なくとも一部の前記中間データを、前記バックワード処理を行う際に、前記フォワード処理の少なくとも一部を再計算することにより取得する、
データ処理装置。
【請求項11】
前記演算コストに関する値と前記中間データのサイズに関する値とに基づく指標に基づいて前記中間データを前記1以上の第1メモリに保存するかどうかを決定する、
請求項10に記載のデータ処理装置。
【請求項12】
前記演算コストに関する値を前記中間データのサイズに関する値で除することにより得られる値に基づいて前記中間データを前記1以上の第1メモリに保存するかどうかを決定する、
請求項10又は請求項11に記載のデータ処理装置。
【請求項13】
1以上のプロセッサと、前記1以上のプロセッサに接続される1以上の第1メモリとを有するデータ処理装置であって、
ニューラルネットワークの
フォワード処理の少なくとも1つの層の演算コストと前記少なくとも1つの層の中間データのサイズとに基づいて、前記中間データを前記1以上の第1メモリに保存するかどうかを決定し、
前記演算コストを前記中間データのサイズで除することにより得られる値に基づいて前記中間データを前記1以上の第1メモリに保存するかどうかを決定する、
データ処理装置。
【請求項14】
前記再計算により取得した少なくとも一部の前記中間データを、1以上の第2メモリに保存し、前記バックワード処理に使用する、
請求項10乃至請求項12のいずれか1項に記載のデータ処理装置。
【請求項15】
前記1以上の第1メモリは、DRAMであり、前記中間データを前記1以上の第1メモリに保存すると決定した場合、前記中間データをSRAMを介して前記1以上の第1メモリに保存する、
請求項10乃至請求項14のいずれか1項に記載のデータ処理装置。
【請求項16】
前記ニューラルネットワークは少なくとも第1層及び第2層から構成され、
前記フォワード処理において、前記第1層から第1中間データを出力し、第1中間データを前記第2層に入力して第2中間データを出力し、
前記第1層の演算コストに関する値と前記第1中間データのサイズに関する値とに基づいて、前記第1中間データを前記1以上の第1メモリに保存するかどうかを決定し、
前記第2層の演算コストに関する値と前記第2中間データのサイズに関する値とに基づいて、前記第2中間データを前記1以上の第1メモリに保存するかどうかを決定し、
前記フォワード処理に続くバックワード処理において、前記1以上の第1メモリに前記第1中間データが保存されている場合、前記1以上の第1メモリから読み出された前記第1中間データを用いて、前記第2層のパラメータの勾配を算出する、
請求項10乃至請求項13のいずれか1項に記載のデータ処理装置。
【請求項17】
前記バックワード処理において、前記1以上の第1メモリに前記第1中間データは保存されているが、前記第2中間データが保存されていない場合、前記第1中間データを前記第2層に入力することにより前記第2中間データを再計算する、
請求項16に記載のデータ処理装置。
【請求項18】
前記バックワード処理において、前記第1メモリに前記第1中間データが保存されていない場合、再計算により前記第1中間データを取得する、
請求項16に記載のデータ処理装置。
【請求項19】
請求項1乃至請求項9のいずれか1項に記載のデータ処理方法を実行する1以上のコンピュータを有するデータ処理システム。
【請求項20】
請求項1乃至請求項9のいずれか1項に記載のデータ処理方法を1以上のコンピュータに実行させるデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ処理方法、データ処理装置、データ処理システムおよびデータ処理プログラムに関する。
【背景技術】
【0002】
一般に、深層学習の訓練は、GPU(Graphics Processing Unit)等の多数のコアを内蔵したプロセッサを使用して行われる。この種のプロセッサを利用して訓練を行う場合、通常、フォワード処理の計算の途中結果は、バックワード処理のためにDRAM(Dynamic Random Access Memory)等の外部メモリに保存される。そして、バックワード処理時に、バックワード処理の計算に必要なフォワード処理の計算の途中結果(中間データ)が外部メモリから読み出される。フォワード処理の計算の途中結果を外部メモリに毎回保存することができるのは、プロセッサと外部メモリとの間のメモリバンド幅(通信帯域)が十分に大きいためである。
【発明の概要】
【発明が解決しようとする課題】
【0003】
今後、プロセッサの性能が向上した場合、フォワード処理の計算の途中結果を外部メモリに毎回送信できるだけのメモリバンド幅を、プロセッサと外部メモリとの間に確保することが困難になるおそれがある。既存の構成の外部メモリまたはメモリインタフェースを利用してメモリバンド幅を向上することが困難な場合、新たな高速メモリの開発または新たな高速メモリインタフェースの開発等が必要になり、システムコストが大幅に上昇してしまう。
【課題を解決するための手段】
【0004】
本発明の実施形態の1以上のコンピュータが実行するデータ処理方法は、ニューラルネットワークのフォワード処理の少なくとも1つの層の演算コストに関する値と前記少なくとも1つの層の中間データのサイズに関する値とに基づいて、前記中間データを1以上の第1メモリに保存するかどうかを決定し、前記中間データは前記少なくとも1つの層から出力され、前記1以上の第1メモリに保存された前記中間データを、前記フォワード処理に続くバックワード処理を行う際に使用し、前記1以上の第1メモリに保存されなかった前記中間データを、前記バックワード処理を行う際に、前記フォワード処理の少なくとも一部を再計算することにより取得する。
【図面の簡単な説明】
【0005】
【
図1】本発明の一実施形態におけるデータ処理装置の例を示すブロック図である。
【
図2】
図1に示すデータ処理装置で実行するニューラルネットワークの訓練の例を示す説明図である。
【
図3】ニューラルネットワークの訓練におけるフォワード処理の例を示すフロー図である。
【
図4】ニューラルネットワークの訓練におけるバックワード処理と最適化処理の例を示すフロー図である。
【
図5】
図1のデータ処理装置によるニューラルネットワークの訓練の例を示す説明図である。
【
図6】
図1のデータ処理装置によるニューラルネットワークの訓練の別の例を示す説明図である。
【
図7】
図1のデータ処理装置によるニューラルネットワークの訓練のさらなる別の例を示す説明図である。
【
図8】
図1のデータ処理装置を使用したニューラルネットワークの訓練の別の例を示す説明図である。
【
図9】ニューラルネットワークの訓練を実行するデータ処理装置の動作の例を示すフロー図である。
【
図10】
図1のデータ処理装置100のハードウェア構成の例を示すブロック図である。
【発明を実施するための形態】
【0006】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
【0007】
図1は、本発明の一実施形態におけるデータ処理装置の例を示すブロック図である。
図1に示すデータ処理装置100は、プロセッサ20と、プロセッサ20に接続された複数のDRAM(Dynamic Random Access Memory)50とを含む少なくとも1つのシステム基板10を有する。例えば、データ処理装置100は、サーバである。プロセッサ20は、演算装置の一例である。DRAM50は、メモリ(外部メモリ)の一例である。
【0008】
プロセッサ20は、複数の演算器30と、複数の演算器30にそれぞれ接続された複数のSRAM(Static Random Access Memory)40とを有する。プロセッサ20は、システムバスに接続される。プロセッサ20は、チップの形態でもよく、パッケージの形態でもよい。なお、プロセッサ20に接続されるメモリは、DRAM50に限定されず、演算器30に接続されるメモリは、SRAM40に限定されない。SRAM40は、内部メモリの一例である。
【0009】
このように本実施形態においては、データ処理装置100は、読み書きの速度が異なる複数種類のメモリ、つまりSRAM40及び一般的にSRAM40より読み書きの速度が遅いDRAM50を備える。本実施形態において、例えば、複数のレイヤーを有するニューラルネットワークの訓練を実行する場合に、一部のレイヤーの計算結果のDRAM50への書き込みを一部行わないことで、メモリの読み書きの速度の不足を補うことを可能にする。これにより、訓練の速度を向上させることができる。
【0010】
図2は、
図1に示すデータ処理装置100で実行するニューラルネットワークの訓練の例を示す説明図である。入力レイヤーと出力レイヤーとの間に複数の中間レイヤーを有するニューラルネットワークの訓練では、フォワード処理、バックワード処理および最適化処理が、訓練データを変えながら複数回繰り返し実行される。フォワード処理、バックワード処理および最適化処理については、
図3および
図4で説明する。
【0011】
フォワード処理は、第1の処理の一例であり、フォワード処理において複数のレイヤー(複数の中間レイヤー)で実行される演算は、複数種の第1の演算の一例である。第1のデータは、第1の演算に使用するデータの一例であり、第2のデータは、第1の演算の実行により得られるデータ(演算結果)の一例である。バックワード処理は、第2の処理の一例であり、バックワード処理において複数のレイヤーで実行される演算は、複数種の第2の演算の一例である。
【0012】
図3は、ニューラルネットワークの訓練におけるフォワード処理の例を示すフロー図である。フォワード処理では、入力レイヤーおよび所定数の中間レイヤーの各々にデータと重み等のパラメータとが入力される。入力レイヤーでは、入力データとパラメータ1とが演算され、中間データ1が生成される。入力レイヤーの次の中間レイヤーでは、中間データ1とパラメータ2とが演算され、中間データ2が生成される。
【0013】
以降の中間レイヤーにおいても、1つ前の中間レイヤーが生成する中間データと、中間レイヤー毎に設定されたパラメータとが演算され、演算により生成された中間データが次の中間レイヤーに出力される。なお、パラメータを使用しない中間レイヤーが存在する場合もある。中間レイヤーとしては、例えば、畳み込み層、プーリング層、全結合層等がある。
【0014】
出力レイヤーでは、出力レイヤーの1つ前の中間レイヤーN(N番目のレイヤー)が生成した中間データNを使用して出力データが求められる。分類問題において誤差を求める出力レイヤーでは、例えば、ソフトマックス関数を活性化関数として使用し、交差エントロピーを誤差関数として使用することで出力データ(解)が求められる。出力レイヤーでは、
図4で説明するように、出力データと教師データ(正解データ)とを比較することで、正解との誤差(損失関数)が求められる。
【0015】
このように、フォワード処理では、ニューラルネットワークの各レイヤーにおいて、入力データとパラメータとが演算されて次のレイヤーに入力するデータが求められ、最終のレイヤーから出力データが出力される(順伝播)。なお、フォワード処理は、ニューラルネットワークの訓練だけでなく、ニューラルネットワークを用いた推論にも使用される。フォワード処理は、DAG(Directed Acyclic Graph)等の計算グラフにより表現可能である。
【0016】
図4は、ニューラルネットワークの訓練におけるバックワード処理および最適化処理の例を示すフロー図である。バックワード処理では、フォワード処理とは逆の順序で誤差を伝播させていく誤差逆伝播が行われる。
図4において、符号Δは、データの誤差またはパラメータの誤差を示す。最適化処理で実施されるパラメータの更新処理は、破線の矢印で示される。
【0017】
まず、バックワード処理では、誤差を求めるレイヤー(出力レイヤー)において、フォワード処理で生成した出力データと教師データとが比較され、出力レイヤーに入力される中間データNに対する誤差であるΔ中間データNが生成される。Δ中間データNは、N番目の中間レイヤーが出力する出力データの誤差でもある。
【0018】
次に、各中間レイヤーにおいて、出力レイヤーに近い中間レイヤーから順に、出力データに対する誤差(Δ中間データ)と、入力データである中間データとが演算され、当該中間レイヤーのパラメータに対する誤差であるΔパラメータが生成される。Δパラメータは、パラメータの変化に対する誤差の変化を示す曲線におけるパラメータの勾配を示す。例えば、入力レイヤーに隣接する中間レイヤーでは、Δ中間データ2と中間データ1とが演算されてΔパラメータ2が求められる。
【0019】
また、各中間レイヤーにおいて、出力データに対する誤差(Δ中間データ)と、当該中間レイヤーのパラメータとが演算され、当該中間レイヤーの入力データに対する誤差であるΔ中間データが生成される。当該中間レイヤーの入力データに対する誤差(Δ中間データ)は、1つ前の中間レイヤー(または入力レイヤー)の出力データの誤差でもある。例えば、入力レイヤーに隣接する中間レイヤーでは、Δ中間データ2とパラメータ2とが演算されてΔ中間データ1が求められる。
【0020】
入力レイヤーにおいても中間レイヤーと同様に、Δ中間データ1と入力データとが演算されてΔパラメータ1が求められ、Δ中間データ1とパラメータ1とが演算されて、入力データに対する誤差であるΔ入力データが求められる。このように、バックワード処理では、フォワード処理による計算の途中結果である中間データが必要である。
【0021】
最適化処理では、各中間レイヤーおよび入力レイヤーにおいて、バックワード処理で求めたΔパラメータ(誤差の勾配)を使用して、パラメータが補正される。すなわち、パラメータが最適化される。パラメータの最適化は、Momentum-SGD(Stochastic Gradient Descent)またはADAM等の勾配降下法を使用して行われる。
【0022】
このように、バックワード処理では、出力データと教師データとから出力レイヤーに入力されたデータ(出力レイヤーの1つ前の中間レイヤーの出力データ)の誤差が算出される。そして、算出されたデータの誤差を用いて中間データの誤差を算出する処理と、中間データの誤差を用いてパラメータの誤差を算出する処理とが、出力側のレイヤーから順に行われる(誤差逆伝播)。パラメータの更新処理では、バックワード処理で得られたパラメータの誤差に基づいて、パラメータが最適化される。
【0023】
図5から
図8は、
図1のデータ処理装置100によるニューラルネットワークの訓練の例を示す説明図である。説明を分かりやすくするため、訓練するニューラルネットワークは、レイヤーL1、L2、L3およびレイヤーLossを有するとする。計算グラフでは、レイヤーL1は入力データD0を受け、レイヤーL1の出力はレイヤーL2の入力に接続される。レイヤーL2の出力はレイヤーL3の入力に接続され、レイヤーL3は出力データを出力する。レイヤーLossは、レイヤーL3からの出力データD3と教師データとを使用して誤差(損失関数)を算出する。
図5から
図8を説明は、以下の仮定に基づく。
【0024】
(1)ディープラーニングの処理は、複数のデータ点をバッチという単位にまとめて処理するのが一般的である。
図5から
図8では、演算とメモリアクセスの比率を検討するため、データ処理装置100(プロセッサ20)のピーク性能およびメモリバンド幅は、1バッチに含まれるデータ点あたりで議論すれば十分である。データサイズ、FLOPS(Floating-point Operations Per Second)、メモリバンド幅は、暗黙にデータ点あたりの値であるとする。
【0025】
(2)レイヤーL1は、畳み込み層であり、カーネルサイズが1×1、入力チャンネル数が"3"、出力チャンネル数が"128"であるとする。レイヤーL2は、畳み込み層であり、カーネルサイズが3×3、入力チャンネル数が"128"、出力チャンネル数が"128"であるとする。レイヤーL3は、全結合層であり、入力チャンネル数が"128"、出力チャンネル数が"10"であるとする。レイヤーL1の入力と出力の画像サイズおよびレイヤーL2の出力の画像サイズは、幅32ピクセル、高さ32ピクセルであるとする。
【0026】
(3)追加のレイヤーとして、各レイヤーL1、L2(畳み込み層)の後にはReLU(Rectified Linear Unit)等の適当な活性化関数が入るとする。レイヤーL3(全結合層)の前にはAverage Poolingが入るとする。レイヤーL1、L2のそれぞれは、畳み込み層とReLU(Rectified Linear Unit)とを合わせたレイヤーでもよい。レイヤーL3は、Average Poolingと全結合層とを合わせたレイヤーでもよい。
【0027】
これにより、
図5で訓練されたニューラルネットワークは、小規模であるが、実用的な画像認識タスクを実行可能である。フォワード処理およびバックワード処理は、それぞれレイヤーL1、L2、L3と融合して実行できるものとする。つまり、これらのレイヤーによるDRAM50のアクセスの追加は発生しない。また、追加のレイヤーの演算量は、十分小さいので無視する。
【0028】
(4)訓練に使用するデータは、32bitの浮動小数点数フォーマットで表されるとする。プロセッサ20のピーク性能は、0.5TFLOPS(Tera Floating-point Operations Per Second)であるとする。プロセッサ20のDRAM50に対するバンド幅は、1GB/sであるとする。DRAM50のアクセスと演算器30による演算は、最大までオーバーラップできるとする。つまり、訓練に掛かる総経過時間はDRAM50のアクセス時間と演算器30による演算時間の大きい方になる。
【0029】
図5から
図8において、各レイヤーL1、L2、L3、Lossを示す矩形枠内に丸印で囲った文字は、レイヤーでの処理を示し、先頭の"F"はフォワード処理を示し、先頭の"B"はバックワード処理を示す。各レイヤーL1、L2、L3を示す矩形枠内に括弧で示す数値は、各レイヤーでの処理に掛かるコスト(計算コストまたは演算コスト)の例を示す。
【0030】
フォワード処理において、各レイヤーL1、L2、L3、Lossに対して入力または出力される数値は、データサイズを示す。この例では、説明を分かりやすくするため、でデータサイズは、互いに隣接する2つのレイヤー間のチャネル数と同じであるとする。
【0031】
フォワード処理において、各レイヤーL1、L2、L3の下に示す転送指標は、各レイヤーの計算コストを各レイヤーが出力するデータサイズで除することで求められる。転送指標は、各レイヤーのフォワード処理により得られたデータをDRAM50に転送するか否かを判断する基準の1つであり、保存価値の一例である。
【0032】
転送価値が大きいレイヤーほど、演算により得られたデータをDRAM50に転送することが好ましく、転送価値が小さいレイヤーほど、演算により得られたデータをDRAM50に転送しないことが好ましい。そして、転送価値に基づいてレイヤー毎にデータをDRAM50に転送するか否かを決定することで、ニューラルネットワークの訓練での経過時間に占めるプロセッサ20による演算時間の割合で示される実効効率を向上することができる。例えば、実効効率は、プロセッサ20による演算時間の最小値(最速値)をニューラルネットワークの訓練での経過時間で除することで算出される。なお、
図5から
図8では、各レイヤーの演算に使用するためにSRAM40に一時的に保存されるデータの量は制限されないものとする。また、DRAM50に対して読み書きされるデータは、SRAM40を介するものとする。
【0033】
図5に示す訓練では、各レイヤーでの演算により得られたデータをDRAM50に転送するか否かを決める転送指標の閾値は設定されない。このため、フォワード処理において、レイヤーL1、L2、L3での演算によりそれぞれ得られる全てのデータD1、D2、D3がDRAM50に保存される。レイヤーL1で使用するデータD0は、DRAM50から転送される。バックワード処理において、レイヤーLoss、L3、L2、L1で使用するデータD3、D2、D1、D0は、DRAM50から転送される。
【0034】
フォワード処理での演算により得られるデータを全てDRAM50に保存し、バックワード処理で使用するデータを全てDRAM50から読み出す場合、訓練全体でのDRAM50の総アクセス時間は2.122msになる。また、訓練全体でのプロセッサ20による総演算時間は1.817msになる。総演算時間は、
図6以降で説明するデータの再計算を含まないため、最小値となる。このため、訓練に掛かる経過時間は、ボトルネックとなるDRAM50の総アクセス時間(2.122ms)になり、実効効率は85.6%(1.817/2.122)となる。
【0035】
図6に示す訓練では、各レイヤーでの演算により得られたデータをDRAM50に転送するか否かを決める転送指標の閾値(第1の閾値)が"0.1"に設定される。このため、フォワード処理において、転送指標が閾値以上のレイヤーL2、L3での演算により得られるデータD2、D3がDRAM50に保存される。転送指標が閾値より小さいレイヤーL1での演算により得られるデータD1はDRAM50に保存されない。すなわち、データ処理装置100は、訓練に使用するデータの一部を間引いてDRAM50に保存する。
【0036】
そして、バックワード処理において、レイヤーL2での演算に使用するデータD1は、プロセッサ20によりレイヤーL1のフォワード処理を実行することで再計算される。バックワード処理のレイヤーLoss、L3、L1での演算に使用するデータD3、D2、D0は、DRAM50から転送される。
【0037】
図6では、バックワード処理において、データ量が比較的大きいデータD1が、レイヤーL1のフォワード処理F1により再計算される。データD1のDRAM50に対する読み書きがなくなるため、訓練全体でのDRAM50のアクセス時間は、
図5に比べて大幅に減少し、総アクセス時間は1.073msになる。また、訓練全体でのプロセッサ20のよる総演算時間は、わずかに増加し、1.818msになる。このため、訓練に掛かる経過時間は、ボトルネックとなるプロセッサ20による総演算時間(1.818ms)となり、実効効率は、
図5より改善して99.9%(1.817/1.818)となる。
【0038】
図7に示す訓練では、各レイヤーでの演算により得られたデータをDRAM50に転送するか否かを決める転送指標の閾値が"1.0"に設定される。ただし、
図7では、実効効率を評価するために、転送指標が閾値より小さいレイヤーL1での演算により得られるデータD1は、DRAM50に転送される。このため、フォワード処理において、転送指標が閾値以上のレイヤーL3での演算により得られるデータD3と、レイヤーL1での演算により得られるデータD1とがDRAM50に保存される。転送指標が閾値より小さいレイヤーL2での演算により得られるデータD2はDRAM50に保存されない。
【0039】
そして、バックワード処理において、レイヤーL3での演算に使用するデータD2は、プロセッサ20によりレイヤーL2のフォワード処理を実行することで再計算される。バックワード処理のレイヤーLoss、L2、L1での演算に使用するデータD3、D1、D0は、DRAM50から転送される。
【0040】
図7では、バックワード処理において、データ量が比較的大きいデータD2が、レイヤーL2のフォワード処理F2により再計算される。データD2のDRAM50に対する読み書きがなくなるため、訓練全体でのDRAM50のアクセス時間は、
図6と同様に減少し、総アクセス時間は約1msになる。一方、レイヤーL2のフォワード処理F2の計算コストは、レイヤーL1のフォワード処理F1の計算コストに比べて大きい。このため、訓練全体でのプロセッサ20のよる総演算時間は、
図5および
図6に比べて増加し、2.423msになる。このため、経過時間は、ボトルネックとなるプロセッサ20による総演算時間(2.423ms)となり、実効効率は、
図5より悪化して75.0%(1.817/2.423)となる。
【0041】
図8に示す訓練では、各レイヤーでの演算により得られたデータをDRAM50に転送するか否かを決める転送指標の閾値が"1.0"に設定される。このため、フォワード処理において、転送指標が閾値以上のレイヤーL3での演算により得られるデータD3がDRAM50に保存される。転送指標が閾値より小さいレイヤーL1、L2での演算によりそれぞれ得られるデータD1、D2はDRAM50に保存されない。
【0042】
そして、バックワード処理において、レイヤーL3での演算に使用するデータD2は、プロセッサ20によりレイヤーL1、L2のフォワード処理を順次実行することで再計算される。バックワード処理において、レイヤーL2での演算に使用するデータD1は、レイヤーL1のフォワード処理でSRAM40に保持されたものが使用される。バックワード処理のレイヤーLoss、L1での演算に使用するデータD0は、DRAM50から転送される。
【0043】
図8に示す動作は、
図6および
図7を合わせた動作であり、バックワード処理におけるプロセッサ20の計算コストは、
図7よりも増加する。このため、実効効率は、
図7の75.0%よりも低くなる。
【0044】
以上、
図5から
図8に示した例では、
図6の実効効率(99.9%)が最も高くなることが分かる。このように、各レイヤーでの演算により得られたデータをDRAM50に転送するか否かを決める転送指標の閾値を適切な値に設定することで、プロセッサ20の実効効率を最大化しつつ、DRAM50のメモリバンド幅を削減することができる。
【0045】
DRAM50に転送するデータ量を削減できるため、データ処理装置100に搭載するDRAM50の容量を削減することができる。例えば、容量が小さい安価なDRAM50を採用することができる。この結果、データ処理装置100のコストを削減することができる。換言すれば、DRAM50の容量が削減されたデータ処理装置100によっても、プロセッサ20の実効効率を向上することができる。
【0046】
さらに、DRAM50の容量を削減できるため、データ処理装置100の消費電力を削減することができる。また、DRAM50のメモリバンド幅を削減しない場合、より高性能なプロセッサ20を使用することができる。
【0047】
図9は、ニューラルネットワークの訓練を実行するデータ処理装置100の動作の例を示すフロー図である。例えば、
図9に示すフローは、データ処理装置100(プロセッサ20)がデータ処理プログラムを実行することで実現されてもよい。
図9は、データ処理方法およびデータ処理プログラムの例を示している。
【0048】
まず、ステップS10において、データ処理装置100は、フォワード処理を実行するレイヤーを選択する。次に、ステップS12において、データ処理装置100は、選択したレイヤーのフォワード処理を実行する。
【0049】
次に、ステップS14において、データ処理装置100は、レイヤーでのフォワード処理により得られたデータをDRAM50に保存する価値が高いか否かを判定する。例えば、データ処理装置100は、フォワード処理の対象のレイヤーにおける転送指標(
図5から
図8)があらかじめ設定された閾値以上の場合、データをDRAM50に保存するためにステップS16を実行する。データ処理装置100は、フォワード処理の対象のレイヤーにおける転送指標が閾値より小さい場合、データをDRAM50に保存せずにステップS18を実行する。
【0050】
ステップS16において、データ処理装置100は、フォワード処理により得られたデータをDRAM50に保存し、ステップS18を実行する。ステップS18において、データ処理装置100は、フォワード処理を実行する次のレイヤーがある場合、ステップS10を実行し、フォワード処理を実行する次のレイヤーがない場合、ステップS20を実行する。
【0051】
ステップS20において、データ処理装置100は、バックワード処理を実行するレイヤーを選択する。次に、ステップS22において、データ処理装置100は、バックワード処理に使用するデータがDRAM50に保存されているか否かを判定する。データ処理装置100は、データがDRAM50に保存されている場合、ステップS24を実行し、データがDRAM50に保存されていない非保存データである場合、ステップS26を実行する。
【0052】
ステップS24において、データ処理装置100は、バックワード処理に使用するデータをDRAM50からリードし、ステップS28を実行する。ステップS26において、データ処理装置100は、バックワード処理に使用するデータ(非保存データ)を生成するフォワード処理を実行し、ステップS28を実行する。
【0053】
ステップS28において、データ処理装置100は、ステップS24またはステップS26で得られたデータを使用して、演算対象のレイヤーのバックワード処理を実行する。次に、ステップS30において、データ処理装置100は、バックワード処理を実行する次のレイヤーがある場合、ステップS20を実行し、バックワード処理を実行する次のレイヤーがない場合、
図9に示す動作を終了する。
【0054】
前述した実施形態におけるデータ処理装置100の一部または全部は、ハードウェアで構成されていてもよいし、CPU(Central Processing Unit)、またはGPU(Graphics Processing Unit)等が実行するソフトウェア(プログラム)の情報処理で構成されてもよい。ソフトウェアの情報処理で構成される場合には、前述した実施形態における各装置の少なくとも一部の機能を実現するソフトウェアを、フレキシブルディスク、CD-ROM(Compact Disc-Read Only Memory)、またはUSB(Universal Serial Bus)メモリ等の非一時的な記憶媒体(非一時的なコンピュータ可読媒体)に収納し、コンピュータに読み込ませることにより、ソフトウェアの情報処理を実行してもよい。また、通信ネットワークを介して当該ソフトウェアがダウンロードされてもよい。さらに、ソフトウェアがASIC(Application Specific Integrated Circuit)、またはFPGA(Field Programmable Gate Array)等の回路に実装されることにより、情報処理がハードウェアにより実行されてもよい。
【0055】
データ処理プログラム等のソフトウェアを収納する記憶媒体の種類は限定されるものではない。記憶媒体は、磁気ディスク、または光ディスク等の着脱可能なものに限定されず、ハードディスク、またはメモリ等の固定型の記憶媒体であってもよい。また、記憶媒体は、コンピュータ内部に備えられてもよいし、コンピュータ外部に備えられてもよい。
【0056】
図10は、
図1のデータ処理装置100のハードウェア構成の例を示すブロック図である。データ処理装置100は、一例として、プロセッサ20と、DRAM(主記憶装置)50と、補助記憶装置60(メモリ)と、ネットワークインタフェース70と、デバイスインタフェース80と、を備え、これらがバス90を介して接続されたコンピュータとして実現されてもよい。例えば、プロセッサ20がデータ処理プログラムを実行することで、
図5から
図8で説明した訓練が実行される。
【0057】
データ処理装置100は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、
図10では、1台のデータ処理装置100が示されているが、ソフトウェアがデータ処理装置100を含む複数台の装置にインストールされて、当該複数台のデータ処理装置100のそれぞれがソフトウェアの同一のまたは異なる一部の処理を実行してもよい。この場合、データ処理装置100のそれぞれがネットワークインタフェース70等を介して通信して処理を実行する分散コンピューティングの形態であってもよい。つまり、1または複数の記憶装置に記憶された命令を1台または複数台のデータ処理装置100が実行することで機能を実現するコンピュータシステムとして構成されてもよい。また、端末から送信された情報をクラウド上に設けられた1台または複数台のデータ処理装置100で処理し、この処理結果を端末に送信するような構成であってもよい。
【0058】
図5から
図8で説明した動作および
図9のフローで説明した動作は、1または複数のプロセッサ20を用いて、または、通信ネットワーク200を介した複数台のコンピュータを用いて、並列処理で実行されてもよい。また、各種演算が、プロセッサ20内に複数ある演算コアに振り分けられて、並列処理で実行されてもよい。また、本開示の処理、手段等の一部または全部は、ネットワークを介してデータ処理装置100と通信可能なクラウド上に設けられたプロセッサおよび記憶装置の少なくとも一方により実行されてもよい。このように、データ処理装置100を含むコンピュータシステムは、1台または複数台のコンピュータによる並列コンピューティングの形態であってもよい。
【0059】
プロセッサ20は、コンピュータの制御装置および演算装置を含む電子回路(処理回路、Processing circuit、Processing circuitry、CPU、GPU、FPGA、またはASIC等)であってもよい。また、プロセッサ20は、専用の処理回路を含む半導体装置等であってもよい。プロセッサ20は、電子論理素子を用いた電子回路に限定されるものではなく、光論理素子を用いた光回路により実現されてもよい。また、プロセッサ20は、量子コンピューティングに基づく演算機能を含むものであってもよい。
【0060】
プロセッサ20は、データ処理装置100の内部構成の各装置等から入力されたデータやソフトウェア(プログラム)に基づいて演算処理を行い、演算結果や制御信号を各装置等に出力することができる。プロセッサ20は、データ処理装置100のOS(Operating System)や、アプリケーション等を実行することにより、データ処理装置100を構成する各構成要素を制御してもよい。
【0061】
データ処理装置100は、1または複数のプロセッサ20により実現されてもよい。ここで、プロセッサ20は、1チップ上に設けられた1または複数の電子回路を指してもよいし、2つ以上のチップあるいは2つ以上のデバイス上に設けられた1または複数の電子回路を指してもよい。複数の電子回路を用いる場合、各電子回路は有線または無線により通信してもよい。
【0062】
主記憶装置50は、プロセッサ20が実行する命令および各種データ等を記憶する記憶装置であり、主記憶装置50に記憶された情報がプロセッサ20により読み出される。補助記憶装置60は、主記憶装置50以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、半導体メモリでもよい。半導体メモリは、揮発性メモリ、不揮発性メモリのいずれでもよい。データ処理装置100において各種データを保存するための記憶装置は、主記憶装置50または補助記憶装置60により実現されてもよく、プロセッサ20に内蔵されるSRAM40等の内蔵メモリにより実現されてもよい。
【0063】
データ処理装置100は、
図1の構成に限定されるものではない。記憶装置(メモリ)1つに対して、複数のプロセッサ20が接続(結合)されてもよいし、単数のプロセッサ20が接続されてもよい。プロセッサ20の1つに対して、複数の記憶装置(メモリ)が接続(結合)されてもよい。データ処理装置100が、少なくとも1つの記憶装置(メモリ)とこの少なくとも1つの記憶装置(メモリ)に接続(結合)される複数のプロセッサ20で構成される場合、複数のプロセッサ20のうち少なくとも1つのプロセッサ20が、少なくとも1つの記憶装置(メモリ)に接続(結合)される構成を含んでもよい。また、複数台のデータ処理装置100に含まれる記憶装置(メモリ)とプロセッサ20によって、この構成が実現されてもよい。さらに、記憶装置(メモリ)がプロセッサ20と一体になっている構成(例えば、L1キャッシュ、L2キャッシュを含むキャッシュメモリ)を含んでもよい。
【0064】
ネットワークインタフェース70は、無線または有線により、通信ネットワーク200に接続するためのインタフェースである。ネットワークインタフェース70は、既存の通信規格に適合したもの等、適切なインタフェースを用いればよい。ネットワークインタフェース70により、通信ネットワーク200を介して接続された外部装置210と情報のやり取りが行われてもよい。なお、通信ネットワーク200は、WAN(Wide Area Network)、LAN(Local Area Network)、PAN(Personal Area Network)等の何れか、または、それらの組み合わせであってよく、データ処理装置100と外部装置210との間で情報のやり取りが行われるものであればよい。WANの一例としてインターネット等があり、LANの一例としてIEEE802.11やイーサネット(登録商標)等があり、PANの一例としてBluetooth(登録商標)やNFC(Near Field Communication)等がある。
【0065】
デバイスインタフェース80は、外部装置220と直接接続するUSB等のインタフェースである。
【0066】
外部装置220は、データ処理装置100とネットワークを介して接続されてもよく、データ処理装置100と直接接続されてもよい。
【0067】
外部装置210または外部装置220は、一例として、入力装置であってもよい。入力装置は、例えば、カメラ、マイクロフォン、モーションキャプチャ、各種センサ、キーボード、マウス、またはタッチパネル等のデバイスであり、取得した情報をデータ処理装置100に与える。また、パーソナルコンピュータ、タブレット端末、またはスマートフォン等の入力部とメモリとプロセッサを備えるデバイスであってもよい。
【0068】
また、外部装置210または外部装置220は、一例として、出力装置でもよい。出力装置は、例えば、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)、PDP(Plasma Display Panel)、または有機EL(Electro Luminescence)パネル等の表示装置であってもよいし、音声等を出力するスピーカ等であってもよい。また、パーソナルコンピュータ、タブレット端末、またはスマートフォン等の出力部とメモリとプロセッサを備えるデバイスであってもよい。
【0069】
また、外部装置210または外部装置220は、記憶装置(メモリ)であってもよい。例えば、外部装置210はネットワークストレージ等であってもよく、外部装置220はHDD等のストレージであってもよい。記憶装置(メモリ)である外部装置220は、プロセッサ20等のコンピュータにより読み取り可能な記録媒体の一例である。
【0070】
また、外部装置210または外部装置220は、データ処理装置100の構成要素の一部の機能を有する装置でもよい。つまり、データ処理装置100は、外部装置210または外部装置220の処理結果の一部または全部を送信または受信してもよい。
【0071】
以上、この実施形態では、各レイヤーでの演算により得られたデータをDRAM50に転送するか否かを決める転送指標の閾値を適切な値に設定することで、プロセッサ20の実効効率を最大化しつつ、DRAM50のメモリバンド幅を削減することができる。これにより、データ処理装置100へのDRAM50の搭載量を削減でき、データ処理装置100のコストを削減することができる。
【0072】
転送指標は、各レイヤーの計算コストを各レイヤーが出力するデータサイズで除することで求められる。このため、ニューラルネットワーク(計算グラフ)の複雑度によらず、転送指標を簡易に求めることができる。なお、プロセッサ20による演算結果をDRAM50に転送するか否かを転送指標により決定する手法は、ニューラルネットワークの訓練に限らず、他のデータ処理に適用可能である。
【0073】
本明細書(請求項を含む)において、「a、bおよびcの少なくとも1つ(一方)」または「a、bまたはcの少なくとも1つ(一方)」の表現(同様な表現を含む)が用いられる場合は、a、b、c、a-b、a-c、b-c、またはa-b-cのいずれかを含む。また、a-a、a-b-b、a-a-b-b-c-c等のように、いずれかの要素について複数のインスタンスを含んでもよい。さらに、a-b-c-dのようにdを有する等、列挙された要素(a、bおよびc)以外の他の要素を加えることも含む。
【0074】
本明細書(請求項を含む)において、「データを入力として/データに基づいて/に従って/に応じて」等の表現(同様な表現を含む)が用いられる場合は、特に断りがない場合、各種データそのものを入力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を入力として用いる場合を含む。また「データに基づいて/に従って/に応じて」何らかの結果が得られる旨が記載されている場合、当該データのみに基づいて当該結果が得られる場合を含むとともに、当該データ以外の他のデータ、要因、条件、および/または状態等にも影響を受けて当該結果が得られる場合をも含み得る。また、「データを出力する」旨が記載されている場合、特に断りがない場合、各種データそのものを出力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を出力とする場合も含む。
【0075】
本明細書(請求項を含む)において、「接続される(connected)」および「結合される(coupled)」との用語が用いられる場合は、直接的な接続/結合、間接的な接続/結合、電気的(electrically)な接続/結合、通信的(communicatively)な接続/結合、機能的(operatively)な接続/結合、物理的(physically)な接続/結合等のいずれをも含む非限定的な用語として意図される。当該用語は、当該用語が用いられた文脈に応じて適宜解釈されるべきであるが、意図的に或いは当然に排除されるのではない接続/結合形態は、当該用語に含まれるものして非限定的に解釈されるべきである。
【0076】
本明細書(請求項を含む)において、「AがBするよう構成される(A configured to B)」との表現が用いられる場合は、要素Aの物理的構造が、動作Bを実行可能な構成を有するとともに、要素Aの恒常的(permanent)または一時的(temporary)な設定(setting/configuration)が、動作Bを実際に実行するように設定(configured/set)されていることを含んでよい。例えば、要素Aが汎用プロセッサである場合、当該プロセッサが動作Bを実行可能なハードウェア構成を有するとともに、恒常的(permanent)または一時的(temporary)なプログラム(命令)の設定により、動作Bを実際に実行するように設定(configured)されていればよい。また、要素Aが専用プロセッサまたは専用演算回路等である場合、制御用命令およびデータが実際に付属しているか否かとは無関係に、当該プロセッサの回路的構造が動作Bを実際に実行するように構築(implemented)されていればよい。
【0077】
本明細書(請求項を含む)において、含有または所有を意味する用語(例えば、「含む(comprising/including)」および有する「(having)等)」が用いられる場合は、当該用語の目的語により示される対象物以外の物を含有または所有する場合を含む、open-endedな用語として意図される。これらの含有または所有を意味する用語の目的語が数量を指定しないまたは単数を示唆する表現(aまたはanを冠詞とする表現)である場合は、当該表現は特定の数に限定されないものとして解釈されるべきである。
【0078】
本明細書(請求項を含む)において、ある箇所において「1つまたは複数(one or more)」または「少なくとも1つ(at least one)」等の表現が用いられ、他の箇所において数量を指定しないまたは単数を示唆する表現(aまたはanを冠詞とする表現)が用いられているとしても、後者の表現が「1つ」を意味することを意図しない。一般に、数量を指定しないまたは単数を示唆する表現(aまたはanを冠詞とする表現)は、必ずしも特定の数に限定されないものとして解釈されるべきである。
【0079】
本明細書において、ある実施例の有する特定の構成について特定の効果(advantage/result)が得られる旨が記載されている場合、別段の理由がない限り、当該構成を有する他の1つまたは複数の実施例についても当該効果が得られると理解されるべきである。但し当該効果の有無は、一般に種々の要因、条件、および/または状態等に依存し、当該構成により必ず当該効果が得られるものではないと理解されるべきである。当該効果は、種々の要因、条件、および/または状態等が満たされたときに実施例に記載の当該構成により得られるものに過ぎず、当該構成または類似の構成を規定したクレームに係る発明において、当該効果が必ずしも得られるものではない。
【0080】
本明細書(請求項を含む)において、「最大化(maximize)」等の用語が用いられる場合は、グローバルな最大値を求めること、グローバルな最大値の近似値を求めること、ローカルな最大値を求めること、およびローカルな最大値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最大値の近似値を確率的またはヒューリスティックに求めることを含む。同様に、「最小化(minimize)」等の用語が用いられる場合は、グローバルな最小値を求めること、グローバルな最小値の近似値を求めること、ローカルな最小値を求めること、およびローカルな最小値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最小値の近似値を確率的またはヒューリスティックに求めることを含む。同様に、「最適化(optimize)」等の用語が用いられる場合は、グローバルな最適値を求めること、グローバルな最適値の近似値を求めること、ローカルな最適値を求めること、およびローカルな最適値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最適値の近似値を確率的またはヒューリスティックに求めることを含む。
【0081】
本明細書(請求項を含む)において、複数のハードウェアが所定の処理を行う場合、各ハードウェアが協働して所定の処理を行ってもよいし、一部のハードウェアが所定の処理の全てを行ってもよい。また、一部のハードウェアが所定の処理の一部を行い、別のハードウェアが所定の処理の残りを行ってもよい。本明細書(請求項を含む)において、「1または複数のハードウェアが第1の処理を行い、前記1または複数のハードウェアが第2の処理を行う」等の表現が用いられている場合、第1の処理を行うハードウェアと第2の処理を行うハードウェアは同じものであってもよいし、異なるものであってもよい。つまり、第1の処理を行うハードウェアおよび第2の処理を行うハードウェアが、前記1または複数のハードウェアに含まれていればよい。なお、ハードウェアは、電子回路、または電子回路を含む装置等を含んでよい。
【0082】
本明細書(請求項を含む)において、複数の記憶装置(メモリ)がデータの記憶を行う場合、複数の記憶装置(メモリ)のうち個々の記憶装置(メモリ)は、データの一部のみを記憶してもよいし、データの全体を記憶してもよい。
【0083】
以上、本開示の実施形態について詳述したが、本開示は上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容およびその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において種々の追加、変更、置き換えおよび部分的削除等が可能である。例えば、前述した全ての実施形態において、数値または数式を説明に用いている場合は、一例として示したものであり、これらに限られるものではない。また、実施形態における各動作の順序は、一例として示したものであり、これらに限られるものではない。
【符号の説明】
【0084】
20 プロセッサ
30 演算器
40 SRAM
50 DRAM
60 補助記憶装置
70 ネットワークインタフェース
80 デバイスインタフェース
90 バス
100 データ処理装置
200 通信ネットワーク
210 外部装置
220 外部装置