(57)【要約】      （修正有）【課題】フレキシブルな浮動小数点テンソルを用いた人工ニューラルネットワーク訓練方法を提供する。【解決手段】複数の１６ビット浮動小数点（ＦＰ１６）値と、テンソルに含まれるＦＰ１６値の一部又は全てにより共有される指数を定める複数のビットとを含むテンソルを用いて、ニューラルネットワークを訓練する方法であって、ＦＰ１６値は、ＩＥＥＥ７５４フォーマットの１６ビット浮動小数点値を含む。テンソルは、共有指数を定める複数のビットと、共有指数と、可変ビット長仮数及びプロセッサ回路により動的に設定される可変ビット長指数を含むＦＰ１６値と、共有指数と、可変ビット長仮数、プロセッサ回路により動的に設定される可変ビット長指数及びプロセッサ回路によりＦＰ１６値指数を共有指数と選択的に組み合わせるよう設定される共有指数スイッチを含むＦＰ１６値と、を含む。【選択図】図５
2019212295.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークを訓練するためのシステムであって、
プロセッサ回路と、
前記プロセッサ回路に結合される通信インタフェースであって、ニューラルネットワークに結合可能な通信インタフェースと、
前記プロセッサ回路に結合される記憶デバイスであって、機械可読命令を含む記憶デバイスと
を備え、
前記機械可読命令は、前記プロセッサ回路により実行された場合、前記プロセッサ回路に、
ニューラルネットワーク訓練テンソルを生成させ、前記ニューラルネットワーク訓練テンソルは、
複数の１６ビット浮動小数点値であって、
それぞれの浮動小数点数の仮数を形成する第１の複数のビット、および
それぞれの浮動小数点数の指数を形成する第２の複数のビット
を各々が含む複数の１６ビット浮動小数点値、および
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値の各々に共通する５ビット共有指数
を含む、システム。
【請求項２】
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値の各々は、
前記第１の複数のビットにより提供される１０ビット仮数、
前記第２の複数のビットにより提供される５ビット指数、および
１ビット符号
を含む、請求項１に記載のシステム。
【請求項３】
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値の各々は、
前記第１の複数のビットにより提供される可変ビット長仮数、
前記第２の複数のビットにより提供される可変ビット長指数、および
１ビット符号
を含み、
前記機械可読命令はさらに、前記プロセッサ回路に、１または複数のニューラルネットワークパラメータに基づいて、
前記可変ビット長仮数を表すためのビット数、および
前記可変ビット長指数を表すためのビット数
を選択させる、請求項１または２に記載のシステム。
【請求項４】
前記１または複数のニューラルネットワークパラメータは、前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示すトレンドを含む、請求項３に記載のシステム。
【請求項５】
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値の各々は、
前記第１の複数のビットにより提供される前記仮数、
前記第２の複数のビットにより提供される前記指数、
１ビット符号、および
それぞれの１６ビット浮動小数点数の前記指数を前記５ビット共有指数と選択的に組み合わせるための１ビットスイッチ
を含む、請求項１から４のいずれか一項に記載のシステム。
【請求項６】
ニューラルネットワークを訓練する方法であって、
プロセッサ回路が、ニューラルネットワーク訓練テンソルを生成する段階であって、前記ニューラルネットワーク訓練テンソルは、
複数の１６ビット浮動小数点値であって、
それぞれの浮動小数点数の仮数を形成する第１の複数のビット、および
それぞれの浮動小数点数の指数を形成する第２の複数のビット
を各々が含む複数の１６ビット浮動小数点値、および
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値の各々に共通する５ビット共有指数
を含む、生成する段階と、
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値のうちの少なくとも１つを前記ニューラルネットワークに入力として提供する段階と
を備える方法。
【請求項７】
前記ニューラルネットワーク訓練テンソルを生成する段階は、
前記複数の１６ビット浮動小数点値および前記５ビット共有指数を含む前記ニューラルネットワーク訓練テンソルを生成する段階を含み、前記複数の１６ビット浮動小数点値の各々は、
前記第１の複数のビットにより提供される１０ビット仮数、
前記第２の複数のビットにより提供される５ビット指数、および
１ビット符号
を含む、請求項６に記載の方法。
【請求項８】
前記ニューラルネットワーク訓練テンソルを生成する段階は、
前記複数の１６ビット浮動小数点値および前記５ビット共有指数を含む前記ニューラルネットワーク訓練テンソルを生成する段階を含み、前記複数の１６ビット浮動小数点値の各々は、
前記第１の複数のビットにより提供される可変ビット長仮数、
前記第２の複数のビットにより提供される可変ビット長指数、および
１ビット符号
を含む、請求項６または７に記載の方法。
【請求項９】
前記プロセッサ回路が、１または複数のニューラルネットワークパラメータに基づいて、
前記可変ビット長仮数を表すための第１のビット数、および
前記可変ビット長指数を表すための第２のビット数
を選択する段階をさらに備える、請求項８に記載の方法。
【請求項１０】
前記プロセッサ回路が、前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値のうちの１または複数におけるトレンドを検出する段階をさらに備え、検出される前記トレンドは、前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示す、請求項９に記載の方法。
【請求項１１】
前記可変ビット長仮数を表すための第１のビット数、および前記可変ビット長指数を表すための第２のビット数を選択する段階は、
前記プロセッサ回路が、前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示すトレンドの検出に応答して、前記第１の複数のビットに含まれる第１のビット数および前記第２の複数のビットに含まれる第２のビット数を選択する段階を含む、請求項９または１０に記載の方法。
【請求項１２】
前記ニューラルネットワーク訓練テンソルを生成する段階は、
前記複数の１６ビット浮動小数点値および前記５ビット共有指数を含む前記ニューラルネットワーク訓練テンソルを生成する段階を含み、前記複数の１６ビット浮動小数点値の各々は、
前記第１の複数のビットにより提供される前記仮数、
前記第２の複数のビットにより提供される前記指数、
１ビット符号、および
それぞれの１６ビット浮動小数点数の前記指数を前記５ビット共有指数と選択的に組み合わせるための１ビットスイッチ
を含む、請求項６から１１のいずれか一項に記載の方法。
【請求項１３】
ニューラルネットワーク訓練システムであって、
プロセッサ回路が、ニューラルネットワーク訓練テンソルを生成するための手段であって、前記ニューラルネットワーク訓練テンソルは、
複数の１６ビット浮動小数点値であって、
それぞれの浮動小数点数の仮数を形成する第１の複数のビット、および
それぞれの浮動小数点数の指数を形成する第２の複数のビット
を各々が含む複数の１６ビット浮動小数点値、および
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値の各々に共通する５ビット共有指数
を含む、生成するための手段と、
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値のうちの少なくとも１つをニューラルネットワークに入力として提供するための手段と
を備えるシステム。
【請求項１４】
前記ニューラルネットワーク訓練テンソルを生成するための前記手段は、
前記複数の１６ビット浮動小数点値および前記５ビット共有指数を含む前記ニューラルネットワーク訓練テンソルを生成するための手段を含み、前記複数の１６ビット浮動小数点値の各々は、
前記第１の複数のビットにより提供される１０ビット仮数、
前記第２の複数のビットにより提供される５ビット指数、および
１ビット符号
を含む、請求項１３に記載のシステム。
【請求項１５】
前記ニューラルネットワーク訓練テンソルを生成するための前記手段は、
前記複数の１６ビット浮動小数点値および前記５ビット共有指数を含む前記ニューラルネットワーク訓練テンソルを生成するための手段をさらに含み、前記複数の１６ビット浮動小数点値の各々は、
前記第１の複数のビットにより提供される可変ビット長仮数、
前記第２の複数のビットにより提供される可変ビット長指数、および
１ビット符号
を含む、請求項１３または１４に記載のシステム。
【請求項１６】
前記可変ビット長仮数を表すための第１のビット数、および
前記可変ビット長指数を表すための第２のビット数
を選択するための手段をさらに備える、請求項１５に記載のシステム。
【請求項１７】
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値のうちの１または複数におけるトレンドを検出するための手段をさらに備え、検出される前記トレンドは、前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値のうちの１または複数における潜在的なアンダーフロー状況または潜在的なオーバーフロー状況のうちの少なくとも１つを示す、請求項１６に記載のシステム。
【請求項１８】
前記可変ビット長仮数を表すための第１のビット数、および前記可変ビット長指数を表すための第２のビット数を選択するための前記手段は、
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示すトレンドの検出に応答して、前記第１の複数のビットに含まれる第１のビット数および前記第２の複数のビットに含まれる第２のビット数を選択するための手段をさらに含む、請求項１６または１７に記載のシステム。
【請求項１９】
前記ニューラルネットワーク訓練テンソルを生成するための前記手段は、
前記複数の１６ビット浮動小数点値および前記５ビット共有指数を含む前記ニューラルネットワーク訓練テンソルを生成するための手段をさらに含み、前記複数の１６ビット浮動小数点値の各々は、
前記第１の複数のビットにより提供される前記仮数、
前記第２の複数のビットにより提供される前記指数、
１ビット符号、および
それぞれの１６ビット浮動小数点数の前記指数を前記５ビット共有指数と選択的に組み合わせるための１ビットスイッチ
を含む、請求項１３から１８のいずれか一項に記載のシステム。
【請求項２０】
機械可読命令を含むコンピュータプログラムであって、前記機械可読命令は、プロセッサ回路により実行された場合、前記プロセッサ回路に、
ニューラルネットワーク訓練テンソルを生成させ、前記ニューラルネットワーク訓練テンソルは、
複数の１６ビット浮動小数点値であって、
それぞれの浮動小数点数の仮数を形成する第１の複数のビット、および
それぞれの浮動小数点数の指数を形成する第２の複数のビット
を各々が含む複数の１６ビット浮動小数点値、および
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値の各々に共通する５ビット共有指数
を含む、コンピュータプログラム。
【請求項２１】
前記プロセッサ回路に複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる前記機械可読命令はさらに、前記プロセッサ回路に、
前記第１の複数のビットにより提供される１０ビット仮数、
前記第２の複数のビットにより提供される５ビット指数、および
１ビット符号
を各々が含む複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる、請求項２０に記載のコンピュータプログラム。
【請求項２２】
前記プロセッサ回路に複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる前記機械可読命令はさらに、前記プロセッサ回路に、
前記第１の複数のビットにより提供される可変ビット長仮数、
前記第２の複数のビットにより提供される可変ビット長指数、および
１ビット符号
を各々が含む複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成することと、
１または複数のニューラルネットワークパラメータに基づいて、
前記可変ビット長仮数を表すためのビット数、および
前記可変ビット長指数を表すためのビット数
を選択することと
を行わせる、請求項２０または２１に記載のコンピュータプログラム。
【請求項２３】
前記プロセッサ回路に、１または複数のニューラルネットワークパラメータに基づいて、前記可変ビット長仮数および前記可変ビット長指数を表すためのビット数を選択させる前記機械可読命令はさらに、前記プロセッサ回路に、
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの１または複数に基づいて、前記可変ビット長仮数および前記可変ビット長指数を表すためのビット数を選択させる、請求項２２に記載のコンピュータプログラム。
【請求項２４】
前記プロセッサ回路に複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる前記機械可読命令はさらに、前記プロセッサ回路に、
前記第１の複数のビットにより提供される前記仮数、
前記第２の複数のビットにより提供される前記指数、
１ビット符号、および
それぞれの１６ビット浮動小数点数の前記指数を前記５ビット共有指数と選択的に組み合わせるための１ビットスイッチ
を各々が含む複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる、請求項２０から２３のいずれか一項に記載のコンピュータプログラム。
【請求項２５】
請求項２０から２４のいずれか一項に記載のコンピュータプログラムを格納するコンピュータ可読記録媒体。
【請求項２６】
プロセッサベースデバイスであって、
プリント回路基板と、前記プリント回路基板に結合されるプロセッサ回路と、ニューラルネットワークに結合可能な入出力インタフェースと、
前記プロセッサ回路に結合される記憶デバイスであって、機械可読命令を含む記憶デバイスと
を備え、
前記機械可読命令は、前記プロセッサ回路により実行された場合、前記プロセッサ回路に、
ニューラルネットワーク訓練テンソルを生成させ、前記ニューラルネットワーク訓練テンソルは、
複数の１６ビット浮動小数点値であって、
それぞれの浮動小数点数の仮数を形成する第１の複数のビット、および
それぞれの浮動小数点数の指数を形成する第２の複数のビット
を各々が含む複数の１６ビット浮動小数点値、および
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値の各々に共通する５ビット共有指数
を含む、プロセッサベースデバイス。
【請求項２７】
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値の各々は、
前記第１の複数のビットにより提供される１０ビット仮数、前記第２の複数のビットにより提供される５ビット指数、および１ビット符号を含む、請求項２６に記載のプロセッサベースデバイス。
【請求項２８】
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値の各々は、
前記第１の複数のビットにより提供される可変ビット長仮数、
前記第２の複数のビットにより提供される可変ビット長指数、および
１ビット符号
を含み、
前記機械可読命令はさらに、前記プロセッサ回路に、１または複数のニューラルネットワークパラメータに基づいて、
前記可変ビット長仮数を表すためのビット数、および
前記可変ビット長指数を表すためのビット数
を選択させる、請求項２６または２７に記載のプロセッサベースデバイス。
【請求項２９】
前記１または複数のニューラルネットワークパラメータは、前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示すトレンドを含む、請求項２８に記載のプロセッサベースデバイス。
【請求項３０】
前記ニューラルネットワーク訓練テンソルに含まれる前記複数の１６ビット浮動小数点値の各々は、
前記第１の複数のビットにより提供される前記仮数、
前記第２の複数のビットにより提供される前記指数、
１ビット符号、および
それぞれの１６ビット浮動小数点数の前記指数を前記５ビット共有指数と選択的に組み合わせるための１ビットスイッチ
を含む、請求項２６から２９のいずれか一項に記載のプロセッサベースデバイス。
【請求項３１】
仮数値に対応する第１の複数のビット、
指数値に対応する第２の複数のビット、および
符号ビット
を各々が含む複数の１６ビット浮動小数点レジスタと、
前記複数の１６ビット浮動小数点レジスタのそれぞれ１つ１つに関連付けられた共有指数レジスタと
を備えるテンソルデータ構造。
【請求項３２】
前記複数の１６ビット浮動小数点レジスタの各々は、
前記第１の複数のビットにより提供される１０ビット仮数、
前記第２の複数のビットにより提供される５ビット指数、および
１ビット符号
を含む、請求項３１に記載のテンソルデータ構造。
【請求項３３】
前記複数の１６ビット浮動小数点レジスタの各々は、
前記第１の複数のビットにより提供される可変ビット長仮数、前記第２の複数のビットにより提供される可変ビット長指数、および１ビット符号を含む、請求項３１または３２に記載のテンソルデータ構造。
【請求項３４】
前記複数の１６ビット浮動小数点レジスタの各々は、
前記第１の複数のビットにより提供される前記仮数値、
前記第２の複数のビットにより提供される前記指数値、
１ビット符号、および
それぞれの１６ビット浮動小数点数の前記指数値を前記共有指数レジスタと選択的に組み合わせるための１ビットスイッチ
を含む、請求項３１から３３のいずれか一項に記載のテンソルデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ニューラルネットワークの訓練に関する。
【背景技術】
【０００２】
ニューラルネットワークは、最も単純な形態として、複数の入力を有する入力層と、１または複数の出力を含む出力層と、入力層および出力層に結合された複数のニューロンを含む少なくとも１つの隠れ層とを含む。隠れ層に含まれるニューロンの各々は、任意の数の入力および任意の数の出力を有し得る。ニューロン入力および／またはニューロン出力の各々は、ニューラルネットワークの決定実行能力に影響するように重み付けされる。これらの重みは通常、初期的に割り当てられ、その後ニューラルネットワークの訓練期間中に提供される訓練データセットに含まれる情報に基づいて更新される。
【０００３】
教師あり訓練においては、入力データ（すなわち入力層におけるデータ）および出力データ（すなわち出力層におけるデータ）の両方がニューラルネットワークに提供される。ネットワークは、入力データを処理し、結果を出力データと比較する。誤差がネットワークを通って伝播し戻されることでネットワークを制御する重みが調整される場合があり、これによりネットワークの正確性および／またはスピードが向上する。訓練プロセスは、エポックにおいて行われる。各エポックは、ニューラルネットワークを通した１回のデータ順伝播、およびニューラルネットワークを通した１回のデータ逆伝播を含む。許容可能な閾値内の高信頼かつ予測可能な出力を生成するために、訓練には多数のエポックが必要となる場合がある。
【０００４】
ディープラーニング（深層構造学習または階層学習としても知られる）は、その上位概念の群である機械学習方法の一部であって、タスク固有のアルゴリズムとは対照的に、データ表現を学習することに基づくものである。ディープラーニングモデルは、様々な刺激とそれらに関連付けられる脳内でのニューロン反応との間の関係を定めることを試みるニューラルコーディングなど、生体神経系における情報処理および通信パターンに大まかに関連する。ディープラーニングは、計算負荷が高く、多大な処理能力およびリソースを必要とする。
【０００５】
ＩＥＥＥ数値フォーマットは、１６ビット浮動小数点［ＦＰ１６］および３２ビット浮動小数点［ＦＰ３２］を含む。ＦＰ１６についてのＩＥＥＥ７５４規格は、単一の符号ビット、１０ビットの小数部、および５ビットの指数部を含む。ＦＰ３２についてのＩＥＥＥ７５４規格は、単一の符号ビット、２３ビットの小数部、および８ビットの指数部を含む。ニューラルネットワーク訓練においてＦＰ３２を用いた場合、特にＦＰ１６と比較して、システムの計算負荷が著しく増大する。しかしながら、ＦＰ１６においては、ディープニューラルネットワーク訓練における勾配が浅くなり過ぎる（すなわち２−２４を下回る）場合があり、また「０」になる場合がある。よって、計算上のオーバヘッドおよび時間のコストに関わらず、多くのディープラーニングはＦＰ３２において行われる。
【図面の簡単な説明】
【０００６】
以下の詳細な説明が進むにつれて、また図面を参照することで、特許請求の対象の様々な実施形態の特徴および利点が明らかとなるであろう。図面において、同様の符号は同様の部分を指す。
【０００７】
【図１】本明細書に記載の少なくとも１つの実施形態に係る、ニューラルネットワークと、ニューラルネットワークに訓練テンソルを提供するためのプロセッサ回路と、プロセッサ回路により実行される命令を格納するための記憶デバイスとを含む例示的システムの俯瞰ブロック図を提供する。
【図２】本明細書に記載の少なくとも１つの実施形態に係る、共通６ビット指数（５：０）を共有する複数の１６ビット浮動小数点数を含む例示的テンソルである。ここで当該テンソルにおける１６ビット浮動小数点数の各々は、単一の符号ビット（１５：１５）、８ビット指数（１４：７）および７ビット仮数（６：０）を含む。
【図３】本明細書に記載の少なくとも１つの実施形態に係る、共通６ビット指数（５：０）を共有する複数の１６ビット浮動小数点数を含む別の例示的テンソルである。ここで当該テンソルにおける１６ビット浮動小数点数の各々は、単一の符号ビット（１５：１５）、単一の指数ＯＮ／ＯＦＦスイッチビット（１４：１４）、８ビット指数（１３：６）、および６ビット仮数（５：０）を含む。
【図４】本明細書に記載の少なくとも１つの実施形態に係る、例示的な電子的プロセッサベースデバイスの概略図である。当該プロセッサベースデバイスは、図１、２、および３において説明されるような複数の１６ビット浮動小数点値を含む訓練テンソルを用いて、当該プロセッサベースデバイスに結合されるニューラルネットワークを訓練するために用いられるプロセッサ回路を含む。
【図５】本明細書に記載の少なくとも１つの実施形態に係る、共通の共有指数を有する複数の１６ビット浮動小数点値を含む訓練テンソルを用いてニューラルネットワークを訓練する例示的方法の俯瞰フロー図である。
【図６】本明細書に記載の少なくとも１つの実施形態に係る、可変ビット長仮数、可変ビット長指数、および共有指数を有する１６ビット浮動小数点値を生成する例示的方法の俯瞰フロー図である。
【図７】本明細書に記載の少なくとも１つの実施形態に係る、潜在的なオーバーフローまたはアンダーフロー状況を示すデータの検出に応答して、可変ビット長仮数、可変ビット長指数、および共有指数を有する１６ビット浮動小数点値を生成する例示的方法の俯瞰フロー図である。
【図８】本明細書に記載の少なくとも１つの実施形態に係る、１６ビット浮動小数点値に含まれる共有指数スイッチビットの論理状態に基づいて、１６ビット浮動小数点値に含まれる可変ビット長指数の指数部分を共有指数値と選択的に組み合わせる例示的方法の俯瞰フロー図である。
【０００８】
例示的実施形態を参照しつつ以下の詳細な説明を進めるが、当業者にはそれらの多くの代替例、改変例、および変形例が明らかであろう。
【発明を実施するための形態】
【０００９】
本明細書に記載のシステムおよび方法は、共通の指数を共有する１６ビット浮動小数点（ＦＰ１６）数を含むニューラルネットワーク訓練テンソルを用いて、ニューラルネットワークにおけるディープラーニングのスピードおよび正確性を向上させるためのシステムおよび方法を提供する。１つの潜在的な変形例は、可変長の小数部分および可変長の指数部分を含む非ＩＥＥＥ規格フォーマットにおいて各浮動小数点数が表されるニューラルネットワーク訓練テンソルを含む。別の潜在的な変形例は、（ａ）それぞれの浮動小数点数の指数を共有指数と組み合わせること、または（ｂ）それぞれの浮動小数点指数を共有指数と組み合わせない（すなわち浮動小数点指数のみを用いる）ことのいずれかとするために用いられる単一のＯＮ／ＯＦＦビットを各浮動小数点数が含むニューラルネットワーク訓練テンソルを含む。よって、本明細書に記載のシステムおよび方法は、ＦＰ１６計算の利点を提供するとともに、５ビット共有指数を用いることによって可能なテスト値の範囲を有益に増大させる。
【００１０】
本明細書に記載のシステムおよび方法の一部は、単一の符号ビット、５ビット指数、および１０ビット仮数を各々が含む複数のＩＥＥＥ７５４準拠ＦＰ１６フォーマット数の各々により共有される６ビット共有指数を含むニューラルネットワーク訓練テンソルを生成する。本明細書に記載のシステムおよび方法の一部は、単一の符号ビット、８ビット指数、および７ビット仮数を各々が含む複数のＩＥＥＥ７５４非準拠ＦＰ１６フォーマット数の各々により共有される指数を含むニューラルネットワーク訓練テンソルを生成する。本明細書に記載のシステムおよび方法の一部は、複数のＦＰ１６数と、テンソルに含まれる全てのＦＰ１６数により共有される６ビット共有指数とを含むニューラルネットワーク訓練テンソルを生成する。ＦＰ１６数の各々は、単一の符号ビット、単一の共有指数ＯＮ／ＯＦＦスイッチ、８ビット指数、および６ビット仮数を有してよい。本明細書に記載のシステムおよび方法の一部は、潜在的なオーバーフローまたはアンダーフロー状況を回避するよう、プロセッサ回路が共有指数の値を調整することを可能とする。本明細書に記載のシステムおよび方法の一部は、潜在的なオーバーフローまたはアンダーフロー状況を回避するよう、プロセッサ回路が、追加的にまたは代替的に、テンソルに含まれる一部または全てのＦＰ１６数の指数および仮数の値を選択的に調整することを可能とする。よって、潜在的なオーバーフローまたはアンダーフロー状況を回避するべく、プロセッサ回路は、ニューラルネットワークの訓練と同時発生的に、共有指数の値、テンソルにおけるＦＰ１６数の一部または全てにおける指数の値、および／またはテンソルにおけるＦＰ１６数の一部または全てにおける仮数の値のうちの一部または全てを有益かつ有利に調整してよい。
【００１１】
ニューラルネットワークを訓練するためのシステムが提供される。当該システムは、プロセッサ回路と、プロセッサ回路に結合される記憶デバイスと、機械可読命令を含む記憶デバイスとを備えてよい。機械可読命令は、プロセッサ回路にニューラルネットワーク訓練テンソルを生成させ、ニューラルネットワーク訓練テンソルは、複数の１６ビット浮動小数点値であって、それぞれの浮動小数点数の仮数を形成する第１の複数のビット、およびそれぞれの浮動小数点数の指数を形成する第２の複数のビットを各々が含む複数の１６ビット浮動小数点値、および訓練テンソルに含まれる１６ビット浮動小数点値の各々に共通し、それら各々により共有される６ビット共有指数を含む。
【００１２】
ニューラルネットワーク訓練方法が提供される。  ニューラルネットワーク訓練方法は、プロセッサ回路が、ニューラルネットワーク訓練テンソルを生成する段階であって、ニューラルネットワーク訓練テンソルは、複数の１６ビット浮動小数点値であって、それぞれの浮動小数点数の仮数を形成する第１の複数のビット、およびそれぞれの浮動小数点数の指数を形成する第２の複数のビットを各々が含む１６ビット浮動小数点値、および訓練テンソルに含まれる１６ビット浮動小数点値の各々に共通する６ビット共有指数を含む、生成する段階と、訓練テンソルに含まれる複数の１６ビット浮動小数点値のうちの少なくとも１つをニューラルネットワークに入力として提供する段階とを備えてよい。
【００１３】
ニューラルネットワーク訓練システムが提供される。  訓練システムは、プロセッサ回路が、ニューラルネットワーク訓練テンソルを生成するための手段であって、ニューラルネットワーク訓練テンソルは、複数の１６ビット浮動小数点値であって、それぞれの浮動小数点数の仮数を形成する第１の複数のビット、およびそれぞれの浮動小数点数の指数を形成する第２の複数のビットを各々が含む１６ビット浮動小数点値、および訓練テンソルに含まれる１６ビット浮動小数点値の各々に共通する６ビット共有指数を含む、生成するための手段と、訓練テンソルに含まれる複数の１６ビット浮動小数点値のうちの少なくとも１つをニューラルネットワークに入力として提供するための手段とを備えてよい。
【００１４】
非一時的機械可読記憶媒体が提供される。  非一時的機械可読記憶媒体は、機械可読命令を含み、機械可読命令は、プロセッサ回路により実行された場合、プロセッサ回路に、ニューラルネットワーク訓練テンソルを生成させ、ニューラルネットワーク訓練テンソルは、複数の１６ビット浮動小数点値であって、それぞれの浮動小数点数の仮数を形成する第１の複数のビット、およびそれぞれの浮動小数点数の指数を形成する第２の複数のビットを各々が含む複数の１６ビット浮動小数点値、および訓練テンソルに含まれる１６ビット浮動小数点値の各々に共通する６ビット共有指数を含む。
【００１５】
ニューラルネットワークを訓練するためのプロセッサベースデバイスが提供される。  プロセッサベースデバイスは、プリント回路基板と、プリント回路基板に結合されるプロセッサ回路と、ニューラルネットワークに結合可能な入出力インタフェースと、プロセッサ回路に結合される記憶デバイスであって、機械可読命令を含む記憶デバイスとを備えてよく、機械可読命令は、プロセッサ回路により実行された場合、プロセッサ回路に、ニューラルネットワーク訓練テンソルを生成させ、ニューラルネットワーク訓練テンソルは、複数の１６ビット浮動小数点値であって、それぞれの浮動小数点数の仮数を形成する第１の複数のビット、およびそれぞれの浮動小数点数の指数を形成する第２の複数のビットを各々が含む複数の１６ビット浮動小数点値、および訓練テンソルに含まれる１６ビット浮動小数点値の各々に共通する６ビット共有指数を含む。
【００１６】
図１は、本明細書に記載の少なくとも１つの実施形態に係る、ニューラルネットワーク１１０と、ニューラルネットワーク１１０に訓練テンソル１５０を提供するためのプロセッサ回路１３０と、プロセッサ回路１３０により実行される命令を格納するための記憶デバイス１７０とを含む例示的システム１００の俯瞰ブロック図を提供する。訓練テンソル１５０は、複数の１６ビット浮動小数点値１５２１〜１５２ｎ（まとめて「１６ビット浮動小数点値１５２」）と、１６ビット浮動小数点値１５２の少なくとも一部の各々に共通し、それら各々により共有される指数１５４とを含む。実施形態において、プロセッサ回路１３０は、ニューラルネットワーク１１０を訓練する（例えば、その重み付けおよび／またはバイアスを設定する）ために用いられる訓練テンソル１５０を生成する、またはその生成を引き起こす。実施形態において、記憶デバイス１７０内、記憶デバイス１７０上、または記憶デバイス１７０の周辺に格納される命令の実行は、プロセッサ回路１３０に、訓練テンソル１５０をニューラルネットワーク１１０を通して順伝播および／または逆伝播させてよい。
【００１７】
ニューラルネットワーク１１０は、複数のニューロン１１６１〜１１６ｎ（まとめて「ニューロン１１６」）を含む隠れ層１１６により結合される、複数の入力１１２１〜１１２ｎ（まとめて「入力１１２」）および複数の出力１１４１〜１１４ｎ（まとめて「出力１１４」）を含む。隠れ層１１６は単一のニューロン層のみを含むが、当業者には隠れ層１１６が任意の数の層を含んでよいことが容易に理解されよう。実施形態において、ニューラルネットワーク１１０は、ディープラーニングを可能とするニューラルネットワーク、すなわちディープニューラルネットワークを含んでよい。
【００１８】
プロセッサ回路１３０は、訓練テンソル１５０に含まれる１６ビット浮動小数点値１５２および６ビット共有指数１５４をニューラルネットワーク１１０に提供することが可能である、現在利用可能なおよび／または将来開発される任意の数および／または組み合わせの電気的コンポーネント、半導体デバイス、および／または論理素子を含んでよい。いくつかの実装例において、プロセッサ回路１３０は、ニューラルネットワーク１１０および／または訓練テンソル１５０に関連付けられる１または複数のパラメータに基づいて、指数１５４を動的に調整してよい。例えば、プロセッサ回路１３０は、訓練テンソル１５０に含まれる１または複数の１６ビット浮動小数点値１５２の潜在的なオーバーフローを検出したことに応じて、共有指数１５４の増大を引き起こす命令を実行してよい。別の例において、プロセッサ回路１３０は、訓練テンソル１５０に含まれる１または複数の１６ビット浮動小数点値１５２の潜在的なアンダーフローを検出したことに応じて、共有指数１５４の減少を引き起こす命令を実行してよい。
【００１９】
実施形態において、プロセッサ回路１３０は、訓練テンソル１５０に含まれる１または複数の１６ビット浮動小数点値１５２の増大率または減少率を算出または別の形で決定することで、潜在的なアンダーフローまたはオーバーフロー状況を示す挙動を呈するそれらの１６ビット浮動小数点値１５２を特定するための回路を含んでよい。他の実施形態において、プロセッサ回路１３０は、訓練テンソル１５０に含まれる１または複数の１６ビット浮動小数点値１５２の漸進的な増大または減少を算出または別の形で決定することで、潜在的なアンダーフローまたはオーバーフロー状況を示す挙動を呈するそれらの１６ビット浮動小数点値１５２を特定するための回路を含んでよい。
【００２０】
実施形態において、プロセッサ回路１３０は、訓練テンソル１５０に含まれる１６ビット浮動小数点値１５２の一部または全てを、ニューラルネットワーク１１０を通して順伝播してよい。実施形態において、プロセッサ回路１３０は、訓練テンソル１５０に含まれる１６ビット浮動小数点値１５２の一部または全てを、ニューラルネットワーク１１０を通して逆伝播または逆転伝播してよい。実施形態において、プロセッサ回路１３０は、訓練テンソル１５０に含まれる１６ビット浮動小数点値１５２を生成する、および／または訓練テンソル１５０に含まれる１６ビット浮動小数点値１５２をニューラルネットワーク１１０に提供するよう構成される１または複数の汎用システムおよび／またはデバイスを含んでよい。実施形態において、プロセッサ回路１３０は、訓練テンソル１５０に含まれる１６ビット浮動小数点値１５２の少なくとも一部分を、ネットワーク接続されたソースなどの１または複数の外部ソースから受け取ってよい。
【００２１】
訓練テンソル１５０は、複数の１６ビット浮動小数点値１５２を含む。訓練テンソル１５０はまた、１６ビット浮動小数点値１５２の少なくとも一部分の各々により共有され得る共有指数１５４を含む。共有指数１５４は、符号付き共有指数１５４を提供するよう、符号ビットを含んでよい。共有指数１５４は、３ビット値、４ビット値、５ビット値、６ビット値、７ビット値、または８ビット値を含んでよい。例えば、ＩＥＥＥ７５４規格の１６ビット浮動小数点フォーマットを用いる場合、訓練テンソル１５０に含まれる各１６ビット浮動小数点値１５２は、単一の符号ビットと、１０ビット仮数と、１６ビット浮動小数点値１５２に含まれる５ビット指数に５ビット共有指数１５４を加算した和を含む仮数とを含むこととなる。実施形態において、訓練テンソル１５０は、複数のＩＥＥＥ７５４準拠の半精度（１６ビット浮動小数点）値１５２を含む。実施形態において、訓練テンソル１５０は、複数のＩＥＥＥ７５４非準拠の半精度（１６ビット浮動小数点）値１５２を含む。
【００２２】
記憶デバイス１７０は、現在利用可能なおよび／または将来開発される、任意の数および／または組み合わせのデータ記憶システムおよび／またはデバイスを含んでよい。実施形態において、記憶デバイス１７０は、プロセッサ回路１３０により実行可能な機械可読命令セットを格納してよい。実施形態において、記憶デバイス１７０は、訓練テンソル１５０を形成する１６ビット浮動小数点値１５２の少なくとも一部を、１または複数のデータストア、データ構造、および／またはデータベースに保持、格納、または別の形で維持してよい。
【００２３】
図２は、本明細書に記載の少なくとも１つの実施形態に係る、共通６ビット指数（５：０）１５４を各々が共有する複数の１６ビット浮動小数点（ＦＰ１６）数１５２１〜１５２ｎを含む例示的テンソル２００である。ここでＦＰ１６数の各々は、それぞれの単一の符号ビット（１５：１５）２０４１〜２０４ｎ、それぞれの８ビット指数（１４：７）２０６１〜２０６ｎ、およびそれぞれの７ビット仮数（６：０）２０８１〜２０８ｎを含む。訓練テンソル２００に含まれる、共有指数１５４の値、１または複数のＦＰ１６数の仮数値、および１または複数のＦＰ１６数の指数値のうちの１または複数を動的に変更可能であることにより、ニューラルネットワーク訓練プロセス中における潜在的なオーバーフローまたはアンダーフロー状況を回避するべく、プロセッサ回路１３０がテンソル２００における１または複数のＦＰ１６値を予見的に調整することが有益に可能となる。図２に示すフォーマットを用いると、各１６ビット浮動小数点値１５２は、以下のとおり表されてよい。
【数１】
2019212295.tif 000003
ここで指数バイアスは、以下により与えられる。
【数２】
2019212295.tif 000004
【００２４】
図３は、本明細書に記載の少なくとも１つの実施形態に係る、共通６ビット指数（５：０）１５４を共有する複数の１６ビット浮動小数点（ＦＰ１６）数１５２１〜１５２ｎを含む別の例示的テンソル３００である。ここでＦＰ１６数の各々は、それぞれの単一の符号ビット（１５：１５）２０４１〜２０４ｎ、それぞれの共有指数ＯＮ／ＯＦＦスイッチビット（１４：１４）３０２１〜３０２ｎ、それぞれの８ビット指数（１４：７）２０６１〜２０６ｎ、およびそれぞれの６ビット仮数（５：０）２０８１〜２０８ｎを含む。訓練テンソル３００に含まれる、共有指数１５４の値、１または複数のＦＰ１６数の仮数値、および１または複数のＦＰ１６数の指数値のうちの１または複数を動的に変更可能であることにより、ニューラルネットワーク訓練プロセス中における潜在的なオーバーフローまたはアンダーフロー状況を回避するべく、プロセッサ回路１３０がテンソル２００における１または複数のＦＰ１６値を予見的に調整することが有益に可能となる。加えて、プロセッサ回路１３０は、訓練テンソル３００に含まれるＦＰ１６数１５２の各々の指数２０６が共有指数と組み合わされるべきであるか否かを選択的に指定してよく、それにより訓練テンソル３００のフレキシビリティがさらに増大する。図３に示すフォーマットを用いると、共有指数スイッチ３０４が「ＯＮ」の論理状態にある場合、１６ビット浮動小数点値１５２は、以下のとおり表されてよい。
【数３】
2019212295.tif 000005
ここで指数バイアスは、以下により与えられる。
【数４】
2019212295.tif 000006
【００２５】
図３に示すフォーマットを用いると、共有指数スイッチ３０４が「ＯＦＦ」の論理状態にある場合、１６ビット浮動小数点値１５２は、以下のとおり表されてよい。
【数５】
2019212295.tif 000007
ここで指数バイアスは、以下により与えられる。
【数６】
2019212295.tif 000008
【００２６】
図４は、本明細書に記載の少なくとも１つの実施形態に係る、例示的な電子的プロセッサベースデバイス４００の概略図である。プロセッサベースデバイス４００は、図１、２、および３において説明されるような複数の１６ビット浮動小数点値１５２を含む訓練テンソル１５０を用いて、プロセッサベースデバイス４００に結合されるニューラルネットワーク１１０を訓練するために用いられるプロセッサ回路１３０を含む。プロセッサベースデバイス４００は追加的に、グラフィカル処理ユニット４１２、無線入出力（Ｉ／Ｏ）インタフェース４２０、有線Ｉ／Ｏインタフェース４３０、メモリ回路４４０、電力管理回路４５０、非一時的記憶デバイス１７０、およびネットワークインタフェース４７０のうちの１または複数を含んでよい。以下の記載は、例示的プロセッサベースデバイス４００を形成するコンポーネントについての簡単な一般的説明を提供する。非限定的な例としてのプロセッサベースデバイス４００は、スマートフォン、ウェアラブルコンピュータ、ポータブルコンピューティングデバイス、ハンドヘルドコンピューティングデバイス、デスクトップコンピューティングデバイス、ブレードサーバデバイス、ワークステーション、および類似のものを含んでよいが、これらに限定されるものではない。
【００２７】
プロセッサベースデバイス４００は、ニューラルネットワーク１１０を訓練するために用いられるテンソル１５０に含まれる１６ビット浮動小数点値１５２を作成または別の形で生成することが可能なプロセッサ回路１３０を含む。実施形態において、プロセッサベースデバイス４００は追加的に、グラフィクスプロセッサ回路４１２を含んでよい。実施形態において、プロセッサベースデバイス４００は、１または複数の機械可読命令セット４１４を実行すること、１または複数の記憶デバイス１７０からデータおよび／または命令セット４１４を読み出すこと、および１または複数の記憶デバイス１７０にデータを書き込むことが可能なプロセッサ回路１３０を含む。プロセッサ回路１３０は、訓練テンソル１５０に含まれる１６ビット浮動小数点値１５２の一部または全てを、ニューラルネットワーク１１０を通して順伝播してよい。プロセッサ回路１３０は、訓練テンソル１５０に含まれる１６ビット浮動小数点値１５２の一部または全てを、ニューラルネットワーク１１０を通して逆転伝播してよい。実施形態において、プロセッサ回路１３０は、訓練テンソル１５０に含まれる１６ビット浮動小数点値１５２のうちの１または複数における潜在的なオーバーフローまたはアンダーフロー状況を示す情報および／またはデータを予測および／または検出するための予測回路および／または検出回路を含んでよい。
【００２８】
いくつかの実施形態において、プロセッサベースデバイス４００は、機械可読命令セット４１４を実行すること、およびシステムユーザへのディスプレイ出力の提供を可能とする出力信号を生成することが可能なグラフィクスプロセッサ回路４１２を含む。当業者であれば、例示されている実施形態および他の実施形態が、例としてスマートフォン、ポータブルコンピュータ、ウェアラブルコンピュータ、民生用電子機器、パーソナルコンピュータ（「ＰＣ」）、ネットワークＰＣ、ミニコンピュータ、サーバブレード、およびメインフレームコンピュータ等のポータブル電子デバイスまたはハンドヘルド電子デバイスを含む他のプロセッサベースデバイス構成を用いて実施されてよいことは理解されよう。プロセッサ回路１３０は、任意の数のハードワイヤードのまたは構成可能な回路を含んでよく、その一部または全ては、プロセッサ可読命令を実行することが可能なＰＣ、サーバ、または他のコンピューティングシステム内に部分的または全体的に配される電子的コンポーネント、半導体デバイス、および／または論理素子のプログラミング可能および／または構成可能な組み合わせを含んでよい。
【００２９】
プロセッサベースデバイス４００は、プロセッサ回路１３０、グラフィクスプロセッサ回路４１２、１または複数の無線Ｉ／Ｏインタフェース４２０、１または複数の有線Ｉ／Ｏインタフェース４３０、１または複数の記憶デバイス１７０、および／または１または複数のネットワークインタフェース４７０を含む様々なシステムコンポーネントを通信可能に結合し、それらの間における情報および／またはデータの交換を促進するバスまたは類似の通信リンク４１６を含む。プロセッサベースデバイス４００は、本明細書において単数として言及される場合があるが、特定の実施形態においては、通信可能に結合、配列、またはリモートネットワーク化された任意の数の回路またはデバイスを組み込む、含む、または収容する１つよりも多くのプロセッサベースデバイス４００が存在してよく、したがってこれは実施形態を単一のプロセッサベースデバイス４００に限定することを意図するものではない。
【００３０】
プロセッサ回路１３０は、機械可読命令セットを実行することが可能である、現在利用可能なまたは将来開発される任意の数、タイプ、または組み合わせのデバイスを含んでよい。プロセッサ回路１３０は、１または複数のシステムオンチップ（ＳＯＣ）、中央処理ユニット（ＣＰＵ）、デジタルシグナルプロセッサ（ＤＳＰ）、グラフィクス処理ユニット（ＧＰＵ）、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理ユニット、およびフィールドプログラマブルゲートアレイ（ＦＰＧＡ）等のような、現在または将来開発される任意のシングルコアまたはマルチコアのプロセッサまたはマイクロプロセッサを含んでよいが、これらに限定されない。別途説明のない限り、図４に示す様々なブロックの構成および工程は、従来の設計のものである。したがってそのようなブロックは、当業者には理解されるであろうことから、本明細書においてさらに詳細に説明される必要はない。プロセッサベースデバイス４００のコンポーネントの少なくとも一部を相互接続するバス４１６は、現在利用可能なまたは将来開発される任意のシリアルバスまたはパラレルバスの構造またはアーキテクチャを採用してよい。
【００３１】
システムメモリ４４０は、リードオンリメモリ（「ＲＯＭ」）４４２およびランダムアクセスメモリ（「ＲＡＭ」）４４６を含んでよい。ＲＯＭ４４２の一部分は、基本入出力システム（「ＢＩＯＳ」）４４４を格納または別の形で維持するために用いられてよい。ＢＩＯＳ４４４は、例えばプロセッサ回路１３０に１または複数の機械可読命令セット４１４をロードおよび／または実行させることにより、プロセッサベースデバイス４００に基本的機能姓を提供する。実施形態において、１または複数の機械可読命令セット４１４の少なくとも一部は、プロセッサ回路１３０の少なくとも一部分に、例えば文書処理機械、デジタル画像取得機械、メディア再生機械、ゲーミングシステム、通信デバイス、スマートフォン、または類似のものといった専用の具体的な特定の機械を提供させる、作成させる、生産させる、遷移させる、および／または当該機械として機能させる。
【００３２】
プロセッサベースデバイス４００は、少なくとも１つの無線入出力（Ｉ／Ｏ）インタフェース４２０を含んでよい。少なくとも１つの無線Ｉ／Ｏインタフェース４２０は、１または複数の物理出力デバイス４２２（触覚デバイス、映像ディスプレイ、音声出力デバイス、ハードコピー出力デバイス等）に通信可能に結合されてよい。少なくとも１つの無線Ｉ／Ｏインタフェース４２０は、１または複数の物理入力デバイス４２４（ポインティングデバイス、タッチスクリーン、キーボード、触覚デバイス等）に通信可能に結合してよい。少なくとも１つの無線Ｉ／Ｏインタフェース４２０は、現在利用可能なまたは将来開発される任意の無線Ｉ／Ｏインタフェースを含んでよい。例としての無線Ｉ／Ｏインタフェースは、ＢＬＵＥＴＯＯＴＨ（登録商標）、近距離無線通信（ＮＦＣ）、および類似のものを含むが、これらに限定されるものではない。
【００３３】
プロセッサベースデバイス４００は、１または複数の有線入出力（Ｉ／Ｏ）インタフェース４３０を含んでよい。少なくとも１つの有線Ｉ／Ｏインタフェース４３０は、１または複数の物理出力デバイス４２２（触覚デバイス、映像ディスプレイ、音声出力デバイス、ハードコピー出力デバイス等）に通信可能に結合されてよい。少なくとも１つの有線Ｉ／Ｏインタフェース４３０は、１または複数の物理入力デバイス４２４（ポインティングデバイス、タッチスクリーン、キーボード、触覚デバイス等）に通信可能に結合されてよい。有線Ｉ／Ｏインタフェース４３０は、現在利用可能なまたは将来開発される任意のＩ／Ｏインタフェースを含んでよい。例としての有線Ｉ／Ｏインタフェースは、ユニバーサルシリアルバス（ＵＳＢ）、ＩＥＥＥ１３９４（「ＦｉｒｅＷｉｒｅ（登録商標）」）、および類似のものを含んでよいが、これらに限定されるものではない。
【００３４】
プロセッサベースデバイス４００は、通信可能に結合された１または複数の非一時的データ記憶デバイス１７０を含んでよい。データ記憶デバイス１７０は、１または複数のハードディスクドライブ（ＨＤＤ）および／または１または複数のソリッドステート記憶デバイス（ＳＳＤ）を含んでよい。１または複数のデータ記憶デバイス１７０は、現在または将来開発される任意の記憶機器、ネットワーク記憶デバイス、および／またはシステムを含んでよい。そのようなデータ記憶デバイス１７０の非限定的な例は、１または複数の磁気記憶デバイス、１または複数の光記憶デバイス、１または複数の電子抵抗記憶デバイス、１または複数の分子記憶デバイス、１または複数の量子記憶デバイス、またはそれらの様々な組み合わせなどの、現在または将来開発される任意の非一時的記憶機器または記憶デバイスを含んでよいが、これらに限定されるものではない。いくつかの実装例において、１または複数のデータ記憶デバイス１７０は、プロセッサベースデバイス４００との通信可能な結合および分離が可能な、１または複数のフラッシュドライブ、フラッシュメモリ、フラッシュ記憶ユニット、または類似の機器またはデバイスなどの１または複数の取り外し可能な記憶デバイスを含んでよい。
【００３５】
１または複数のデータ記憶デバイス１７０は、それぞれの記憶デバイスまたはシステムをバス４１６に通信可能に結合するインタフェースまたはコントローラ（不図示）を含んでよい。１または複数のデータ記憶デバイス１７０は、プロセッサ回路１３０および／またはグラフィクスプロセッサ回路４１２に対して、および／またはプロセッサ回路１３０および／またはグラフィクスプロセッサ回路４１２上でまたは当該回路により実行される１または複数のアプリケーションに対して有用である、機械可読命令セット、データ構造、プログラムモジュール、データストア、データベース、論理構造、および／または他のデータを格納、維持、または別の形で収容してよい。いくつかの事例において、１または複数のデータ記憶デバイス１７０は、例えばバス４１６を介して、または１または複数の有線通信インタフェース４３０（例えばユニバーサルシリアルバスまたはＵＳＢ）、１または複数の無線通信インタフェース４２０（例えばＢｌｕｅｔｏｏｔｈ（登録商標）、近距離無線通信またはＮＦＣ）、および／または１または複数のネットワークインタフェース４７０（ＩＥＥＥ８０２．３またはイーサネット（登録商標）、ＩＥＥＥ８０２．１１、またはＷｉＦｉ（登録商標）等）を介して、プロセッサ回路１３０に通信可能に結合されてよい。
【００３６】
プロセッサ可読命令セット４１４および他のプログラム、アプリケーション、論理セット、および／またはモジュールは、システムメモリ４４０に全体的または部分的に格納されてよい。そのような命令セット４１４は、全体的または部分的に、１または複数のデータ記憶デバイス１７０から伝達されてよい。命令セット４１４は、プロセッサ回路１３０および／またはグラフィクスプロセッサ回路４１２による実行中において、全体的または部分的にシステムメモリ４４０にロード、格納、または別の形で維持されてよい。プロセッサ可読命令セット４１４は、訓練テンソル１５０に含まれる共有指数１５４の値、１または複数のＦＰ１６数の仮数値２０８、および１または複数のＦＰ１６数の指数値２０６のうちの１または複数を動的に調整することをプロセッサ回路１３０に行わせることが可能である、機械可読および／またはプロセッサ可読なコード、命令、または類似の論理を含んでよい。プロセッサ可読命令セット４１４は、各ＦＰ１６数１５２１〜１５２ｎについての共有指数ＯＮ／ＯＦＦスイッチ３０２１〜３０２ｎを、選択的かつ個別に、共有指数１５４がそれぞれのＦＰ１６数１５２１〜１５２ｎの指数２０６１〜２０６ｎと選択的に組み合わされる第１の論理状態（「ＯＮ」）に設定することをプロセッサ回路１３０に行わせることが可能である、機械可読および／またはプロセッサ可読なコード、命令、または類似の論理を含んでよい。プロセッサ可読命令セット４１４は、各ＦＰ１６数１５２１〜１５２ｎについての共有指数ＯＮ／ＯＦＦスイッチ３０２１〜３０２ｎを、選択的かつ個別に、共有指数１５４がそれぞれのＦＰ１６数１５２１〜１５２ｎの指数２０６１〜２０６ｎと組み合わされない第２の論理状態（「ＯＦＦ」）に設定することをプロセッサ回路１３０に行わせることが可能である、機械可読および／またはプロセッサ可読なコード、命令、または類似の論理を含んでよい。
【００３７】
プロセッサベースデバイス４００は、エネルギー貯蔵デバイス４５２の１または複数の動作態様を制御する電力管理回路４５０を含んでよい。実施形態において、エネルギー貯蔵デバイス４５２は、１または複数の一次（すなわち非再充電式）電池または二次（すなわち再充電式）電池または類似のエネルギー貯蔵デバイスを含んでよい。実施形態において、エネルギー貯蔵デバイス４５２は、１または複数のスーパーキャパシタまたはウルトラキャパシタを含んでよい。実施形態において、電力管理回路４５０は、外部電源４５４からエネルギー貯蔵デバイス４５２および／またはプロセッサベースデバイス４００へのエネルギーの流れを変更、調整、または制御してよい。電源４５４は、太陽光発電システム、商用送電網、ポータブル発電機、外部エネルギー貯蔵デバイス、またはそれらの任意の組み合わせを含んでよいが、それらに限定されない。
【００３８】
便宜上、プロセッサ回路１３０、グラフィクスプロセッサ回路４１２、無線Ｉ／Ｏインタフェース４２０、有線Ｉ／Ｏインタフェース４３０、電力管理回路４５０、記憶デバイス４６０、およびネットワークインタフェース４７０は、バス４１６を介して互いに通信可能に結合されることで、上記のコンポーネント間の接続を提供するものとして例示されている。代替的実施形態においては、上記のコンポーネントは、図４に例示するものとは異なる方式で通信可能に結合されてよい。例えば、上記のコンポーネントのうちの１または複数は、他のコンポーネントに直接的に結合されてもよく、または１または複数の中間コンポーネント（不図示）を介して互いに結合されてもよい。別の例において、上記のコンポーネントのうちの１または複数は、プロセッサ回路１３０および／またはグラフィクスプロセッサ回路４１２に統合されてよい。いくつかの実施形態において、バス４１６の全部または一部分が省略されてよく、それらのコンポーネントは、好適な有線または無線の接続を用いて互いに直接的に結合される。
【００３９】
図５は、本明細書に記載の少なくとも１つの実施形態に係る、共通の共有指数１５４を有する複数の１６ビット浮動小数点値１５２を含む訓練テンソル１５０を用いてニューラルネットワーク１１０を訓練する例示的方法５００の俯瞰フロー図である。共有指数１５４は、訓練テンソル１５０における可能な値の範囲を有益に増大し、それにより訓練テンソル１５０におけるオーバーフローまたはアンダーフロー状況の可能性を低減する。方法５００は、５０２において開始する。
【００４０】
５０４において、プロセッサ回路１３０は、複数の１６ビット浮動小数点値１５２を含む訓練テンソル１５０を生成する。ＩＥＥＥ７５４準拠の１６ビット浮動小数点値と比較して拡大した範囲を有する１６ビット浮動小数点値１５２を提供するべく、１６ビット浮動小数点値１５２の少なくとも一部分の各々の指数は、訓練テンソル１５０に関連付けられた共有指数１５４と組み合わされてよい。
【００４１】
５０６において、プロセッサ回路１３０は、訓練テンソル１５０の少なくとも一部分をニューラルネットワーク１１０に提供する。実施形態において、プロセッサ回路１３０は、１６ビット浮動小数点値１５２をニューラルネットワーク１１０に順伝播する。実施形態において、ニューラルネットワークは、ニューラルネットワーク１１０からの出力を受け取り、受け取った１６ビット浮動小数点値１５２の少なくとも一部分を、ニューラルネットワークを通して逆方向伝播する。方法５００は、５０８において終了する。
【００４２】
図６は、本明細書に記載の少なくとも１つの実施形態に係る、潜在的なオーバーフローまたはアンダーフロー状況を示すデータの検出に応答して、共有指数１５４、１または複数のＦＰ１６仮数値２０８１〜２０８ｎ、および１または複数のＦＰ１６指数値２０６１〜２０６ｎのうちの１または複数の値を選択的に調整する例示的方法６００の俯瞰フロー図である。方法６００は、６０２において開始する。
【００４３】
６０４において、プロセッサ回路１３０は、訓練テンソル１５０に含まれる１６ビット浮動小数点値１５２のうちの１または複数における潜在的なオーバーフローまたはアンダーフロー状況を示すデータを検出する。実施形態において、プロセッサ回路１３０は、未来の訓練エポック中における１６ビット浮動小数点値１５２を予測することが可能な予測回路および／またはコンパレータ回路を含んでよい。
【００４４】
６０６において、１６ビット浮動小数点値１５２のうちの１または複数が未来の訓練エポック中にオーバーフローまたはアンダーフローするであろうとの判定に応答して、プロセッサ回路１３０は、共有指数１５４、１または複数のＦＰ１６仮数値２０８１〜２０８ｎ、および１または複数のＦＰ１６指数値２０６１〜２０６ｎのうちの１または複数の値を動的に変更することで、オーバーフローまたはアンダーフロー状況の可能性を最小化または排除する。方法６００は、６０８において終了する。
【００４５】
図７は、本明細書に記載の少なくとも１つの実施形態に係る、訓練テンソル３００に含まれるＦＰ１６数１５２１〜１５２ｎの各々に含まれる共有指数スイッチ３０２１〜３０２ｎビットの論理状態に基づいて、１６ビット浮動小数点値１５２に含まれる可変ビット長指数の指数部分を共有指数値と選択的に組み合わせる例示的方法７００の俯瞰フロー図である。実施形態において、１６ビット浮動小数点値１５２１〜１５２ｎの各々は、それぞれの符号ビット２０４１〜２０４ｎ、それぞれの共有指数ＯＮ／ＯＦＦスイッチビット３０２１〜３０２ｎ、それぞれの６ビット仮数２０８１〜２０８ｎ、およびそれぞれの８ビット指数２０８１〜２０８ｎを含んでよい。方法７００は、訓練テンソル１５０に含まれるＦＰ１６数１５２１〜１５２ｎの各々について複数の異なる指数値を用いることを有益に可能とする。方法７００は、７０２において開始する。
【００４６】
７０４において、プロセッサ回路１３０は、訓練テンソル１５０に含まれるＦＰ１６数１５２１〜１５２ｎの１つ１つについて、共有指数スイッチビット３０２１〜３０２ｎを選択的かつ個別に設定する。実施形態において、プロセッサ回路１３０は、訓練テンソル１５０に含まれるＦＰ１６数１５２１〜１５２ｎの指数値２０６１〜２０６ｎが、それぞれのＦＰ１６数１５２１〜１５２ｎの未来のオーバーフローまたはアンダーフローを防ぐのに不十分であるとの判定に基づいて、共有指数スイッチビット３０４を選択的に設定してよい。１６ビット浮動小数点値１５２に含まれる指数ビットを訓練テンソル１５０に関連付けられた共有指数と組み合わせることにより、プロセッサ回路１３０は、オーバーフローまたはアンダーフロー状況の可能性を最小化または排除する。方法７００は、７０６において終了する。
【００４７】
図８は、本明細書に記載の少なくとも１つの実施形態に係る、潜在的なオーバーフローまたはアンダーフロー状況を示すデータの検出に応答して、共有指数１５４、１または複数のＦＰ１６仮数値２０８１〜２０８ｎ、および１または複数のＦＰ１６指数値２０６１〜２０６ｎのうちの１または複数の値を選択的に調整する、および／または各ＦＰ１６数１５２１〜１５２ｎについての個々の指数値２０６１〜２０６ｎを共有指数１５４と組み合わせるか否かを選択的に制御する、例示的方法８００の俯瞰フロー図である。方法８００は、８０２において開始する。
【００４８】
８０４において、プロセッサ回路１３０は、訓練テンソル１５０に含まれる１６ビット浮動小数点値１５２１〜１５２ｎのうちの１または複数における潜在的なオーバーフローまたはアンダーフロー状況を示すデータを検出する。実施形態において、プロセッサ回路１３０は、未来の訓練エポック中における１６ビット浮動小数点値１５２を予測することが可能な予測回路および／またはコンパレータ回路を含んでよい。
【００４９】
８０６において、１６ビット浮動小数点値１５２のうちの１または複数が未来の訓練エポック中にオーバーフローまたはアンダーフローするであろうとの判定に応答して、プロセッサ回路１３０は、共有指数１５４、１または複数のＦＰ１６仮数値２０８１〜２０８ｎ、１または複数のＦＰ１６指数値２０６１〜２０６ｎのうちの１または複数の値を動的に変更する、および／または共有指数ＯＮ／ＯＦＦスイッチ３０２１〜３０２ｎを所望の論理状態に設定することで、オーバーフローまたはアンダーフロー状況の可能性を最小化または排除する。方法８００は、８０８において終了する。
【００５０】
図５から８は、１または複数の実施形態に係る様々な工程を例示するが、他の実施形態については図５から８に示す工程の全てが必須であるとは限らないことを理解されたい。実際に、本開示の他の実施形態においては、図５から８に示す工程、および／または本明細書に記載の他の工程が、図面のいずれにおいても具体的に示されてはいないものの本開示と完全に整合するように組み合わされてよいことが、本明細書において完全に想定されている。よって、１つの図面において厳密に示されてはいない特徴および／または工程を対象とする請求項は、本開示の範囲および内容に収まるものとみなされる。
【００５１】
本出願および特許請求の範囲において用いる場合、「および／または」という用語により結び付けられる項目の列挙は、列挙される項目の任意の組み合わせを意味し得る。例えば、「Ａ、Ｂおよび／またはＣ」という文言は、Ａ、Ｂ、Ｃ、ＡおよびＢ、ＡおよびＣ、ＢおよびＣ、またはＡ、ＢおよびＣを意味し得る。本出願および特許請求の範囲において用いる場合、「のうちの少なくとも１つ」という用語により結び付けられる項目の列挙は、列挙される用語の任意の組み合わせを意味し得る。例えば、「Ａ、ＢまたはＣのうちの少なくとも１つ」という文言は、Ａ、Ｂ、Ｃ、ＡおよびＢ、ＡおよびＣ、ＢおよびＣ、またはＡ、ＢおよびＣを意味し得る。
【００５２】
本明細書におけるいずれかの実施形態において用いる場合、「システム」または「モジュール」という用語は、例えば、上述の工程のいずれかを行うよう構成されるソフトウェア、ファームウェアおよび／または回路を指してよい。ソフトウェアは、非一時的コンピュータ可読記憶媒体に記録されたソフトウェアパッケージ、コード、命令、命令セットおよび／またはデータとして具現化されてよい。ファームウェアは、メモリデバイスにハードコーディングされた（例えば不揮発性の）コード、命令または命令セットおよび／またはデータとして具現化されてよい。本明細書におけるいずれかの実施形態において用いる場合、「回路」は、例えば、単独でまたは任意の組み合わせにおいて、ハードワイヤード回路、１または複数の個々の命令処理コアを含むコンピュータプロセッサなどのプログラマブル回路、ステートマシン回路、および／またはファームウェアを含んでよく、これは、プログラマブル回路、または例えば超並列計算、アナログ計算または量子計算を含む将来の計算パラダイム、ニューラルネットプロセッサなどのアクセラレータのハードウェア実施形態および上記のものの非シリコン実装により実行される命令を格納する。回路は、まとめてまたは個別に、例えば集積回路（ＩＣ）、システムオンチップ（ＳｏＣ）、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、スマートフォン等の、より大規模なシステムの一部を形成する回路として具現化されてよい。
【００５３】
本明細書に記載の工程のいずれかが、１または複数のプロセッサにより実行された場合に本方法を行う命令を個別にまたは組み合わせにおいて格納した１または複数の媒体（例えば非一時的記憶媒体）を含むシステムにおいて実装されてよい。ここで、プロセッサは例えば、サーバＣＰＵ、モバイルデバイスＣＰＵ、および／または他のプログラマブル回路を含んでよい。また、本明細書に記載の工程は、１つよりも多くの異なる物理的位置にある処理構造などの複数の物理デバイスにわたって分散されてよいことが意図されている。記憶媒体は、例えば、ハードディスク、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）、および光磁気ディスクを含む任意のタイプのディスク、リードオンリメモリ（ＲＯＭ）、ダイナミックＲＡＭおよびスタティックＲＡＭなどのランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、ソリッドステートディスク（ＳＳＤ）、組み込み型マルチメディアカード（ｅＭＭＣ）、セキュアデジタル入出力（ＳＤＩＯ）カード、磁気カードまたは光カードなどの半導体デバイス、または電子的命令を格納するのに好適な任意のタイプの媒体といった、任意のタイプの有形の媒体を含んでよい。他の実施形態が、プログラマブル制御デバイスにより実行されるソフトウェアとして実装されてよい。
【００５４】
よって、本開示は、複数の１６ビット浮動小数点値と、テンソルに含まれる１６ビット浮動小数点値の一部または全てにより共有される指数を定める複数のビットとを含むテンソルを用いて、ニューラルネットワークを訓練するためのシステムおよび方法を対象とする。１６ビット浮動小数点値は、ＩＥＥＥ７５４フォーマットの１６ビット浮動小数点値を含んでよく、テンソルは、共有指数を定める複数のビットを含んでよい。テンソルは、共有指数と、可変ビット長仮数、およびプロセッサ回路により動的に設定され得る可変ビット長指数を含む１６ビット浮動小数点値を含んでよい。テンソルは、共有指数と、可変ビット長仮数、プロセッサ回路により動的に設定され得る可変ビット長指数、およびプロセッサ回路により１６ビット浮動小数点値指数を共有指数と選択的に組み合わせるよう設定される共有指数スイッチを含む１６ビット浮動小数点値とを含んでよい。
【００５５】
以下の例は、さらなる実施形態に関する。本開示の以下の例は、少なくとも１つのデバイス、方法、実行された場合に機械に当該方法に基づく動作を行わせる命令を格納するための少なくとも１つの機械可読媒体、当該方法に基づく動作を行うための手段および／または半導体パッケージ基板における磁気的にライニングされた貫通孔を形成するためのシステムなどの対象物を含んでよい。
【００５６】
例１によれば、ニューラルネットワークを訓練するためのシステムが提供される。当該システムは、プロセッサ回路と、プロセッサ回路に結合される記憶デバイスと、機械可読命令を含む記憶デバイスとを備えてよい。機械可読命令は、プロセッサ回路にニューラルネットワーク訓練テンソルを生成させ、ニューラルネットワーク訓練テンソルは、複数の１６ビット浮動小数点値であって、それぞれの浮動小数点数の仮数を形成する第１の複数のビット、およびそれぞれの浮動小数点数の指数を形成する第２の複数のビットを各々が含む複数の１６ビット浮動小数点値、および訓練テンソルに含まれる１６ビット浮動小数点値の各々に共通する５ビット共有指数を含む。
【００５７】
例２は、例１の要素を含んでよく、ニューラルネットワーク訓練テンソルに含まれる複数の１６ビット浮動小数点値の各々は、第１の複数のビットにより提供される１０ビット仮数、第２の複数のビットにより提供される５ビット指数、および１ビット符号を含む。
【００５８】
例３は、例１または２のいずれかの要素を含んでよく、ニューラルネットワーク訓練テンソルに含まれる複数の１６ビット浮動小数点値の各々は、第１の複数のビットにより提供される可変ビット長仮数、第２の複数のビットにより提供される可変ビット長指数、および１ビット符号を含んでよく、命令はさらに、プロセッサ回路に、１または複数のニューラルネットワークパラメータに基づいて、可変ビット長仮数を表すためのビット数、および可変ビット長指数を表すためのビット数を選択させる。
【００５９】
例４は、例１から３のいずれかの要素を含んでよく、１または複数のニューラルネットワークパラメータは、ネットワーク訓練テンソルに含まれる１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示すトレンドを表すデータを含んでよい。
【００６０】
例５は、例１から４のいずれかの要素を含んでよく、ニューラルネットワーク訓練テンソルに含まれる複数の１６ビット浮動小数点値の各々は、第１の複数のビットにより提供される仮数、第２の複数のビットにより提供される指数、１ビット符号、およびそれぞれの１６ビット浮動小数点数の指数部分を共有指数と選択的に組み合わせるための１ビットスイッチを含んでよい。
【００６１】
例６によれば、ニューラルネットワーク訓練方法が提供される。  ニューラルネットワーク訓練方法は、プロセッサ回路が、ニューラルネットワーク訓練テンソルを生成する段階であって、ニューラルネットワーク訓練テンソルは、複数の１６ビット浮動小数点値であって、それぞれの浮動小数点数の仮数を形成する第１の複数のビット、およびそれぞれの浮動小数点数の指数を形成する第２の複数のビットを各々が含む１６ビット浮動小数点値、および訓練テンソルに含まれる１６ビット浮動小数点値の各々に共通する５ビット共有指数を含む、生成する段階と、訓練テンソルに含まれる複数の１６ビット浮動小数点値のうちの少なくとも１つをニューラルネットワークに入力として提供する段階とを備えてよい。
【００６２】
例７は、例６の要素を含んでよく、ニューラルネットワーク訓練テンソルを生成する段階は、複数の１６ビット浮動小数点値および５ビット共有指数を含むニューラルネットワーク訓練テンソルを生成する段階を含んでよく、複数の１６ビット浮動小数点値の各々は、第１の複数のビットにより提供される１０ビット仮数、第２の複数のビットにより提供される５ビット指数、および１ビット符号を含む。
【００６３】
例８は、例６または７のいずれかの要素を含んでよく、ニューラルネットワーク訓練テンソルを生成する段階は、複数の１６ビット浮動小数点値および５ビット共有指数を含むニューラルネットワーク訓練テンソルを生成する段階を含んでよく、複数の１６ビット浮動小数点値の各々は、第１の複数のビットにより提供される可変ビット長仮数、第２の複数のビットにより提供される可変ビット長指数、および１ビット符号を含む。
【００６４】
例９は、例６から８のいずれかの要素を含んでよく、当該方法は、プロセッサ回路が、１または複数のニューラルネットワークパラメータに基づいて、可変ビット長仮数を表すための第１のビット数、および可変ビット長指数を表すための第２のビット数を選択する段階を追加的に備えてよい。
【００６５】
例１０は、例６から９のいずれかの要素を含んでよく、当該方法は、プロセッサ回路が、訓練テンソルに含まれる複数の１６ビット浮動小数点値のうちの１または複数におけるトレンドを検出する段階を追加的に含んでよく、検出されるトレンドは、ネットワーク訓練テンソルに含まれる１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示す。
【００６６】
例１１は、例６から１０のいずれかの要素を含んでよく、可変ビット長仮数を表すための第１のビット数、および可変ビット長指数を表すための第２のビット数を選択する段階は、プロセッサ回路が、ネットワーク訓練テンソルに含まれる１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示すトレンドの検出に応答して、第１の複数のビットに含まれる第１のビット数および第２の複数のビットに含まれる第２のビット数を選択する段階を含んでよい。
【００６７】
例１２は、例６から１１のいずれかの要素を含んでよく、ニューラルネットワーク訓練テンソルを生成する段階は、複数の１６ビット浮動小数点値および５ビット共有指数を含むニューラルネットワーク訓練テンソルを生成する段階を含んでよく、複数の１６ビット浮動小数点値の各々は、第１の複数のビットにより提供される仮数、第２の複数のビットにより提供される指数、１ビット符号、およびそれぞれの１６ビット浮動小数点数の指数部分を共有指数と選択的に組み合わせるための１ビットスイッチを含む。
【００６８】
例１３によれば、ニューラルネットワーク訓練システムが提供される。  訓練システムは、プロセッサ回路が、ニューラルネットワーク訓練テンソルを生成するための手段であって、ニューラルネットワーク訓練テンソルは、複数の１６ビット浮動小数点値であって、それぞれの浮動小数点数の仮数を形成する第１の複数のビット、およびそれぞれの浮動小数点数の指数を形成する第２の複数のビットを各々が含む１６ビット浮動小数点値、および訓練テンソルに含まれる１６ビット浮動小数点値の各々に共通する５ビット共有指数を含む、生成するための手段と、訓練テンソルに含まれる複数の１６ビット浮動小数点値のうちの少なくとも１つをニューラルネットワークに入力として提供するための手段とを備えてよい。
【００６９】
例１４は、例１３の要素を含んでよく、ニューラルネットワーク訓練テンソルを生成するための手段は、複数の１６ビット浮動小数点値および５ビット共有指数を含むニューラルネットワーク訓練テンソルを生成するための手段を含んでよく、複数の１６ビット浮動小数点値の各々は、第１の複数のビットにより提供される１０ビット仮数、第２の複数のビットにより提供される５ビット指数、および１ビット符号を含む。
【００７０】
例１５は、例１３または１４のいずれかの要素を含んでよく、ニューラルネットワーク訓練テンソルを生成するための手段は、複数の１６ビット浮動小数点値および５ビット共有指数を含むニューラルネットワーク訓練テンソルを生成するための手段をさらに含んでよく、複数の１６ビット浮動小数点値の各々は、第１の複数のビットにより提供される可変ビット長仮数、第２の複数のビットにより提供される可変ビット長指数、および１ビット符号を含む。
【００７１】
例１６は、例１３から１５のいずれかの要素を含んでよく、当該システムは、可変ビット長仮数を表すための第１のビット数、および可変ビット長指数を表すための第２のビット数を選択するための手段をさらに備えてよい。
【００７２】
例１７は、例１３から１６のいずれかの要素を含んでよく、当該システムは、訓練テンソルに含まれる複数の１６ビット浮動小数点値のうちの１または複数におけるトレンドを検出するための手段をさらに備えてよく、検出されるトレンドは、ニューラルネットワーク訓練テンソルに含まれる１６ビット浮動小数点値のうちの１または複数における潜在的なアンダーフロー状況または潜在的なオーバーフロー状況のうちの少なくとも１つを示す。
【００７３】
例１８は、例１３から１７のいずれかの要素を含んでよく、可変ビット長仮数を表すための第１のビット数、および可変ビット長指数を表すための第２のビット数を選択するための手段は、ネットワーク訓練テンソルに含まれる１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示すトレンドの検出に応答して、第１の複数のビットに含まれる第１のビット数および第２の複数のビットに含まれる第２のビット数を選択するための手段をさらに含んでよい。
【００７４】
例１９は、例１３から１８のいずれかの要素を含んでよく、ニューラルネットワーク訓練テンソルを生成するための手段は、複数の１６ビット浮動小数点値および５ビット共有指数を含むニューラルネットワーク訓練テンソルを生成するための手段をさらに含んでよく、複数の１６ビット浮動小数点値の各々は、第１の複数のビットにより提供される仮数、第２の複数のビットにより提供される指数、１ビット符号、およびそれぞれの１６ビット浮動小数点数の指数部分を共有指数と選択的に組み合わせるための１ビットスイッチを含む。
【００７５】
例２０によれば、機械可読命令を含む非一時的コンピュータ可読記憶媒体であって、機械可読命令は、プロセッサ回路により実行された場合、プロセッサ回路に、ニューラルネットワーク訓練テンソルを生成させ、ニューラルネットワーク訓練テンソルは、複数の１６ビット浮動小数点値であって、  それぞれの浮動小数点数の仮数を形成する第１の複数のビット、および  それぞれの浮動小数点数の指数を形成する第２の複数のビットを各々が含む複数の１６ビット浮動小数点値、および訓練テンソルに含まれる１６ビット浮動小数点値の各々に共通する５ビット共有指数を含む、非一時的コンピュータ可読記憶媒体が提供される。
【００７６】
例２１は、例２０の要素を含んでよく、プロセッサ回路に複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる機械可読命令はさらに、プロセッサ回路に、第１の複数のビットにより提供される１０ビット仮数、第２の複数のビットにより提供される５ビット指数、および１ビット符号を各々が含む複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる。
【００７７】
例２２は、例２０または２１の要素を含んでよく、プロセッサ回路に複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる機械可読命令はさらに、プロセッサ回路に、第１の複数のビットにより提供される可変ビット長仮数、第２の複数のビットにより提供される可変ビット長指数、および１ビット符号を各々が含む複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成することと、１または複数のニューラルネットワークパラメータに基づいて、可変ビット長仮数を表すためのビット数、および可変ビット長指数を表すためのビット数を選択することとを行わせる。
【００７８】
例２３は、例２０から２２のいずれかの要素を含んでよく、プロセッサ回路に、１または複数のニューラルネットワークパラメータに基づいて、可変ビット長仮数および可変ビット長指数を表すためのビット数を選択させる機械可読命令はさらに、プロセッサ回路に、ネットワーク訓練テンソルに含まれる１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの１または複数に基づいて、可変ビット長仮数および可変ビット長指数を表すためのビット数を選択させる。
【００７９】
例２４は、例２０から２３のいずれかの要素を含んでよく、プロセッサ回路に複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる機械可読命令はさらに、プロセッサ回路に、第１の複数のビットにより提供される仮数、第２の複数のビットにより提供される指数、１ビット符号、およびそれぞれの１６ビット浮動小数点数の指数部分を共有指数と選択的に組み合わせるための１ビットスイッチを各々が含む複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる。
【００８０】
例２５によれば、プロセッサベースデバイスが提供される。  プロセッサベースデバイスは、プリント回路基板と、プリント回路基板に結合されるプロセッサ回路と、ニューラルネットワークに結合可能な入出力インタフェースと、プロセッサ回路に結合される記憶デバイスであって、機械可読命令を含む記憶デバイスとを備えてよく、機械可読命令は、プロセッサ回路により実行された場合、プロセッサ回路に、ニューラルネットワーク訓練テンソルを生成させ、ニューラルネットワーク訓練テンソルは、複数の１６ビット浮動小数点値であって、それぞれの浮動小数点数の仮数を形成する第１の複数のビット、およびそれぞれの浮動小数点数の指数を形成する第２の複数のビットを各々が含む複数の１６ビット浮動小数点値、および訓練テンソルに含まれる１６ビット浮動小数点値の各々に共通する５ビット共有指数を含む。
【００８１】
例２６は、例２５の要素を含んでよく、ニューラルネットワーク訓練テンソルに含まれる複数の１６ビット浮動小数点値の各々は、第１の複数のビットにより提供される１０ビット仮数、第２の複数のビットにより提供される５ビット指数、および１ビット符号を含む。
【００８２】
例２７は、例２５または２６のいずれかの要素を含んでよく、ニューラルネットワーク訓練テンソルに含まれる複数の１６ビット浮動小数点値の各々は、第１の複数のビットにより提供される可変ビット長仮数、第２の複数のビットにより提供される可変ビット長指数、および１ビット符号を含んでよく、命令はさらに、プロセッサ回路に、１または複数のニューラルネットワークパラメータに基づいて、可変ビット長仮数を表すためのビット数、および可変ビット長指数を表すためのビット数を選択させる。
【００８３】
例２８は、例２５から２７のいずれかの要素を含んでよく、１または複数のニューラルネットワークパラメータは、ネットワーク訓練テンソルに含まれる１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示すトレンドを含む。
【００８４】
例２９は、例２５から２８のいずれかの要素を含んでよく、ニューラルネットワーク訓練テンソルに含まれる複数の１６ビット浮動小数点値の各々は、第１の複数のビットにより提供される仮数、第２の複数のビットにより提供される指数、１ビット符号、およびそれぞれの１６ビット浮動小数点数の指数部分を共有指数と選択的に組み合わせるための１ビットスイッチを含む。
【００８５】
例３０によれば、テンソルデータ構造が提供される。テンソルデータ構造は、仮数値に対応する第１の複数のビット、指数値に対応する第２の複数のビット、および符号ビットを各々が含む複数の１６ビット浮動小数点レジスタと、複数の１６ビット浮動小数点レジスタのそれぞれ１つ１つに関連付けられた共有指数レジスタとを備えてよい。
【００８６】
例３１は、例３０の要素を含んでよく、複数の１６ビット浮動小数点レジスタの各々は、第１の複数のビットにより提供される１０ビット仮数、第２の複数のビットにより提供される５ビット指数、および１ビット符号を含む。
【００８７】
例３２は、例３０または３１のいずれかの要素を含んでよく、複数の１６ビット浮動小数点レジスタの各々は、第１の複数のビットにより提供される可変ビット長仮数、第２の複数のビットにより提供される可変ビット長指数、および１ビット符号を含む。
【００８８】
例３３は、例３０から３２のいずれかの要素を含んでよく、複数の１６ビット浮動小数点レジスタの各々は、第１の複数のビットにより提供される仮数、第２の複数のビットにより提供される指数、１ビット符号、およびそれぞれの１６ビット浮動小数点数の指数部分を共有指数と選択的に組み合わせるための１ビットスイッチを含む。
【００８９】
本明細書において採用した用語および表現は、説明であって限定ではない用語として用いられており、そのような用語および表現の使用には、図示および説明されている特徴（またはそれらの部分）のいかなる均等物も除外する意図はなく、特許請求の範囲に収まる限りにおいて様々な改変が可能であることを認識されたい。したがって、特許請求の範囲は、あらゆるそのような均等物に及ぶものとして意図されている。様々な特徴、態様、および実施形態を本明細書に記載した。当業者に理解されるように、これらの特徴、態様、実施形態は、変形および改変に加え、互いに組み合わせることも可能である。ゆえに、本開示は、そのような組み合わせ、変形、および改変を包含するものとみなされるべきである。
【００９０】
本明細書に記載のとおり、様々な実施形態が、ハードウェア要素、ソフトウェア要素、またはそれらの任意の組み合わせを用いて実装されてよい。ハードウェア要素の例は、プロセッサ、マイクロプロセッサ、回路、回路素子（例えばトランジスタ、抵抗器、コンデンサ、およびインダクタ等）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理デバイス（ＰＬＤ）、デジタルシグナルプロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、およびチップセット等を含んでよい。
【００９１】
本明細書全体における「１つの実施形態」または「一実施形態」との記載は、その実施形態に関連して説明される特定の特徴、構造、または特性が、少なくとも１つの実施形態に含まれることを意味する。よって、本明細書全体の様々な箇所において現われる「１つの実施形態において」または「一実施形態において」との文言は、必ずしもその全てが同じ実施形態を指すものとは限らない。さらに、特定の特徴、構造、または特性は、１または複数の実施形態において任意の好適な方式で組み合わされてよい。
【００９２】
［項目１］
ニューラルネットワークを訓練するためのシステムであって、
プロセッサ回路と、
上記プロセッサ回路に結合される通信インタフェースであって、ニューラルネットワークに結合可能な通信インタフェースと、
上記プロセッサ回路に結合される記憶デバイスであって、機械可読命令を含む記憶デバイスと
を備え、
上記機械可読命令は、上記プロセッサ回路により実行された場合、上記プロセッサ回路に、
ニューラルネットワーク訓練テンソルを生成させ、上記ニューラルネットワーク訓練テンソルは、
複数の１６ビット浮動小数点値であって、
それぞれの上記浮動小数点数の仮数を形成する第１の複数のビット、および
それぞれの上記浮動小数点数の指数を形成する第２の複数のビット
を各々が含む複数の１６ビット浮動小数点値、および
上記訓練テンソルに含まれる上記１６ビット浮動小数点値の各々に共通する５ビット共有指数
を含む、システム。
［項目２］
上記ニューラルネットワーク訓練テンソルに含まれる上記複数の１６ビット浮動小数点値の各々は、
上記第１の複数のビットにより提供される１０ビット仮数、
上記第２の複数のビットにより提供される５ビット指数、および
１ビット符号
を含む、項目１に記載のシステム。
［項目３］
上記ニューラルネットワーク訓練テンソルに含まれる上記複数の１６ビット浮動小数点値の各々は、
上記第１の複数のビットにより提供される可変ビット長仮数、
上記第２の複数のビットにより提供される可変ビット長指数、および
１ビット符号
を含み、
上記命令はさらに、上記プロセッサ回路に、１または複数のニューラルネットワークパラメータに基づいて、
上記可変ビット長仮数を表すためのビット数、および
上記可変ビット長指数を表すためのビット数
を選択させる、項目１に記載のシステム。
［項目４］
上記１または複数のニューラルネットワークパラメータは、上記ネットワーク訓練テンソルに含まれる上記１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示すトレンドを含む、項目３に記載のシステム。
［項目５］
上記ニューラルネットワーク訓練テンソルに含まれる上記複数の１６ビット浮動小数点値の各々は、
上記第１の複数のビットにより提供される上記仮数、
上記第２の複数のビットにより提供される上記指数、
１ビット符号、および
それぞれの上記１６ビット浮動小数点数の上記指数部分を上記共有指数と選択的に組み合わせるための１ビットスイッチ
を含む、項目１に記載のシステム。
［項目６］
ニューラルネットワークを訓練する方法であって、
プロセッサ回路が、ニューラルネットワーク訓練テンソルを生成する段階であって、上記ニューラルネットワーク訓練テンソルは、
複数の１６ビット浮動小数点値であって、
それぞれの上記浮動小数点数の仮数を形成する第１の複数のビット、および
それぞれの上記浮動小数点数の指数を形成する第２の複数のビット
を各々が含む１６ビット浮動小数点値、および
上記訓練テンソルに含まれる上記１６ビット浮動小数点値の各々に共通する５ビット共有指数
を含む、生成する段階と、
上記訓練テンソルに含まれる上記複数の１６ビット浮動小数点値のうちの少なくとも１つを上記ニューラルネットワークに入力として提供する段階と
を備える方法。
［項目７］
上記ニューラルネットワーク訓練テンソルを生成する段階は、
上記複数の１６ビット浮動小数点値および上記５ビット共有指数を含む上記ニューラルネットワーク訓練テンソルを生成する段階を含み、上記複数の１６ビット浮動小数点値の各々は、
上記第１の複数のビットにより提供される１０ビット仮数、
上記第２の複数のビットにより提供される５ビット指数、および
１ビット符号
を含む、項目６に記載の方法。
［項目８］
上記ニューラルネットワーク訓練テンソルを生成する段階は、
上記複数の１６ビット浮動小数点値および上記５ビット共有指数を含む上記ニューラルネットワーク訓練テンソルを生成する段階を含み、上記複数の１６ビット浮動小数点値の各々は、
上記第１の複数のビットにより提供される可変ビット長仮数、
上記第２の複数のビットにより提供される可変ビット長指数、および
１ビット符号
を含む、項目６に記載の方法。
［項目９］
上記プロセッサ回路が、１または複数のニューラルネットワークパラメータに基づいて、
上記可変ビット長仮数を表すための第１のビット数、および
上記可変ビット長指数を表すための第２のビット数
を選択する段階をさらに備える、項目８に記載の方法。
［項目１０］
上記プロセッサ回路が、上記訓練テンソルに含まれる上記複数の１６ビット浮動小数点値のうちの１または複数におけるトレンドを検出する段階をさらに備え、検出される上記トレンドは、上記ネットワーク訓練テンソルに含まれる上記１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示す、項目９に記載の方法。
［項目１１］
上記可変ビット長仮数を表すための第１のビット数、および上記可変ビット長指数を表すための第２のビット数を選択する段階は、
上記プロセッサ回路が、上記ネットワーク訓練テンソルに含まれる上記１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示す上記トレンドの検出に応答して、上記第１の複数のビットに含まれる第１のビット数および上記第２の複数のビットに含まれる第２のビット数を選択する段階を含む、項目９に記載の方法。
［項目１２］
上記ニューラルネットワーク訓練テンソルを生成する段階は、
上記複数の１６ビット浮動小数点値および上記５ビット共有指数を含む上記ニューラルネットワーク訓練テンソルを生成する段階を含み、上記複数の１６ビット浮動小数点値の各々は、
上記第１の複数のビットにより提供される上記仮数、
上記第２の複数のビットにより提供される上記指数、
１ビット符号、および
それぞれの上記１６ビット浮動小数点数の上記指数部分を上記共有指数と選択的に組み合わせるための１ビットスイッチ
を含む、項目６に記載の方法。
［項目１３］
ニューラルネットワーク訓練システムであって、
プロセッサ回路が、ニューラルネットワーク訓練テンソルを生成するための手段であって、上記ニューラルネットワーク訓練テンソルは、
複数の１６ビット浮動小数点値であって、
それぞれの上記浮動小数点数の仮数を形成する第１の複数のビット、および
それぞれの上記浮動小数点数の指数を形成する第２の複数のビット
を各々が含む１６ビット浮動小数点値、および
上記訓練テンソルに含まれる上記１６ビット浮動小数点値の各々に共通する５ビット共有指数
を含む、生成するための手段と、
上記訓練テンソルに含まれる上記複数の１６ビット浮動小数点値のうちの少なくとも１つを上記ニューラルネットワークに入力として提供するための手段と
を備えるシステム。
［項目１４］
上記ニューラルネットワーク訓練テンソルを生成するための上記手段は、
上記複数の１６ビット浮動小数点値および上記５ビット共有指数を含む上記ニューラルネットワーク訓練テンソルを生成するための手段を含み、上記複数の１６ビット浮動小数点値の各々は、
上記第１の複数のビットにより提供される１０ビット仮数、
上記第２の複数のビットにより提供される５ビット指数、および
１ビット符号
を含む、項目１３に記載のシステム。
［項目１５］
上記ニューラルネットワーク訓練テンソルを生成するための上記手段は、
上記複数の１６ビット浮動小数点値および上記５ビット共有指数を含む上記ニューラルネットワーク訓練テンソルを生成するための手段をさらに含み、上記複数の１６ビット浮動小数点値の各々は、
上記第１の複数のビットにより提供される可変ビット長仮数、
上記第２の複数のビットにより提供される可変ビット長指数、および
１ビット符号
を含む、項目１３に記載のシステム。
［項目１６］
上記可変ビット長仮数を表すための第１のビット数、および
上記可変ビット長指数を表すための第２のビット数
を選択するための手段をさらに備える、項目１５に記載のシステム。
［項目１７］
上記訓練テンソルに含まれる上記複数の１６ビット浮動小数点値のうちの１または複数におけるトレンドを検出するための手段をさらに備え、検出される上記トレンドは、上記ニューラルネットワーク訓練テンソルに含まれる上記１６ビット浮動小数点値のうちの１または複数における潜在的なアンダーフロー状況または潜在的なオーバーフロー状況のうちの少なくとも１つを示す、項目１６に記載のシステム。
［項目１８］
上記可変ビット長仮数を表すための第１のビット数、および上記可変ビット長指数を表すための第２のビット数を選択するための上記手段は、
上記ネットワーク訓練テンソルに含まれる上記１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの少なくとも１つを示す上記トレンドの検出に応答して、上記第１の複数のビットに含まれる第１のビット数および上記第２の複数のビットに含まれる第２のビット数を選択するための手段をさらに含む、項目１６に記載のシステム。
［項目１９］
上記ニューラルネットワーク訓練テンソルを生成するための上記手段は、
上記複数の１６ビット浮動小数点値および上記５ビット共有指数を含む上記ニューラルネットワーク訓練テンソルを生成するための手段をさらに含み、上記複数の１６ビット浮動小数点値の各々は、
上記第１の複数のビットにより提供される上記仮数、
上記第２の複数のビットにより提供される上記指数、
１ビット符号、および
それぞれの上記１６ビット浮動小数点数の上記指数部分を上記共有指数と選択的に組み合わせるための１ビットスイッチ
を含む、項目１３に記載のシステム。
［項目２０］
機械可読命令を含む非一時的コンピュータ可読記憶媒体であって、上記機械可読命令は、プロセッサ回路により実行された場合、上記プロセッサ回路に、
ニューラルネットワーク訓練テンソルを生成させ、上記ニューラルネットワーク訓練テンソルは、
複数の１６ビット浮動小数点値であって、
それぞれの上記浮動小数点数の仮数を形成する第１の複数のビット、および
それぞれの上記浮動小数点数の指数を形成する第２の複数のビット
を各々が含む複数の１６ビット浮動小数点値、および
上記訓練テンソルに含まれる上記１６ビット浮動小数点値の各々に共通する５ビット共有指数
を含む、非一時的コンピュータ可読記憶媒体。
［項目２１］
上記プロセッサ回路に複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる上記機械可読命令はさらに、上記プロセッサ回路に、
上記第１の複数のビットにより提供される１０ビット仮数、
上記第２の複数のビットにより提供される５ビット指数、および
１ビット符号
を各々が含む複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる、項目２０に記載の非一時的コンピュータ可読記憶媒体。
［項目２２］
上記プロセッサ回路に複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる上記機械可読命令はさらに、上記プロセッサ回路に、
上記第１の複数のビットにより提供される可変ビット長仮数、
上記第２の複数のビットにより提供される可変ビット長指数、および
１ビット符号
を各々が含む複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成することと、
１または複数のニューラルネットワークパラメータに基づいて、
上記可変ビット長仮数を表すためのビット数、および
上記可変ビット長指数を表すためのビット数
を選択することと
を行わせる、項目２０に記載の非一時的コンピュータ可読記憶媒体。
［項目２３］
上記プロセッサ回路に、１または複数のニューラルネットワークパラメータに基づいて、上記可変ビット長仮数および上記可変ビット長指数を表すためのビット数を選択させる上記機械可読命令はさらに、上記プロセッサ回路に、
上記ネットワーク訓練テンソルに含まれる上記１６ビット浮動小数点値のうちの１または複数におけるアンダーフロー状況またはオーバーフロー状況のうちの１または複数に基づいて、上記可変ビット長仮数および上記可変ビット長指数を表すためのビット数を選択させる、項目２２に記載の非一時的コンピュータ可読記憶媒体。
［項目２４］
上記プロセッサ回路に複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる上記機械可読命令はさらに、上記プロセッサ回路に、
上記第１の複数のビットにより提供される上記仮数、
上記第２の複数のビットにより提供される上記指数、
１ビット符号、および
それぞれの上記１６ビット浮動小数点数の上記指数部分を上記共有指数と選択的に組み合わせるための１ビットスイッチ
を各々が含む複数の１６ビット浮動小数点値を含むニューラルネットワーク訓練テンソルを生成させる、項目２０に記載の非一時的コンピュータ可読記憶媒体。
［項目２５］
仮数値に対応する第１の複数のビット、
指数値に対応する第２の複数のビット、および
符号ビット
を各々が含む複数の１６ビット浮動小数点レジスタと、
上記複数の１６ビット浮動小数点レジスタのそれぞれ１つ１つに関連付けられた共有指数レジスタと
を備えるテンソルデータ記憶構造。
【図１】
2019212295.tif 000009
【図２】
2019212295.tif 000010
【図３】
2019212295.tif 000011
【図４】
2019212295.tif 000012
【図５】
2019212295.tif 000013
【図６】
2019212295.tif 000014
【図７】
2019212295.tif 000015
【図８】
2019212295.tif 000016
【外国語明細書】
2019212295000001.pdf