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

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

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

特許7525237効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア
<>
  • 特許-効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア 図1
  • 特許-効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア 図2
  • 特許-効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア 図3
  • 特許-効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア 図4
  • 特許-効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア 図5
  • 特許-効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア 図6
  • 特許-効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア 図7
  • 特許-効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア 図8
  • 特許-効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア 図9
  • 特許-効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア 図10
  • 特許-効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア 図11
  • 特許-効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア 図12
  • 特許-効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-22
(45)【発行日】2024-07-30
(54)【発明の名称】効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア
(51)【国際特許分類】
   G06N 3/08 20230101AFI20240723BHJP
   G06F 7/499 20060101ALI20240723BHJP
【FI】
G06N3/08
G06F7/499 647
【請求項の数】 14
(21)【出願番号】P 2022503833
(86)(22)【出願日】2020-08-17
(65)【公表番号】
(43)【公表日】2022-11-07
(86)【国際出願番号】 IB2020057723
(87)【国際公開番号】W WO2021044244
(87)【国際公開日】2021-03-11
【審査請求日】2023-01-20
(31)【優先権主張番号】16/558,585
(32)【優先日】2019-09-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】スン、シァオ
(72)【発明者】
【氏名】チョイ、ジュンフック
(72)【発明者】
【氏名】ワン、ナイガン
(72)【発明者】
【氏名】チェン、チアーユ
(72)【発明者】
【氏名】ゴパラクリシュナン、カイラッシュ
【審査官】円子 英紀
(56)【参考文献】
【文献】特開2020-009444(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 18/00-18/40
G06F 7/499
(57)【特許請求の範囲】
【請求項1】
ニューラル・ネットワークのための回路を含む装置であって、前記回路は:
第2のビット数及び第3のビット数を第1のビット数よりもそれぞれ小さいビット数とし、前記第2のビット数を含む第2のフォーマットを有する第2の重み及び前記第3のビット数を含む第3のフォーマットを有する残差に少なくとも部分的に基づいて、前記第1のビット数を含む第1のフォーマットを有する第1の重みを生成し;
前記第1の重みに少なくとも部分的に基づいて、前記第2の重みをアップデートし;
アップデートされた前記第2の重み及び前記第1の重みに少なくとも部分的に基づいて、前記残差をアップデートし;
アップデートされた前記第2の重み及びアップデートされた前記残差をメモリに格納し;
前記メモリから読み込まれたアップデートされた前記第2の重み及びアップデートされた前記残差に少なくとも部分的に基づいて、前記第1の重みをアップデートする
ように構成される、装置。
【請求項2】
前記第2のビット数は、8ビットを含む、請求項1に記載の装置。
【請求項3】
前記第3のビット数は、16ビットを含む、請求項1に記載の装置。
【請求項4】
前記第2のビット数及び前記第3のビット数は、共に前記第1のビット数よりも少ない、請求項1に記載の装置。
【請求項5】
アップデートされた前記第2の重み及び前記第1の重みに少なくとも部分的に基づいて前記残差をアップデートすることは:
アップデートされた前記第2の重み及び前記第1の重みに少なくとも部分的に基づいて、前記第3のビット数よりも大きなビット数を有する第4のビット数を含む第2の残差を生成すること;及び
前記第4のビット数から前記第3のビット数へと前記第2の残差を量子化して、前記残差をアップデートすること
を含む、請求項4に記載の装置。
【請求項6】
ニューラル・ネットワークのための回路を含む装置であって、前記回路は:
第2のビット数及び第3のビット数を第1のビット数よりもそれぞれ小さいビット数とし、前記第2のビット数を含む第2のフォーマットを有する第2の重み及び前記第3のビット数を含む第3のフォーマットを有する残差に少なくとも部分的に基づいて、前記第1のビット数を含む第1のフォーマットを有する第1の重みを生成し;
前記第1の重みに少なくとも部分的に基づいて、前記第2の重みをアップデートし;
アップデートされた前記第2の重み及び前記第1の重みに少なくとも部分的に基づいて、前記残差をアップデートし;
アップデートされた前記第2の重み及びアップデートされた前記残差に少なくとも部分的に基づいて、前記第1の重みをアップデートする
ように構成され、
前記第2のビット数及び前記第3のビット数は、共に前記第1のビット数よりも少なく、
アップデートされた前記第2の重み及び前記第1の重みに少なくとも部分的に基づいて前記残差をアップデートすることは:
アップデートされた前記第2の重み及び前記第1の重みに少なくとも部分的に基づいて、前記第3のビット数よりも大きなビット数を有する第4のビット数を含む第2の残差を生成すること;及び
前記第4のビット数から前記第3のビット数へと前記第2の残差を量子化して、前記残差をアップデートすること
を含む、装置。
【請求項7】
前記回路は、さらに:
前記第2の残差を量子化する前に少なくともスケーリング・ファクタに基づいて、前記第2の残差をスケールアップし;及び
アップデートされた前記第2の重み及びアップデートされた前記残差に少なくとも部分的に基づいて前記第1の重みをアップデートする前に、前記スケーリング・ファクタに少なくとも部分的に基づいて、アップデートされた前記残差をスケールダウンする
ように構成される、請求項5または6に記載の装置。
【請求項8】
方法であって、
第2のビット数及び第3のビット数を第1のビット数よりもそれぞれ小さいビット数とし、前記第2のビット数を含む第2のフォーマットを有する第2の重み及び前記第3のビット数を含む第3のフォーマットを有する残差に少なくとも部分的に基づいて、前記第1のビット数を含む第1のフォーマットを有する第1の重みを生成し;
前記第1の重みに少なくとも部分的に基づいて、前記第2の重みをアップデートし;
アップデートされた前記第2の重み及び前記第1の重みに少なくとも部分的に基づいて、前記残差をアップデートし;
アップデートされた前記第2の重み及びアップデートされた前記残差をメモリに格納し;
前記メモリから読み込まれたアップデートされた前記第2の重み及びアップデートされた前記残差に少なくとも部分的に基づいて前記第1の重みをアップデートし;
前記方法がニューラル・ネットワークのための回路により少なくとも部分的に実行される、
方法。
【請求項9】
前記第2のビット数は、8ビットを含む、請求項に記載の方法。
【請求項10】
前記第3のビット数は、16ビットを含む、請求項に記載の方法。
【請求項11】
前記第2のビット数及び前記第3のビット数は、共に前記第1のビット数よりも少ない、請求項に記載の方法。
【請求項12】
アップデートされた前記第2の重み及び前記第1の重みに少なくとも部分的に基づいて前記残差をアップデートすることは:
アップデートされた前記第2の重み及び前記第1の重みに少なくとも部分的に基づいて、前記第3のビット数よりも大きなビット数を有する第4のビット数を含む第2の残差を生成すること;及び
前記第4のビット数から前記第3のビット数へと前記第2の残差を量子化して、前記残差をアップデートすること
を含む、請求項11に記載の方法。
【請求項13】
方法であって、
第2のビット数及び第3のビット数を第1のビット数よりもそれぞれ小さいビット数とし、前記第2のビット数を含む第2のフォーマットを有する第2の重み及び前記第3のビット数を含む第3のフォーマットを有する残差に少なくとも部分的に基づいて、前記第1のビット数を含む第1のフォーマットを有する第1の重みを生成し;
前記第1の重みに少なくとも部分的に基づいて、前記第2の重みをアップデートし;
アップデートされた前記第2の重み及び前記第1の重みに少なくとも部分的に基づいて、前記残差をアップデートし;
アップデートされた前記第2の重み及びアップデートされた前記残差に少なくとも部分的に基づいて前記第1の重みをアップデートし;
前記方法がニューラル・ネットワークのための回路により少なくとも部分的に実行され、
前記第2のビット数及び前記第3のビット数は、共に前記第1のビット数よりも少なく、
アップデートされた前記第2の重み及び前記第1の重みに少なくとも部分的に基づいて前記残差をアップデートすることは:
アップデートされた前記第2の重み及び前記第1の重みに少なくとも部分的に基づいて、前記第3のビット数よりも大きなビット数を有する第4のビット数を含む第2の残差を生成すること;及び
前記第4のビット数から前記第3のビット数へと前記第2の残差を量子化して、前記残差をアップデートすること
を含む、方法。
【請求項14】
前記方法は、さらに:
前記第2の残差を量子化する前に少なくともスケーリング・ファクタに基づいて、前記第2の残差をスケールアップすること;及び
アップデートされた前記第2の重み及びアップデートされた前記残差に少なくとも部分的に基づいて前記第1の重みをアップデートする前に、前記スケーリング・ファクタに少なくとも部分的に基づいて、アップデートされた前記残差をスケールダウンすること
を含む、請求項12または13に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、ハードウェア回路を使用したトレーニング及び推論することのための技術を提供する。
【背景技術】
【0002】
所与の数の浮動小数点表示は、数の数字を含む仮数、仮数の先頭からどこに小数点(又はバイナリ)点を配置するかを設定するべき指数であって、負のべき指数は、極めて小さな数(すなわち、ゼロに近い)を表すもの及び、数に伴う符号(正又は負)の3つの主要部分を含む。
【0003】
浮動小数点表示(FPU)は、FP計算を実行するハードウェア回路として実装されるプロセッサ又はプロセッサの部分である。初期のFPUは、スタンドアローンのプロセッサであったが、現在、多くは、コンピュータのCPUの内部に一体化されている。近年のCPU(複数)における一体化されたFPUは、例えば、インスティティテュート・オブ・エレクトリカル・アンド・エレクトロニクス・エンジニア(IEEE)浮動小数点標準において言及されるように、それらが、それらの計算を支配する規則を遵守することを保証しながら、高精度の浮動小数点計算を実行するが故に、極めて複雑化する。
【0004】
例えば、ディープ・ラーニング・ニューラル・ネットワークといった機械学習モデルの構成及びトレーニングは、また、ディープ・ニューラル・ネットワーク(DNN)として参照され、しばしば計算機的に集約的である。DNNのトレーニングにおけるそれぞれの反復又はサイクルは、多くの浮動小数点計算を必要とする可能性がある。例えば、DNNが膨大なノードを含む場合、DNNをトレーニングするために必要とされる浮動小数点計算は、ノードの数に対して指数関数的なスケールとなる。加えて、DNNにおいて使用される異なる浮動小数点計算は、異なる精度要求を有する可能性がある。
【0005】
機械学習のワークロードは、また、計算機的に要請される傾向にある。例えば、普通のディープ・ラーニングのベンチマークに対するトレーニング・アルゴリズムは、しばしば、多数のプロセッサを含むシステムを使用して、収束するまでに数週間を要する。浮動小数点計算のため、高いスループット密度を提供することができる特化したアクセラレータは、面積(プロセッサ空間の1平方ミリ当たりの計算機スループット)及び電力(消費された電力の1ワット当たりの計算機スループット)の表現の両方において、将来のディープ・ラーニング・システムに対する重要な尺度である。
【発明の概要】
【0006】
1実施形態においては、装置は、ニューラル・ネットワークのための回路を含む。回路は、第2のビット数を含む第2のフォーマットを有する第2の重み及び第3のビット数を含む第3のフォーマットを有する残差に少なくとも部分的に基づく第1のビット数を含む第1のフォーマットを有する第1の重み及びを生成するように、構成される。第2のビット数及び第3のビット数は、それぞれ第1のビット数よりも少ない。回路は、さらに、第1の重みに少なくとも部分的に基づいて第2の重みをアップデートし、かつアップデートされた第2の重み及び第1の重みに少なくとも部分的に基づいて残差をアップデートするように構成される。回路は、さらに、アップデートされた第2の重み及びアップデートされた残差の少なくとも部分に基づいて第1の重みをアップデートするように構成される。
【0007】
他の実施形態では、方法は、第2のビット数を含む第2のフォーマットを有する第2の重み及び第3のビット数を含む第3のフォーマットを有する残分に少なくとも部分的に基づく第1のビット数を含む第1のフォーマットを有する第1の重みを生成することを含む。第2のビット数及び第3のビット数は、それぞれ第1のビット数よりも少ない。方法は、さらに、第1の重みに少なくとも部分的に基づいて第2の重みをアップデートすること、アップデートされた第2の重み及び第1の重みに少なくとも部分的に基づいて残差をアップデートすること、及びアップデートされた第2の重み及びアップデートされた残差に少なくとも部分的に基づいて第1の重みをアップデートすることを含む。本方法は、少なくとも部分がニューラル・ネットワークのために実行される。
【0008】
さらに他の実施形態においては、複数のコンポーネントを含む多重学習器システムの少なくとも1つの学習器を含む装置を含む。少なくとも1つの学習器は、勾配の部分を生成し、かつ多重学習器システムの少なくとも1つのコンポーネントに勾配の部分を提供するように構成される。少なくとも1つの学習器は、さらに、多重学習器システムの少なくとも1つの他のコンポーネントから少なくとも重みの部分を取得し、かつ、取得した重みの少なくとも部分に少なくとも基づいて、勾配の部分をアップデートするように構成される。
【0009】
本発明のこれら及び他の特徴及び効果は、添付する図面と組み合わせにおいて読解されるべき、後述するその例示的な実施形態の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【0010】
図1図1は、本発明の例示的な実施形態による、ニューラル・ネットワークの重みアップデートを実行するために構成された装置の回路を示す。
図2図2は、本発明の例示的な実施形態による、実施例の多重学習器システムを示す。
図3図3は、本発明の例示的な実施形態による、他の実施例のパラメータ・サーバを含む多重学習器システムを示し、学習器からパラメータ・サーバまで部分的な勾配の転送を示す図である。
図4図4は、本発明の例示的な実施形態による、実施例の図3の多重学習器システムがパラメータ・サーバから学習器へと重みを転送することを示す。
図5図5は、本実施形態の例示的な実施形態による、リング構成を含む他の多重学習器システムが学習器の間で部分的な勾配を転送することを示す。
図6図6は、本発明の例示的な実施形態による、実施例の図5の多重学習器システムがパラメータ・サーバから学習器へと部分的な重みを転送することを示す。
図7】本発明の例示的実施形態による、勾配についてのバッファを含む多重学習器システムの2つの実施例の学習器を示す。
図8図8は、本発明の例示的実施形態による、2つのチャンクに分割したそれらそれぞれの勾配を示す図7の2つの実施例の学習器を示す。
図9図9は、本発明の例示的実施形態による、2つのチャンクに分割したそれらそれぞれの重みを示す図8の2つの実施例の学習器を示す。
図10図10は、本発明の例示的実施形態による、対応する既存のチャンクに加算されたそれぞれ転送されたチャンクを示す図9の2つの実施例の学習器を示す。
図11図11は、本発明の例示的実施形態による、加算されたチャンクに基づいた対応する重みを示す2つの実施例の学習器応する既存のチャンクに加算されたそれぞれ転送されたチャンクを示す図10の2つの実施例の学習器を示す。
図12図12は、本発明の例示的実施形態による、実施例の学習器の間で対応する重みの転送を示す図11の2つの実施例の学習器を示す。
図13図13は、本発明の例示的実施形態による、本発明の技術の1つ又はそれ以上のコンポーネント/ステップを実装することができるコンピュータ・システムを示す。
【発明を実施するための形態】
【0011】
本発明の例示的な実施形態を本明細書において、例えばDNNといった機械学習モデルをトレーニングすることについて、例示的な方法、システム及びデバイスの文脈において説明する。しかしながら、本発明の実施形態は、例示する方法、システム、及びデバイスを限定するものではなく、それに代わり、他の好適な方法、システム、及びデバイスに対して広くに適用できることを理解されたい。
【0012】
FPUは、典型的にバイナリビット数の用語において、浮動小数点フォーマット(以下、“フォーマット”、“浮動小数点フォーマット”として参照する。)の数を表すために使用することができる、固定されたビット幅のサイズを有する。いくつかの実施例のFPUのビット幅サイズのフォーマットは、8ビット(FP8)、16ビット(FP16)、32ビット(FP32)、64ビット(FP64)及び128ビット(FP128)を含む。
【0013】
典型的には、FPUのより大きなビット幅サイズのフォーマットは、半導体で製造された回路の物理的サイズの用語において、FPUは複雑化し、大規模化する。加えて、FPUのサイズ及び複雑さが増加するにつれ、浮動小数点計算のために消費される電力及び出力を生成するために要する時間量もまた、増加する。
【0014】
例えばFP64といったより大きなビット幅のサイズのフォーマットは、また、読み込み及びアップデートのため、FPUに対して追加のメモリ及び帯域幅要求の両方を追加する上、FPUのレイテンシを増大させることになる。これらの多くの問題は、トレーニング及び推定中の格納及び使用の両方について、精度の低下という代償において、例えばFP32といったより小さなビット幅のフォーマットを使用することを通して緩和することができる。
【0015】
例示的な実施形態においては、上述した問題は、高精度の浮動小数点パラメータを、2つの分離したコンポーネントの、低精度量子化重み、丸め残差に分離することによりさらに緩和することができる。また、残差のオーバーフローの発生を禁止するスケーリング技術、並びに量子化、丸め残差の計算、及び低精度量子化重み及び丸め残差を使用する、重みのアップデートのためのプロセスを実装する学習器回路が開示される。最後に、荷重学習器のための重みの読み込み及びアップデート操作の間に、ストレージ空間及び帯域幅の使用を最小化するために開示された低精度量子化重み、丸め残差、プロセス及び学習器回路を使用する多重学習器のためのプロトコルが開示される。
【0016】
例示的な実施形態による重みのアップデート・フローを、図1及び式(1)~(5)を参照して説明する。
【0017】
図1を参照すると、学習器回路100は、乗算及び加算ユニット102、量子化ユニット104、減算ユニット106及び量子化ユニット108を含む、いくつかの実施形態では、学習器回路100は、また、スケールアップ・ユニット110及びスケールダウン・ユニット112を含む。スケールアップ・ユニット110及びスケールダウン・ユニット112は、それらが任意的であることを示すために、破線で示している。単一のユニット102~108として記載されているが、いくつかの実施形態では、ユニット102~108は、それぞれ多数のユニットを含むことができる。
【0018】
乗算及び加算ユニット102は、量子化重み勾配(Wgrad)、学習レート(lr)、前の反復からの量子化残差(Res)、前の反復からの量子化重み(W)、及び初期入力としての他の類似のパラメータを受領し、かつ出力として高精度重みWを生成するように構成される。例えば、いくつかの実施形態では、量子化重み勾配Wgrad、量子化残差Res、及び量子化重みWは、それぞれFP8フォーマットを有することができるが、高精度重みWpは、FP16、FP32、FP64又は他の同様の高精度フォーマットを有することができる。
【0019】
式(1)を参照すると、第1の反復に先立って、量子化残差Resが最初に値0に設定される。
【0020】
【数1】
【0021】
重みのアップデート・フローのそれぞれの反復の間に、高精度重みWは、下記式(2)に従って乗算及び加算ユニット102により計算される。
【0022】
【数2】
【0023】
ここで、Wは、高精度重みであり、Wは、量子化重みであり、lrは、学習レートであり、Wgradは、量子化重み勾配であり、Resは、量子化残差である。
【0024】
例えば、Wが、5.1015625の初期値を有し、かつlrが2.0、Wgradが、-0.015625であって、lr×Wgradが-0.03125を有する場合、式(2)は、W=5.1015625-(-0.03125)+0となる。乗算及び加算ユニット102は、高精度重みWを5.1328125として計算する。例示的な実施形態では、量子化入力、例えばW、Wgrad、及びResは、例えばFP8フォーマットといった低精度フォーマットを有するが、高精度出力、例えばWは、例えばFP16、FP32、又はFP64といった、より高精度のフォーマットを有する。例示的な実施形態では、量子化入力は、FP8フォーマットを有し、高精度出力は、FP32フォーマットを有する。高精度重みWは、量子化ユニット104及び減算ユニット106の両方に提供される。
【0025】
量子化ユニット104は、量子化重みWの値を下記式(3)に従ってアップデートする。
【0026】
【数3】
【0027】
ここで、Q()は、例えば切り捨て、丸め、確率丸め、又は他の普遍的な量子化関数である。例えば、高精度重みWは、例えばFP32といった高精度の浮動小数点フォーマットから例示的な実施形態では、例えばFP8といった、より低精度浮動小数点フォーマットまでで量子化することができる。上述した実施例では、式(3)は、W=QW(5.1328125)となる。選択され、ターゲットとされるフォーマットの量子化関数に依存して、1つの実施例では、アップデートされた量子化重みWは、5.0として計算することができる。量子化重みWは、現在の反復の間に使用するために両方の減算ユニット106供給されると共に、次の反復の間の使用のため乗算及び加算ユニット102に供給される。
【0028】
減算ユニット106は、下記式(4)に従い、高精度残差Resをアップデートする。
【0029】
【数4】
【0030】
式(4)において、Wは、乗算及び加算ユニット102により提供された、高精度のアップデートされた重みであり、Wは、量子化ユニット104によって提供された低精度量子化重みである。上記の実施例では、Res=5.1328125-5.0である。減算ユニット106は、高精度残差Resを、0.1328125として計算する。例示的な実施形態では減算ユニット106は、高精度残差ResをFP32フォーマットで出力する。他の実施形態では、減算ユニット106は、高精度残差Resを、例えばFP64又はFP16といった他の浮動小数点フォーマットで出力することができる。高精度残差Resは、量子化ユニット108に供給される。
【0031】
量子化ユニット108は、量子化残差Resを下記式(5)に従ってアップデートする。
【0032】
【数5】
【0033】
ここで、Q()は、例えば、切り捨て、最近接丸め、確率丸め、又は他の普遍的な量子化関数である。例えば、量子化ユニット108は、高精度残差Resを、FP32といった、より高精度の浮動小数点フォーマットから、例えばFP16又はFP8といった、より低精度の浮動小数点フォーマットに量子化することができる。例示的な実施形態では、量子化ユニット108は、FP32の高精度残差Resを、FP16に量子化したResに量子化する。選択した量子化関数に依存して、1つの実施例では、量子化ユニット108は、量子化残差Resを、0.140625と計算する。量子化残差Resは、次の反復の間に使用するために、量子化ユニット108により、乗算及び加算ユニット102へと供給される。
【0034】
実施例を続けると、第2の反復の開始時に、量子化重みW=5.0(上述した反復からのアップデートされたWqの値)、lr2.0及びWgrad0.025390625で、lr×Wgrad=0.05078125となり、量子化残差Res=0.140625となる。乗算及び加算ユニット102は、式(2)に従って、アップデートされた高精度重みWをW=5.0-0.05078125+0.140625=5.08984375として計算し、アップデートされた高精度重みWを量子化ユニット104及び減算ユニット106に供給する。量子化ユニット104は、量子化重みWを式(3)に従い、W=Q(5.08984375)=5.0として計算し、かつ次の反復において使用するために量子化重みWを乗算及び加算ユニット102へと、現在の反復において使用するための減算ユニット106に供給する。減算ユニット106は、高精度残差Reを式(4)に従って、Res=5.08984375-5=0.08984375と計算し、かつ高精度残差Resを量子化ユニット108に供給する。量子化ユニット108は、量子化残差Resを式(5)に従ってRes=Q(0.08984375)=0.09375と計算し、この量子化残差Resを次の反復において使用するために乗算及び加算ユニット102に供給する。このプロセスは、それぞれの反復について、量子化重みW及び量子化残差Resを次の反復の入力として繰り返すことができる。
【0035】
いくつかの実施形態においては、残差を積極的に、例えば4又は5の指数ビットのFP8といったように低精度フォーマットへと量子化する場合、この範囲は小さな値を表すには制限されすぎる可能性がある。例示的な実施形態では、残差を量子化前に比例的にスケールアップすると共に、次の反復において使用する前にスケールダウンで戻す。例えば、スケールは、関数f(qmin/pmin,qmax/pmax)により選択することができ、ここで、pminは、量子化することができる最小の数であり、qminは、表現できる低精度フォーマットのより小さい数であり、pmaxは、量子化できる最大の数であり、qmaxは表現することができる低精度フォーマットの最大値である。関数f()は、オーバーフロー及びアンダーフローの間でのバランスを表す。例えば、関数f()がmin()関数の場合、スケール・ファクタは、例えば、pmax×scale<qmaxというように、オーバーフローを回避するために充分小さくなるように選択される。
【0036】
スケーリングが残差について利用される場合、スケールアップ・ユニット110及びスケールダウン・ユニット112が、図1の学習器回路100に追加される。
【0037】
スケールアップ・ユニット110が含まれる場合、減算ユニット106と、重みアップデート・フロー内の量子化ユニット108との間に配置されて、減算ユニット106からの高精度残差Res出力に対してスケールアップ操作を実行し、下記式(6)に従って高精度残差Resをスケールアップする。
【0038】
【数6】
【0039】
スケールアップされた高精度残差Resは、その後、減算ユニット106からの元のRes出力の代わりに、量子化ユニット108のための入力として使用される。量子化ユニット108は、式(5)に従ってスケールアップされた量子化残差Resを生成し、これをスケールダウン・ユニット112へと出力する。
【0040】
スケールダウン・ユニット112が含まれる場合、量子化ユニット108と、重みアップデート・フロー内の乗算及び加算ユニット102との間に配置されて、量子化ユニット108からのスケールアップされた量子化残差Res出力に対してスケールダウン操作を実行し、量子化残差Resを下記式(7)に従ってスケールダウンする。
【0041】
【数7】
【0042】
スケールダウン・ユニット112により、量子化残差Resの出力は、乗算及び加算ユニット102へと供給され、次の反復が乗算及び加算ユニット102により、通常のとおり継続され、スケールダウン・ユニット112から受領した量子化Resを使用し、式(2)に従い、高精度重みWを計算する。
【0043】
スケーリングを実行することの利点は、後述する2つの実施例のシナリオで示されるであろう。
【0044】
第1の実施例のシナリオでは、スケーリングを全く使用せず、例えばスケールとして1を使用する。乗算及び加算ユニット102は、入力の量子化0.5の量子化重みW、入力の0.0のRes、及び入力の1.52587890625E-5のlr×Wgradを受け取る。乗算及び加算ユニット102は、式(2)を使用して、高精度重みWの0.5000152587890625を計算する。量子化ユニット104は、式(3)を使用して量子化重みWの0.5を計算する。減算ユニットは、式(4)を使用して高精度残差Resの1.52587890625E-5を計算し、計算された高精度残差Resをスケールアップ・ユニット110に供給する。
【0045】
スケールアップ・ユニット110は、式(8)を使用して、Res=1.52587890625E-5×1=1.52587890625E-5、すなわち減算ユニット106により計算された高精度残差であるResから全く変化のないスケールアップされた残差Respを計算するが、これはスケーリングを全く使用しないためである。このスケールアップされた高精度残差Resは、量子化ユニット108へと供給され、ここで式(5)を使用してスケールアップされ、量子化残差Resである0.0を計算する。スケールアップされた量子化残差Resは、スケールダウン・ユニット112へと供給され、ここで式(7)を使用して量子化残差Resを、Res=0.0/1.0=0としてスケールダウンする。スケールダウンされた0.0の量子化残差Resは、次の反復のための入力として乗算及び加算ユニット102に供給される。
【0046】
次の反復においては、乗算及び加算ユニット102は、前の反復から入力の0.5の量子化重みW、入力のスケールダウンされた0.0のRes及び入力の4.57763671875E-5のlr×Wgradを受領する。乗算及び加算ユニット102は、式(2)を使用して、高精度重みWである0.5000457763671875を計算する。量子化ユニット104は、式(3)を使用して、量子化重みWの0.5を計算する。減算ユニット106は、式(4)を使用して高精度残差Resの4.57763671875E-5を計算し、計算された高精度残差Resをスケールアップ・ユニット110に供給する。
【0047】
スケールアップ・ユニット110は、式(6)を使用してスケールアップされた高精度残差Resを、Res=4.57763671875E-5×1=4.57763671875E-5と計算する。スケールアップされた高精度残差であるResの4.57763671875E-5が、量子化ユニット108に供給され、これは、式(5)を使用して、スケールアップされた量子化残差Resである0.0を計算する。スケールアップされた0.0の量子化残差Resは、スケールダウン・ユニット112へと供給され、これは、式(7)を使用して量子化残差Resを、Res=0.0/1=0.0にスケールダウンする。このスケールダウンされた0.0の量子化残差Resは、次の反復における入力として乗算及び加算ユニット102に供給される。
【0048】
上述した実施例のシナリオから見られるように、スケーリングを残差に対して全く適用せず、かつ高精度残差Resが、例えば、量子化からの浮動小数点フォーマットが取り扱うことができる最小値よりも小さいというように、極めて小さい場合、量子化残差Resは、0.0となり、まったく残差情報が次の反復に対してキャリー・オーバーされることがない。
【0049】
第2の実施のシナリオにおいて、スケーリングは、例えば2=256のスケールを使用する。乗算及び加算ユニット102は、入力の量子化重みWの0.5、入力のResの0.0及び入力のlr×Wgradの1.52587890625E-5を受け取る。乗算及び加算ユニット102は、式(2)を使用して、高精度重みWの0.5000152587890625を計算する。量子化ユニット104は、式(3)を使用して量子化重みWの0.5を計算する。減算ユニットは、式(4)を使用して高精度残差Resの1.52587890625E-5を計算して、計算された高精度残差Resをスケールアップ・ユニット110に供給する。
【0050】
スケールアップ・ユニット110は、式(8)を使用してRes=1.52587890625E-5×256=0.00390625を計算する。このスケールアップされた高精度残差Resの0.00390625は、量子化ユニット108へと供給され、ここで式(5)を使用してスケールアップされ、量子化残差Resである0.00390625を計算する。スケールアップされた量子化残差Resの0.00390625は、スケールダウン・ユニット112へと供給され、これは式(7)を使用して量子化残差Resを、Res=0.00390625/256=1.52587890625E-5としてスケールダウンする。スケールダウンされた1.52587890625E-5の量子化残差Resは、次の反復のための入力として、乗算及び加算ユニット102に供給される。
【0051】
次の反復においては、乗算及び加算ユニット102は、前の反復から入力の0.5の量子化重みW、入力のスケールダウンされた1.52587890625E-5のRes及び入力の4.57763671875E-5のlr×Wgradを受領する。乗算及び加算ユニット102は、式(2)を使用して高精度重みWである0.50006103515625を計算する。量子化ユニット104は、式(3)を使用して量子化重みWの0.5を計算する。減算ユニット106は、式(4)を使用して高精度残差Resの6.103515625E-5を計算して、計算された高精度残差Resをスケールアップ・ユニット110に供給する。
【0052】
スケールアップ・ユニット110は、式(6)を使用してスケールアップされた高精度残差Resを、Res=6.103515625E-5×256=0.015625と計算する。スケールアップされた高精度残差であるResの0.015625が、量子化ユニット108に供給され、これは式(5)を使用して、スケールアップされた量子化残差Resである0.015625を計算する。スケールアップされた量子化残差Resの0.015625は、スケールダウン・ユニット112へと供給され、これは、式(7)を使用して量子化残差Resを、Res=0.015625/256=6.103515625E-5にスケールダウンする。このスケールダウンされた6.103515625E-5の量子化残差Resは、次の反復における入力として、乗算及び加算ユニット102に供給される。
【0053】
上述した第2の実施例のシナリオに見られるように、スケーリングを残差に対して適用し、かつ高精度残差Resが、例えば、量子化からの浮動小数点フォーマットが取り扱うことができる最小値よりも小さいというように、極めて小さい場合、量子化残差Resは、実施例のシナリオ1での0.0ではなく、1.52587890625E-5となって、第1の反復から第2の反復へとキャリー・オーバーされる。例えばFP32といったより高精度の浮動小数点フォーマットを有する高精度残差Resを、例えばFP8又はFP16といった、より低精度の浮動小数点フォーマットを有する量子化残差Resへと量子化する前にスケールアップすることにより、そうでなければ量子化プロセスで失われてしまうより小さな残差の値を、次の反復における使用のために捕捉することができる。例えば第2の反復においてみられるように、残差値が通過してキャリーされ、さらに積算される。いくつかの実施形態においては、lr×Wgradの値が効率的に捕捉されて、量子化残差Resに積算されることに留意されたい。
【0054】
例示的な実施形態では、重み、残差、モーメンタム及び他のパラメータの量子化出力は、引き続く反復での使用のために格納され、以下のフォーマットに従い最適化することができる。モーメンタムは、重みをアップデートするためのSGDオプティマイザにおける任意的なパラメータである。モーメンタムは、以前の反復のモーメンタム及び現在の反復の勾配に基づいて計算される。例えば、それぞれの反復のためのモーメンタムは、下記の式(8)~(10)に従って計算することができる。
【0055】
【数8】
【0056】
ここで、
【0057】
νは、高精度モーメンタムであり;
【0058】
νは、以前の反復からの量子化モーメンタムであり;
【0059】
βは、例えば0.9といった1未満の定数であり;かつ
【0060】
Q(ν)は、例えば、切り捨て、最近接丸め、確率丸め、又は他の普遍的な量子化関数といった量子化関数である。例えば、上述した様な量子化ユニットは、高精度モーメンタムν、例えばFP32といったより高い浮動小数点フォーマットを、FP16又はFP8といったより低い浮動小数点フォーマットの量子化モーメンタムνへと量子化することができる。量子化モーメンタムνは、次の反復の間に使用される。
【0061】
量子化重みWについて、実施例の実施形態では、FP8フォーマットが使用でき、これは1つの符号ビット、4つの指数ビット、及び3つの仮数ビット、すなわち、(1,4,3)の構成を含む。この(1,4,3)の構成は、量子化重みWについて使用された場合、種々のディープ・ラーニング・タスクについて良好な性能を示し、かつFP16、FP32など、より高い精度のフォーマットを超えて性能を改善する。他の実施形態では、例えば(1,5,2)フォーマット、(1,6,1)構成、又は他の如何なるFP8フォーマットを含む、他のFP8フォーマットも使用することができる。いくつかの実施形態では、FP16又は他のより高い精度のフォーマットを、量子化重みWのために代替的に使用することができる。
【0062】
量子化残差Resについては、実施例の実施形態では、FP16フォーマットが使用でき、これは、1つの符号ビット、6つの指数ビット及び9つの仮数ビット、すなわち(1,6,9)構成を含む。この(1,6,9)構成は、量子化残差Resをして、FP8フォーマットの量子化重みWにより捕捉されない残差情報を保持させることを可能とする。いくつかの実施形態では、例えばFP8フォーマットといった、より低いフォーマットを、量子化残差Resに使用することもできる。いくつかの実施形態では、FP32又はさらにより高い精度のフォーマットを、量子化残差Resのために代替的に使用することができる。
【0063】
いくつかの実施形態においては、モーメンタム及び他の中間的パラメータのための量子化フォーマットは、また、量子化残差Resと同じフォーマット、例えば、(1,6,9)構成のFP16フォーマット又は上述した他のフォーマットのうちの1つに使用することができる。他の実施形態では、モーメンタム又は他の中間的パラメータのための量子化フォーマットは、量子化残差Resとは異なるフォーマットを使用することができる。
【0064】
高精度重みWといった高精度パラメータを、次の反復における使用のために量子化重みW及び量子化残差Resに分解することにより、学習器回路100は、ニューラル・ネットワーク操作において典型的に使用される完全な高精度パラメータを格納することに比較して、格納するために必要なビット数を削減することができる。例えば、典型的には高精度FP32フォーマットの高精度重みWは、次の反復における使用のため、32ビットの精度で格納され、例示的な実施形態では、高精度重みWは、8ビットの量子化重みWと、16ビットの量子化残差Resの2つのコンポーネントに変換され、これは、24ビットのストレージを必要とするだけである。
【0065】
追加的な効果は、多重学習器システムを使用することを通じて達成される。多重学習器システムにおいては、それぞれの学習器は、所与の反復のための重みのアップデートの一部又は小部分を実行する。例えば、図2を参照すると、例示的な実施形態では、実施例の多重学習器システム200が図示されている。多重学習器システム200は、学習器202,202,...,202を含む。多重学習器システム200におけるそれぞれの学習器202は、少なくとも学習器回路100の一部を含む。いくつかの実施形態では、1つ又はそれ以上の学習器202は、図13を参照して以下に、より詳細に説明するコンポーネントである、コンピューティング・ノード1310を含む。
【0066】
それぞれの学習器202は、それぞれ、重みアップデート情報のエントリ204,204,...204-N,204-1,204-2,...204-N...204-1,204-2,...204-Nを有し、それぞれが、ニューラル・ネットワークのための、重み勾配、残差、及びモーメンタムの部分に対応する。それぞれのエントリ204は、学習器202の1つにより生成された重みアップデート情報の部分に対応する。例えばエントリ204-1は、学習器202により生成された重みアップデート情報の部分に対応し、エントリ204-2は、学習器202,...により生成された部分的な重みアップデート情報に対応し、そしてエントリ204-Nは、学習器202により生成された重みアップデート情報の部分に対応する。
【0067】
いくつかの実施形態では、所与の学習器202は、重みアップデート・エントリ204の1つ以上の部分のための重みアップデート情報を生成することができる。いくつかの実施形態では、それぞれのエントリに対応する重み勾配、残差及びモーメンタムの部分は、1つ又はそれ以上のレイヤの、及びいくつかの実施形態では、それぞれのレイヤの重み勾配、残差、及びモーメンタムの部分を含むことができる。例えば、いくつかの実施形態では、所与の学習器202は、ニューラル・ネットワークのそれぞれのレイヤ上で見出される、重み勾配、残差、及びモーメンタムの同一の部分を伴う重みアップデート情報の計算を取り扱う。
【0068】
いくつかの実施形態では、誤差逆伝搬の後、それぞれの学習器202は、部分的に削減された重み勾配Wgradの部分dwを取得又は計算し、他のそれぞれの学習器202へと部分dwを供給する。部分的に削減された重み勾配とは、誤差逆伝搬の間にそれぞれの学習器202により計算された全部が削減された重み勾配の一部又はチャンクを参照する。それぞれの学習器202について、部分的に削減された重み勾配Wgradの少なくとも1つの部分dwは、すべての学習器202から得られる部分的に削減された重み勾配Wgradの同一の部分と合計されて、部分dwについての全部が削減された重み勾配Wgradを形成し、これが重みの対応する部分をアップデートするために使用される。
【0069】
学習器回路100を使用して所与の学習器202により生成されるか又は計算された量子化重みWの部分及び重み勾配Wgradの部分dwは、他の学習器202へと複製され、いくつかの実施形態では、量子化残差Res及び例えば重みの対応する部分をアップデートするために所与の学習器202により使用されるモーメンタムといった、他のパラメータは複製されず、その代わりに所与の学習器202上でローカルに格納される。例えば、量子化残差Resの部分は、所与の学習器202の学習器回路100内部で使用され、他の学習器202はそれらの量子化重みWのそれぞれの部分を計算するために必要でないので、所与の学習器202により使用される量子化残差Resの部分を、他の学習器202複製する必要はなく、このことは、必要とされる帯域幅を削減する。
【0070】
それぞれの所与の学習器202は、少なくとも学習器回路100の少なくとも部分を使用して、ニューラル・ネットワークの所与のレイヤに対応する、量子化重みWの部分を計算する。量子化重みWの部分は、それぞれ他の学習器202へと複製され、所与のレイヤの対応するエントリ204に格納される。それぞれの学習器202から得られた量子化重みWの複数の部分は、例えば、互いにコンカテネートされて、すべての学習器において使用される量子化重みWを形成する。
【0071】
ここで、図3及び図4を参照すると、多重学習器システム300の他の実施形態において、パラメータ・サーバ306が学習器302,302,302...302Nに加えて含まれている。多重学習器システム300は、多重学習器302と1つ又はそれ以上の中央パラメータ・サーバ306との間で、上述した重みアップデート・フローを分離する。例えば、複数の学習器302は、それぞれの部分的に削減された重み勾配304,304,304...304を、例えばFP16フォーマットとしてパラメータ・サーバ306に登録し、パラメータ・サーバ306は、例えば、部分的に削減された重み勾配304を集める、例えば合計して、全部が削減された重み勾配を形成し、回路100の少なくとも一部を使用して量子化された全部が削減された重み勾配及び新たな量子化重み308を生成する。図4に示されるように、パラメータ・サーバ306により残差310が計算されて、ローカルに格納されると共に、実施例の実施形態においてFP8フォーマットを有するアップデートされた量子化重み312,312,312...312Nは、次の反復における使用のため学習器302に供給される。
【0072】
図3及び図4に見られるように、例えばFP32フォーマットといった高精度フォーマットを有する高精度重みを、パラメータ・サーバ306を有する多重学習器システム300内でより低精度フォーマット、例えばFP8フォーマットの量子化重み、及びより低精度、例えばFP16フォーマットの残差に分離することは、学習器302と、パラメータ・サーバ306との間で要求される帯域幅利用を削減する。例えば、全32ビットの高精度重み又は他のパラメータを学習器302と、パラメータ・サーバ306との間で送付することに代えて、それぞれの学習器302は、パラメータ・サーバに対して16ビットの部分的に削減された重み勾配304を送付することが必要なだけである。パラメータ・サーバ306は、その後、少なくともいくつかの回路100によって計算を実行し、それぞれの学習器302に対して8ビットの量子化重みを送付することが必要なだけである。この顕著な帯域幅における削減は、システムの効率を向上させる。
【0073】
ここで、図5及び6を参照すると、もう1つの実施例の多重学習器システム500において、パラメータ・サーバを含まない、リング・ベースの構成が使用されている。多重学習器システム500は、学習器502,502,502,...,502を含んでおり、ここで、学習器502は、隣接した学習器502及び502と通信する構成とされ、学習器502は、学習器502及び502と通信するといったようにリング内で構成されている。
【0074】
多重学習器システム500は、多重学習器502の間で重みアップデートを分離しており、ここで、それぞれの学習器502は、少なくともいくつかの学習器回路100に従って計算を実行し、それぞれの部分的に削減された重み勾配504,504,504,...504を決定する。いくつかの実施形態では、部分的に削減された重み勾配は、FP16フォーマットを有する。学習器502は、部分的に削減された重み勾配を、複数の部分として隣接する複数の学習器502に供給し、リングの周りに部分的に削減された重み勾配を伝搬させる。いくつかの実施形態では、少なくとも1つの部分的に削減された重み勾配504は、それぞれの学習器が、全部が削減された重み勾配の部分を保有するまで、それぞれの学習器502内に積算される。学習器502は、その後、少なくとも部分的に全部が削減された重み勾配の同一の部分に基づいて、それらの自己の重みの部分をアップデートし、アップデートされた重みのそれぞれの部分及び残差506,506,506,...506をアップデートする(図6)。いくつかの実施形態においては、例えば、アップデートされた重みは、FP8フォーマットの量子化重みであり、残差は、FP16フォーマットの量子化残差である。それぞれの学習器からのそれぞれの部分の量子化重みは、その後、学習器502がアップデートされた重みの全セットを保有するまで上述したように、リングに沿って送付されるが、それぞれの学習器502は、残差に関しその自己の部分を維持しており、他の学習器と残差の部分を共有しない。いくつかの実施形態では、残差は、代替的にリングを巡って共有することができる。
【0075】
図5及び6に見られるように、リング構成を有する多重学習器システム500において、例えばFP32フォーマットといった高精度フォーマットを有する高精度重みを、例えばFP8フォーマットといったより低精度フォーマットの量子化重み及びFP16フォーマットといったより低精度フォーマットの残差に分離することにより、リング内の学習器502の間で使用される帯域幅を削減することができる。例えば全32ビットの高精度重み又は他のパラメータをそれぞれの学習器の間で送付することに代えて、重み勾配を置換し及び積算するために16ビットを送付することができ、8ビットを、重みそれ自体を置換するために送付することができる。この著しい削減は、システム内の効率を増加させる。
【0076】
ここで、図7図12を参照して、多重学習器システム500において利用することができる実施例の、重みアップデート・フローをここに説明する。
【0077】
図7は、第1の学習器700及び第2の学習器720の2つの学習器を有する多重学習器システムを示す。図7図12は、理解を容易にするため、2つの学習器を有する多重学習器システムを示すが、図7~12に示す実施例の重みアップデート・フローは、2つより多い学習器についても利用することができる。
【0078】
図7に示されるように、第1の学習器700は、バッファ702を含み、第2の学習器720は、バッファ722を含む。バッファ702は、第1の学習器700のための勾配を含んでいて、これが(1)により示されており、バッファ722は、第2の学習器720のための勾配を含んでいて、これが(2)で示されている。
【0079】
ここで図8を参照すると、バッファ702は、第1の部分702-1及び第2の部分702-2を含んでおり、これらはそれぞれ、勾配(1)のチャンクを格納する。例えば、部分702-1は、チャンク1(1)として指定される勾配(1)の第1のチャンクを格納し、部分702-2は、チャンク2(1)として指定される、勾配(1)の第2のチャンクを格納する。同様に、バッファ722は、部分722-1及び722-2を含んでおり、これらはそれぞれ勾配(2)のチャンクを格納する。例えば、部分722-1は、チャンク1(2)として指定される勾配(2)の第1のチャンクを格納し、部分722-2は、チャンク2(2)として指定される勾配(2)の第2のチャンクを格納する。いくつかの実施形態においては、それぞれの学習器についてのバッファが分離される部分の数は、多重学習器システム内の学習器の全数に基づく。例えば、多重学習器システムに6つの学習器が存在する場合、それぞれの学習器は、バッファの6つの部分を含むことができ、これらのそれぞれがその学習器の所与のチャンクを含む。多重学習器システム内の所与の学習器は、学習器すべてのバッファの所与の部分に関連することができる。例えば、いくつかの実施形態では、多重学習器システム内のそれぞれの学習器について、それぞれのバッファの第1の部分は、学習器700に関連することができ、それぞれのバッファの第2の部分は、学習器720に関連することができるといったように、である。
【0080】
ここで図9を参照すると、実施例の実施形態においては、学習器700は、第1の部分702-1及び722-1に関連するが、学習器720は、第2の部分702-2及び722-2に関連する。図9に示すように、部分722-1のチャンク1(2)は、学習器700の部分702-1に複製され、部分702-2のチャンク2(1)は、学習器720の部分722-2に複製される。上述したように、追加的な学習器が存在する場合、これらそれぞれの追加的な学習器のチャンク1は、部分702-1に複製され、これらそれぞれの追加的な学習器のチャンク2は、部分702-2に複製され、追加的な如何なるチャンクでも、そのチャンクを格納する部分について関連する学習器に複製されるであろう。いくつかの実施形態で、例えば、リング構成が利用される場合、それぞれのチャンクの複製は、1つ又はそれ以上の中間の学習器を介して発生する。
【0081】
ここで図10を参照すると、それぞれの学習器は、関連する部分についての複製されたチャンクを互いに合計する。例えば、学習器700は、部分702-1のチャンク1(1)とチャンク1(2)とを互いに合計して、合計チャンク1(1&2)を形成する。同様に学習器720は、部分722-2のチャンク2(1)と、チャンク2(2)とを互いに合計して、合計チャンク2(1&2)を形成する。いくつかの実施形態では、合計チャンク1(1&2)のサイズは、例えば削減-散乱(reduce-scatter)フェーズを使用して、サイズ的に単一チャンク1(1)の元のサイズに戻すことができる。実施例の実施形態においては、それぞれの学習器は、それに関連した部分として見出されたチャンクを合計するだけであり、そのバッファ内の全部の部分ではないことに留意されたい。これがそれぞれの学習器に要求される計算を削減するが、これはそれぞれの学習器がシステム内の効率を改善する勾配の異なる部分について計算を実行するためである。
【0082】
ここで、図11を参照すると、それぞれの学習器は、その学習器に関連する部分に格納されたチャンクについて重みをアップデートする。例えば、学習器700は、合計チャンク1(1&2)に少なくとも部分的に基づいてバッファ702の部分702-1に格納されたチャンク1についての重みをアップデートする。同様に学習器720は、合計チャンク2(1&2)に少なくとも部分的に基づいて、バッファ722の部分722-2に格納されたチャンク2についての重みをアップデートする。例示的な実施形態では、重みは、上述した如何なる実施形態においても説明したように、回路100に従ってアップデートすることができる。
【0083】
実施例の実施形態においては、それぞれの学習器は、それに関連する部分について見出されるチャンクについての重みをアップデートするだけであり、そのバッファのすべての部分ではないことに留意されたい。これがそれぞれの学習器に要求される計算を削減するが、これはそれぞれの学習器がシステム内の効率を改善する勾配の異なる部分について計算を実行するためである。このことが、オンチップ・メモリに対する局所的なメモリ・ストレスを大きく削減し、かつ、また、オフチップ・メモリを利用する場合には、例えば30%の帯域幅における大きな削減をもたらす。例示的な実施形態において、重みは、また、例えば上述したようにFP8フォーマットに量子化することができる。
【0084】
ここで図12を参照すると、それぞれの学習器は、その学習器に関連する部分に格納されたチャンクについてアップデートされた重みを、多重学習器システム内の他の学習器へと複製する。例えば、学習器700は、そのバッファ702の部分702-1に格納されたチャンク1についてのアップデートされた重みを、学習器720に提供し、これはバッファ722の部分722-1に格納されたチャンク1についての対応する重みを上書きする。同様に、学習器720は、そのバッファ722の部分722-1に格納されたチャンク2についてのアップデートされた重みを、学習器700に提供し、これはバッファ702の部分702-2に格納されたチャンク2についての対応する重みを上書きする。他の学習器は、同様にそれぞれの部分についてのアップデートされた重みが供給される。実施例の実施形態においては、それぞれの学習器は、他の学習器へとその関連する部分についての重みを供給するだけであり、そのバッファのすべての重みではないことに留意されたい。これがそれぞれの学習器で必要とされる計算を削減するが、これは、それぞれの学習器がシステム内の効率を改善する重みの異なる部分についての計算を実行するためである。加えて、重みが例えばFP8フォーマットといった低精度フォーマットへと量子化される場合、それぞれの学習器が他の学習器に複製するために1つの重みを供給するだけなので、帯域幅使用における追加的な効果が達成される。
【0085】
本発明は、いかなる可能な技術的に詳細な一体化レベルであっても、システム、方法、コンピュータ可読な記録媒体又はコンピュータ・プログラム及びこれらの組み合わせとすることができる。コンピュータ可読な記録媒体(又は複数)及びコンピュータ・プログラムは、プロセッサが本発明の特徴を遂行するためのコンピュータ可読なプログラム命令を有する。
【0086】
コンピュータ可読な記録媒体は、命令実行デバイスが使用するための複数の命令を保持し格納することができる有形のデバイスとすることができる、コンピュータ可読な媒体は、例えば、これらに限定されないが、電気的記録デバイス、磁気的記録デバイス、光学的記録デバイス、電気磁気的記録デバイス、半導体記録デバイス又はこれらのいかなる好ましい組み合わせとすることができる。コンピュータ可読な記録媒体のより具体的な実施例は、次のポータブル・コンピュータ・ディスク、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能なプログラマブル・リード・オンリー・メモリ(EPROM又はフラッシュ・メモリ(登録商標))、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・イオンリー・メモリ(CD-ROM)、デジタル多目的ディスク(DVD)、メモリ・スティック、フロッピー・ディスク(登録商標)、パンチ・カード又は命令を記録した溝内に突出する構造を有する機械的にエンコードされたデバイス、及びこれらの好ましい如何なる組合せを含む。本明細書で使用するように、コンピュータ可読な記録媒体は、ラジオ波又は他の自由に伝搬する電磁波、導波路又は他の通信媒体(例えば、光ファイバ・ケーブルを通過する光パルス)といった電磁波、又はワイヤを通して通信される電気信号といったそれ自体が一時的な信号として解釈されることはない。
【0087】
本明細書において説明されるコンピュータ・プログラムは、コンピュータ可読な記録媒体からそれぞれのコンピューティング/プロセッシング・デバイスにダウンロードでき、又は例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク又はワイヤレス・ネットワーク及びそれからの組み合わせといったネットワークを介して外部コンピュータ又は外部記録デバイスにダウンロードすることができる。ネットワークは、銅通信ケーブル、光通信ファイバ、ワイヤレス通信ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ及びエッジ・サーバ又はこれらの組み合わせを含むことができる。それぞれのコンピューティング/プロセッシング・デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インタフェースは、ネットワークからコンピュータ可読なプログラム命令を受領し、このコンピュータ可読なプログラム命令を格納するためにそれぞれのコンピューティング/プロセッシング・デバイス内のコンピュータ可読な記録媒体内に転送する。
【0088】
本発明の操作を遂行するためのコンピュータ可読なプログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械語命令、マシン依存命令、マイクロ・コード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は1つ又はそれ以上の、Smalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、“C”プログラミング言語又は類似のプログラム言語といった手続き型プログラミング言語を含むプログラミング言語のいかなる組合せにおいて記述されたソース・コード又はオブジェクト・コードのいずれかとすることができる。コンピュータ可読なプログラム命令は、全体がユーザ・コンピュータ上で、部分的にユーザ・コンピュータ上でスタンドアローン・ソフトウェア・パッケージとして、部分的にユーザ・コンピュータ上で、かつ部分的にリモート・コンピュータ上で、又は全体がリモート・コンピュータ又はサーバ上で実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)を含むいかなるタイプのネットワークを通してユーザ・コンピュータに接続することができ、又は接続は、外部コンピュータ(例えばインターネット・サービス・プロバイダを通じて)へと行うことができる。いくつかの実施形態では、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲートアレイ(FPGA)、又はプログラマブル論理アレイ(PLA)を含む電気回路がコンピュータ可読なプログラム命令を、コンピュータ可読なプログラム命令の状態情報を使用して、本発明の特徴を実行するために電気回路をパーソナライズして実行することができる。
【0089】
本発明の特徴を、フローチャート命令及び方法のブロック図、又はそれらの両方、装置(システム)、及びコンピュータ可読な記録媒体及びコンピュータ・プログラムを参照して説明した。フローチャートの図示及びブロック図又はそれら両方及びフローチャートの図示におけるブロック及びブロック図、又はそれらの両方のいかなる組合せでもコンピュータ可読なプログラム命令により実装することができることを理解されたい。
【0090】
これらのコンピュータ可読なプログラム命令は、汎用目的のコンピュータ、特定目的のコンピュータ、または他のプロセッサ又は機械を生成するための他のプログラマブル・データ・プロセッシング装置に提供することができ、コンピュータのプロセッサ又は他のプログラマブル・データ・プロセッシング装置による実行がフローチャート及びブロック図のブロック又は複数のブロック又はこれらの組み合わせで特定される機能/動作を実装するための手段を生成する。コンピュータ、プログラマブル・データ・プロセッシング装置及び他の装置又はこれらの組み合わせが特定の仕方で機能するように指令するこれらのコンピュータ可読なプログラム命令は、またコンピュータ可読な記録媒体に格納することができ、その内に命令を格納したコンピュータ可読な記録媒体は、フローチャート及びブロック図のブロック又は複数のブロック又はこれらの組み合わせで特定される機能/動作の特徴を実装する命令を含む製造品を含む。
【0091】
コンピュータ可読なプログラム命令は、またコンピュータ、他のプログラマブル・データ・プロセッシング装置、又は他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、又は他のデバイス上で操作ステップのシリーズに対してコンピュータ実装プロセスを生じさせることで、コンピュータ、他のプログラマブル装置又は他のデバイス上でフローチャート及びブロック図のブロック又は複数のブロック又はこれらの組み合わせで特定される機能/動作を実装させる。
【0092】
図のフローチャート及びブロック図は、本発明の種々の実施形態にしたがったシステム、方法及びコンピュータ・プログラムのアーキテクチャ、機能、及び可能な実装操作を示す。この観点において、フローチャート又はブロック図は、モジュール、セグメント又は命令の部分を表すことかでき、これらは、特定の論理的機能(又は複数の機能)を実装するための1つ又はそれ以上の実行可能な命令を含む。いくつかの代替的な実装においては、ブロックにおいて記述された機能は、図示した以外で実行することができる。例えば、連続して示された2つのブロックは、含まれる機能に応じて、実際上1つのステップとして遂行され、同時的、実質的に同時的に、部分的又は完全に一時的に重ね合わされた仕方で実行することができ、又は複数のブロックは、時として逆の順番で実行することができる。またブロック図及びフローチャートの図示、又はこれらの両方及びブロック図中のブロック及びフローチャートの図示又はこれらの組み合わせは、特定の機能又は動作を実行するか又は特定の目的のハードウェア及びコンピュータ命令を遂行する特定目的のハードウェアに基づいたシステムにより実装することができることを指摘する。
【0093】
1つ又はそれ以上の実施形態は、汎用目的のコンピュータ又はワークステーション上で動作するソフトウェアの使用を可能とする。図13を参照すると、コンピューティング・ノード1310には、コンピュータ・システム/サーバ1312が存在し、これは、数多くの他の汎用コム的又は特定目的のコンピューティング・システム環境と共に操作可能である。コンピュータ・システム/サーバ1312と共に使用することに好適な周知のコンピューティング・システム、環境又は構成又はそれらの組み合わせは、これらに限定されることは無く、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルド又はラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セットトップ・ボックス、プログラム可能なコンシューマ電子機器、ネットワークPC(複数)、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び上述のシステム又はデバイスなどのいずれをも含む、分散クラウド・コンピューティング環境を含む。
【0094】
コンピュータ・サーバ1312は、コンピュータ・システムにより実行されるプログラム・モジュールといったコンピュータ・システムが実行可能な命令の一般的なコンテキストにおいて記述することができる。一般には、プログラム・モジュールは、特定のタスクを遂行するか又は特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム・サーバ1312は、タスクが通信ネットワークを通してリンクされたリモート処理システム・デバイスにより遂行される、分散クラウド・コンピューティング環境において実装することができる。
【0095】
図13に示すように、コンピューティング・ノード1310内のコンピュータ・システム/サーバ1312は、汎用目的のコンピューティング・デバイスの形式で示されている。コンピュータ・システム/サーバ1312のコンポーネントは、限定されることは無く、1つ又はそれ以上のプロセッサ又はプロセッシング・ユニット1316と、システム・メモリ1328と、システム・メモリ1328を含む種々のシステム・コンポーネントをプロセッシング・ユニット1316に結合するバス1318とを含む。例示する実施形態においては、プロセッシング・ユニット1316は、回路100を含む。1つの実施形態では、プロセッシング・ユニット1316は、回路100から分離することができ、回路100又はネットワーク・アダプタ1320と通信するように構成することができる
【0096】
バス1318は、メモリ・バス又はメモリ・コントローラ、ペリフェラル・バス、グラフィックス・アクセラレータ・ポート、及びプロセッサ又は種々のバス・アーキテクチャの如何なるものを使用するローカル・バスを含む、1つ又はそれ以上のバス構造のいくつかのタイプの如何なるものも表す。例示の目的で、限定的でなく、そのようなアーキテクチャは、インダストリー・スタンダード・アーキテクチャ(ISA)バス、マイクロ-チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダード・アソシエーション(VESA)ローカル・バス、及びペリフェラル・インタコネクト(PCI)バスを含む。
【0097】
コンピュータ・システム/サーバ1312は、典型的には、種々のコンピュータ可読な媒体を含む。そのような媒体は、コンピュータ・システム/サーバ1312によりアクセス可能な利用可能な如何なる媒体とすることができ、揮発性及び不揮発性の媒体、取り外し可能及び取り外し不可能な媒体を含む。
【0098】
システム・メモリ1328は、ランダム・アクセス・メモリ(RAM)1330といった揮発性メモリ又はキャッシュ・メモリ1332又はそれら両方といったコンピュータ可読な媒体を含むことができる。コンピュータ・システム/サーバ1312は、さらに、他の取り外し可能/取り外し不可能、揮発性/不揮発性のコンピュータシステム・ストレージ媒体を含むことができる。例示の目的のみで、ストレージ・システム1334は、取り外し不可能で、不揮発性の磁性媒体(示しておらず、かつ典型的には“ハードドライブ”と呼ばれる。)との間で読み込み及び書き込みのために提供することができる。示していないが、取り外し可能な不揮発性の磁気ディスク・ドライブ(例えば、“フロッピー・ディスク(登録商標)”)及びCD-ROM、DVD-ROM又は他の光学的媒体といった取り外し可能で不揮発性の光学ディスクとの間で読み込み及び書き込みが可能な光学ディスク・ドライブを提供することができる。そのような例においては、それぞれは、1つ又はそれ以上の媒体インタフェースによりバス1318へと接続することができる。さらに図示し、かつ以下に説明するように、メモリ1328は、本発明の実施形態の機能を遂行するように構成されたプログラム・モジュールのセット(少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。プログラム/ユーティリティ1340は、プログラム・モジュール1342のセット(少なくとも1つ)を有しており、実施例の目的で、非限定的に、オペレーティング・システムに加え、1つ又はそれ以上のアプリケーション・プログラム、他のプログラム・モジュール及びプログラム・データを、メモリ1328内に格納することができる。オペレーティング・システム、1つ又はそれ以上のアプリケーション・プログラム、他のプログラム・モジュール及びプログラム・データ又はそれらのいくつかの組み合わせのそれぞれは、ネットワーク環境の実装を含むことができる。プログラム・モジュール1342は、一般には、本明細書で説明したように本発明の実施形態の機能又は方法論又はそれら両方を遂行する。
【0099】
コンピュータ・サーバ1312は、また、キーボード、ポインティング・デバイス、ディスプレイ1324など、1つ又はそれ以上の外部デバイス1314と通信することができる;1つ又はそれ以上のデバイスは、ユーザを、コンピュータ・システム/サーバ1312又はコンピュータ・システム/サーバ1312を1つ又はそれ以上のコンピューティング・デバイスと通信を可能とする如何なるデバイス(例えばネットワーク・カード、モデムなど)、又はそれら両方に相互作用させることが可能である。そのような通信は、入力/出力(I/O)インタフェース1322を介して発生することができる。さらに、コンピュータ・サーバ12は、ローカル・エリア・ネットワーク(LAN)、汎用ワイド・エリア・ネットワーク(WAN)、又は公衆ネットワーク(インターネット)又はそれらの組み合わせといった、1つ又はそれ以上のネットワークとネットワーク・アダプタ1320を介して通信可能である。図示するように、ネットワーク・アダプタ1320は、コンピュータ・システム/サーバ1312の他のコンポーネントとバス1318を介して通信する。図示しないが、他のハードウェア又はソフトウェア又はそれら両方のコンポーネントは、コンピュータ・システム/サーバ1312との組み合わせで使用することができるであろうことは理解されるべきである。実施例は、限定することではなく、マイクロ・コード、デバイス・ドライバ、冗長処理ユニット、及び外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムなどを含む
【0100】
本開示の種々の実施形態の説明は、例示の目的のために提示されたが、開示された実施形態への排他又は限定を意図するものではない。多くの変更例又は変形例は、本開示の範囲及び精神から逸脱することなく、当業者において自明である。本明細書で使用する用語は、本実施形態の原理、実用的用途、又は市場において見出される技術を超える技術的改善を最良に説明するため、又は本明細書において開示された実施形態を当業者の他の者が理解できるようにするために選択したものである。
【0101】
本明細書に開示する本発明の実施形態においては、複数のコンポーネントを含む多重学習器システムの少なくとも1つの学習器を含む装置が提供され、少なくとも1つの学習器は、勾配の部分を生成し;多重学習器システムの少なくとも1つの他のコンポーネントに勾配の部分を供給し;かつ多重学習システムの少なくとも1つの他のコンポーネントから重みの少なくとも部分を取得し;かつ取得した重みの少なくとも部分に少なくとも部分的に基づいて勾配の部分をアップデートするように構成される。多重学習器システムの少なくとも1つの他のコンポーネントは、パラメータ・サーバを含むことができ;重みの少なくとも部分が、重みの全体を構成し、多重学習器システムの少なくとも1つの他のコンポーネントに勾配の部分を供給することは、パラメータ・サーバに対して勾配の部分を供給することを含み、パラメータ・サーバは、供給された勾配の部分に少なくとも部分で気に基づいて重みを生成し、かつ子の重みを少なくとも学習器に供給するように構成される。多重学習器システムは、リング・フォーマットに構成された複数の学習器を含むことができ、多重学習器システムの少なくとも1つの他のコンポーネントに勾配の部分を提供することは、複数の学習器のうちの少なくとも他の1つに勾配の部分を供給することを含み;少なくとも1つの学習器はさらに、少なくとも1つの他の学習器から少なくとも勾配の第2の部分を受領し;勾配の部分及び勾配の第2の部分に少なくとも部分的に基づいて、少なくとも重みの第2の部分を生成し;かつ少なくとも1つの他の学習器に少なくとも重みの第2の部分を供給するように構成される。少なくとも1つの他の多重学習器システムのコンポーネントから取得した重みの少なくとも部分は、多重学習器システムの少なくとも第3の学習器により生成された重みの第3の部分を含むことができる。取得した重みの少なくとも部分に少なくとも部分的に基づく勾配の部分をアップデートすることは、少なくとも1つの学習器により生成された重みの第2の部分及び多重学習器の少なくとも第3の学習器により生成された重みの第3の部分に少なくとも部分的に基づいて勾配の部分をアップデートすることを含む。少なくとも1つの学習器はさらに、生成された重みの少なくとも第2の部分に少なくとも部分的に基づいて残差を生成し;かつこの残差に少なくとも部分的に基づいて、少なくとも重みの第2の部分をアップデートするように構成することができ、ここで残差は、少なくとも1つの学習器にローカルに格納され、複数の学習器の少なくとも1つの学習器には供給されない。勾配の部分は、16ビット・フォーマットを含み、かつ重みの少なくとも部分は、8ビット・フォーマットを含む。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13